// JavaScript Document
	
function setPaxInfo(){
	var aChAge = new Array;
	var aChQty = new Array;
	
	rt = document.getElementById('roomType_select').value;
	chQty = document.getElementsByName('childrenQty_select');
	chAge = document.getElementsByName('childrenAges_select');
	
	for (i = 1; i <= 6; i++){
		// Calculating the adults quantity and rooms quantity
		if (document.getElementById('R' + (i).toString()).style.display == "block"){
			roomsQty = i;
			
			// Filling the list 'childrenQty' with the children quantity per room
			aChQty.push(chQty[i-1].value);
			
			// Filling the list 'childrenAges' with the children ages
			for (x = 1; x <= 2; x++){
				if (document.getElementById('child' + (i).toString() + 'R' + (x).toString()).style.display == "block"){
					if (x == 1){pos = i*2 - 1;}
					if (x == 2){pos = i*2;}
					aChAge.push(chAge[pos-1].value);
				}
			}
		}
	}
	document.getElementById('adultsQty').value = rt*1 * roomsQty;
	document.getElementById('roomsQty').value = roomsQty;
	document.getElementById('childrenQty').value = aChQty;
	document.getElementById('childrenAges').value = '[' + aChAge.toString() + ']';
}

function selectDate(id){
	
	showCalendar(document.getElementById(id),'','%d/%m/%Y','%Y-%m-%d');
}

function submitLoadingForm(form, url){
	if (submitForm(form, url))
		showLoad(form);
	}
	
function submitForm(form, act_page)
{	
	if (!window.validateForm || validateForm(form)){
		form.action = act_page;
		form.submit();
		return true;
	}	
}
function chooseTrip( itemId, radio ) {
	
	for (i = 0; i < radio.length; i++) {
		if ( radio[i].value == itemId ){radio[i].checked = true;}
	}
	for (i = 0; i <10; i++){
		prefix = itemId.substring(0,itemId.length-1);
		var obj = document.getElementById( prefix + i );
		if (obj) 
			obj.style.display = ( itemId == prefix + i  )? "block" : "none";
		}	
}

function chooseFlightTrip( itemId, radio ) {
	var t1 = document.getElementById( 't11' );
	var t21 = document.getElementById( 't21' );
	var t22 = document.getElementById( 't22' );
	var t3 = document.getElementById( 't13' );
	
	if (itemId == 't11') {
		t1.style.display = "block";
		t21.style.display = "block";
		t22.style.display = "block";
		t3.style.display = "none";
	}
	else if (itemId == 't12') {
		t1.style.display = "block";
		t21.style.display = "none";
		t22.style.display = "none";
		t3.style.display = "none";
	}
	else if (itemId == 't13') {
		t1.style.display = "none";
		t21.style.display = "none";
		t22.style.display = "none";
		t3.style.display = "block";
	}
}


function showPlus(hide, show){
	changeVisibility(hide, "none");
	changeVisibility(show, "block");
}

function changeVisibility(id, vis){
	var element = document.getElementById(id);
	if (element) element.style.display = vis;
}

function showFirsts(prefix, qty, total){
	for (i=1; i <= total; i++){
		vis = ( i <= qty  )? "block" : "none";
		changeVisibility(prefix+i, vis);
		}
	}
	
function setError( errorText ){
	imgInfo = "<img src=/TravelStatic/images/tip_icon.gif hspace=5 align=ABSMIDDLE>";
	changeVisibility("clientError",  "block");	
	div = document.getElementById("textError");
	if (div) { div.innerHTML = imgInfo + errorText; }
	else {alert(errorText);}
	}
	
function getSelected(radio){
   if (radio.length) { 
    for (var b = 0; b < radio.length; b++)
      if (radio[b].checked) {
	  	return radio[b];
      }
  }
  return null;
}
function isNumber(inputValue) {
	for (var i = 0; i < inputValue.length; i++) {
		var oneChar = inputValue.substring(i, i + 1);
		if (oneChar < "0" || oneChar > "9") {
			return false;}
	}
	return true;
}
function isCharacters(inputString){
	var searchForNumbers = /\d+/;
	if (searchForNumbers.test(inputString) || (!validateText(inputString)) ) {return false;}
	return true;
}

