/* Global Variables */
var isValid = false;
var chkAr = new Array();

/* eSite Sign-up Form */

function fctMinLenOf(evt, len){
	if(isIE){
		elem = window.event.srcElement;
		key = evt.which;
	} else {
		elem = evt.target;
		key = evt.keyCode;
	}

	worth = 0;//(key == 8) ? -1 : 1;

	window.status = elem.value.length+worth;

	if((elem.value == null ? 0 : elem.value).length+worth < len){
		setNotOk(elem);
	} else {
		setOk(elem);
	}

}

function lenMinOf3(evt) {  fctMinLenOf((isIE) ? window.event : evt, 3);  }
function lenMinOf5(evt) {  fctMinLenOf((isIE) ? window.event : evt, 5);  }
function lenMinOf7(evt) {  fctMinLenOf((isIE) ? window.event : evt, 7);  }
function lenMinOf8(evt) {  fctMinLenOf((isIE) ? window.event : evt, 8);  }
function lenMinOf13(evt){  fctMinLenOf((isIE) ? window.event : evt, 13); }

function selNotNull(evt){
	if(isIE){
		evt = window.event;
		elem = window.event.srcElement;
	} else {
		elem = evt.target;
	}
	if(elem.getAttribute("name") == "pays"){
		if(elem.value == "CA"){				// show province
			document.getElementById("provinceCanada").style.display = "";
			document.getElementById("etatsUsa").style.display       = "none";
			document.getElementById("provinceCanada").getElementsByTagName("select")[0].setAttribute("name", "province");
			document.getElementById("etatsUsa").getElementsByTagName("select")[0].setAttribute("name", "");
			document.getElementById("noProvince").getElementsByTagName("select")[0].setAttribute("name", "");
			if(!isIE){
				document.getElementsByName("codePostal")[0].removeEventListener("keyup", lenMinOf5, false);
				document.getElementsByName("codePostal")[0].removeEventListener("blur", lenMinOf5, false);
				document.getElementsByName("codePostal")[0].addEventListener("keyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].addEventListener("blur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].addEventListener("keydown", postalCodeEnforce, false);
			} else {
				document.getElementsByName("codePostal")[0].attachEvent("onkeyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].attachEvent("onblur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].attachEvent("onkeydown", postalCodeEnforce);
				document.getElementsByName("codePostal")[0].detachEvent("onkeyup", lenMinOf5);
				document.getElementsByName("codePostal")[0].detachEvent("onblur", lenMinOf5);

				document.getElementById("etatsUsa").getElementsByTagName("select")[0].detachEvent("onchange", selNotNull);
				document.getElementById("etatsUsa").getElementsByTagName("select")[0].detachEvent("onkeyup", selNotNull);
				document.getElementById("etatsUsa").getElementsByTagName("select")[0].detachEvent("onblur", selNotNull);

				document.getElementById("provinceCanada").getElementsByTagName("select")[0].attachEvent("onchange", selNotNull);
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].attachEvent("onkeyup", selNotNull);
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].attachEvent("onblur", selNotNull);
			}
			document.getElementsByName("codePostal")[0].value = "";
			setNotOk(document.getElementsByName("codePostal")[0]);
		} else if (elem.value == "US"){		// Show states
			document.getElementById("provinceCanada").style.display = "none";
			document.getElementById("etatsUsa").style.display       = "";
			document.getElementById("provinceCanada").getElementsByTagName("select")[0].setAttribute("name", "");
			document.getElementById("etatsUsa").getElementsByTagName("select")[0].setAttribute("name", "province");
			document.getElementById("noProvince").getElementsByTagName("select")[0].setAttribute("name", "");
			if(!isIE){
				document.getElementsByName("codePostal")[0].removeEventListener("keyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].removeEventListener("blur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].removeEventListener("keydown", postalCodeEnforce, false);
				document.getElementsByName("codePostal")[0].addEventListener("keyup", lenMinOf5, false);
				document.getElementsByName("codePostal")[0].addEventListener("blur", lenMinOf5, false);
			} else {
				document.getElementsByName("codePostal")[0].detachEvent("onkeyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].detachEvent("onblur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].detachEvent("onkeydown", postalCodeEnforce);
				document.getElementsByName("codePostal")[0].attachEvent("onkeyup", lenMinOf5);
				document.getElementsByName("codePostal")[0].attachEvent("onblur", lenMinOf5);
				
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].detachEvent("onchange", selNotNull);
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].detachEvent("onkeyup", selNotNull);
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].detachEvent("onblur", selNotNull);

				document.getElementById("etatsUsa").getElementsByTagName("select")[0].attachEvent("onchange", selNotNull);
				document.getElementById("etatsUsa").getElementsByTagName("select")[0].attachEvent("onkeyup", selNotNull);
				document.getElementById("etatsUsa").getElementsByTagName("select")[0].attachEvent("onblur", selNotNull);
			}
			document.getElementsByName("codePostal")[0].value = "";
			setNotOk(document.getElementsByName("codePostal")[0]);
		} else {							// Show nothing
			document.getElementById("provinceCanada").style.display = "none";
			document.getElementById("etatsUsa").style.display       = "none";
			document.getElementById("provinceCanada").getElementsByTagName("select")[0].setAttribute("name", "");
			document.getElementById("etatsUsa").getElementsByTagName("select")[0].setAttribute("name", "");
			document.getElementById("noProvince").getElementsByTagName("select")[0].setAttribute("name", "province");
			if(!isIE){
				document.getElementsByName("codePostal")[0].removeEventListener("keyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].removeEventListener("blur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].removeEventListener("keydown", postalCodeEnforce, false);
				document.getElementsByName("codePostal")[0].removeEventListener("keyup", lenMinOf5, false);
				document.getElementsByName("codePostal")[0].removeEventListener("blur", lenMinOf5, false);
			} else {
				document.getElementsByName("codePostal")[0].detachEvent("onkeyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].detachEvent("onblur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].detachEvent("onkeydown", postalCodeEnforce);
				document.getElementsByName("codePostal")[0].detachEvent("onkeyup", lenMinOf5);
				document.getElementsByName("codePostal")[0].detachEvent("onblur", lenMinOf5);
			}

		}
	}
	if(!isIE){
		frm.province.addEventListener("change", selNotNull, false);
		frm.province.addEventListener("keyup", selNotNull, false);
		frm.province.addEventListener("blur", selNotNull, false);
	} 

	checkEnableSubmit();

	if(elem.value == ""){
		setNotOk(elem);
		ret = false;
	} else {
		setOk(elem);
		ret = true;
	}
	return ret;
}

