// JavaScript Document
// Validations related to multiSearch.jsp

var strCompairValue = "-- Choose --";

function validate(){
	strErrMsg = ""
	intErrFocus = -1;
	initializeErrMsg(); // writing to span
	resetStyle();
	
	if (Number(getValue("selAdults")) +  Number(getValue("selChild")) == 0){
			strErrMsg += buildError(arrErr["009"]);
			setFocus("selAdults");			
	}
		
	//Validate Total passengers
	//var intTotPax = Number(getValue("selAdults")) +  Number(getValue("selChild")) +  Number(getValue("selInfants"))
	var intTotPax = Number(getValue("selAdults")) +  Number(getValue("selChild")) 
	if (intTotPax > Number(arrParams[16])){
		strErrMsg += buildError(arrErr["008"], arrParams[16]);
		setFocus("selAdults");		
	}


	// Check Blank
	isSelBlank();

	if (strErrMsg == "")
	{
		checkDate();
		if(!noOfCities()){
			strErrMsg += buildError(arrErr["011"], "") + "<br>";
		} 
		if(!checkSameCityPair()){
			strErrMsg += buildError(arrErr["012"], "") + "<br>";
		}
		if(!checkDateCount())
		{
			strErrMsg += buildError(arrErr["013"], "") + "<br>";
		}	
		if(!checkItineraryInterruption())
		{
			strErrMsg += buildError(arrErr["014"], "") + "<br>";
		}		
		
		if (strErrMsg == "")
		{
			checkMinDeparture();
		}
		
		// checkAdultRequried
		
		for (var i = 0 ; i < fltContrLegNo-1 ; i++){
			/*
			if (checkAdultRequired(Number(getValue("selAdults")), "O", getValue("selFrom"+ (i+1)), getValue("selTo"+ (i+1)))){
				strErrMsg += buildError(arrErr["018"]);
				//setFocus(arrControls[9][0]);
				break;				
			}
			*/
			var strFrom ="";
			var strTo = "";
			if (i==0){
				strFrom = objFromSD1.value ;
				strTo = objToSD1.value ;
			}else if (i==1){
				strFrom = objFromSD2.value ;
				strTo = objToSD2.value ;
			}else if (i==2){
				strFrom = objFromSD3.value ;
				strTo = objToSD3.value ;
			}else if (i==3){
				strFrom = objFromSD4.value ;
				strTo = objToSD4.value ;
			}else if (i==4){
				strFrom = objFromSD5.value ;
				strTo = objToSD5.value ;
			}else if (i==5){
				strFrom = objFromSD6.value ;
				strTo = objToSD6.value ;
			}
			if (checkAdultRequired(Number(getValue("selAdults")), "O", strFrom, strTo)){
				strErrMsg += buildError(arrErr["018"]);
				//setFocus(arrControls[9][0]);
				break;				
			}
		}
		
	}
	

	// Write errot msg to span
	if (strErrMsg != ""){
		showErrMsg("<br>" + strErrMsg)
		setFocus(strErrorFocus);
		return false;
	}else{
		return true;
	}
}

function resetStyle(){
	/*
	for (var i = 0 ; i < arrControls.length ; i++){
		//setStyleClass(arrControls[i][0], arrControls[i][2]);
	}
	*/
	for (var i = 0 ; i < fltContrLegNo-1 ; i++){
		//setStyleClass("selFrom" + (i+1), arrControls[0][2]); 	
		//setStyleClass("selTo" + (i+1), arrControls[1][2]); 
		setStyleClass("selYrDept" + (i+1), arrControls[2][2]);
		setStyleClass("selDtDept" + (i+1), arrControls[3][2]); 			 	
	}
}

