//Conception Z.  All right reserved

if (!Array.indexOf) {
	Array.prototype.indexOf = function(obj) {
		for ( var i = 0; i < this.length; i++) {
			if (this[i] == obj) {
				return i;
			}
		}
		return -1;
	}
}

var okBool = null;
var arrBool = new Array();
var arrBoolM = new Array();
var arrBoolEmail = new Array();
var msgErrorDiv;
var arrSameValueField1 = new Array();
var arrSameValueField2 = new Array();
var arrSameValueFieldErrorMsg = new Array();
var langue = null;
var boolDeact = false;
var boolRadio = false;
var boolSilent = false;


//*ADD BY EDNER 20 NOVEMBRE 2009***
var boolSetFocus = true;

//*********************************
var boolShowErrorDiv = true;
var boolShowAlertMessage = false;
//var url = null;
//var tabIndex = null;
//var fieldLang = null;
/**
 * * validateForm declare validation function in the order they appear in the
 * form
 */
function validateForm() {
	var arrElementObject = new Array();
	var firstErrorElement;
	var arrStrMsgError = new Array();	
	
	for ( var x = 0; x < arrBool.length; x++) {
		divElement = document.getElementById(arrBool[x]);
		var boolRadio = false;

		if (divElement.getAttribute("type") == "radio") {
			divElementR = document.getElementsByName(arrBool[x]);
			for (i = 0; i < divElementR.length; i++) {
				var objRadio = divElementR[i];
				if (objRadio.checked == true)
					var boolRadio = true;
			}
		}
		
		if ((divElement.value == "")
				|| (divElement.getAttribute("type") == "checkbox" && divElement.checked == false)
				|| (divElement.getAttribute("type") == "radio" && boolRadio == false)) {
			//PETIT MODIF EDNER 20 NOVEMBRE 2009
			if (arrBoolM[x] != ''){
				var messageTO = arrBoolM[x];
			}
			else {
				if (langue == "english" || langue == "en"){
					var messageTO = "Please fill this required field.";
				}
				else{
					var messageTO = "Merci de compléter ce champs requis.";
				}
			
			}		
			
			arrStrMsgError.push(messageTO);
			// divElement.className = "errorField";
			if(boolShowErrorDiv == true)
			{
				showErrorDiv(divElement, arrBool.length,messageTO);
			}	
					
			addClass(divElement, 'errorField');
			//creer un nouveau element
			
			//HERE			
			//REMPLIR UN ARRAY D'OBJECT
			//HERE
			if(boolSetFocus == true)
			{
				//alert('okk');
				arrElementObject.push(divElement);
			}		
			
			
			if (firstErrorElement == null) {
				firstErrorElement = divElement
			}

		} else {
			removeClass(divElement, 'errorField');
			cleanErrorDiv(divElement);

		}		
	}
	
	for ( var x = 0; x < arrBoolEmail.length; x++) {

		var inputEmail = document.getElementById(arrBoolEmail[x]);
		var boite = document.getElementById(arrBoolEmail[x]).value;
		if (boite.indexOf("@") != -1 && boite.indexOf(".") != -1
				&& boite.length > 5) {
			messageTO = "";
			removeClass(inputEmail, 'errorField');
		} else {
			if (langue == "english" || langue == "en")
				var messageTO = "Invalid email format.";
			else
				var messageTO = "Le format de l'adresse éléctronique semble erronée.";

			arrStrMsgError.push(messageTO);
			addClass(inputEmail, 'errorField');
			spanElementId = divElement.tagName + "_" +  divElement.id;
			if(document.getElementById(spanElementId).innerHTML == '')
				showErrorDiv(divElement, arrBool.length,messageTO);
			// inputEmail.className = "errorField";
			
			//HERE
			if(boolSetFocus == true)
			{
				arrElementObject.push(inputEmail);
			}
			
			if (firstErrorElement == null) {				
				firstErrorElement = inputEmail
			}
		}
	}

	for ( var x = 0; x < arrSameValueField1.length; x++) {

		if (document.getElementById(arrSameValueField1[x]).value != document
				.getElementById(arrSameValueField2[x]).value) {

			// document.getElementById(arrSameValueField2[x]).className =
			// "errorField";
			addClass(document.getElementById(arrSameValueField2[x]),'errorField');
			arrStrMsgError.push(arrSameValueFieldErrorMsg[x]);
			
			//HERE
			if(boolSetFocus == true)
			{
				arrElementObject.push(document.getElementById(arrSameValueField2[x]));
			}			
			
			if (firstErrorElement == null) {
				firstErrorElement = document.getElementById(arrSameValueField2[x]);
			}
		} else {
			removeClass(document.getElementById(arrSameValueField2[x]),	'errorField');
		}
	}
	
	if (firstErrorElement == null) 
	{
		var answer;
		if(boolShowAlertMessage != false){
			if(langue == "en" || langue == "englais")
				answer = confirm("If one field in the french one is fill, please fill the one in the english, have you done that?");			
			else
				answer = confirm("Tous les champs dûment remplis dans le Français doivent l'être aussi dans l'anglais, les avez-vous remplis?");
			
			if(!answer)
			{
				//selectionner le tab englais si le champs n'est pas rempli
				var $tabs = $('#tabs').tabs(); // first tab selected					
				$tabs.tabs('select',2); // switch to x tab	
				return false;
			}
		}
		return true;
	} else {
		
		if (!boolSilent) {
			if (msgErrorDiv == null) {
				//add by EDNER LE 30 NOVEMBRE 2009
				if(boolShowErrorDiv == false)
				{
					alert(arrStrMsgError.join('\n'));
				}
				// empecher le refresh de la page
				
				//METTRE LE FOCUS SUR LE PREMIER CHAMPS
				if(boolSetFocus == true)
				{			
					//get the url and redirect to info 
					var w_length = arrElementObject[0].name.length; 
					w_length = w_length - 2;
										
					var fieldLang = arrElementObject[0].name.substring(w_length);					
					//alert(fieldLang);
					//alert('alert');
					if(fieldLang == "fr" || fieldLang == "en")
					{		
						//alert('alert');
						var tabIndex = 0;
						var twoIndex = false;
						
						if(fieldLang != "fr" && fieldLang != "en")
						{
							tabIndex = 0;
						}
						else
						{							
							if(document.getElementById('tabs-main_1') == null || document.getElementById('tabs-main_1').id != "tabs-main_1")
							{								
								if(fieldLang == "fr")
								{
									tabIndex = 0;
								}
								else if (fieldLang == "en")
								{
									tabIndex = 1;
								}	
							}
							else
							{
								if(fieldLang == "fr")
								{
									tabIndex = 1;
								}
								else if (fieldLang == "en")
								{
									tabIndex = 2;
								}
							}
						}			
						
						var $tabs = $('#tabs').tabs(); // first tab selected	
						$tabs.tabs('select',tabIndex); // switch to x tab
					}							
					arrElementObject[0].focus();
					arrElementObject = null;
				}				
				return false;
			} else {
				msgErrorDiv.innerHTML = arrStrMsgError.join('</br>');
			}
		}		
		document.location = "#" + firstErrorElement.id;
					
		firstErrorElement.focus;

		return false;
	}	
}