function emailValid(evt){
	if(isIE){
		evt  = window.event;
		elem = window.event.srcElement;
	} else {
		elem = evt.target;
	}
	
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if(!filter.test(elem.value)){
		setNotOk(elem);
	} else {
		setOk(elem);
	}
}

var debug = null;

function checkEnableSubmit(){
	isOk = true;
	for(i=0; chkAr[i]; i++){ 
		if(chkAr[i].parentNode.style.display != "none" && !String(chkAr[i].style.backgroundImage).match("Butbutvert.jpg") ){	
			isOk = false;
		} 
	}
	document.getElementById("regSub").disabled = !isOk;
}

function checkPass1(evt){
	if(isIE){
		evt = window.event;
		key = evt.keyCode;
		if(key >= 65 && key <= 90){
			if(!evt.shiftKey){
				key += 32;
			}
		}
		elem = window.event.srcElement;
	} else {
		key = evt.charCode;
		elem = evt.target;
	}
}

function isSamePass(evt){
	if(isIE){
		elem = window.event.srcElement;
	} else {
		elem = evt.target;
	}
	if(elem.value != document.forms['frmPartAdh'].password.value){
		setNotOk(elem);
	} else {
		setOk(elem);
	}
}


/*
These functions are project specific, they are not meant to be portable.
*/