// Check Blank
function isSelBlank(){
	
	//var objFrom = getFieldByName("selFrom");
	//var objTo = getFieldByName("selTo");
	var objDtDept = getFieldByName("selDtDept");
	var objYrDept = getFieldByName("selYrDept");
	
	for (var i = 0 ; i < fltContrLegNo-1 ; i++){

		/*
		if(getValue("selFrom"+ (i+1)) =="" || getValue("selTo"+(i+1)) == strCompairValue){
			strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
			setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 	
		}
		if(getValue("selTo"+ (i+1)) =="" || getValue("selTo"+(i+1)) == strCompairValue){
			strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
			setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
		}
		*/
		if (i==0){
			if(objFromSD1.value =="" || objToSD1.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 
			}
			if(objToSD1.value =="" || objToSD1.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
			}
		}else if (i==1){
			if(objFromSD2.value =="" || objToSD2.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 
			}
			if(objToSD2.value =="" || objToSD2.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
			}
		}else if (i==2){
			if(objFromSD3.value =="" || objToSD3.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 
			}
			if(objToSD3.value =="" || objToSD3.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
			}
		}else if (i==3){
			if(objFromSD4.value =="" || objToSD4.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 
			}
			if(objToSD4.value =="" || objToSD4.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
			}
		}else if (i==4){
			if(objFromSD5.value =="" || objToSD5.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 
			}
			if(objToSD5.value =="" || objToSD5.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
			}
		}else if (i==5){
			if(objFromSD6.value =="" || objToSD6.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[0][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selFrom" + (i+1), arrControls[0][2] + " " +objTopFrm.strErrClass); 
			}
			if(objToSD6.value =="" || objToSD6.value == strCompairValue){
				strErrMsg += buildError(arrErr["017"], arrControls[1][1] , "leg "  +  " " + (i + 1) ) + "<br>";
				//setStyleClass("selTo" + (i+1), arrControls[1][2] + " " +objTopFrm.strErrClass); 	
			}
		}
		
		
		if(getValue("selYrDept"+ (i+1)) =="" || getValue("selYrDept"+(i+1)) == strCompairValue){
			
			strErrMsg += buildError(arrErr["017"], arrControls[2][1] , "leg "  +  " " + (i + 1) ) + "<br>";
			setStyleClass("selYrDept" + (i+1), arrControls[2][2] + " " +objTopFrm.strErrClass); 		
		}

		if(getValue("selDtDept"+ (i+1)) =="" || getValue("selDtDept"+(i+1)) == strCompairValue){
			strErrMsg += buildError(arrErr["017"], arrControls[3][1] , "leg "  +  " " + (i + 1) ) + "<br>";
			setStyleClass("selDtDept" + (i+1), arrControls[3][2] + " " +objTopFrm.strErrClass); 	
		}

		
	}
	return true;
}


function checkDate(){
	
	var preId = 0;
	var currId = 0;
	if (fltContrLegNo !=0){
		for (var i = 1 ; i < fltContrLegNo ; i++){
			currId = i;

			if(currId!=1){
				preId = (currId - 1);
			}else{
				preId = currId;
			}	

			var preDate =  getValue("selDtDept"+ preId) + "/" + getValue("selYrDept"+ preId);
			var currDate =  getValue("selDtDept"+ currId) + "/" + getValue("selYrDept"+ currId);

			if (!CheckDates(preDate,currDate)){
				strErrMsg += buildError(arrErr["010"], currId ,preId ) + "<br>";
			}
		}
	}
}


function noOfCities(){
	var diffCityCount = 1;
	var strTemp = "";
	
	var arrTemp  = new Array();
	var blnFind = false;
	for (var i = 0 ; i < fltContrLegNo-1 ; i++){
		blnFind = false;
		//strTemp = getValue("selFrom"+ (i+1));	
		if (i==0){
			strTemp = objFromSD1.value;	
		}else if (i==1){
			strTemp = objFromSD2.value;	
		}else if (i==2){
			strTemp = objFromSD3.value;	
		}else if (i==3){
			strTemp = objFromSD4.value;	
		}else if (i==4){
			strTemp = objFromSD5.value;	
		}else if (i==5){
			strTemp = objFromSD6.value;	
		}

			
		for(var j=0 ; j< arrTemp.length ; j++)
		{
			if (strTemp == arrTemp[j])
			{
				blnFind = true;
			}
		}

		if (blnFind == false)
		{
			arrTemp[arrTemp.length] = strTemp;
		}
	}
	for (var i = 0 ; i < fltContrLegNo-1 ; i++){
		blnFind = false;
		//strTemp = getValue("selTo"+ (i+1));
		if (i==0){
			strTemp = objToSD1.value;	
		}else if (i==1){
			strTemp = objToSD2.value;	
		}else if (i==2){
			strTemp = objToSD3.value;	
		}else if (i==3){
			strTemp = objToSD4.value;	
		}else if (i==4){
			strTemp = objToSD5.value;	
		}else if (i==5){
			strTemp = objToSD6.value;	
		}
		for(var j=0 ; j< arrTemp.length ; j++)
		{
			if (strTemp == arrTemp[j])
			{
				blnFind = true;
			}
		}

		if (blnFind == false)
		{
			arrTemp[arrTemp.length] = strTemp;
		}
	}
	
	if(arrTemp.length >= 5){
		return false;
	}else{
		return true;
	}

}

function checkSameCityPair(){
	var strTemp = "";
	for (var i = 0 ; i < fltContrLegNo-1 ; i++){
		//strTemp += getValue("selFrom"+ (i+1)) + getValue("selTo"+ (i+1)) + "/";
		if (i==0){
			strTemp += objFromSD1.value + objToSD1.value + "/";
		} else if (i==1){
			strTemp += objFromSD2.value + objToSD2.value + "/";
		}if (i==2){
			strTemp += objFromSD3.value + objToSD3.value + "/";
		}if (i==3){
			strTemp += objFromSD4.value + objToSD4.value + "/";
		}if (i==4){
			strTemp += objFromSD5.value + objToSD5.value + "/";
		}if (i==5){
			strTemp += objFromSD5.value + objToSD5.value + "/";
		}
	}
	
	var arrTemp = strTemp.split("/");
	var tempArrLength = arrTemp.length - 1;	
	
	if(tempArrLength>1)//More than one leg
	{		
		for(var i=0; i<tempArrLength; i++)
		{		
			var tempValue = arrTemp[i];			
			
			for(var j=i+1; j<tempArrLength; j++)
			{				
				if(tempValue == arrTemp[j])
				{					
					return false;
				}
			}

		}
	}
	return true;
}
function checkDateCount(){
	var strTemp = "";
	var dateCount = 1;	

	for (var i = 0 ; i < fltContrLegNo-1 ; i++){
		
		var tempValue = getValue("selDtDept"+ (i+1)) + "/" + getValue("selYrDept"+ (i+1))
			for(var j=i+1; j<fltContrLegNo-1; j++)
			{
				if(tempValue == getValue("selDtDept"+ (j+1)) + "/" + getValue("selYrDept"+ (j+1)))
				{
					dateCount++;						
				}
			}
		if(dateCount >=3)
		{
			return false;
		}
		else
		{
			dateCount = 1;	
		}
	}
	/*
	if(dateCount >=3)
	{
		return false;
	}
	*/
	return true;
}


function checkItineraryInterruption(){

	/*
	var intLength = getFieldByName("selFrom").length ; // no of legs
	var count = 0;
	
	var objFrom = getFieldByName("selFrom");
	var objTo = getFieldByName("selTo");
	
	for(var i=1; i<intLength; i++)
	{
		if(objTo[i].value != objFrom[i-1])
		{
			count++;
		}
	}
	if(count>=3){
		return false;
	}else{
		return true;
	}
	*/
	
	var count = 0;
	for (var i = 1 ; i < fltContrLegNo-1 ; i++){
		/*
		if (getValue("selFrom"+ (i+1)) != getValue("selTo"+ (i)))
		{
			count++;
		}
		*/
		if (i==1){
			if (objFromSD2.value != objToSD1.value){
				count++;
			}
		} else if (i==2){
			if (objFromSD3.value != objToSD2.value){
				count++;
			}
		}if (i==3){
			if (objFromSD4.value != objToSD3.value){
				count++;
			}
		}if (i==4){
			if (objFromSD5.value != objToSD4.value){
				count++;
			}
		}if (i==5){
			if (objFromSD6.value != objToSD5.value){
				count++;
			}
		}
	}
	if(count>=3){
		return false;
	}else{
		return true;
	}
}

function checkMinDeparture()
{
	/*
	strMinPur = getMinPurchaseTime(getValue("selFrom1"), getValue("selTo1"));
		var arrMinPur = strMinPur.split("^");
		arrMinPur[0]  = trim(arrMinPur[0]);
		arrMinPur[1]  = trim(arrMinPur[1]);		
		
		strDeptDate = DateToString(addDays(StringToDate(strSysDate), Number(arrMinPur[0])));
		if (!CheckDates(strDeptDate, getValue("selDtDept1") + "/" + getValue("selYrDept1"))){
			strErrMsg += buildError(arrErr["016"], arrMinPur[0]) + "<br>";
			setFocus("selFrom1");
			return false;
		}
		*/
		strMinPur = getMinPurchaseTime(objFromSD1.value, objToSD1.value);
		var arrMinPur = strMinPur.split("^");
		arrMinPur[0]  = trim(arrMinPur[0]);
		arrMinPur[1]  = trim(arrMinPur[1]);		
		
                if (strSysURLType == ""){
		    strDeptDate = DateToString(addDays(StringToDate(strSysDate), Number(arrMinPur[0])));
		    if (!CheckDates(strDeptDate, getValue("selDtDept1") + "/" + getValue("selYrDept1"))){
			strErrMsg += buildError(arrErr["016"], arrMinPur[0]) + "<br>";
			//setFocus("selFrom1");
			return false;
                    }
  		}
}

/* PUBLIC */
	function getMinPurchaseTime(strDept, strArr){
		/*
		var strReturn = " 0^ 0"
		var arrDeptRoute = aCnt[strDept].split("^");
		var arrRetuRoute = aCnt[strArr].split("^");
		strReturn = arrDeptRoute[3] + " ^" + arrDeptRoute[3];

		return strReturn
		*/
		var strReturn = " 0^ 0"
		var arrDeptRoute = arrFSFromCity[0][3];
		var arrRetuRoute = "0";
		if (strArr != ""){
			arrRetuRoute = arrFSToCity[0][3];
		}
		strReturn = arrDeptRoute + " ^" + arrRetuRoute;
		return strReturn
	}


function checkAdultRequired(intAdults, strTripType, strDept, strRetu){
		var strOut = "";
		var strRet = "";
		var blnReturn = false;
		
		/*
		for (var i = 0 ; i < arrCity.length ; i++){
			if (arrCity[i][0] == strDept){
				strOut = arrCity[i][6];
				for (var x = 0 ; x < arrCity[i][3].length ; x++){
					if (strRetu == arrCity[i][3][x][0]){
						strRet = arrCity[i][3][x][5]
					}
				}
				break;
			}
		}
		*/

		strOut = arrFSFromCity[0][4];
			
		if (strOut == "N"){
			if (Number(intAdults) == 0){
				blnReturn =  true;
			}
		}
			
		return blnReturn;
}
