var btnSubmit;
function SubmitClick(obj){
    btnSubmit = obj;    
    window.onunload  = function(){ 
        if(btnSubmit!=null){
            btnSubmit.value = ' 正在提交 ';
            setTimeout('btnSubmit.disabled="disabled"',10);
        }
    }
}
    
    
function $(_id){
    if(typeof(_id)=='object'){
        return _id;
    }
    else if(typeof(_id)=='string'){
        return document.getElementById(_id);
    }
}
function $A(_name){
    var arr = document.getElementsByName(_name);
    return arr;
}
function SelectAll(ele,selectName){
    var obj = $(ele);
    if(obj){
    
        var ocheckbox = $A(selectName);
        
        for(var i=0;i<ocheckbox.length;i++)
        {
            if(ocheckbox[i].type=='checkbox'){
                ocheckbox[i].checked = obj.checked;
            }
        }
    }
}
function IsSelected(selectName){
    var ckbArr = $A(selectName);
    var isSelected = false;
    for(var i=0;i<ckbArr.length;i++){
        if(ckbArr[i]&&ckbArr[i].checked == true){
            isSelected = true;
            break;
        }
    }
    return isSelected;
}
function ChkSelected(selectName,msg){
    var flag = true;
    if(!IsSelected(selectName)){
        alert(msg);
        flag = false;
    }
    return flag;
}
String.prototype.LTrim = function(){
    return this.replace(/^\s*/ig,"");
}
String.prototype.RTrim = function(){
    return this.replace(/(\s*)$/ig,"");
}
String.prototype.Trim = function(){
    return this.replace(/(^\s*)|(\s*)$/ig,"");
}
function ChkForm(obj){
	var myForm = document.forms[obj];
    if (!myForm) {
        myForm = $(obj);
    }
    var myElements = myForm.elements;
	    	
	var msg,dateType,require,length;
	
	for(i=0;i<myElements.length;i++){
	    
	    var oattr = myElements[i].attributes;
        
        msg = oattr.getNamedItem("Msg");
        dataType = oattr.getNamedItem("DataType");
        require = oattr.getNamedItem("Require");
        length = oattr.getNamedItem("Length");

		if(msg != undefined){
		    if(require!=undefined){
			    if(require.value == "1" && myElements[i].value == ""){
				    return Return(msg.value,myElements[i]);
			    }
			    if(require.value == "0" && myElements[i].value == ""){
				    continue;
			    }
			}
			
			if(dataType != undefined){
			    
				switch(dataType.value){
					case "compare2":
						if(myElements[i].value.Trim() != myElements[i-2].value.Trim()){
							return Return(msg.value.Trim(),myElements[i]);
						}
						break;
					case "compare":
						if(myElements[i].value.Trim() != myElements[i-1].value.Trim()){
							return Return(msg.value.Trim(),myElements[i]);
						}
						break;	
					case "number":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "email":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "phone":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "url":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "idcard":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "mobile":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "custom":
					    if(!eval(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "domain":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "account":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "zip":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "integer":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "double":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "english":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "chinese":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					case "qq":
					    if(!myElements[i].value.Trim().match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value.Trim(),myElements[i]);
					    }
					    break;
					default:
						if(!Validator.Type[dataType.value].test(myElements[i].value.Trim())){
							return Return(msg.value.Trim(),myElements[i]);
						}
						break;
				}
					
			}
			if(length != undefined ){
					var minLength = new Number(length.value.split("-")[0]);
					var maxLength = new Number(length.value.split("-")[1]);
					if(myElements[i].value.Trim().length < minLength || myElements[i].value.Trim().length > maxLength){
						return Return(msg.value.Trim(),myElements[i]);
					}
				}
			
		}		
	}
	
	if(btnSubmit!=null){
        btnSubmit.value = ' 正在提交 ';
        setTimeout('btnSubmit.disabled="disabled"',10);
    }
}

function Return(msg,obj){
	alert(msg);
	obj.select();
	return false;
}






var Validator = {
	Type : {
			account : /^[A-Za-z0-9|_|-]{3,20}$/,
			domain2	: /^[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
			domain	: /^([a-zA-Z0-9]|[-]){4,16}$/,
			email	: /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,
			phone	: /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
			mobile	: /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
			url		: /^http:\/\/[A-Za-z0-9\-]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
			idcard	: /^\d{15}(\d{2}[A-Za-z0-9])?$/,
			currency: /^\d+(\.\d+)?$/,
			number	: /^\d+$/,
			date	: "this.IsDate(value, getAttribute('format'))",
			len		: "value.length >= getAttribute('min') && value.length <= getAttribute('max')",
			custom	: "eval(myElements[i].getAttribute('exp'))",
			regexp	: "this.Exec(value, getAttribute('regexp'))",
			zip		: /^[1-9]\d{5}$/,
			qq		: /^[1-9]\d{4,8}$/,
			integer : /^[-\+]?\d+$/,
			double	: /^[-\+]?\d+(\.\d+)?$/,
			english : /^[A-Za-z]+$/,
			chinese : /^[\u0391-\uFFE5]+$/,
			length  : /^\d+-\d+/
	} ,
	Success  : false ,
	ValiForm : function(form){
	    var ctls = form.getElementsByTagName("input");
	    var isForm = true;
	    for(i=0;i<ctls.length;i++){
	        var isVali = this.Validate(ctls[i])
	        if(!isVali) isForm = isVali;
	    }
	    this.Success = isForm;
	    return isForm;
	},
	Validate : function(obj){
	    if(!obj.getAttribute('Msg')){
	        return true;
	    }
	   var isVali = true;	   
	   if(this.Type.length.test(obj.getAttribute("Length"))){
	        var min = obj.getAttribute("Length").split('-')[0];
	        var max = obj.getAttribute("Length").split('-')[1];
	        if(obj.value.Trim().length < min || obj.value.Trim().length > max){
	            isVali = false;
	        }
	   }	
	   switch(obj.getAttribute('DataType')){
	        case 'account':
	        case 'domain2':
	        case 'domain':
	        case 'email':
	        case 'phone':
	        case 'mobile':
	        case 'url':
	        case 'idcard':
	        case 'currency':
	        case 'number':
	        case 'zip':
	        case 'qq':
	        case 'integer':
	        case 'double':
	        case 'english':
	        case 'chinese':{
	            if(!this.Type[obj.getAttribute('DataType')].test(obj.value)){
	                isVali = false;
	                }
	            break;
	            }
	   } 
	   
	   if(obj.getAttribute('Compare')){
	        if(obj.value != $(obj.getAttribute('Compare')).value)
	            isVali = false;
	   }  
	   
	   if(!obj.getAttribute('Require') && obj.value == ''){
	        isVali = true;
	   }
	    this.ShowMsg(obj , isVali);	
	    return isVali;    
	},
	
    Style					: 1,    
	ShowMsgAtOnce			: true,	
	ErrorMsg				: 'X',	
	OkMsg					: '√',	
	RequireMsg				: '必填',	
	FocusColor				: '#ffffcc',	
	BlurColor				: '#ffffff',
	
	GetMsgBox : function (obj){
	    var parentNode = obj.parentNode;
	    var isFind = false;
	    var span = null;
	    for(i=0; i<parentNode.childNodes.length; i++){
	        if(parentNode.childNodes[i] == obj) isFind = true;
	        if(isFind && parentNode.childNodes[i].tagName == "SPAN"){
	            span = parentNode.childNodes[i];
	            break;
	        }
	    }
	    if(span == null){
	        span = document.createElement("SPAN");
			parentNode.appendChild(span);
	    }
	    return span;
	},
	
	ShowMsg : function(obj,status){
        var msg = obj.getAttribute('Msg');
        var span = this.GetMsgBox(obj);
        if(status){
            span.innerHTML = 'OK';
            span.className = 'OK';
        }else{
            span.innerHTML = msg;
            span.className = 'Alert';
        }
	},
	
	BoundControls : function(form){
		var ctls = form.getElementsByTagName("input");
		this.BoundCtls(ctls);
		form.action = location.href;
		form.onsubmit = function(){ return Validator.ValiForm(this); }
	},
	
	BoundCtls : function(ctls){
	    for(i=0;i<ctls.length;i++){
	        if(ctls[i].getAttribute("Msg") != undefined){
	            ctls[i].onblur = function(){ Validator.Validate(this); this.className= Validator.TempClassName;  };
	            ctls[i].onfocus = function(){ Validator.TempClassName = this.className; this.className = 'Focus';  };
	            
	        }
	    }
	},
	
	Exec : function(op, reg){
		return reg.test(op);
	}	,
	
	TempClassName : null
	
}