/*
//use a <var> tag that contains information about the form + field to validate
//<var targetForm="mForm" targetElement="age" required="true" dataType="numeric" maxLength="50">*</var>
//ATTRIBUTES:
//required="true" or required="false" => field is mandatory or not
//dataType="numeric" or dataType="alphanumeric" or dataType="email" or datatype="document"
//maxLength="A NUMBER" if dataType is numeric it will represent the maximum value allowed, else the maximum length of characters

//you can combine several <var> for the same field if you want to display several messages based on a specific validation
//example:
//FirstName <input type="text" name="firstName" onblur="validateElement(this);">
//<var targetForm="mForm" targetElement="firstName" required="true">Required</var>
//<var targetForm="mForm" targetElement="firstName" maxLength="5">Max 5</var>
//<var targetForm="mForm" targetElement="firstName" dataType="numeric">Numeric</var>


//trigger the validation onclick submit button, don't forget to specify the form name
//<input type="submit" onClick="validateForm('mForm')">

//if all fields are validated, form is submitted

//extra feature from GHE you can validate an element on the fly (onBlur etc ...)
//example:
//<input type="text" name="firstName" onblur="validateElement(this);">
//<var targetForm="mForm" targetElement="firstName" required="true">Required</var> 
//!!! it will work only if you have a <var> field declared

//a stylesheet is used to hide the validation messages
//<style>
//var{
//	display: none;
//}
//</style>

*/
function validateForm(whatForm, lg){
	formLg = lg;
	formIsValidated = true;
	currentForm = whatForm;
	for(var a=0; a<document.getElementsByTagName("var").length;a++){
		var targetForm = document.getElementsByTagName("var")[a].getAttribute('targetForm');
		if(targetForm==currentForm){
			if(!checkField(document.getElementsByTagName("var")[a])){
				document.getElementsByTagName("var")[a].style.color = 'red';
				formIsValidated = false;
			}
			else{
				document.getElementsByTagName("var")[a].style.display = 'none';
			}
		}
	}
	if(formIsValidated){
//		alert('posting form to '+eval('document.forms.' + whatForm).action);
		//eval('document.forms.' + whatForm).submit();
	}else{
		if(formLg.toUpperCase() == 'FR')
		alert("Veuillez corriger ou remplir tous les champs indiquant *");
		else if(formLg.toUpperCase() == 'NL')
		alert("Gelieve alle velden voorzien van een '*' in te vullen of corrigeren");
		else if(formLg.toUpperCase() == 'EN')
		alert("Please correct or fill in all fields marked with a *");
	}
	return formIsValidated;
}
function validateElement(mObj) {
	formIsValidated = true;
	currentForm = mObj.form.name;
	for(var a=0; a<document.getElementsByTagName("var").length;a++){
		if (document.getElementsByTagName("var")[a].getAttribute("targetElement") == mObj.name) {
			if(document.getElementsByTagName("var")[a].getAttribute('targetForm')==currentForm){
				if(!checkField(document.getElementsByTagName("var")[a])){
					document.getElementsByTagName("var")[a].style.display = 'inline';
					formIsValidated = false;
				}
				else{
					document.getElementsByTagName("var")[a].style.display = 'none';
				}
			}
		}
	}
}
function checkField(mObj){
	var formElement = eval('document.forms.'+ currentForm + '.' + mObj.getAttribute('targetElement'));
	var formElementType = getFieldType(formElement);
	
	if(formElementType == 'checkbox' || formElementType == 'radio' || formElementType == 'select'){
		return((!checkRequired(mObj, formElement, formElementType))?false:true);
		
	}
	else if(formElementType == 'textfield' || formElementType == 'textarea'){
		return((!checkRequired(mObj, formElement, formElementType) || !checkDataType(mObj, formElement) || !checkMaxLength(mObj, formElement) || !checkCompared(mObj, formElement, formElementType))?false:true);
		
	}
	else if(formElementType == 'file'){
		return((!checkRequired(mObj, formElement, formElementType) || !checkDataType(mObj, formElement))?false:true);
	}
	else{
		return false;
	}
}
function checkRequired(mObj, formElement, formElementType){
	if(mObj.getAttribute('required') == 'true'){
		if(formElementType == 'textfield' || formElementType == 'textarea' || formElementType == 'select' || formElementType == 'file'){
			return((formElement.value.length==0)?false:true);
		}
		else if(formElementType == 'checkbox'){
			return((!formElement.checked)?false:true);
		}
		else if(formElementType == 'radio'){
			var result = false;
			for(var a = 0; a < formElement.length; a++){
				if(formElement[a].checked) result=true;
			}
			return result;
		}
	}
	else{
		return true;
	}
}
function checkMaxLength(mObj, formElement){
	switch(mObj.getAttribute('dataType')){
	case 'numeric':
		if(mObj.getAttribute('maxLength') != null && parseInt(formElement.value) > parseInt(mObj.getAttribute('maxLength')))
			return false;
		else
			return true;
	break;
	default:
		if(mObj.getAttribute('maxLength') != null && formElement.value.length > mObj.getAttribute('maxLength'))
			return false;
		else
			return true;
	}
}
function checkDataType(mObj, formElement){
	switch(mObj.getAttribute('dataType')){
		case 'alphaNumeric':
			return true;
			break;
		case 'numeric':
			if(isNaN(formElement.value)) return false 
			else return true;
			break;
		case 'email':
			re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
        	return re.test(formElement.value)
			break;
		case 'document':
			if(formElement.value.length!=0){
				var ext = formElement.value.substr(formElement.value.length - 4, 4);
				if(ext !='.doc' && ext !='.txt' && ext !='.pdf') return false;
				else return true;
				break;
			}
			
			
		default:
			return true; // unknown value or unexisting
	}
}

