//Constants grab from Citadines.Categories.AscottInternationalBrand table.
var BRAND_CITADINES_CAT_ID = 1643;
var BRAND_ASCOTT_CAT_ID = 1208;
var BRAND_SOMERSET_CAT_ID = 1207;
var BRAND_NONE_CAT_ID = 1327;

//this define the sequence for the property list as well.
aryBrand = new Array();
aryBrand.push(BRAND_CITADINES_CAT_ID);
aryBrand.push(BRAND_ASCOTT_CAT_ID);
aryBrand.push(BRAND_SOMERSET_CAT_ID);
aryBrand.push(BRAND_NONE_CAT_ID);

//CountryList Object
function CountryList()
{
	var aryCountry = new Array();
	
	this.add = add;
	this.getOPTION = getOPTION;
	this.getEnglishName = getEnglishName;
	this.getIdByEnglishName = getIdByEnglishName;
	this.getCountryArray = getCountryArray;
	
	function add(jvarCatId, jvarCountryName, jvarCountryEnglish, jvarIdxCountryName)
	{
		aryCountry.push(new Array(jvarCatId, jvarCountryName, jvarCountryEnglish, jvarIdxCountryName));		
	}
	function getEnglishName(jvarCountryId)
	{
		var englishName = "";
		for(var i = 0; i < aryCountry.length; i++)
		{
			if(aryCountry[i][0] == jvarCountryId)
			{
				englishName = aryCountry[i][2];
				break;
			}
		}
		return englishName;
	}
	function getIdByEnglishName(jvarEnglishName)
	{
		var id = 0;
		for(var i = 0; i < aryCountry.length; i++)
		{
			if(aryCountry[i][2] == jvarEnglishName)
			{
				id = aryCountry[i][0];
				break;
			}
		}
		return id;
	}
	function getOPTION()
	{
		var strOPTION = "";
		for(var i = 0; i < aryCountry.length; i++)
		{
			strOPTION += "<option value='"+aryCountry[i][0]+"'>"+aryCountry[i][1]+"</option>\n";
		}
		return strOPTION;	
	}
	function getCountryArray()	      
	{  	    
		var strArrayList = new Array();
		for(var i = 0; i < aryCountry.length; i++)
		{   
		    strArrayList.push(new Array(aryCountry[i][0],aryCountry[i][1],aryCountry[i][3]));		  
			
		}
		return strArrayList;	
	}		
}
//CityList Object
function CityList()
{
	var aryCity = new Array();
	
	this.add = add;
	this.getOPTION = getOPTION;
	this.getCountryId = getCountryId;
	this.getCitiesByCountry = getCitiesByCountry;
	this.getCities = getCities;
	this.getEnglishName = getEnglishName;
	this.getIdByEnglishName = getIdByEnglishName;
	
	function add(jvarCountryCatId, jvarCityCatId,jvarCityName, jvarCityEnglish)
	{
		if(jvarCityName == "Xian")
			jvarCityName = "Xi'an";
			
		aryCity.push(new Array(jvarCountryCatId, jvarCityCatId, jvarCityName, jvarCityEnglish));		
	}
	function getOPTION()
	{
		var strOPTION = "";
		for(var i = 0; i < aryCity.length; i++)
		{
			strOPTION += "<option value='"+aryCity[i][1]+"'>"+aryCity[i][2]+"</option>\n";
		}
		return strOPTION;	
	}
	function getCountryId(jvarCityId)
	{
		var countryId = -1;
		for(var i = 0; i < aryCity.length; i++)
		{
			if(aryCity[i][1] == jvarCityId)
			{
				countryId = aryCity[i][0];
				break;
			}
		}
		return countryId;
	}
	function getEnglishName(jvarCityId)
	{
		var englishName = "";
		for(var i = 0; i < aryCity.length; i++)
		{
			if(aryCity[i][1] == jvarCityId)
			{
				englishName = aryCity[i][3];
				break;
			}
		}
		return englishName;
	}
	function getIdByEnglishName(jvarEnglishName)
	{
		var id = 0;
		for(var i = 0; i < aryCity.length; i++)
		{
			if(aryCity[i][3] == jvarEnglishName)
			{
				id = aryCity[i][1];
				break;
			}
		}
		return id;
	}
	function getCitiesByCountry(jvarCountryCatId)
	{
		var arySelectCities = new Array();
		
		for(var i = 0; i < aryCity.length; i++)
		{
			if(aryCity[i][0] == jvarCountryCatId)
			{
				arySelectCities.push(new Array(aryCity[i][0], aryCity[i][1], aryCity[i][2], aryCity[i][3]));	
			}
		}
		return arySelectCities;
	}
	function getCities()
	{
		return aryCity;
	}
}