function setSilent(bool) {
	boolSilent = bool;
}

function setlangue(lang) {
	langue = lang;
}
function setMsgErrorDiv(div) {
	msgErrorDiv = div;
}
function addClass(element, strClassName) {
	var newClassName = "";
	var arrClass = element.className.split(' ');

	for ( var x = 0; x < arrClass.length; x++) {

		if (strClassName == arrClass[x]) {

			return element;
		}
		newClassName += arrClass[x];
		if (x + 1 <= arrClass.length) {
			newClassName += " ";
		}
	}
	if (x == 0) {
		element.className = strClassName;
	} else {
		element.className = newClassName + strClassName;
	}

	return element;

}
function removeClass(element, strClassName) {

	var newClassName = "";
	var arrClass = element.className.split(' ');
	// alert(element.id);
	// alert(element.className);
	for ( var x = 0; x < arrClass.length; x++) {

		if (arrClass[x] != strClassName) {
			newClassName += arrClass[x];
		}
		if (x + 1 <= arrClass.length) {
			newClassName += " ";
		}
	}
	element.className = newClassName;
	return element;
}

function emailField(name) 
{
	arrBoolEmail[arrBoolEmail.length] = name;
}
function sameValueField(fieldId1, fieldId2, message) {
	arrSameValueField1[arrSameValueField1.length] = fieldId1;
	arrSameValueField2[arrSameValueField2.length] = fieldId2;
	arrSameValueFieldErrorMsg[arrSameValueFieldErrorMsg.length] = message;
}

