//BUILD AND RETURN RESERVATION BOX UNIT/PAX STRING
function resBoxUnitPax()
{
	var untPax = "ad" + document.all["slcAdultNum"].value + "ch";
	var numOfChildren = parseInt(document.all["slcChildNum"].value,10);
	if (numOfChildren == 0)
		untPax += "0";
	else {
		for(var chCounter = 0; chCounter < numOfChildren; ++chCounter)
			untPax += document.all["2childSlc" + chCounter].value + "^";
		untPax = String(untPax).substr(0,String(untPax).length-1);
	}
	untPax += "in" + document.all["slcInfantNum"].value;

	return untPax;
}



//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// ------  BELOW FUNCTIONS MOVED FROM LEFTCOLUMN_SEARCH_FUNCTIONS.ASP WITH NO MODIFICATIONS ------ \\
//POPUP CALENDAR
function quickPackCalendar(dayID,monthYearID)
{	
	wRetuenValue = window.showModalDialog("tools/Calendar.asp", new Date(), "border:thin; center:yes; help:no; maximize:no; minimize:no; status:no; resize:no; scrolling:no; dialogWidth:305px; dialogHeight:330px"); 

	var theDate = new Date (wRetuenValue);
	
	document.all[dayID].value = theDate.getDate();
	document.all[monthYearID].value = MonthNDU[theDate.getMonth()] + "-" + theDate.getYear(); 
	
	return;
}

function countryChange()
{
	var options = ChangeLocationsAccordingToCountry(countryLocationResort.XMLDocument, slcCountry.value);

	// remove all existing options, except the first one (select Location);
	for (var optionsCounter = 1; optionsCounter < slcLocation.options.length; )
	{
		slcLocation.options.remove(optionsCounter);
	}
	// remove all existing options, except the first one (select Resort);
	for (var optionsCounter = 1; optionsCounter < slcResorts.options.length; )
	{
		slcResorts.options.remove(optionsCounter);
	}
	// insert new location options 
	for (var optionsCounter = 0; optionsCounter < options.length; ++optionsCounter)
	{
		var option = document.createElement("option");
		option.value = options[optionsCounter].locationCode;
		option.text = options[optionsCounter].locationName;
		option.cityCode = options[optionsCounter].cityCode;
		slcLocation.add(option);
	}
	//alert(slcLocation.outerHTML);
	
}	// countryChange


function locationChange()
{
	//alert("locationChange " + slcResorts[slcResorts.selectedIndex].value);
	var options = ChangeResortsAccordingToLocation(countryLocationResort.XMLDocument, slcLocation.value);

	// remove all existing options, except the first one (select Resort);
	while (slcResorts.options.length > 1)
	{
		slcResorts.options.remove(1);
	}
		
	// insert new options
	for (var optionsCounter = 0; optionsCounter < options.length; ++optionsCounter)
	{
		var option = document.createElement("option");
		option.value = options[optionsCounter].resortCode;
		option.text = options[optionsCounter].resortName;
		slcResorts.add(option);
	}
	
}	// locationChange

function vacationTypeChange()
{
	if (slcCountry.selectedIndex != 0)
	{
		slcCountry.selectedIndex = 0;
	}
	// remove all existing options, except the first one (select Location);
	for (var optionsCounter = 1; optionsCounter < slcLocation.options.length; )
	{
		slcLocation.options.remove(optionsCounter);
	}
	// remove all existing options, except the first one (select Resort);
	for (var optionsCounter = 1; optionsCounter < slcResorts.options.length; )
	{
		slcResorts.options.remove(optionsCounter);
	}
	
}	// vacationTypeChange

//AUTO SETS LOCATION SELECTBOX IF 
//DEFINED THROUGH COMPANY SITE MODULE
function setAdditionalSlc()
{
	if (locAutoSetCode == "T") {
		
		var slcLocElm = document.all["slcLocation"];
		var slcCountryElm = document.all["slcCountry"];
		
		for (var locL=0; locL<slcLocElm.options.length; locL++) {
			if (String(slcLocElm.options[locL].innerText).toUpperCase() == String(slcCountryElm[slcCountryElm.selectedIndex].innerText).toUpperCase()) {
				slcLocElm.options[locL].selected = true;
			}
		}
		
		locationChange();
	}
}

