/*
 * Copyright (c) 2006-2008 coderhome.net
 * All rights reserved.
 * Support : 志凡(dzjzmj@163.com)
 *
 * Version :  0.2
 */
var FormValid = function(frm) {
    this.frm = frm;
    this.errMsg = new Array();
	this.errName = new Array();
   
    this.required = function(inputObj, msg) {
		this.addAllName(inputObj.name);
        if (typeof(inputObj) == "undefined" || inputObj.value.trim() == "") {
            this.addErrorMsg(inputObj.name,msg);
        }
    };

    this.isEmail = function(inputObj, msg) {
		this.addAllName(inputObj.name);
        inputObj.value = inputObj.value.trim();

        if (inputObj.value == '') {
            return;
        } else if (!inputObj.value.isEmail()) {
            this.addErrorMsg(inputObj.name,msg);
        }
    }
    
    this.eqaul = function(fstObj, sndObj, msg) {
		this.addAllName(fstObj.name);
        if (fstObj != null && sndObj != null) {
            if (fstObj.value != sndObj.value) {
                this.addErrorMsg(fstObj.name,msg);
            }
        }
    }

    this.gt = function(fstObj, sndObj, msg) {
		this.addAllName(fstObj.name);
        if (fstObj != null && sndObj != null) {
            if (fstObj.value <= sndObj.value) {
                 this.addErrorMsg(fstObj.name,msg);
            }
        }
    }

    this.isNumber = function(inputObj, msg) {
 		this.addAllName(inputObj.name);
       inputObj.value = inputObj.value.trim();

        if (inputObj.value == '') {
            return;
        } else {
            if (!inputObj.value.isNumber()) {
                this.addErrorMsg(inputObj.name,msg);
            }
        }
    }

    this.isInt = function(inputObj, msg) {
		this.addAllName(inputObj.name);
        inputObj.value = inputObj.value.trim();
        if (inputObj.value == '') {
            return;
        } else {
            if (!inputObj.value.isInt()) {
				this.addErrorMsg(inputObj.name,msg);
			}
		}
    }
	
    this.isTime = function(inputObj, msg) {
		this.addAllName(inputObj.name);
        inputObj.value = inputObj.value.trim();

        if (inputObj.value == '') {
            return;
        } else {
            if (!inputObj.value.isTime()) {
				this.addErrorMsg(inputObj.name,msg);
			}
        }
    }
	
    this.isDate = function(inputObj, msg) {
		this.addAllName(inputObj.name);
        inputObj.value = inputObj.value.trim();

        if (inputObj.value == '') {
            return;
        } else {
            if (!inputObj.value.isDate()) {
				this.addErrorMsg(inputObj.name,msg);
			}
        }
    }

    this.passed = function() {
        if (this.errMsg.length > 0) {
            FormValid.showError(this.errMsg,this.errName);
            return false;
        } else {
          return true;
        }
    }

    this.addErrorMsg = function(name,str) {
        this.errMsg.push(str);
		this.errName.push(name);
    }
	
    this.addAllName = function(name) {
		FormValid.allName.push(name);
    }
	
}
FormValid.allName = new Array();
FormValid.showError = function(errMsg) {
	var msg = "";
	for (i = 0; i < errMsg.length; i++) {
	  msg += "- " + errMsg[i] + "\n";
	}

	alert(msg);
}
function validator(frm) {
	var formElements = frm.elements;
	var fv = new FormValid(frm);
	for (var i=0; i<formElements.length;i++) {
		var validType = formElements[i].getAttribute('valid');
		var errorMsg = formElements[i].getAttribute('errmsg');
		if (validType==null) continue;
		var vts = validType.split('|');
		var ems = errorMsg.split('|');
		for (var j=0; j<vts.length; j++) {
			var curValidType = vts[j];
			var curErrorMsg = ems[j];
			
			switch (curValidType) {
			case 'isEmail':
				fv.isEmail(formElements[i],curErrorMsg);
				break;
			case 'eqaul':
				
				fv.eqaul(formElements[i],formElements[formElements[i].getAttribute('eqaulName')],curErrorMsg);
				break;
			case 'gt':
				fv.gt(formElements[i],formElements[formElements[i].getAttribute('eqqulName')],curErrorMsg);
				break;
			case 'isNumber':
				fv.isNumber(formElements[i],curErrorMsg);
				break;
			case 'isInt':
				fv.isInt(formElements[i],curErrorMsg);
				break;
			case 'isTime':
				fv.isTime(formElements[i],curErrorMsg);
				break;
			case 'isDate':
				fv.isDate(formElements[i],curErrorMsg);
				break;
			default :
				fv.required(formElements[i],curErrorMsg);
				break;
			}
		}
	}
	return fv.passed();
}
 





