var Andy_currency=new Object();Andy_currency.check_split="|";Andy_currency.check_errorMessage_id="__ErrorMessage";Andy_currency.checkTag_type="_checktype";Andy_currency.checkTag_errorMessage="_errormessage";Andy_currency.CreateCheckForm=function(formName,className,onPass,showMode,onStart){this.valid=false;this.className=className?className:"";this.onPass=onPass?onPass:this.defaultPass;this.onStart=onStart?onStart:this.defaultStart;this.showMode=showMode?showMode:0;this.forms=new Array();this.errItem=new Array();this.errMessage=new Array();this.init(this.getElementObject(formName));};Andy_currency.CreateCheckForm.prototype={init:function(oForm){if(oForm!=null){this.forms.push(oForm);oForm.checkObject=this;oForm.onsubmit=oForm.checkObject.onSubmit;}},onSubmit:function(){if(this.tagName!="FORM") return false;with(this.checkObject){var ps=this.checkObject;ps.onStart.call(ps);check(this); ps.onPass.call(ps);showMessage();return valid;}},addForm:function(formName){var oForm=this.getElementObject(formName);this.forms.push(oForm);this.init(oForm);},clearErrorState:function(){for(var i=0;i<this.errItem.length;i++){var obj=this.errItem[i];if(obj==null)continue;var msgId=obj.name+Andy_currency.check_errorMessage_id;this.removeObject(msgId);}this.errMessage.length=0;this.errItem.length=0;},AddError:function(oInput,msg){this.errItem[this.errItem.length] = oInput;this.errMessage[this.errMessage.length] = msg;},showMessage:function(){switch(this.showMode){case 0:this.showMessage_Mode_inline();break;case 1:this.showMessage_Mode_dialog();break;}if(this.errItem.length>0){var obj=this.errItem[0];try{obj.focus();}catch(e){}}},showMessage_Mode_inline:function(){var ln=this.errItem.length;for(var i=0;i<ln;i++){var obj=this.errItem[i];var message=this.errMessage[i];var pElement=obj.parentNode;if(pElement==null) return;var strMess=obj.name+Andy_currency.check_errorMessage_id;var errMess=this.getElementObject(strMess);if(errMess!=null){errMess.style.display="";if(this.className!=""&&errMess.className=="")errMess.className=this.className;errMess.innerHTML=message;}else{errMess=document.createElement("span");errMess.id=strMess;if(this.className!="")errMess.className=this.className;errMess.innerHTML=message;pElement.insertBefore(errMess,obj.nextSibling);}}},showMessage_Mode_dialog:function(){var msg="在提交表单时发生以下错误：\n\n";var ln=this.errMessage.length;if(ln>0){for(var i=0;i<ln;i++){var message=this.errMessage[i];if(message!="")msg+=(i+1+"."+message+"\n");}alert(msg);}},removeObject:function(el){var o=this.getElementObject(el);if(o!=null){o.style.display="none";}},defaultPass:function(){},defaultStart:function(){},getElementObject:function(el){var obj=null;if(typeof(el)=="string")obj=document.getElementById(el);else if(typeof(el)=="object")obj=el;return obj;},check:function(objForm){if(objForm==null||objForm.tagName!="FORM")return false;this.clearErrorState();this.valid=true;for(var i=0;i<objForm.elements.length;i++){var oInput=objForm.elements[i];var checkType = oInput.getAttribute("_checktype");var arrMsg=oInput.getAttribute(Andy_currency.checkTag_errorMessage);if(checkType==null||arrMsg==null||(checkType.indexOf("required")==-1&&oInput.value=="")) continue;var errComm=checkType.split(Andy_currency.check_split);var errMsg=arrMsg.split(Andy_currency.check_split);for(var j=0;j<errComm.length;j++){if(typeof(errComm[j]) == "object" || typeof(this[errComm[j]]) == "undefined")continue;var msg=(errMsg[j]==null?errMsg[0]:errMsg[j]);if(!this.check_One(objForm,errComm[j],i,msg)){this.valid=false;break;}}}},check_One:function(objForm,checkType,i,msg){var oInput=objForm.elements[i];var valid=true;with(oInput){switch(checkType){case "filter":case "required":case "date" :case "group" :case "compare":case "repeat":case "range":case "limit":case "limitB":case "custom":if(!eval(this[checkType])){this.AddError(oInput,msg);valid=false;}break;default :if(!this[checkType].test(value)){this.AddError(oInput,msg);valid=false;}break;}}return valid;},email : /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,phone : /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/,mobile : /^((\(\d{2,3}\))|(\d{3}\-))?1[3|5|8]\d{9}$/,chinese :  /^[\u0391-\uFFE5]+$/,english : /^[A-Za-z]+$/,url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,range : "getAttribute('_min') < (value|0) && (value|0) < getAttribute('_max')",zip : /^\d{6}$/,qq : /^[1-9]\d{4,10}$/,integer : /^[-\+]?\d+$/,double : /^[-\+]?\d+(\.\d+)?$/,required:"value.replace(' ')!=''",date:"this.IsDate(value, getAttribute('_min'), getAttribute('_format'))",group:"this.MustChecked(getAttribute('name'), getAttribute('_min'), getAttribute('_max'))",filter : "this.DoFilter(value, getAttribute('_accept'))",compare : "this.Compare(value,getAttribute('_operator'),getAttribute('_to'))",repeat : "value == document.getElementsByName(getAttribute('_to'))[0].value",username : /^[0-9a-z][0-9a-z\-\_]{1,16}[0-9a-z]$/g,limit : "this.Limit(value.length,getAttribute('_min'),  getAttribute('_max'))",limitB : "this.limit(this.LenB(value), getAttribute('_min'), getAttribute('_max'))",custom:"this.Custom(value,getAttribute('_regexp'))",Custom:function(value,regexp){return new RegExp(regexp,"gi").test(value);},MustChecked : function(name, min, max){var groups = document.getElementsByName(name);var hasChecked = 0;min = min || 1;max = max || groups.length;for(var i=groups.length-1;i>=0;i--)if(groups[i].checked) hasChecked++;return min <= hasChecked && hasChecked <= max;},DoFilter : function(input, filter){return new RegExp("^.+\.(?=EXT)(EXT)$".replace(/EXT/g, filter.split(/\s*,\s*/).join("|")), "gi").test(input);},Limit : function(len,min, max){min = min || 0;max = max || Number.MAX_VALUE;return min <= len && len <= max;},LenB : function(str){return str.replace(/[^\x00-\xff]/g,"**").length;},Compare : function(op1,operator,op2){switch (operator) {case "NotEqual":return (op1 != op2);case "GreaterThan":return (op1 > op2);case "GreaterThanEqual":return (op1 >= op2);case "LessThan":return (op1 < op2);case "LessThanEqual":return (op1 <= op2);default:return (op1 == op2);            }},IsDate : function(op, formatString){formatString = formatString || "ymd";var m, year, month, day;switch(formatString){case "ymd" :m = op.match(new RegExp("^((\\d{4})|(\\d{2}))([-./])(\\d{1,2})\\4(\\d{1,2})$"));if(m == null ) return false;day = m[6];month = m[5]*1;year =  (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10));break;case "dmy" :m = op.match(new RegExp("^(\\d{1,2})([-./])(\\d{1,2})\\2((\\d{4})|(\\d{2}))$"));if(m == null ) return false;day = m[1];month = m[3]*1;year = (m[5].length == 4) ? m[5] : GetFullYear(parseInt(m[6], 10));break;default :break;}if(!parseInt(month)) return false;month = month==0 ?12:month;var date = new Date(year, month-1, day);        return (typeof(date) == "object" && year == date.getFullYear() && month == (date.getMonth()+1) && day == date.getDate());function GetFullYear(y){return ((y<30 ? "20" : "19") + y)|0;}}};
