﻿
  var a_formats = {
	'alpha'   : /^[a-zA-Z\.\-]*$/,
	'alphanum': /^\w+$/,
	'unsigned': /^\d+$/,
	'integer' : /^[\+\-]?\d*$/,
	'real'    : /^[\+\-]?\d*\.?\d*$/,
	'email'   : /^[\w-\.]+\@[\w\.-]+\.[a-z]{2,4}$/,
	'phone'   : /^[\d\.\s\-]+$/,
	'url'     : function checkfile(file)
{
 var checkfiles=new RegExp("((^http)|(^https)|(^ftp)):\/\/(\\w)+\.(\\w)+");
return checkfiles.test(file);
},
	
	'required': function (val) {
		if(val.length==0)
			return false;
		return true;
	}, 
	'date'    : function (str) {
		var reg = /^(\d+)-(\d{1,2})-(\d{1,2})$/;
        var r = str.match(reg);
        if(r!=null)
        {
            str =r[3]+"/"+ r[2]+"/"+r[1];
        }
        reg = /^(\d{1,2})\/(\d{1,2})\/(\d+)$/;
        r = str.match(reg);
        if(r==null)
            return false;
       
        r[2]=r[2]-1;
        var d= new Date(r[3], r[2],r[1] );
        if(d.getFullYear()!=r[3])return false;
        if(d.getMonth()!=r[2])return false;
        if(d.getDate()!=r[1])return false;
         
        return true;

	},
	'time'    : function (s_time) {
		// check format
		if (!re_tm.test(s_time))
			return false;
		// check allowed ranges	
		if (RegExp.$1 > 23 || RegExp.$2 > 59 || RegExp.$3 > 59)
			return false;
		return true;
	}
}
function ValidateForm(id)
{
    if (!document.getElementById || !document.getElementsByTagName)
		    return false;
		this.tform = document.getElementById(id);
		this.inputtexts = this.tform.getElementsByTagName("input");
		this.texteartexts=  this.tform.getElementsByTagName("textarea");
		this.hiddentexts=  this.tform.getElementsByTagName("hidden");
}


ValidateForm.prototype.Init = function()
{
    var mainInstance = this;
   	this.OneElementEvent([mainInstance.inputtexts,mainInstance.texteartexts,mainInstance.hiddentexts]); 
    this.tform.onsubmit= function()
    {     
		var isgo=	mainInstance.ValidateSubmit([mainInstance.inputtexts,mainInstance.texteartexts,mainInstance.hiddentexts]);
		if(isgo)
		{
		   if(this.title=== undefined || this.title.length===0)
		            return true;  
		   if(confirm("确定要"+this.title))
           {
                 return true;
           }
		}
		return false;
    }
}

ValidateForm.prototype.OneElementEvent= function(vas)
{
	var mainInstance = this;
	var onvar;
	for(var iv =0;iv<vas.length;iv++)
	{
		onvar= vas[iv];
		for(var i=0;i<onvar.length;i++){
	    		onvar[i].onfocus = function () {
	    		    this.select();
       	        	if(this.parentNode.getElementsByTagName("span").length>0)
							this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
					}
				onvar[i].onblur = function () {				
						mainInstance.OnblurEvent(this);				
					}
	 		}
	}
}
ValidateForm.prototype.OnblurEvent = function(va)
{
	var vaclass= va.className;
    var oneva;
    var vaValue= va.value;
    for(var iv =0;iv<va.parentNode.getElementsByTagName("span").length;iv++)	{		
	    oneva= va.parentNode.getElementsByTagName("span")[iv];		
	    if(oneva)
	    {			 
		    oneva.style.display = "none";		 
		    if(vaclass.indexOf("validate")>-1&&!this.sValidateFormElement(vaValue,oneva))
		    {	
			    oneva.style.display = "inline";				
			    return false;				
		    }
	    }
    }
    return true;
	
}
 ValidateForm.prototype.ValidateSubmit= function(vas)
 {
	var mainInstance = this;
	var onvar;
	var goTrue=true;		
	for(var iv =0;iv<vas.length;iv++){			
		onvar= vas[iv];							 
		for(var i=0;i<onvar.length;i++){	
		    if(!mainInstance.OnblurEvent(onvar[i])){
				goTrue=false;	
				return goTrue;
			}	
	 	}
	}
	return goTrue;
 }
 	
 	ValidateForm.prototype.sValidateFormElement = function(vaValue,oneva)
 	{ 		

 		 	var elementName=oneva.title;	 		 	
 	        var	elementNames= 	elementName.split(' ');
 	        var isf=true ; 	
 	        for(var iel=0;iel<elementNames.length;iel++)
 	        {
 	            if(!isf)
 	            {
 	                return isf;
 	            } 	    
 	            if(vaValue.length===0 && "required"!==elementNames[iel] )
 	            {
 	                  isf=true; 
 	                  continue;
 	            } 	                
			    var o_format_check =a_formats[elementNames[iel]];						
			    if(!o_format_check)
				   continue;
			    if(	typeof(o_format_check) != 'function')
			    {	  		
				    isf= o_format_check.test(vaValue);
			    }
			    else{
			
					isf=o_format_check(vaValue);
			    }
			}
			return isf;
	
 		}


