// Omniture Hotel Result page tags
s_prop25="Shopper"
s_prop26="HOT Shopper"

function OpenDefaultView()
{
    new getObject('l_Result_AreaMap').style.display = "none";
    new getObject('l_Result_HotelMap').style.display = "none";
    new getObject('l_ResultTabMapArea').obj.className = "l_ResultTab_selected";
    new getObject('l_ResultTabMapHotel').obj.className = "l_ResultTab";
}
function OpenAreaMap()
{
    new getObject('l_Result_AreaMap').style.display = "block";
    new getObject('l_Result_HotelMap').style.display = "none";
    new getObject('l_ResultTabMapArea').obj.className = "l_ResultTab_selected";
    new getObject('l_ResultTabMapHotel').obj.className = "l_ResultTab";
}
function OpenHotelMap()
{
    new getObject('l_Result_AreaMap').style.display = "none";
    new getObject('l_Result_HotelMap').style.display = "block";
    new getObject('l_ResultTabMapArea').obj.className = "l_ResultTab";
    new getObject('l_ResultTabMapHotel').obj.className = "l_ResultTab_selected";
}


// Amenity Scripts

function HA(){
    if(document.getElementById('l_Amenity_AmModTop')){
        document.getElementById('l_Amenity_AmModTop').className = "l_result_AmenitiesTopOpen";
    }
    document.getElementById('l_Amenity_AmModMain').className = "l_result_AmenitiesMainClose";
    document.getElementById('l_result_TopNav2Link1').style.display = "none";
    document.getElementById('l_result_TopNav2Link2').style.display = "inline";
    OmnitureTrack28('-37287');
}
function SA(){
    if(document.getElementById('l_Amenity_AmModTop')){
        document.getElementById('l_Amenity_AmModTop').className = "l_result_AmenitiesTopClose";
    }
    document.getElementById('l_Amenity_AmModMain').className = "l_result_AmenitiesMainOpen";
    document.getElementById('l_result_TopNav2Link1').style.display = "inline";
    document.getElementById('l_result_TopNav2Link2').style.display = "none";
    OmnitureTrack28('-37286');
}

function showAllAmenities (){
    if(document.getElementById('l_Amenity_AmenityCheckBoxes_AmenitiesHidden')) document.getElementById('l_Amenity_AmenityCheckBoxes_AmenitiesHidden').style.display = "block";
    if(document.getElementById('AmenitiesLink_more')) document.getElementById('AmenitiesLink_more').style.display = "none";
    if(document.getElementById('AmenitiesLink_less')) document.getElementById('AmenitiesLink_less').style.display = "block";
    if(document.getElementById('l_Amenity_AmenityCheckBoxes_ThemesHidden')) document.getElementById('l_Amenity_AmenityCheckBoxes_ThemesHidden').style.display = "block";
    if(document.getElementById('ThemesLink_more')) document.getElementById('ThemesLink_more').style.display = "none";
    if(document.getElementById('ThemesLink_less')) document.getElementById('ThemesLink_less').style.display = "block";
}

function hideAllAmenities (){
    if(document.getElementById('l_Amenity_AmenityCheckBoxes_AmenitiesHidden')) document.getElementById('l_Amenity_AmenityCheckBoxes_AmenitiesHidden').style.display = "none";
    if(document.getElementById('AmenitiesLink_more')) document.getElementById('AmenitiesLink_more').style.display = "block";
    if(document.getElementById('AmenitiesLink_less')) document.getElementById('AmenitiesLink_less').style.display = "none";
    if(document.getElementById('l_Amenity_AmenityCheckBoxes_ThemesHidden')) document.getElementById('l_Amenity_AmenityCheckBoxes_ThemesHidden').style.display = "none";
    if(document.getElementById('ThemesLink_more')) document.getElementById('ThemesLink_more').style.display = "block";
    if(document.getElementById('ThemesLink_less')) document.getElementById('ThemesLink_less').style.display = "none";
}

function toggleAmenityModule(){
    document.getElementById('l_Amenity_AmModTop').className = "l_result_AmenitiesTopClose";
    document.getElementById('l_Amenity_AmModMain').className = "l_result_AmenitiesMainOpen";
    document.getElementById('l_result_TopNav2Link1').style.display = "inline";
    document.getElementById('l_result_TopNav2Link2').style.display = "none";
}