function checkCompared(mObj, formElement){
	if(mObj.getAttribute('equalsTo')){
		var compareElement = eval('document.forms.'+ currentForm + '.' + mObj.getAttribute('equalsTo'));
		if(formElement.value!=compareElement.value) return false
		else return true;
	}
	else{
		return true;
	}
}

function getFieldType(mField){
	if(mField.tagName == "INPUT"){
		if(mField.type.toLowerCase()=="text" || mField.type.toLowerCase()=="password") 
			mType='textfield';
		else if(mField.type.toLowerCase()=="checkbox")
			mType='checkbox';
		else if(mField.type.toLowerCase()=="radio")
			mType='radio';
		else if(mField.type.toLowerCase()=="file")
			mType='file';
	}
	else if(typeof mField == 'object' && mField.length != undefined && !mField.tagName)
		mType='radio';
	else{
		mType=mField.tagName.toLowerCase();
	}
	return mType;
}
void(0);


// Toggle DIVs in document order form

function showDiv(oDiv) {
	hideDivs();
	document.getElementById(oDiv).style.display = 'block';
}

function hideDivs() {
	document.getElementById('div1').style.display = 'none';
	document.getElementById('div2').style.display = 'none';
	document.getElementById('div3').style.display = 'none';
	document.getElementById('div4').style.display = 'none';
}

function activateTab(oTab) {
	deactivateTabs();
	document.getElementById(oTab).className ="activeTab";
}

function deactivateTabs() {
	document.getElementById('tab1').className="passiveTab";
	document.getElementById('tab2').className="passiveTab";
	document.getElementById('tab3').className="passiveTab";
	document.getElementById('tab4').className="passiveTab";
}

// Toggle DIVs in TEAM

function showTeamDiv(oDiv) {
	hideTeamDivs();
	document.getElementById(oDiv).style.display = 'block';
}

function hideTeamDivs() {
	document.getElementById('div1').style.display = 'none';
	document.getElementById('div2').style.display = 'none';
}

function activateTeamTab(oTab) {
	deactivateTeamTabs();
	document.getElementById(oTab).className ="activeTab";
}

function deactivateTeamTabs() {
	document.getElementById('tab1').className="passiveTab";
	document.getElementById('tab2').className="passiveTab";
}

function ShowIt(sClass,sObj) {
	HideIt(oLastClass,oLastObject);
	
	var oObject = document.all['s'+sClass+sObj];
	var oContent = document.all["hiddenText"+sClass+sObj];
	var oTarget = document.all["theContent"+sClass];
	oObject.className = "activeService";
	oTarget.className = "activeService";
	oTarget.innerHTML = oContent.innerHTML;
	oLastClass = sClass;
	oLastObject = sObj;
}

function HideIt(sClass,sObj) {
	var oObject = document.all['s'+sClass+sObj];
	oObject.className="passiveService";
	var oTarget = document.all["theContent"+sClass];
	oTarget.className = "passiveService";
	oTarget.innerText = " ";
}

function WriteHashedMailto(strHashed,strClickWord) {
	var sOut
	sOut = "";
	for (i=0;i<strHashed.length;i++) {
		sOut += String.fromCharCode(strHashed.charCodeAt(i)-1);
	}
	sOut = "<a href='mailto:"+sOut+"' style=\"color:#295E49;font-weight:bold;\"><u>"+strClickWord+"</u></a>";
	document.write(sOut);
}