function setNotOk(elem){
	elem.parentNode.parentNode.getElementsByTagName("td")[2].style.backgroundImage = "url(images/ButbutOrange.jpg)";
	document.getElementById("regSub").disabled = true;
}

function setOk(elem){
	elem.parentNode.parentNode.getElementsByTagName("td")[2].style.backgroundImage = "url(images/Butbutvert.jpg)";	
	checkEnableSubmit();
}

function signupFrmAutoValidate(){
	frm = document.forms['frmPartAdh'];
	if(frm){
		if(!isIE){
			frm.nom.addEventListener("keyup", lenMinOf3, false);
			frm.nom.addEventListener("blur", lenMinOf3, false);
			frm.prenom.addEventListener("keyup", lenMinOf3, false);
			frm.prenom.addEventListener("blur", lenMinOf3, false);
			frm.adresse.addEventListener("keyup", lenMinOf7, false);
			frm.adresse.addEventListener("blur", lenMinOf7, false);
			frm.tel.addEventListener("blur", lenMinOf13, false);
			frm.tel.addEventListener("keyup", lenMinOf13, false);
			frm.email.addEventListener("keyup", emailValid, false);
			frm.email.addEventListener("blur", emailValid, false);
			frm.ville.addEventListener("keyup", lenMinOf3, false);
			frm.ville.addEventListener("blur", lenMinOf3, false);
			frm.codePostal.addEventListener("keyup", lenMinOf7, false);
			frm.codePostal.addEventListener("blur", lenMinOf7, false);
			frm.province.addEventListener("change", selNotNull, false);
			frm.province.addEventListener("keyup", selNotNull, false);
			frm.province.addEventListener("blur", selNotNull, false);

			frm.pays.addEventListener("change", selNotNull, false);
			frm.pays.addEventListener("keyup", selNotNull, false);
			frm.pays.addEventListener("blur", selNotNull, false);

			frm.password.addEventListener("keyup", lenMinOf5, false);
			frm.password2.addEventListener("keyup", isSamePass, false);

			chkAr = document.getElementsByName("stateTD");
		} else {	// Need to change
			frm.nom.attachEvent("onkeyup", lenMinOf3);
			frm.nom.attachEvent("onblur", lenMinOf3);
			frm.prenom.attachEvent("onkeyup", lenMinOf3);
			frm.prenom.attachEvent("onblur", lenMinOf3);
			frm.adresse.attachEvent("onkeyup", lenMinOf7);
			frm.adresse.attachEvent("onblur", lenMinOf7);
			frm.tel.attachEvent("onblur", lenMinOf13);
			frm.tel.attachEvent("onkeyup", lenMinOf13);
			frm.email.attachEvent("onkeyup", emailValid);
			frm.email.attachEvent("onblur", emailValid);
			frm.ville.attachEvent("onkeyup", lenMinOf3);
			frm.ville.attachEvent("onblur", lenMinOf3);
			frm.codePostal.attachEvent("onkeyup", lenMinOf7);
			frm.codePostal.attachEvent("onblur", lenMinOf7);

			frm.pays.attachEvent("onchange", selNotNull);
			frm.pays.attachEvent("onkeyup", selNotNull);
			frm.pays.attachEvent("onblur", selNotNull);

			frm.province.attachEvent("onchange", selNotNull);
			frm.province.attachEvent("onkeyup", selNotNull);
			frm.province.attachEvent("onblur", selNotNull);

			frm.password.attachEvent("onkeyup", lenMinOf5);
			frm.password2.attachEvent("onkeyup", isSamePass);
	
			tdAr = document.getElementsByTagName("td");
			
			for(i=0; tdAr[i]; i++){
				if(tdAr[i].name == "stateTD"){
					chkAr.push(tdAr[i]);
				}
			}
		}

		setTimeout("onLoadThisForm();", 20);

		checkEnableSubmit();
	}
}