function HotelAmenity(){
    this.AmenityList = new Array();
    this.SelectedAmenities = new Array();
    this.AmenityBitmasks = new Array();
    this.AmenityContainer;
    this.FilterByAmenity = false;

    this.ThemeList = new Array();
    this.SelectedThemes = new Array();
    this.ThemeBitmasks = new Array();
    this.ThemeContainer;
    this.FilterByTheme = false;

    this.AmenityBitmaskValue = 0;
    this.ThemeBitmaskValue = 0;
    
    this.NumberOfMatchingHotels = 0;
    this.Message = "";
    this.MessageContainer = null;
}

HotelAmenity.prototype.Init = function(){
    this.MessageContainer = document.getElementById('AmenitiesText');
    if (typeof(AmenityBitmask) == "string")
    {
        this.AmenityBitmasks = AmenityBitmask.split(';');
    }
    if (typeof(ThemeBitmask) == "string")
    {
        this.ThemeBitmasks = ThemeBitmask.split(';');
    }
    if(document.getElementById('l_Amenity_AmenityCheckBoxes_AmenitiesDiv')){
        this.AmenityContainer = document.getElementById('l_Amenity_AmenityCheckBoxes_AmenitiesDiv');
        this.FilterByAmenity = true;
    }
    
    if(document.getElementById('l_Amenity_AmenityCheckBoxes_ThemesDiv')){
        this.ThemeContainer = document.getElementById('l_Amenity_AmenityCheckBoxes_ThemesDiv');
        this.FilterByTheme = true;
    }
    
    if(this.FilterByAmenity) {
        var AmenityCheckBox = this.AmenityContainer.getElementsByTagName('input');
        for (var i=0;i<AmenityCheckBox.length; i++){
            var amenity = new Amenity(this, AmenityCheckBox[i]);
            this.AmenityList.push(amenity);
            if(amenity.IsSelected){
                this.AddToSelected(amenity);
            }
        }
    }
    
    if(this.FilterByTheme) {
        var ThemeCheckBox = this.ThemeContainer.getElementsByTagName('input');
        for(var i = 0;i<ThemeCheckBox.length; i++) {
            var theme = new Amenity(this, ThemeCheckBox[i]);
            this.ThemeList.push(theme);
            if(theme.IsSelected) {
                this.AddToSelected(theme);
            }
        }
    }
    this.UpdateMessage();
}

HotelAmenity.prototype.AddToSelected = function(amenity){
    if(amenity.AmenityType == 'amenity') {
        this.SelectedAmenities.push(amenity);
    } else if(amenity.AmenityType == 'theme') {
        this.SelectedThemes.push(amenity);
    }
    this.CalculateBitmaskValues();
}

HotelAmenity.prototype.DeleteFromSelected = function(amenity) {
    if(amenity.AmenityType == 'amenity') {
        for(var i = 0; i < this.SelectedAmenities.length; i++) {
            if(amenity.Position == this.SelectedAmenities[i].Position) {
                this.SelectedAmenities.splice(i,1);
                break;
            }
        }
    } else if(amenity.AmenityType == 'theme') {
        for(var i = 0; i < this.SelectedThemes.length; i++) {
            if(amenity.Position == this.SelectedThemes[i].Position) {
                this.SelectedThemes.splice(i,1);
                break;
            }
        }
    }
    this.CalculateBitmaskValues();
}

HotelAmenity.prototype.Update = function(amenity,selected){
    if(selected) {
        this.AddToSelected(amenity);
    } else {
        this.DeleteFromSelected(amenity);
    }
}

HotelAmenity.prototype.CalculateNumberOfMatchingHotels = function() {

    this.NumberOfMatchingHotels = 0;
    for(var i = 0; i < this.AmenityBitmasks.length; i++) {
        var amenityBitmask = this.AmenityBitmasks[i];
        var themeBitmask = this.ThemeBitmasks[i];
        if(((amenityBitmask & this.AmenityBitmaskValue) == this.AmenityBitmaskValue)
            && ((themeBitmask & this.ThemeBitmaskValue) == this.ThemeBitmaskValue))
        {
            this.NumberOfMatchingHotels++;
        }
    }
    this.UpdateMessage();
}

HotelAmenity.prototype.CalculateBitmaskValues = function() {
    this.AmenityBitmaskValue = 0;
    for(var i = 0; i < this.SelectedAmenities.length; i++) {
        this.AmenityBitmaskValue += this.SelectedAmenities[i].BitmaskValue;
    }
    this.ThemeBitmaskValue = 0;
    for(var i = 0; i < this.SelectedThemes.length; i++) {
        this.ThemeBitmaskValue += this.SelectedThemes[i].BitmaskValue;
    }
    this.CalculateNumberOfMatchingHotels();
    this.UpdateMessage();
}

