// JavaScript Document

function vProcessForm(sFormName, sDivInit, sDivCheck){
	var oForm  = document.forms[sFormName];
	var aRtSet;
	var bValid = true;
	
	if (bValid) {
		aRtSet = bCriteriaCheck();
		bValid = aRtSet[0];
	}
	//if (bValid) {
	//	aRtSet = bCriteriaCheckSpecific();
	//	bValid = aRtSet[0];
	//}

	if (bValid) {
		aRtSet = bCriteriaCheckPassengers();
		bValid = aRtSet[0];
	}

	if (bValid) {
		aRtSet = bCriteriaCheckDates();
		bValid = aRtSet[0];
	}
	
	//bValid = false;
	if (bValid) {
		vShowProgress(sDivInit, sDivCheck);
		oForm.submit();
	} else {
		alert(aRtSet[1]);
		vShowProgress(sDivCheck, sDivInit);
		if (aRtSet[1].length && aRtSet[2] != null && aRtSet[2].length) {
			document.getElementById(aRtSet[2]).select();
			document.getElementById(aRtSet[2]).focus();
		}
	}
}

function vSelectLanguage(sFormName, sLanguage){
	var oForm  = document.forms[sFormName];
	var sLang  = document.getElementById('fLg');
	var sLevel = document.getElementById('fLv');
	
	sLang.value = sLanguage;
	sLevel.value = 'In';
	oForm.submit();
}

function bCriteriaCheckDates() {
	var oDateFrom    = document.getElementById('DateFrom');
	var oDateTo      = document.getElementById('DateTo');
	var oDateFromMin = document.getElementById('DateFromMin');
	
	var bValid       = true;
	var sMsgEr       = '';
	var sField       = '';

	var aDateFrom    = oDateFrom.value.split('-');
	var dNewDate     = new Date();
	dNewDate.setMonth(parseInt(aDateFrom[1], 10) - 1);
	dNewDate.setDate(parseInt(aDateFrom[2], 10));
	dNewDate.setYear(parseInt(aDateFrom[0], 10));
	
	var dDate        = new Date();
	dDate.setDate(parseInt(dDate.getDate(), 10) + parseInt(oDateFromMin.innerHTML, 10));
	
	if (dDate > dNewDate) {
		bValid  = false;
		sMsgEr += document.getElementById('DateFromMinError').innerHTML + "\n";
	}
	
	return new Array(bValid, sMsgEr, sField);
}

function bCriteriaCheckPassengers() {
	var oAdults      = document.getElementById('Adults');
	var oChildren    = document.getElementById('Children');
	var oInfants     = document.getElementById('Infants');
	
	var bValid       = true;
	var sMsgEr       = '';
	var sField       = '';

	if ((parseInt(oAdults.value, 10) + parseInt(oChildren.value, 10) + parseInt(oInfants.value, 10) > 9) || (parseInt(oAdults.value, 10) < parseInt(oInfants.value, 10))) {
		bValid  = false;
		sMsgEr += document.getElementById('CriteriaPassengersError').innerHTML + "\n";
	}
	
	return new Array(bValid, sMsgEr, sField);
}

function bCriteriaCheckSpecific() {
	var oLocFrom     = document.getElementById('LocFrom');
	var oLocFromDisp = document.getElementById('LocFromDisp');
	var oLocFromInit = document.getElementById('LocFromInit');
	var oLocTo       = document.getElementById('LocTo');
	var oLocToDisp   = document.getElementById('LocToDisp');
	var oLocToInit   = document.getElementById('LocToInit');
	
	var bValid       = true;
	var sMsgEr       = '';
	var sField       = '';

	var aFdMsg       = new Array(
	                       "CriteriaLocFromError", "CriteriaLocFromSelectError", "CriteriaLocFromListError"
	                     , "CriteriaLocToError",  "CriteriaLocToSelectError", "CriteriaLocToListError"
	                      );
	
	// -- LocFrom
	if (bValid) {
		if (oLocFromDisp.value.length < 3 || oLocFromDisp.value == oLocFromInit.value) {
			bValid  = false;
			sMsgEr += document.getElementById(aFdMsg[0]).innerHTML + "\n";
			sField  = 'LocFromDisp';
		} else {
			var aDsp = oLocFromDisp.value.split(", ");
			if (aDsp.length >= 3) {
				// -- ajax check correspondance code / label
				//LocFromSearch.searchCode(oLocFromDisp.value, oLocFrom.value);
				if (aDsp[1].length != 3 || aDsp[1] != oLocFrom.value) {
					bValid  = false;
					sMsgEr += document.getElementById(aFdMsg[2]).innerHTML + "\n";
					oLocFromDisp.select(); oLocFromDisp.focus();
					LocFromSearch.setLastSearch('');
					LocFromSearch.search(oLocFromDisp.value);
				}
			} else {
				if (oLocFromDisp.value.length >= 3) {
					bValid    = false;
					sMsgEr += document.getElementById(aFdMsg[1]).innerHTML + "\n";
					oLocFromDisp.select(); oLocFromDisp.focus();
					LocFromSearch.setLastSearch('');
					LocFromSearch.search(oLocFromDisp.value);
				}
			}
		}
	}

	// -- LocTo
	if (bValid) {
		if (oLocToDisp.value.length < 3 || oLocToDisp.value == oLocToInit.value) {
			bValid    = false;
			sMsgEr += document.getElementById(aFdMsg[3]).innerHTML + "\n";
			sField    = 'LocToDisp';
		} else {
			var aDsp = oLocToDisp.value.split(", ");
			if (aDsp.length >= 3) {
				// -- ajax check correspondance code / label
				//LocToSearch.searchCode(oLocToDisp.value, oLocTo.value);
				if (aDsp[1].length != 3 || aDsp[1] != oLocTo.value) {
					bValid    = false;
					sMsgEr += document.getElementById(aFdMsg[5]).innerHTML + "\n";
					oLocToDisp.select(); oLocToDisp.focus();
					LocToSearch.setLastSearch('');
					LocToSearch.search(oLocToDisp.value);
				}
			} else {
				if (oLocToDisp.value.length >= 3) {
					bValid    = false;
					sMsgEr += document.getElementById(aFdMsg[4]).innerHTML + "\n";
					oLocToDisp.select(); oLocToDisp.focus();
					LocToSearch.setLastSearch('');
					LocToSearch.setFlagTrace('test');
					LocToSearch.search(oLocToDisp.value);
				}
			}
		}
	}
	
	return new Array(bValid, sMsgEr, sField);
}