//PropertyList Object
function PropertyList()
{
	var aryProperty = new Array();
	
	this.add = add;
	this.getOPTION = getOPTION;
	this.getCityId = getCityId;
	this.getApartTypeCode = getApartTypeCode;
	this.getPropertiesByCity = getPropertiesByCity;
	this.getProperties = getProperties;
	this.getCountryId = getCountryId;
	this.getPropertyName = getPropertyName;
	this.getBrandId = getBrandId;
	this.getBrandName = getBrandName;
	this.getURL = getURL;
	this.getPropertiesByCountry = getPropertiesByCountry;
	this.getMinStay=getMinStay;
	this.getClosestHBS=getClosestHBS;
	this.getPropertiesListViewByCity = getPropertiesListViewByCity;
	//marvin
	function add(jvarDocumentId, jvarTitle, jvarCityId, jvarApartTypeCode, jvarCountryCatId, jvarBrandName, jvarBrandId, jvarURL, jvarEmail, jvarMinStay, jvarClosestHBS,AdditionalPropInfo)
	{
		aryProperty.push(new Array(jvarDocumentId, jvarTitle, jvarCityId, jvarApartTypeCode, jvarCountryCatId, jvarBrandName, jvarBrandId, jvarURL, jvarEmail, jvarMinStay, jvarClosestHBS,AdditionalPropInfo));		
	}
	
	//end marvin
	function getOPTION()
	{
		var strOPTION = "";
		
		var tempBrand = new Array();
		var flag = 0;
		
		for(var x = 0; x < aryBrand.length; x++)
		{
			for(var i = 0; i < aryProperty.length; i++)
			{
				if(aryBrand[x] == aryProperty[i][6] && aryProperty[i][6] != flag)
				{
					tempBrand.push(new Array(aryBrand[x], aryProperty[i][5]));
					flag = aryProperty[i][6];
				}
			}
		}
		
		for(var x = 0; x < tempBrand.length; x++)
		{
			strOPTION += "<optgroup label=\""+ tempBrand[x][1] +"\">\n";
			for(var i = 0; i < aryProperty.length; i++)
			{
				if(aryBrand[x] == aryProperty[i][6])
				{
					strOPTION += "<option value='"+aryProperty[i][0]+"'>"+aryProperty[i][1]+"</option>\n";
				}
			}
			strOPTION += "</optgroup>\n";
		}		
	
		return strOPTION;	
	}
	//marvin
	function getMinStay(jvarDocumentId)
	{
		var MinStay = "";
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				MinStay = aryProperty[i][9];
				break;
			}
		}
		return MinStay;
	}
		
	function getClosestHBS(jvarDocumentId)
	{
		var ClosestHBS = "";
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				ClosestHBS = aryProperty[i][10];
				break;
			}
		}
		return ClosestHBS;
	}
	//end marvin

	function getCityId(jvarDocumentId)
	{
		var cityId = -1;
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				cityId = aryProperty[i][2];
				break;
			}
		}
		return cityId;
	}
	function getPropertyName(jvarDocumentId)
	{
		var getPropertyName = -1;
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				getPropertyName = aryProperty[i][1];
				break;
			}
		}
		return getPropertyName;
	}
	function getBrandId(jvarDocumentId)
	{
		var getBrandId = -1;
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				getBrandId = aryProperty[i][6];
				break;
			}
		}
		return getBrandId;
	}
	function getCountryId(jvarDocumentId)
	{
		var countryCode = -1;
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				countryCode = aryProperty[i][4];
				break;
			}
		}
		return countryCode;
	}
	function getApartTypeCode(jvarDocumentId)
	{
		var apartId = -1;
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				apartId = aryProperty[i][3];
				break;
			}
		}
		return apartId;
	}
	function getURL(jvarDocumentId)
	{
		var URL = "";
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				URL = aryProperty[i][7];
				break;
			}
		}
		return URL;
	}
	function getBrandName(jvarDocumentId)
	{
		var brandName = "";
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][0] == jvarDocumentId)
			{
				brandName = aryProperty[i][5];
				break;
			}
		}
		return brandName;
	}
	function getPropertiesByCity(jvarCityId)
	{
		var arySelectProperties = new Array();
		
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][2] == jvarCityId)
			{
				arySelectProperties.push(new Array(aryProperty[i][0], aryProperty[i][1], aryProperty[i][2], aryProperty[i][3], aryProperty[i][4], aryProperty[i][5], aryProperty[i][6], aryProperty[i][7]));	
			}
		}
		return arySelectProperties;
	}
	function getPropertiesByCountry(jvarCountryId)
	{
		var arySelectProperties = new Array();
		
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][4] == jvarCountryId)
			{
				arySelectProperties.push(new Array(aryProperty[i][0], aryProperty[i][1], aryProperty[i][2], aryProperty[i][3], aryProperty[i][4], aryProperty[i][5], aryProperty[i][6], aryProperty[i][7]));	
			}
		}
		return arySelectProperties;
	}
	function getProperties()
	{
		return aryProperty;
	}
	function getPropertiesListViewByCity(jvarCityId)
	{
		var arySelectProperties = new Array();
		
		for(var i = 0; i < aryProperty.length; i++)
		{
			if(aryProperty[i][2] == jvarCityId)
			{
				arySelectProperties.push(new Array(aryProperty[i][1],aryProperty[i][6], aryProperty[i][7],aryProperty[i][11]));	
			}
		}
		return arySelectProperties;
	}		
}
function ApartmentTypeList()
{
	var aryApartmentType = new Array();
	
	this.add = add;
	this.getApartmentTypes = getApartmentTypes;
	
	function add(jvarGroup, jvarType, jvarDescription)
	{
		aryApartmentType.push(new Array(jvarGroup, jvarType, jvarDescription));		
	}
	function getApartmentTypes()
	{
		return aryApartmentType;
	}
}
//setCitySelect Function
function setCitySELECT(jvarObjId, jvarCityListObj, jvarCountryCatId)
{
	var citySELECT = document.getElementById(jvarObjId);
	var aryCities;
	
	if(jvarCountryCatId == "-1")
	{
		aryCities = jvarCityListObj.getCities();
	}
	else
	{
		aryCities = jvarCityListObj.getCitiesByCountry(jvarCountryCatId);
	}	
	
	for(var i = citySELECT.length; i > 0; i--)
	{
		citySELECT.remove(i);
	}	
	for(var i = 0; i < aryCities.length; i++)
	{
		citySELECT.options[i+1] = new Option(aryCities[i][2], aryCities[i][1]);
	}	
}