HotelAmenity.prototype.UpdateMessage = function(){

    if(this.FilterByAmenity && this.FilterByTheme) {
        if((this.SelectedAmenities.length == 0) && (this.SelectedThemes.length == 0)) {
            this.Message = AmThSelectAmenities ;
            this.MessageContainer.className = "l_result_AmenitiesText";
            this.EnableAll();
        } else {
            if(this.NumberOfMatchingHotels == 0) {
                this.Message = AmThCountTxtNone;
                this.MessageContainer.className = "l_result_AmenitiesWarning";
                this.DisableAllUnselected();
            } else if(this.NumberOfMatchingHotels == 1) {
                this.Message = AmThCountTxtSing;
                this.MessageContainer.className = "l_result_AmenitiesTextSelected";
                this.EnableAll();
            } else {
                this.Message = AmThCountTxtPlural.replace('{0}','<span>' + this.NumberOfMatchingHotels + '</span>');
                this.MessageContainer.className = "l_result_AmenitiesTextSelected";
                this.EnableAll();
            }
        }
    } else if(this.FilterByAmenity) {
        if(this.SelectedAmenities.length == 0) {
            this.Message = AmSelectAmenities;
            this.MessageContainer.className = "l_result_AmenitiesText";
            this.EnableAll();
        } else {
            if(this.NumberOfMatchingHotels == 0) {
                this.Message = AmCountTxtNone;
                this.MessageContainer.className = "l_result_AmenitiesWarning";
                this.DisableAllUnselected();
            } else if(this.NumberOfMatchingHotels == 1) {
                this.Message = AmCountTxtSing;
                this.MessageContainer.className = "l_result_AmenitiesTextSelected";
                this.EnableAll();
            } else {
                this.Message = AmCountTxtPlural.replace('{0}','<span>' + this.NumberOfMatchingHotels + '</span>');
                this.MessageContainer.className = "l_result_AmenitiesTextSelected";
                this.EnableAll();
            }
        }
    } else if(this.FilterByTheme) {
        if(this.SelectedThemes.length == 0) {
            this.Message = ThSelectAmenities;
            this.MessageContainer.className = "l_result_AmenitiesText";
            this.EnableAll();
        } else {
            if(this.NumberOfMatchingHotels == 0) {
                this.Message = ThCountTxtNone;
                this.MessageContainer.className = "l_result_AmenitiesWarning";
                this.DisableAllUnselected();
            } else if(this.NumberOfMatchingHotels == 1) {
                this.Message = ThCountTxtSing;
                this.MessageContainer.className = "l_result_AmenitiesTextSelected";
                this.EnableAll();
            } else {
                this.Message = ThCountTxtPlural.replace('{0}','<span>' + this.NumberOfMatchingHotels + '</span>');
                this.MessageContainer.className = "l_result_AmenitiesTextSelected";
                this.EnableAll();
            }
        }
    }
    
    this.UpdateMessageBox();
}

HotelAmenity.prototype.DisableAllUnselected = function(){
    for(var i = 0; i < this.AmenityList.length; i++) {
        if(!this.AmenityList[i].checkbox.checked){
            this.AmenityList[i].checkbox.disabled=true;
        }    
    }
    for(var i = 0; i < this.ThemeList.length; i++) {
        if(!this.ThemeList[i].checkbox.checked){
            this.ThemeList[i].checkbox.disabled=true;
        }    
    }
    button = document.getElementById('l_Amenity_AmSubmit');
    button.className='w_formDisabledButton';
    button.disabled=true;
}

HotelAmenity.prototype.EnableAll = function(){
    for(var i = 0; i < this.AmenityList.length; i++) {
        this.AmenityList[i].checkbox.disabled=false;
    }
    for(var i = 0; i < this.ThemeList.length; i++) {
        this.ThemeList[i].checkbox.disabled=false;
    }
    button = document.getElementById('l_Amenity_AmSubmit');
    button.className='w_formButton';
    button.disabled=false;
}

HotelAmenity.prototype.UpdateMessageBox = function(){
    if (this.MessageContainer)
    {
        this.MessageContainer.innerHTML = this.Message;
    }
}

HotelAmenity.prototype.Submit = function(){
    var OmAm = "";
    var OmTh = "";
    document.getElementById("postBackMode").value = "AM";
    var hdAmenities = document.getElementById('l_Amenity_hdnSelectedAmenities');
    hdAmenities.value = "";
    if(this.SelectedAmenities.length > 0){
        for(var i = 0; i<this.SelectedAmenities.length; i++){
            hdAmenities.value += this.SelectedAmenities[i].Id + "," + this.SelectedAmenities[i].Name + "|";
            OmAm += "AM" + this.SelectedAmenities[i].Id + ",";
        }
    }
    
    var hdThemes = document.getElementById('l_Amenity_hdnSelectedThemes');
    hdThemes.value = "";
    if(this.SelectedThemes.length > 0){
        for(var i = 0; i<this.SelectedThemes.length; i++){
            hdThemes.value += this.SelectedThemes[i].Id + "," + this.SelectedThemes[i].Name + "|";
            OmTh += "TH" + this.SelectedThemes[i].Id + ",";
        }
    }
    this.SendToOmniture(OmAm,OmTh);
}