function randomImage(imgArr){
  var imgSrc1, imgSrc2, imgSrc3, r;
  r = randomNumber(imgArr.length / 3);  
  imgSrc1 = imgArr[r * 3];
  imgSrc2 = imgArr[(r * 3)+1];
  imgSrc3 = imgArr[(r * 3)+2];
	return [imgSrc1, imgSrc2, imgSrc3] ;
}
function randomNumber(limit){
  	return Math.floor(Math.random()*limit);
}
function MakeReqWithAjax(url){
	// Create the XMLHttpRequest Object
	var xmlHttp = createXMLObject();
	
	// Open a connection to the server
	xmlHttp.open("GET", url, true);
	
	// Setup a function for the server to run when it's done
	xmlHttp.onreadystatechange = parseXMLReq;
	
	// Send the request
	xmlHttp.send(null);
}
function createXMLObject(){
	try{
        // instantiate object for Mozilla, Nestcape, etc.
        xmlHttp = new XMLHttpRequest();
	}
    catch(e){
         // instantiate object for Internet Explorer
            xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
		}
	return xmlHttp;
}
function cleanTable(oTable){
	oTableLen = oTable.rows.length;
	if (oTableLen > 0){
		for (i = 0; i <= oTableLen-1; i++){
			oTable.deleteRow(0);
		}
	}
	return oTable;
}
function isEmailAddr(email){
  var theStr = new String(email);
  var index = theStr.indexOf("@");
  if (index > 0) {
    var pindex = theStr.indexOf(".",index);
    if ((pindex > index+2) && (theStr.length > pindex+2))
      return true;
  }
  return false;
}

function isNumberInt(inputString)
{
return (!isNaN(parseInt(inputString))) ? true : false;
}
function addDays(myDate,days) {
    return new Date(myDate.getTime() + days*24*60*60*1000);
}
function strToDate(date, sep, dayFirst){
	// returns a date from a string that must have the format : dd{sep}mm{sep}yyyy or yyyy{sep}mm{sep}dd
	dateNumbers = date.split(sep);
	if (dateNumbers.length != 3 || !isNumberInt(dateNumbers[0]) || !isNumberInt(dateNumbers[1]) || !isNumberInt(dateNumbers[2]))
		return null;
	if (dayFirst)
		return new Date( dateNumbers[2], dateNumbers[1]*1-1, dateNumbers[0]);
	return new Date( dateNumbers[0], dateNumbers[1]*1-1, dateNumbers[2]);
}
function dateToStr(date, sep, dayFirst){
	// returns a string from a date, with the format : dd{sep}mm{sep}yyyy or yyyy{sep}mm{sep}dd
	if (date == null) return '';
	var day = date.getDate();	
	day = (day < 10) ? '0' + day : day;
	var month = date.getMonth() + 1;
	var month = (month < 10) ? '0' + month : month;
	var yy = date.getFullYear();
	
	return (dayFirst? day : yy) + sep + month + sep + (dayFirst? yy : day)  ;	
}
function onChangeDate(fieldId){
	if (fieldId.indexOf("From") != -1) {
		fromDate = document.getElementById(fieldId+"_display").value;
		updateBookingToDate(fieldId+"_display", fromDate);
	}
}
function updateHiddenDate(id, val){
	// If an error occur while trying to parse the date, the functon will return 'badDate' 
	hiddenId = id.replace("_display", "");
	try{
		if (!isDate(val, "%d/%m/%Y")) {			
			document.getElementById(hiddenId).value = '';
			return 'badDate';
		}
		else{
			usrDate = strToDate(val, "/", true);		
			if (usrDate == null) {
				document.getElementById(hiddenId).value = '';
				return 'badDate';
			}
			else{
				document.getElementById(hiddenId).value = dateToStr(usrDate,"-", false);						
				return '';
			}
		}
	}catch(e){
		return 'badDate';
	}
}
function updateBookingToDate(id, fromDate){
	// Update the "bookingTo" date with seven days from "fromDate" 
	toId = id.replace("From", "To") ;
	if (!isDate(fromDate, "%d/%m/%Y")) {
		document.getElementById(toId).value = '';
		return;
	}
	fromDate = strToDate(fromDate, "/", true);
	if (dateNumbers.length != 3 || !isNumberInt(dateNumbers[0]) || !isNumberInt(dateNumbers[1]) || !isNumberInt(dateNumbers[2])){
		document.getElementById(toId).value = '';
		updateHiddenDate(toId, '');
	}
	else{
		newDate = dateToStr(addDays(fromDate, 7), "/", true);
		document.getElementById(toId).value = newDate;
		updateHiddenDate(toId, newDate);	
	}
}

function validateText(inputString)
{
	for (var i = 0; i < inputString.length; i++) {
		var oneChar = inputString.substring(i, i + 1);
		if (oneChar == '&') {return false;}
	}
	return true;
}