//setPropertySelect Function
function setPropertySELECT(jvarObjId, jvarPropertyListObj, jvarCityCatId, jvarCountryCatId)
{
	var propertySELECT = document.getElementById(jvarObjId);
	var aryProperties;
	
	if(jvarCityCatId == "-1")
	{
		aryProperties = jvarPropertyListObj.getProperties();
	}
	else if(jvarCountryCatId != null)
	{
		aryProperties = jvarPropertyListObj.getPropertiesByCountry(jvarCountryCatId);
	}
	else
	{
		aryProperties = jvarPropertyListObj.getPropertiesByCity(jvarCityCatId);
	}
	
	var tempOptionText = propertySELECT[0].text;
	var tempOptionValue = propertySELECT[0].value;
	
	propertySELECT.innerHTML = "";
		
	var tempProperty = document.createElement('OPTION');
	tempProperty.value = tempOptionValue;
	tempProperty.innerText = tempOptionText; //for IE
	tempProperty.text = tempOptionText; // for firefox
	
	propertySELECT.appendChild(tempProperty);
	
	/*for(var i = propertySELECT.length; i > 0; i--)
	{
		propertySELECT.remove(i);	
	}*/
	var optGroups = propertySELECT.getElementsByTagName('OPTGROUP');
	for(var i = optGroups.length; i > 0; i--)
	{
		propertySELECT.removeChild(optGroups[0]);
	}
	
	var tempBrand = new Array();
	var flag = 0;
	
	for(var x = 0; x < aryBrand.length; x++)
	{
		for(var i = 0; i < aryProperties.length; i++)
		{
			if(aryBrand[x] == aryProperties[i][6] && aryProperties[i][6] != flag)
			{
				tempBrand.push(new Array(aryBrand[x], aryProperties[i][5]));
				flag = aryProperties[i][6];
			}
		}
	}
	
	for(var x = 0; x < tempBrand.length; x++)
	{
		var brandGroup = document.createElement('OPTGROUP');
		brandGroup.label = tempBrand[x][1];
		propertySELECT.appendChild(brandGroup);
		
		for(var i = 0; i < aryProperties.length; i++)
		{
			if(tempBrand[x][0] == aryProperties[i][6])
			{
				var property = document.createElement('OPTION');
				property.value = aryProperties[i][0];
				property.innerText = aryProperties[i][1]; //for IE
				property.text = aryProperties[i][1]; // for firefox
				propertySELECT.getElementsByTagName('OPTGROUP')[x].appendChild(property);
			}
		}
	}	
	
}
function setSpecifyCountrySELECT(jvarObjId, jvarCountryId)
{
	var countrySELECT = document.getElementById(jvarObjId);
	
	for(var i = 0; i < countrySELECT.length; i++)
	{
		if(countrySELECT.options[i].value == jvarCountryId)
		{
			countrySELECT.selectedIndex = i;
			break;
		}
	}
}
function setSpecifyCitySELECT(jvarObjId, jvarCityId)
{
	var citySELECT = document.getElementById(jvarObjId);
	
	for(var i = 0; i < citySELECT.length; i++)
	{
		if(citySELECT.options[i].value == jvarCityId)
		{
			citySELECT.selectedIndex = i;
			break;
		}
	}
}
function setSpecifyPropertySELECT(jvarObjId, jvarPropertyId)
{
	var propertySELECT = document.getElementById(jvarObjId);
	
	for(var i = 0; i < propertySELECT.length; i++)
	{
		if(propertySELECT.options[i].value != '-1')
		{
			if(propertySELECT.options[i].value == jvarPropertyId)
			{	propertySELECT.selectedIndex = i;
				break;
			}
		}
	}
}