function bCriteriaCheck() {
	var bState = true;
	var sMsgEr = '';
	var aField = new Array(
	                       "LocFromDisp", "DateFrom", "TimeFrom"
	                     , "LocToDisp",  "DateTo", "TimeTo"
	                     , "Adults",  "Children", "Infants"
	                     , "Seat",  "CarrierDisp"
	                      );
	var aFdIni = new Array(
	                       "LocFrom", "DateFrom", "TimeFrom"
	                     , "LocTo",  "DateTo", "TimeTo"
	                     , "Adults",  "Children", "Infants"
	                     , "Seat",  "Carrier"
	                      );
	var aFdMsg = new Array(
	                       "CriteriaLocFromError", "CriteriaDateFromError", "CriteriaTimeFromError"
	                     , "CriteriaLocToError",  "CriteriaDateToError", "CriteriaTimeToError"
	                     , "CriteriaAdultsError",  "CriteriaChildrenError", "CriteriaInfantsError"
	                     , "CriteriaSeatError",  "CriteriaCarrierError"
	                      );
	var aExcept = new Array(
	                       "Equal", "Equal", "Equal"
	                     , "Equal",  "Equal", "Equal"
	                     , "Equal", "Equal", "Equal"
	                     , "Equal", "Equal"
	                      );
	var aLabel  = new Array(
	                       "CriteriaLocFromMsg", "CriteriaDateFromMsg", "CriteriaTimeFromMsg"
	                     , "CriteriaLocToMsg",  "CriteriaDateToMsg", "CriteriaTimeToMsg"
	                     , "CriteriaAdultsMsg",  "CriteriaChildrenMsg", "CriteriaInfantsMsg"
	                     , "CriteriaSeatMsg",  "CriteriaCarrierMsg"
	                      );
	var aMess   = new Array();
	  aMess[ 1] = "MsgAllowedCharactersNumeric";
	  aMess[ 2] = "MsgAllowedCharactersAlpha";
	  aMess[ 3] = "MsgAllowedCharactersOpenAlpha";
	  aMess[50] = null;
	  aMess[51] = "MsgAllowedCharactersNumeric";
	  aMess[52] = "MsgAllowedCharactersAlpha";
	  aMess[53] = "MsgAllowedCharactersOpenAlpha";
	var aType   = new Array(50, 50, 50, 3, 3, 50, 1, 51, 51, 53, 50); // -- 1 = Ctl Num, 2 = Ctl Alpha, 3 = Ctl Open Alpha, 4 = Phone, 5 = Email, 50 = no Ctl, 51 = Ctl Num + option...
	var iField = 0;
	for (var iCpt = 0; iCpt < aField.length; iCpt++){
		var sField = document.getElementById(aField[iCpt]).value;
		var oField = document.getElementById(aFdIni[iCpt]+'Init').value;
		if (!sField.length || sField == oField) ++iField;
	}
	if (iField == aField.length) {
		bState = false;
		sMsgEr = document.getElementById(aFdMsg[aField.length]).innerHTML;
	} else {
		for (var iCpt = 0; iCpt < aField.length; iCpt++){
			var sField = document.getElementById(aField[iCpt]).value;
			var oField = document.getElementById(aFdIni[iCpt]+'Init').value;
			//alert(aExcept[iCpt]+" .. "+sField+" == " +oField);
			if ((!sField.length || sField == oField) && aExcept[iCpt] != 'Equal') {
				bState  = false;
				sMsgEr += document.getElementById(aFdMsg[iCpt]).innerHTML + "\n";
			} else {
				aRSet   = aSectionCheck(aField, aLabel, aMess, aType, iCpt);
				//alert(iCpt + " - " + aRSet[0] + " : " + aRSet[1]);
				if (!aRSet[0]) {
					bState  = aRSet[0];
					sMsgEr += aRSet[1] + "\n";
				}
			}
		}
	}
	
	return new Array(bState, sMsgEr, '');
}