/***********************************************
 form validate by Danny Huang. www.dhexhibit.net
***********************************************/

// trim space around the string
trim=function(str){
    return (str.replace(/^\s*/,"")).replace(/\s*$/,"");
}

// check for proper email format
validateEmail=function(email){
//    var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
  var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w|-|\\w\\.\\w]+\\.\\w{2,3}$";
  
  
     var regex = new RegExp(emailReg);
     return regex.test(email);

}

// check for numbers
validateNmuber=function(a){
	return a.match(/^[0-9]+$/)==null?false:true;
}

// check for number length
validateNmuberLength=function(a,l){
	if(validateNmuber(a))
		return a.length==l?1:0;
	else
		return -1;
}

// check for zip code
validateZipCode=function(a){
	if(validateNmuber(a))
		return a.length<5?0:1;
	else
		return -1;
}

// check to see if there are associated fields has input value
checkThisGroup=function(obj,g){
	var hasInput=false;
	for(var k=0;k<checkeritems.length;k++){
		if(checkeritems[k].type=="U"&&checkeritems[k].group){
			if(checkeritems[k].group==g){
				eval("var thisFormObj=obj."+checkeritems[k].name);
				if(trim(thisFormObj.value)!="")
					hasInput=true;
			}
		}
	}
	return hasInput;
}

// main function for form validate
validateRequires=function(obj){
	var passed=true;
	for(var i=0;i<checkeritems.length;i++){
		eval("var formObj=obj."+checkeritems[i].name);
		// check for text fields
		if(checkeritems[i].type=="T"){
			if(trim(formObj.value)==""){
				alert(checkeritems[i].message.split(";")[0]);
				formObj.focus();
				passed=false;
				break;
			}
			else{
				// check for numbers
				if(checkeritems[i].rule.substr(0,1)=="N"){
					if(validateNmuberLength(formObj.value,checkeritems[i].rule.substr(1,1))==-1){
						alert(checkeritems[i].message.split(";")[1]);
						formObj.focus();
						passed=false;
						break;
					}
					else if(validateNmuberLength(formObj.value,checkeritems[i].rule.substr(1,1))==0){
						alert(checkeritems[i].message.split(";")[2]);
						formObj.focus();
						passed=false;
						break;
					}
				}
				// check for email
				if(checkeritems[i].rule=="E"){
					if(!validateEmail(formObj.value)){
						alert(checkeritems[i].message.split(";")[1]);
						formObj.focus();
						passed=false;
						break;
					}
				}
				// check for zip code
				if(checkeritems[i].rule=="Z"){
					if(validateZipCode(formObj.value)==-1){
						alert(checkeritems[i].message.split(";")[1]);
						formObj.focus();
						passed=false;
						break;
					}
					else if(validateZipCode(formObj.value)==0){
						alert(checkeritems[i].message.split(";")[2]);
						formObj.focus();
						passed=false;
						break;
					}
				}

			}
		}
		// check for select combobox
		else if(checkeritems[i].type=="S"){
			if(formObj.selectedIndex==0){
				alert(checkeritems[i].message);
				formObj.focus();
				passed=false;
				break;
			}
		}
		// check for radio buttons
		else if(checkeritems[i].type=="R"||checkeritems[i].type=="C"){
			var hasChecked=0;
			for(var j=0;j<formObj.length;j++){
				if(formObj[j].checked==true)
					hasChecked++;
			}
			if(hasChecked==0){
				alert(checkeritems[i].message);
				formObj[0].focus();
				passed=false;
				break;
			}
		}
		// check for non-required field format
		else if(checkeritems[i].type=="U"){
			// check to see if there are associated fields has input value
			var groupedInput=false;
			if(checkeritems[i].group)
				groupedInput=checkThisGroup(obj,checkeritems[i].group);
			// check for numbers
			if(checkeritems[i].rule.substr(0,1)=="N"){
				if(trim(formObj.value)==""){
					if(groupedInput){
						alert(checkeritems[i].message.split(";")[0]);
						formObj.focus();
						passed=false;
						break;	
					}
				}
				else{
					if(validateNmuberLength(formObj.value,checkeritems[i].rule.substr(1,1))==-1){
						alert(checkeritems[i].message.split(";")[1]);
						formObj.focus();
						passed=false;
						break;
					}
					else if(validateNmuberLength(formObj.value,checkeritems[i].rule.substr(1,1))==0){
						alert(checkeritems[i].message.split(";")[2]);
						formObj.focus();
						passed=false;
						break;
					}
				}
			}
			// check for zip code
			if(checkeritems[i].rule=="Z"&&trim(formObj.value)!=""){
				if(validateZipCode(formObj.value)==-1){
					alert(checkeritems[i].message.split(";")[1]);
					formObj.focus();
					passed=false;
					break;
				}
				else if(validateZipCode(formObj.value)==0){
					alert(checkeritems[i].message.split(";")[2]);
					formObj.focus();
					passed=false;
					break;
				}
			}
		}
	}
	return passed;
}

function signin(form){
	var now=new Date();
	form.timezoneOffset.value=now.getTimezoneOffset();
	return ;
}