HotelAmenity.prototype.SendToOmniture = function(selectedAmenitiesString, selectedThemesString){
    OmnitureTrack28('-37288');
    var trackingString = selectedAmenitiesString + selectedThemesString;
    if(trackingString.length > 0){
        OmnitureTrack45(trackingString.slice(0, trackingString.length-1));
    }
}

function Amenity(hotelAmenity, checkbox){
    var tempValue = checkbox.value.split('|');
    this.HotelAmenity = hotelAmenity;
    this.checkbox = checkbox;
    this.Id = tempValue[0];  
    this.Name = tempValue[1];
    this.Position = tempValue[2];
    this.AmenityType = tempValue[3];
    this.BitmaskIndex = tempValue[4];
    this.IsSelected = checkbox.checked;
    this.BitmaskValue = Math.pow(2,this.BitmaskIndex);
    this.checkbox.amenity = this;
    this.checkbox.onclick = function()
    {
        this.amenity.HotelAmenity.Update(this.amenity,checkbox.checked);
    }
}

function InitializeAmenities() {
    if (HotelAmenity)
    {
        if (HotelAmenity.AmenityList)
        {
            HotelAmenity.Init();
            if((HotelAmenity.SelectedAmenities.length > 0) || (HotelAmenity.SelectedThemes.length > 0)) {
                showAllAmenities();
            }
        }
    }
//    HotelAmenity.Init();
//            if((HotelAmenity.SelectedAmenities.length > 0) || (HotelAmenity.SelectedThemes.length > 0)) {
//                showAllAmenities();
//            }
}

//popup related script
var isIE = false;
var isSafari = false;
if (navigator.appName.substring(0,3) == "Mic"){
    isIE = true;
    }
else if (navigator.appVersion.indexOf("Safari") > 0){
    isSafari = true;
}

function getDim(el){
	for (var lx=0,ly=0;el!=null;
		lx+=el.offsetLeft,ly+=el.offsetTop,el=el.offsetParent);
	return {x:lx,y:ly}
}

addLoadEvent(InitializeAmenities);

