

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 $AValue(_name){
    var arr = $A(_name);
    var returnValue = "";
    if(arr.length>0)
    {
       for(var i=0;i<arr.length;i++)
       {
            if(arr[i].checked ==true)
                returnValue += arr[i].value+","; 
       } 
    }
    if(returnValue.length>0)
        returnValue = returnValue.substr(0,returnValue.length-1);
    return returnValue;
}
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 "compare":
						if(myElements[i].value != myElements[i-1].value){
							return Return(msg.value,myElements[i]);
						}
						break;
					case "number":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "email":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "phone":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "url":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "idcard":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "mobile":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "domain":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "account":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "zip":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "integer":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "double":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "english":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "chinese":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					case "qq":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					case "date":
					    if(!myElements[i].value.match(Validator.Type[dataType.value]))
					    {
					        return Return(msg.value,myElements[i]);
					    }
					    break;
					default:
						if(!Validator.Type[dataType.value].test(myElements[i].value)){
							return Return(msg.value,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.length < minLength || myElements[i].value.length > maxLength){
						return Return(msg.value,myElements[i]);
					}
				}
			
		}		
	}
}

function Return(msg,obj){
	alert(msg);
	obj.select();
	return false;
}


var Validator = {
	Type : {
			account : /^[A-Za-z][A-Za-z0-9]{3,20}$/,
			domain2	: /^[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
			domain	: /^([a-ntA-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(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]+$/	
		}
}


      function isDate(str)
      {
         var r = str.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
         if(r==null)return false;
         var d= new Date(r[1], r[3]-1, r[4]);
         return (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
      } 
      




      