function onLoadThisForm(){
	frm = document.forms['frmPartAdh'];
	if(frm){
		frm.nom.value.length     < 3   ? setNotOk(frm.nom)      : setOk(frm.nom);
		frm.prenom.value.length  < 3   ? setNotOk(frm.prenom)   : setOk(frm.prenom);
		frm.adresse.value.length < 7   ? setNotOk(frm.adresse)  : setOk(frm.adresse);
		frm.tel.value.length     < 13  ? setNotOk(frm.tel)      : setOk(frm.tel);
		frm.ville.value.length   < 3   ? setNotOk(frm.ville)    : setOk(frm.ville);

		var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if(!filter.test(frm.email.value)){
			setNotOk(frm.email);
		} else {
			setOk(frm.email);
		}

		var filter = /^[A-Z][0-9][A-Z]\ [0-9][A-Z][0-9]$/i;
		if(!filter.test(frm.codePostal.value)){
			setNotOk(frm.codePostal);
		} else {
			setOk(frm.codePostal);
		}

		checkEnableSubmit();

		frm.pays.value           == "" ? setNotOk(frm.pays) : setOk(frm.pays);
		if(frm.pays.value == "CA"){
			document.getElementById("etatsUsa").style.display       = "none";
			document.getElementById("provinceCanada").style.display = "";
			frm.province.value       == "" ? setNotOk(frm.province) : setOk(frm.province);
			frm.codePostal.value.length     < 7   ? setNotOk(frm.codePostal)      : setOk(frm.codePostal);
		} else if(frm.pays.value == "US"){
			document.getElementById("etatsUsa").style.display       = "";
			document.getElementById("provinceCanada").style.display = "none";
			//frm.province.value       == "" ? setNotOk(frm.province) : setOk(frm.province);
			document.getElementById("etatsUsa").getElementsByTagName("select")[0].value == "" ? setNotOk(document.getElementById("etatsUsa").getElementsByTagName("select")[0]) : setOk(document.getElementById("etatsUsa").getElementsByTagName("select")[0]);
			frm.codePostal.value.length     < 5   ? setNotOk(frm.codePostal)      : setOk(frm.codePostal);
			if(!isIE){
				document.getElementsByName("codePostal")[0].removeEventListener("keyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].removeEventListener("blur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].removeEventListener("keydown", postalCodeEnforce, false);
				document.getElementsByName("codePostal")[0].addEventListener("keyup", lenMinOf5, false);
				document.getElementsByName("codePostal")[0].addEventListener("blur", lenMinOf5, false);
			} else {
				document.getElementsByName("codePostal")[0].detachEvent("onkeyup", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].detachEvent("onblur", lenMinOf7, false);
				document.getElementsByName("codePostal")[0].detachEvent("onkeydown", postalCodeEnforce);
				document.getElementsByName("codePostal")[0].attachEvent("onkeyup", lenMinOf5);
				document.getElementsByName("codePostal")[0].attachEvent("onblur", lenMinOf5);
				
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].detachEvent("onchange", selNotNull);
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].detachEvent("onkeyup", selNotNull);
				document.getElementById("provinceCanada").getElementsByTagName("select")[0].detachEvent("onblur", selNotNull);

				document.getElementById("etatsUsa").getElementsByTagName("select")[0].attachEvent("onchange", selNotNull);
				document.getElementById("etatsUsa").getElementsByTagName("select")[0].attachEvent("onkeyup", selNotNull);
				document.getElementById("etatsUsa").getElementsByTagName("select")[0].attachEvent("onblur", selNotNull);
			}
		} else {
			document.getElementById("etatsUsa").style.display       = "none";
			document.getElementById("provinceCanada").style.display = "none";
		}

		
	}
}