function showLoad(theForm) {
	mainLyr = document.getElementById( "page" );
	mainLyr.style.display = "none";
	loadingLyr = document.getElementById( "waiting" );
	loadingLyr.style.display = "block";
	showDates(theForm);
}

var href = '';
function selectLocation(searchBy, elementId, pidValue, descValue, prefix) {
		// Used to select the location so the user don't have to type the name of the place
		// Sets fieldFrom=SearchBy, fieldFromPid=pidValue, elementId=descValue
		if (document.getElementById(elementId+"Link")){
   		  href = document.getElementById(elementId+"Link").href;
		  document.getElementById(elementId+"Link").href = 'javaScript:void(0);';
		}
		elementObj = document.getElementById(elementId);
		elementObj.value = descValue.replace("**", "'");		

		if (elementId.search('To') > 0) suffix = 'To';
		else if (elementId.search('From') > 0) suffix = 'From';
		else suffix = '';		
		if (!prefix) prefix = '';
		document.getElementById(prefix+"field"+suffix).value = searchBy;	
		fieldPidObj = document.getElementById(prefix+"fieldPid"+suffix);				
		fieldPidObj.name = prefix+searchBy+"_Pid"+suffix;
		fieldPidObj.value = pidValue;
		showOptions(elementId+"Div", 'none');
		
		// show hotel selection 
		showHotelSelect(prefix, elementId, searchBy, pidValue);
		
	}
function showOptions(id, vis){
	divObj = document.getElementById(id);
	if (divObj){
		if (vis) 
			divObj.style.display = vis; 
		else if (divObj.style.display == "none")
 		  divObj.style.display = "block";			
	  else
		  divObj.style.display = "none"	;
	}
}
function clearField( fieldId){
	document.getElementById(fieldId).value = '';
}

function showHotelSelect(prefix, referElementId, searchBy, pidValue){
		var elementId = referElementId+"Hotel";
		elementObj = document.getElementById(elementId);
		if (elementObj){
			document.getElementById(elementId+"Link").style.visibility = 'hidden';
			divObj = document.getElementById(elementId+"Div");
			divObj.innerHTML = "";			
			var params = new Array();
			params['prefix'] = prefix;
			params['field'] = searchBy;
			params['elementId'] = elementId;
			params['referElementId'] = referElementId;
			params[searchBy+'_Pid'] = pidValue;			
			BFE.handlerException = handleSessionExpired;
			BFE.getRulesResult(ruleSetList="resOnline.GetHotelsFromLocation", ruleparam=params, varResult="result", funResult="showHotels", post="post");
		}
		else{
			if (document.getElementById(referElementId+"Link") && href){
			document.getElementById(referElementId+"Link").href = href;	}
		}	
}
function clearHotelSelect(prefix, referElementId){
		var elementId = referElementId+"Hotel";
		elementObj = document.getElementById(elementId);
		if (elementObj){
			document.getElementById(elementId+"Link").style.visibility = 'hidden';
			divObj = document.getElementById(elementId+"Div");
			divObj.innerHTML = "";			
		}	
}
function showHotels(result){
	elementId = result['elementId'];	
	referElementId = result['referElementId'];	
	prefix = result['prefix'];	
	divObj = document.getElementById(elementId+"Div");
	divObj.innerHTML = "";		
	a = document.createElement('table');
	a.cellSpacing='2px';
	a.cellPadding='1px';
	a.style.backgroundColor="#CEE0FF";
	divObj.appendChild(a);
	optList = result['hotelList'];
	for (i=0;i<optList.length;i++){			
		r = a.insertRow(-1);		
		c = r.insertCell(-1);
		c.style.backgroundColor="#FFFFFF";
		onclick = "javaScript:selectHotel('"+elementId+"','"+ prefix +"', '"+ optList[i]['Inventory_Pid'] +"','"+ optList[i]['Inventory_Desc'].replace("'", "\'")+"')";
		c.innerHTML = '<a href="'+onclick+'" class="locSelect">'+optList[i]['Inventory_Desc'] + '</a>';	
	}	
	if (optList.length != 0)	
		document.getElementById(elementId+"Link").style.visibility = 'visible';
	if (href) 
		document.getElementById(referElementId+"Link").href = href;
	}
	
function selectHotel(elementId, prefix, hotelPid, hotelDesc){

	document.getElementById(prefix+'HotelPid').value = hotelPid;
	document.getElementById(prefix+'HotelName').value = hotelDesc;
	showOptions(elementId+"Div", 'none');
	}