// REMOVE LETTERS
function checkIfNumber()
{
	var elm = event.srcElement;		
	var myString = String(elm.value);	
	var i,currentChar;
	var allowedCharacters = "1234567890";
	
	for (i=0 ; i<myString.length ; i++)//check each letter
	{		
		currentChar = myString.charAt(i);
		if (allowedCharacters.indexOf(currentChar) < 0)
			elm.value = myString.substring(0,(i)) + myString.substring(i+1,myString.length);			
	}			
}

//-- THIS FUNCTION SET DATE RANGE ACCORDING TO THE DURATION BY SPECIFING COMP TYPE
function setDateRangeMP(idFromDate,idToDate,idDuration)
{
	try{
		var dateFromObj = document.all(idFromDate).getDateObj();
		var dateTo		= null;
		var durationElm = document.all(idDuration);
		var duration    = parseInt(durationElm.value,10);
				
		dateTo			= new Date(dateFromObj);
		dateTo.Duration	= duration;
		dateTo.dateAddNDU();
	
		var dateToObj	= document.all(idToDate);
	
		dateToObj.setDate = dateTo;
		dateToObj.Init();
	}
	catch(err){
		return false;
	}	
	return true;
}

//ADDS CHILDREN AGE SELECTBOXES INTO TARGET TD
function addChildAgeSlcs(childSlcElm,targetId,titleId,whichone,minAge,maxAge)
{
	var slcObj = null;
	var containerObj = document.all[targetId];
	var childNumber = parseInt(childSlcElm[childSlcElm.selectedIndex].value);
	
	var counter = 0;
	
	//CLEAR ANY PREVIOUS SELECT BOX
	containerObj.innerHTML = "";
	var tblObj = containerObj.parentElement.parentElement.parentElement;
	
	if(tblObj.rows.length > 2){
		var removeRows = new Array();
		//COLLECT ALL TR TO REMOVE
		// Carmit: changed to support explorer 5
		for(var i=2;i<tblObj.rows.length;i++){
		
			if (browserVersion < 5.5)
			{
				redimArray(removeRows,1);
				removeRows[removeRows.length-1] = tblObj.rows[i];
			}
			else
			{
				removeRows.push(tblObj.rows[i]);
			}
		}
		//REMOVE ALL TR
		for(var i=0;i<removeRows.length;i++){
			removeRows[i].removeNode(true);
		}
	}
	
	
	if (titleId != false) {
		if(childNumber == 0) 
		{
			document.all[titleId].style.visibility = "hidden";	
			return;
		}
		document.all[titleId].style.visibility = "visible";	
	}
	
	for(var i=0;i<childNumber;i++){
		slcObj = document.createElement("SELECT");
		slcObj.style.width = '42px';
		slcObj.id = whichone + 'childSlc'+i;
		slcObj.name = whichone + 'childSlc'+i;
					
		//ADD THE FIRST OPTION
		var opt = document.createElement("OPTION");
		opt.value = "---";
		opt.innerHTML = "-?-";
		opt.selected=true;
	
		slcObj.insertAdjacentElement("beforeEnd", opt);
		//ADD ALL OTHER OPTION
		for(var j=parseInt(minAge,10);j<=parseInt(maxAge,10);j++){
			opt = document.createElement("OPTION");
			opt.value = j;
			opt.innerHTML = j;
			slcObj.insertAdjacentElement("beforeEnd", opt);
		}
		
		if(counter==3){
			counter = 0;
			var tblObj = containerObj.parentElement.parentElement.parentElement;
			var tmpRow = tblObj.insertRow();
			var tmpCell = tmpRow.insertCell();
			tmpCell.colSpan = '4';
			containerObj = tmpRow.insertCell();
		}
		counter++;
		containerObj.insertAdjacentElement("beforeEnd",slcObj);
		containerObj.insertAdjacentHTML("beforeEnd","&nbsp;&nbsp;&nbsp;");
	}

}	// addChildAgeSlc


//////////////////////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
// ------  BELOW FUNCTIONS MOVED FROM SHARED.JS WITH NO MODIFICATIONS ------ \\

