function validateForm(){
	var isOk = true;

	if (typeof(mandatoryFields)=="object" && mandatoryFields["frm"]){
		mandatoryFieldsAr = mandatoryFields["frm"].split(",");
		mandatoryAlertsAr = mandatoryAlerts["frm"].split(",");
		// first element is always "0"

		var ddlCountry = $("country");
		var selectedCountry = "";
		if (ddlCountry)selectedCountry = ddlCountry.value;

		for (var i=1;i<mandatoryFieldsAr.length; i++){
			o = $(mandatoryFieldsAr[i]);
			curType = o.type;
			if (curType=="text"){
			//if (o.length==undefined && o.value!=undefined){
			
				if (o.value.length==0){
					// state should be mandatory only for USA
					if (mandatoryFieldsAr[i]!="state_province" || ( mandatoryFieldsAr[i]=="state_province" && selectedCountry=="USA")) {
						unfoldForm();
						if (mandatoryAlertsAr[i]==""){
							alert ("Please fill in all the required fields");
						}else{
							if (i<mandatoryAlertsAr.length){
								alert (mandatoryAlertsAr[i]);
							}else{
								alert ("Please fill in all the required fields");
							}
						}

						isOk = false;
						o.focus();
						break;
					}

				}else {
					if (mandatoryFieldsAr[i].indexOf("email")>-1){
						if (validateEmail(o.value)==false){
							unfoldForm();
							if (mandatoryAlertsAr[i]==""){
								alert ("Please fill in a valid email address");
							}else{
								alert (mandatoryAlertsAr[i]);
							}
							o.focus();

							isOk = false;
							break;
						}
					}
					else if (mandatoryFieldsAr[i].indexOf("phone")>-1){
					
						if (validatePhone(o.value)==false){
							unfoldForm();
							if (mandatoryAlertsAr[i]==""){
								alert ("Please fill in a valid phone number");
							}else{
								alert (mandatoryAlertsAr[i]);
							}
							o.focus();

							isOk = false;
							break;
						}
					}
				}
				
				
			}else if (curType=="select-one"){
			//}else if(o.length && o.selectedIndex ){

				if (o.selectedIndex==0 && o[0].value.toLowerCase().indexOf("choose")==0){
					unfoldForm();
					if (mandatoryAlertsAr[i]==""){
						alert ("Please fill in all the required fields");
					}else{
						alert (mandatoryAlertsAr[i]);
					}
					o.focus();
					isOk = false;
					break;

				}
			}
		}

	}

	if (isOk==false){
		return false;
	}else{
		$("btFrmSubmit").outerHTML = '<span class="submitMsg">Please Wait...</span>';
		//return false;
	}
}



function fillForm (){
	var e ;
	e = $("rememberDetails");
	if (e)e.checked=true ;

	e = $("hear_about");
	DOM.Event ("change",ReferrersOnChange,e);

	if (formValues){
		// last cell is always 0
		for (var i=0; i<formValues.length-1; i++){
			e = $ (formValues[i][0]);
			
			if (e){
			    type = e.type;

				if (type && type=="text" ){
					e.value = formValues[i][1];
					
				}else if (type=="select-one") {
				
				    e.value =  formValues[i][1];
					
				}

			}
		}
		isAllFilled = true;
		if (typeof(mandatoryFields)!="undefined"){
			mandatoryArr = mandatoryFields['frm'].split(",");
			for (var i;i<mandatoryArr.length; i++){
				if (mandatoryArr[i].length>1){
					e = $ (mandatoryArr[i]);
					if (e && e.value && e.value==""){
						isAllFilled = false;
						break;
					}
				}
			}

			if (isAllFilled && formValues.length>1 && $("frmUse") ){
				$("pagefrm").className = "form folded" ;
				if ($("frmRemember"))$("frmRemember").style.display = "none";
				if ($("frmUse"))$("frmUse").style.display = "inline";
			}
		}
		ReferrersOnChange();
	}
}

function unfoldForm(){

	if($("pagefrm"))$("pagefrm").className = "form" ;
	if($("frmRemember"))$("frmRemember").style.display = "inline";
	if($("frmUse"))$("frmUse").style.display = "none";
}


function respondToForm(strResponse){
	setHtml ('pagefrm','<div class="formResponse" >' + strResponse + '</div>');
}

function validatePhone(val){
	//var phone2 = /^(([0-9]{1})*[- .(]*([0-9]{3})*[- .)]*[0-9]{3}[- .]*[0-9]{4})+$/; 
	var phone2 = /^[\d() .:\-\+#]+$/;
	if (val.match(phone2)) {
    		return true;
  	} else {
  		return false;
  	}
}

function validateEmail(val){
	var rex = /^[a-z][\w\-\.]*@([a-z][a-z0-9\-]*\.)+[a-z]{2,}\s?$/i;
	var pos = val.search(rex);
	return (pos>=0);
}



function ReferrersOnChange(){

	var o = $("hear_about");

	if (o){
		if (!o[o.selectedIndex])return;
		var selVal = o[o.selectedIndex].value.toLowerCase();
		var oOtherFld = $("hear_about_other");
		if (oOtherFld)var oOther=oOtherFld.parentNode;
		if (oOther && selVal.toLowerCase().indexOf("other")==0){
			oOther.className = oOther.className.replace (/off/gi,"");
			oOtherFld.readOnly = false;
		}else{
			if(oOther)oOther.className += " off ";
			if (oOtherFld)oOtherFld.value = "";
		}
	}

}