// Decated to the information popup/tooltip
function findObjPos(obj){
	var ret = new Object();
	ret.w = obj.offsetWidth;
	ret.h = obj.offsetHeight;
	var curleft = curtop = 0;
	if (obj.offsetParent){
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent){
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	ret.x = curleft;
	ret.y = curtop;
	return ret;
}

// Popup Info Display / Hide
function ShowLocation(obj, heading, maintext, CloseButton, PopupWidth, positionLeft){
    var position = findObjPos(obj);
    var x = position.x;
    var y = position.y;
     
    var strPopupBody;
    var sourceMarginX = 20;
    var sourceMarginY = 40;
    
    var popupLayer = document.getElementById('l_InfoPopup');
    popupLayer.innerHTML = '';
    
    var l1 = document.createElement('div');
    var l2 = document.createElement('div');
    var l3 = document.createElement('div');
    var l4 = document.createElement('div');
    var title = document.createElement('h4');
    var content = document.createElement('div');
    
    popupLayer.appendChild(l1);
    l1.appendChild(l2);
    l2.appendChild(l3);
    l3.appendChild(l4);
    l4.appendChild(title);
    l4.appendChild(content);
    
    l1.className = 'l_InfoPopup_tl';
    l2.className = 'l_InfoPopup_tr';
    l3.className = 'l_InfoPopup_br';
    l4.className = 'l_InfoPopup_bl';
    l4.id = 'l_InfoPopup_bl';
    l1.className = 'l_InfoPopup_tl';
    title.innerHTML = heading;
    content.innerHTML = maintext;
    
    if(CloseButton){
		var l5 = document.createElement('div');
		var closeLink = document.createElement('a');
		
		l5.className = 'l_InfoPopupClose';
		closeLink.href = 'javascript: HideLocation()';
		closeLink.innerHTML = closeString;
		
		l5.appendChild(closeLink);
		l4.appendChild(l5);
	}
	
	popupLayer.style.width = PopupWidth + 'px';
	popupLayer.style.position = "absolute";
    popupLayer.style.display = 'block';
    
    // Setting popup position
    
    var WinHeight = (document.body.clientHeight)?document.body.clientHeight:window.innerHeight;
    var ScreenYposition = y - (document.body.scrollTop);
    
    if (!positionLeft){
        if ((x+PopupWidth)>760){
            popupLayer.style.left = x-((x+PopupWidth)-760) + "px";
        }
        else {
            popupLayer.style.left = (x) + "px";
        }
        
        popupLayer.style.top = (y + obj.offsetHeight) + "px";
    }
    else{
        popupLayer.style.left = (x - (PopupWidth)) + "px";
        
        if ((WinHeight - ScreenYposition) < popupLayer.offsetHeight){
        	if (navigator.appName.substring(0,3) == "Net") popupLayer.style.top = (y - (popupLayer.offsetHeight - (WinHeight - ScreenYposition))) + "px";
        	else popupLayer.style.top = (y - (popupLayer.offsetHeight - (WinHeight - (ScreenYposition)))) + "px";
        }
        else popupLayer.style.top = y + "px";
    }
    
    // Setting up an iFrame under the popup to hide Form element on the Amenities module
    var divFrame = new getObject('iframeBase').obj;
    divFrame.style.top = popupLayer.offsetTop;
    divFrame.style.left = popupLayer.offsetLeft;
    divFrame.style.height = popupLayer.offsetHeight;
    divFrame.style.width = popupLayer.offsetWidth;
    popupLayer.style.position = "absolute";
    popupLayer.style.display = "block";
    
}

function HideLocation(){
    new getObject("l_InfoPopup").style.display = "none";
    new getObject('iframeBase').style.display = "none";
}

var rgOnLoad=new Array();
function AddLoadFn(szfn){window.onload=RunLoadFn;rgOnLoad[rgOnLoad.length]=szfn;}
function RunLoadFn(){for(var i=0;i<rgOnLoad.length;i++)eval(rgOnLoad[i]);}

var prefixId='l_Message_l_HotelViewMap_MapCheckBoxControl_repMapCheckBox_ctl';
function PLbl(){
    var Lbl="";
    for(i=1;i<=CurPageHotelCount;i++){
      if(i<10){
        mapCheckBoxId = prefixId + '0' + i + '_chkHotelName';
        mapHdnLatitiudeId = prefixId + '0' + i + '_hdnLatitude';  
      }
      else{
        mapCheckBoxId = prefixId  + i + '_chkHotelName';
        mapHdnLatitiudeId = prefixId  + i + '_hdnLatitude';  
      }
      if(document.getElementById(mapCheckBoxId) != null){
          if(document.getElementById(mapCheckBoxId).checked)
            Lbl=Lbl+document.getElementById(mapHdnLatitiudeId).value;
      }
   }
   document.getElementById("divMapCheckBox").style.height=MapH+parseInt(document.getElementById(hdnHeightFieldID).value);
   return Lbl;
}

var chkBoxElements = new Array();
function ClearAll(){
    for(i=1;i<=CurPageHotelCount;i++){
        if(i<10){
            mapCheckBoxId = prefixId + '0' + i + '_chkHotelName';
        }
        else{
            mapCheckBoxId = prefixId  + i + '_chkHotelName';
        }
        if(document.getElementById(mapCheckBoxId) != null){
            document.getElementById(mapCheckBoxId).checked = false;
        }
    }
    UpMap();
}

function SelectAll(){
    for(i=1;i<=CurPageHotelCount;i++){
        if(i<10){
            mapCheckBoxId = prefixId + '0' + i + '_chkHotelName';
        }
        else{
            mapCheckBoxId = prefixId  + i + '_chkHotelName';
        }
        if(document.getElementById(mapCheckBoxId) != null){
            document.getElementById(mapCheckBoxId).checked = true;
        }
    }
    UpMap();
}

function getLocalDateFormat(){
	var fmtDate = document.getElementById('FMT_DATE');
	if((fmtDate == null) || (fmtDate.title == null)) return null;
	else return "("+fmtDate.title+")";
}

function viewThemes(link, HotelID){
    document.getElementById("l_hiddenThemes_" + HotelID).style.display = "inline";
    link.style.display = "none";
}


function findPos(obj){
	var ret = new Object();
	ret.w = obj.offsetWidth;
	ret.h = obj.offsetHeight;
	var curleft = curtop = 0;
	if (obj.offsetParent){
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent){
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	ret.x = curleft;
	ret.y = curtop;
	return ret;
}

function html_entity_decode(str) {
  var ta=document.createElement("textarea");
  ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
  return ta.value;
}