// Receives country code, returns options string to fill the locations select box
function ChangeLocationsAccordingToCountry(xml, countryCode)
{
	var options = new Array();
	var locations = xml.selectNodes("CountryLocationResortsInfo/Country[@code='" + countryCode + "']/Location");		
	if (locations)
	{
		var numOfLocations = locations.length;
	
		for (var locationCounter = 0; locationCounter < numOfLocations; ++locationCounter)
		{
			var option = new Object();
			var location = locations[locationCounter];
			var locationCode = location.getAttribute("code");
			var locationName = location.getAttribute("name");
			var cityCode	 = location.getAttribute("cityCode");
			option.locationCode = unescape(locationCode);
			option.locationName = unescape(locationName);
			option.cityCode		= unescape(cityCode);

			if (browserVersion < 5.5)
			{
				redimArray(options,1);
				options[options.length-1] = option;
			}
			else
			{
				options.push(option)
			}
		}
	}	
	return options;
	
}	// ChangeLocationsAccordingToCountry

// Receives location code, returns options string to fill the resorts select box
function ChangeResortsAccordingToLocation(xml, locationCode)
{
	var resortOptions = new Array();
	var resorts = xml.selectNodes("CountryLocationResortsInfo/Country/Location[@code='" + locationCode + "']/Resort");		
	var numOfResorts = resorts.length;

	for (var resortsCounter = 0; resortsCounter < numOfResorts; ++resortsCounter)
	{
		var option = new Object();
		var resort = resorts[resortsCounter];
		var resortCode = resort.getAttribute("code");
		var resortName = resort.getAttribute("name");
		option.resortCode = unescape(resortCode);
		option.resortName = unescape(resortName);
	
		if (browserVersion < 5.5)
		{
			redimArray(resortOptions,1);
			resortOptions[resortOptions.length-1] = option;
		}
		else
		{
			resortOptions.push(option)
		}	
	}
	return resortOptions;
	
}	// ChangeResortsAccordingToLocation

//THIS FUNCTION CREATE THE NEW FORM AND SET IS PROPERTIES
//PARMA 1 -STRING- THE FORM NAME
//PARAM 2 -STRING- THE ACTION URL
//PARAM 3 -STRING- THE METHOD TO SEND THE DETAILS
//RETURN THE NEW CREATED FORM OBJECT
function createFormObj(name,url,mtd,targe)
{
	var formObj = document.createElement("FORM");
	formObj.action = url;
	formObj.method = mtd;
	if(!empty(targe)) formObj.target = targe;
	document.body.insertBefore(formObj);	
	return formObj;
}

//THIS FUNCTION ADD NEW INPUT TO THE FORM
//PARAM 1 -STRING- THE INPUT NAME
//PARAM 2 -STRING- THE VALUE
//PARAM 3 -OBJECT- REF TO THE FORM OBJECT
function addValueToForm(name,val,formObj)
{
	var inputObj = null;
	
	if(formObj.all(name)==null){
		inputObj = document.createElement("INPUT");
		inputObj.type = "hidden";
		inputObj.name = name;
		inputObj.id = name;
		inputObj.value = val;
	
		formObj.insertBefore(inputObj);
	}
	else{
		inputObj = formObj.all(name);
		inputObj.value = val;
	}
	return true;
}

function empty(val)
{
	if (val == "" || val == " " || val == "undefined" || val == null || val == "null")
		return true;
		
	return false;
}

//THIS FUNCTION GET PAX AS STRING AND CREATE PAX OBJECT
//PARAM 1 -STRING- PAX REPRESENTION AS STING
function createPaxObject(unitPax)
{
	var tmpObj = new Object();
	tmpObj.adult = 1; tmpObj.child=""; tmpObj.infant=1;
	//CREATE REGULAR EXPRESSION THAT BRACK DOWN THE PAX UNIT
	var re = /ad\d+|ch\d+[\^\d+]*|in\d+/g
	var match = re.exec(unitPax);
	
	do{
		var paxFound = match[0].substring(0,2);
		if(paxFound=='ad')
		{
			tmpObj.adult = match[0].substring(2,match[0].length)
		}
		else if(paxFound=='ch'){
			tmpObj.child = match[0].substring(2,match[0].length)
		}
		else if(paxFound=='in')
		{
			tmpObj.infant = match[0].substring(2,match[0].length)
		}
		
		if (browserVersion < 5.5)
		{
			var index = unitPax.indexOf(match[0]);
			var length = match[0].length;
			unitPax = unitPax.substr(index+length);
		}
		match = re.exec(unitPax);
		
	}while(match!=null);
	
	return tmpObj;
}