/*
	validity=text,select,check,radio,email,checks,same,whenValue
*/

String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,'')}

var	Forms={
		objForm:null,
		isEmailAddress:function (theElement){
			var s = theElement.value;
			var filter=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
			if (s.length == 0 ) return true;
			if (filter.test(s))
				return true;
			else
				return false;
		},//isEmailAddress
		validity:function(){
			try{
				var frm=Forms.objForm;
				var mess='Faltan datos requeridos.\n',bMess=false;
				for(i=0; i<=frm.elements.length-1;i++){
					var ctl=frm.elements.item(i);
					if(typeof(ctl)=="object"){
						if(ctl.type=="text" || ctl.type=="select-one" || ctl.type=="select" || ctl.type=="radio" || ctl.type=="checkbox" || ctl.type=="textarea" || ctl.type=="file" || ctl.type=="hidden" || ctl.type=="password"){
							var at=ctl.getAttribute("required");
							var at2=ctl.getAttribute("validity");
							var atObj=ctl.getAttribute("sameTo");
							var atObj2=ctl.getAttribute("whenValueObj");
							var atObj3=ctl.getAttribute("whenValue");
							var mes=ctl.getAttribute("message");
							if(at=="true" & at2=="checks"){
								var bChk=false,bVal2=false,obj=document.getElementsByName(ctl.name);
								var ctlRef;
								if(atObj3=="*selected*"){
									ctlRef=document.getElementById(atObj2);
									if(ctlRef.checked){bVal2=true;}else{bVal2=false;}
								}else{bVal2=true;}
								if(bVal2){
									for(z=0;z<=obj.length-1;z++){
										if(obj[z].checked){bChk=true;z=obj.length+1;}
									}
									if(!bChk){bMess=true;mess+="* "+mes.toString()+"\n";}
								}
							}else if(at=="true" & at2=="text"){
								if(ctl.value.trim()==""){bMess=true;mess+="* "+mes.toString()+"\n";}
							}else if(at=="true" & at2=="select"){
								if(ctl.selectedIndex==0){bMess=true;mess+="* "+mes.toString()+"\n";}
							}else if(at=="true" & at2=="same"){
								var ctlRef=document.getElementById(atObj);
								if(ctl.value.trim()!=ctlRef.value.trim()){bMess=true;mess+="* "+mes.toString()+"\n";}
							}else if(at=="true" & at2=="whenValue"){
								var ctlRef=document.getElementById(atObj2);
								try{
									if(atObj3==ctlRef.value & ctl.value.trim()==""){bMess=true;mess+="* "+mes.toString()+"\n";}
								}catch(e){
									try{
										if(atObj3==ctlRef.options[ctlRef.selectedIndex].value & ctl.value.trim()==""){bMess=true;mess+="* "+mes.toString()+"\n";}
									}catch(e){}
								}
							}else if(at=="true" & (at2=="check" | at2=="radio")){
								if(!ctl.checked){bMess=true;mess+="* "+mes.toString()+"\n";}
							}else if(at=="true" & at2=="email"){
								if(ctl.value.trim()!=""){
									if(!Forms.isEmailAddress(ctl)){bMess=true;mess+="* "+mes.toString()+"\n";}
								}else{
										if(ctl.value.trim()==""){bMess=true;mess+="* "+mes.toString()+"\n";}
								}
							}//if else
						}//if
					}//if				
				}//for				
				if(bMess){alert(mess);return false;}else{return true;}
			}catch(e){alert("Error:\n"+e.message);return false;}
		}//validity
	}	//Forms