/* start anthony */
function setSpecifyApartmentSELECT(jvarObjId, jvarApartmentId)
{
	var ApartmentSELECT = document.getElementById(jvarObjId);
	
	for(var i = 0; i < ApartmentSELECT.length; i++)
	{
		if(ApartmentSELECT.options[i].value == jvarApartmentId)
		{
			ApartmentSELECT.selectedIndex = i;
			break;
		}
	}
}
/*end anthony */

function setApartGroupSelect(jvarObjId, jvarApartTypeListObj, jvarApartGroup)
{
	var aryApartType = jvarApartTypeListObj.getApartmentTypes();
	var apartSELECT = document.getElementById(jvarObjId);
	//alert(aryApartType);
	for(var i = apartSELECT.length; i > 0; i--)
	{
		apartSELECT.remove(i);
	}
	
	for(var i = 0;  i < aryApartType.length; i++)
	{
		if(aryApartType[i][0] == jvarApartGroup)
		{
			
			apartSELECT.options[apartSELECT.length] = new Option(aryApartType[i][2], aryApartType[i][1]);
			//alert(aryApartType[i][2]);
		}
	}
}

//reservation form ON/OFF
function reservationManager(jvarObjId, jvarPropertyListObj, jvarDocumentId, jvarApartTypeListObj)
{
	var objId = document.getElementById(jvarObjId);
	var tagSELECT = objId.getElementsByTagName('select');
	var tagINPUT = objId.getElementsByTagName('input');
	var tagBUTTON = objId.getElementsByTagName('button');
	var disabled = true;
	var matchWebResCode = false;
	
	var BOOKABLE 	               = 0; // citadines property that allow booking
	var NOT_BOOKABLE               = 1; // citadines property that don't allow booking
	var NON_CITADINES_NOT_BOOKABLE = 2; // non-citadines, does not allow booking
	var NON_CITADINES_BOOKABLE     = 3; // non-citadines, allow booking
	
	var intStatus = -1;
	
	var brandId = jvarPropertyListObj.getBrandId(jvarDocumentId)
	var apartGroup = jvarPropertyListObj.getApartTypeCode(jvarDocumentId);
	
	var aryApartType = jvarApartTypeListObj.getApartmentTypes();
	
	if(brandId == BRAND_CITADINES_CAT_ID)
	{		
		for(var i = 0;  i < aryApartType.length; i++)
		{
			if(aryApartType[i][0] == apartGroup)
			{
				matchWebResCode = true;
				break;
			}
		}
		
		if(matchWebResCode)
		{
			disabled = false;
			intStatus = BOOKABLE;
		}
		else
		{
			disabled = true;
			intStatus = NOT_BOOKABLE;		
		}
	}
	else if(brandId == BRAND_ASCOTT_CAT_ID || brandId == BRAND_SOMERSET_CAT_ID || brandId == BRAND_NONE_CAT_ID)
	{
		if(apartGroup.toLowerCase() == "not available" || apartGroup.trim() == "")
		{
			disabled = true;
			intStatus = NON_CITADINES_NOT_BOOKABLE;
		}
		else
		{
			disabled = false;
			intStatus = NON_CITADINES_BOOKABLE;
		}
	}
	else
	{
		disabled = true;
		intStatus = NON_CITADINES_NOT_BOOKABLE;	
	}	
	
	for(var i = 0; i < tagSELECT.length; i++)
	{
		tagSELECT[i].disabled = disabled;
	}
	for(var i = 0; i < tagINPUT.length; i++)
	{
		tagINPUT[i].disabled = disabled;
	}
	for(var i = 0; i < tagBUTTON.length; i++)
	{
		tagBUTTON[i].disabled = disabled;
	}
	
	return intStatus;
}
function goToProperty(varCountrySELECT, varCitySELECT, varPropertySELECT, jvarCountryListObj, jvarCityListObj,jvarPropertyListObj, jvarPropertyListURL)
{
	countrySELECT = document.getElementById(varCountrySELECT);
	citySELECT = document.getElementById(varCitySELECT);
	propertySELECT = document.getElementById(varPropertySELECT);
	
	var countryId = countrySELECT.value;
	var cityId = citySELECT.value;
	var propertyId = propertySELECT.value;
	
	var goTo = "";
	var internal = true;
	
	if(propertyId != "-1")
	{
		var brandId = jvarPropertyListObj.getBrandId(propertyId)
		if(brandId == BRAND_CITADINES_CAT_ID)
			goTo = jvarPropertyListObj.getURL(propertyId);
		else
		{
			goTo = jvarPropertyListObj.getURL(propertyId);
			internal = false;
		}
	}
	else if(cityId != "-1")
		goTo = jvarPropertyListURL +"City="+ jvarCityListObj.getEnglishName(cityId);
	else if(countryId != "-1")
		goTo = jvarPropertyListURL +"Country="+ jvarCountryListObj.getEnglishName(countryId);
	else
		goTo = jvarPropertyListURL;
	
	if(internal)
		window.location = goTo;
	else
		window.open(goTo);
}
function getIdFromURL(jvarParamName, jvarObject)
{
	var param = location.href;
	var urlIndex = param.lastIndexOf("?"+ jvarParamName +"=");
	var id = 0;
	
	if(urlIndex > 0)
	{
		param = param.substring(urlIndex + jvarParamName.length + 2);
		param = unescape(param);
		id = jvarObject.getIdByEnglishName(param);
	}
	return id;
}
function getRegionTabFromURL(jvarParamName)
{
	var param = location.href;
	var urlIndex = param.lastIndexOf("?"+ jvarParamName +"=");
	var region = "";
	
	if(urlIndex > 0)
	{
		param = param.substring(urlIndex + jvarParamName.length + 2);
		param = unescape(param);
		
		switch (param)
		{
			case "Southeast Asia": 
				region = "tab_southEastAsia";
				break;
			case "Asia": 
				region = "tab_northAsia";
				break;
			case "South Asia": 
				region = "tab_southAsia";
				break;
			case "Australia and New Zealand": 
				region = "tab_australia";
				break;
			case "Europe": ;
				region = "tab_europe"
				break;
			case "Middle East": 
				region = "tab_middleEast";
				break;
		}

	}
	return region;
}

function getTabFromURL(jvarParamName)
{
	var param = location.href;
	var urlIndex = param.lastIndexOf("?"+ jvarParamName +"=");
	var tabParam = "";
	
	if(urlIndex > 0)
	{
		param = param.substring(urlIndex + jvarParamName.length + 2);
		
		param = unescape(param);
		
		tabParam = param;
	}
	return tabParam;
}