function required(name, message) 
{
	//alert('we in required');
	// alert('go 2');
	/* alert(arrBool.length); */
	// alert();
	// alert(name+arrBool.length);
	arrBool[arrBool.length] = name;
	if (typeof (message) == 'undefined')
		arrBoolM[arrBoolM.length] = '';
	else
		arrBoolM[arrBoolM.length] = message;
	
	
}
var newElement;
var errorText;
var boolIsCreated = false;
var nbrFieldToValidate = 0;
var myI = 1;

function cleanErrorDiv(element)
{
	spanElementId = element.tagName + "_" +  element.id;	
	if(document.getElementById(spanElementId) != null)
	{
		
		obj = document.getElementById(spanElementId);
		obj.innerHTML = '';
		obj.style.display = 'none';
	}		
}	

function showErrorDiv(element, _nbrFieldToValidates,messageTO)
{		
	spanElementId = element.tagName + "_" +  element.id;
	//alert(document.getElementById(spanElementId));
	
	if(document.getElementById(spanElementId) == null)
	{
	newElement = element.parentNode;	
	var spanElement = document.createElement('span');
	spanElement.className = "erreur_validate";
	spanElementId = element.tagName + "_" +  element.id;
	spanElement.id = spanElementId;
	
	var brElement = document.createElement('br');
	
	//if(boolIsCreated == false)
	//{
		if(newElement != null)
		 {
			 errorText = messageTO;
			
			 spanElement.innerHTML = errorText;
			 newElement.appendChild(brElement);
			 newElement.appendChild(spanElement);	 
			
			 
			/* if(myI == _nbrFieldToValidates)
			 {
				 //alert(myI);
				 boolIsCreated = true;
			 }
			 else
			 {
				 myI++;
			 }*/
			 
		 }		
	//}	
	} 
	else{
		obj = document.getElementById(spanElementId);
		obj.style.display = 'block';
		obj.innerHTML = messageTO;	
	}	
	
}

function validateField(idChamps, type, keyMessage) {
	divElement = document.getElementById(idChamps);
	if (type == 'text') {
		if (divElement.value == "") {
			if (langue == "english" || langue == "en")
				var messageTO = "A required field is missing";
			else
				var messageTO = "Un champ obligatoire n'est pas complété";

			divElement = document.getElementById(keyMessage);
			divElement.innerHTML = messageTO;
			
			
			divElement.focus();
			return false;
		}

	}
	if (type == 'email') {
		var boite = divElement.value;
		if (boite.indexOf("@") != -1 && boite.indexOf(".") != -1
				&& boite.length > 5)
			messageTO = "";
		else {
			if (langue == "english" || langue == "en")
				var messageTO = "Invalid email";
			else
				var messageTO = "Adresse éléctronique erronée";
			divElement = document.getElementById(keyMessage);
			divElement.innerHTML = messageTO;
			return false;
		}
	}
}

function isdefined(variable) {
	// alert(typeof(window[variable]));
	return (typeof (window[variable]) == "undefined") ? false : true;
}

function removeRequired(name, message) {

	var ind = arrBool.indexOf(name);
	if (ind >= 0)
		arrBool.splice(ind, 1);
	// alert(arrBool.length);
	var ind = arrBoolM.indexOf(message);
	if (ind >= 0)
		arrBoolM.splice(ind, 1);

}

function removeEmail(name) {
	var ind = arrBoolEmail.indexOf(name);
	if (ind >= 0)
		arrBoolEmail.splice(ind, 1);
}

function setShowAlertMessage(bool)
{
	boolShowAlertMessage = bool;
}
