var _currentBackground = 0;
var _backgroundImages = new Array();
var _showBackground = true;
var _showPromotion = false;
var _showCorporate = false;

var _resURL = "https://www.yourreservation.net/ibe/starhotels/main.html";
var _resURLCastille = "https://www.yourreservation.net/ibe/HWPAR05/main.html";

var origDiv = '#backgroundImageContainer';
var origImg = '#backgroundImageContainer img';

var _currentLanguage = "xx";

$(function() {
    _currentLanguage = $("meta[name=language]").attr("content");

	SelectDateLanguage();	
   
    if ($("#homepageFlashContainer").length) {
        setupHomepageFlash();

        if ($.flash.available) {

            BackgroundFlashStretcher();
            _showBackground = false;
        }
    }
    if ($("#backgroundImageContainer").length) {
        if (_showBackground) {
            SetupBackground();
        }
    }

    if ($("#bookingForm").length) {
        SetupbookingForm();
    }

    AddTrackingToLinks();
});  
   

function SelectDateLanguage(){
	$.datepicker.regional['fr'] = {
		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa']
	};
	$.datepicker.regional['it'] = {
		monthNames: ['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],
		dayNamesMin: ['Do','Lu','Ma','Me','Gi','Ve','Sa']
	};	
	
	if(_currentLanguage!="en"){
	    $.datepicker.setDefaults($.datepicker.regional[_currentLanguage]);
	}
}   

                
//=============================================================================
//=============================================================================
//cache first background image and display    
function SetupBackground(){

    if(_backgroundImageURL){
          var _image = document.createElement('img');
          //_image.src = _backgroundImageURL[_currentBackground];

          //$(_image).load(function() { alert("loaded");_backgroundImages.push(_image); ShowCurrentBackground(); })  
          $(_image)
            .bind("load", function(){_backgroundImages.push(_image); ShowCurrentBackground();})
            .attr({src: _backgroundImageURL[_currentBackground]}).appendTo(); 
    }
    
//var myImg = $(“”).attr({src: “/folder/image.jpg”}).bind(“load”, function(){ alert(‘loaded’) });
    
    //Setup next button
    if ( $(".nextImage").length ) {
       if(_backgroundImageURL.length>1){
            $('.nextImage').show();
       }
       
       $('.nextImage').click(function() {
            NextBackgroundImage();
          
            return false;
        });  
    }     
}


function ShowCurrentBackground(){
    var _image = _backgroundImageURL[_currentBackground];
    $('#backgroundImage').attr("src", _image);

    BackgroundStretcher();

    $('#backgroundImageContainer').animate({ opacity: 'show' }, 750);
    cacheNextImage();
}

function cacheNextImage() {

    if(_backgroundImageURL.length-1>_backgroundImages.length){
          var _image = document.createElement('img');
          _image.src = _backgroundImageURL[_backgroundImages.length];

          $(_image).load(function() { _backgroundImages[_backgroundImages.length] = _image})

     }
}

function NextBackgroundImage(){
    $('#backgroundImageContainer').animate({ opacity: 'hide' }, 750, function() { ShowNextImage() });
}

function ShowNextImage() {
    _currentBackground += 1;

    if (_currentBackground > _backgroundImages.length) {
        _currentBackground = 0;
    }
    
    ShowCurrentBackground();
}

function AddBackgroundDiv(){
    $('#homepageFlashContainer').append("<div id='backgroundImageContainer'><img id='backgroundImage' /></div>"); 
}

var imgWidth;
var imgHeight;        
var ratio;

//=============================================================================
//=============================================================================
//flash container
function BackgroundFlashStretcher(){
//homepageFlash
  origImg = $("#homepageFlash");
  ratio = 800/1176;
  
    ResizeFlash();
    
  $(window).bind("resize", function() {
    ResizeFlash();
  });  
}
  
function ResizeFlash(){
    var _error = "";
    
    var _newWidth;
    var _newHeight;
    
    var winWidth = ($("#homepageFlashContainer").width());
    var winHeight = ($("#homepageFlashContainer").height());
    //winHeight = (winWidth*ratio);
    

    $("#homepageFlashContainer").height(winHeight);
  
  _newWidth = winWidth-265;
  _newHeight = (_newWidth*ratio);

    if(_newHeight<winHeight){
        _newHeight=winHeight;
        _newWidth = _newHeight / ratio;
    }
  
    $(origImg).width(_newWidth);
    $(origImg).height(_newHeight);
    
    //_error += "<br />winWidth: " + winWidth + " -- winHeight:" + winHeight;
  //_error += "<br />_newWidth: " + _newWidth + " -- _newHeight:" + _newHeight;
    //$("#error").html(_error);  
}

//=============================================================================
//=============================================================================
//Background image stretcher

        
function BackgroundStretcher(){
    imgWidth = $(origImg).attr('width');
    imgHeight = $(origImg).attr('height');        
    ratio = imgHeight/imgWidth;

    ResizeImage();
    
  $(window).bind("resize", function() {
    ResizeImage();
  });
  
}

function ResizeImage(){
    var _error = "";
    
    var _newWidth;
    var _newHeight;
    
    var winWidth = ($("#content_container").width())-265;
    var winHeight = ($("#content_container").height())-60;
    var winRatio = winHeight/winWidth;  
    
    
    
    
    _newWidth = winWidth;
    _newHeight = _newWidth*ratio;
    
    if(_newHeight<winHeight){
        _newHeight=winHeight;
        _newWidth = _newHeight / ratio;
    }
    

    $(origImg).width(_newWidth);
    $(origImg).height(_newHeight);
    
    //_error = "winWidth: " + winWidth + " -- winHeight:" + winHeight
    //$("#error").html(_error);  
}


//=============================================================================
//=============================================================================
//Booking form
function SetupbookingForm() {

    //SetupBookingDatePicker();
    SetupBestRate();

    $('#btn_bookingSubmit').click(function() {
        if(ValidateCodes()){
            _gaq.push(['_trackEvent', 'Booking Form', 'Book Now', $("#fld_SelectHotel :selected").text()]);
            _gaq.push(['_linkByPost', this]);

            toggleField("");

            if ($("#fld_SelectHotel").val() == "NYCMH")//send to synexis
            {
                if (SubmitbookingForm_synxis()) {
                    $('#bookingForm_synxis').submit();
                }
            }
            else {//Send to trust
                toggleBookingURL();
                
                $("#quick").val("");

                if (SubmitbookingForm()) {
                    $('#bookingForm').submit();
                }
            }
        }
    });



    $('#btn_bookingModify').click(function() {
        _gaq.push(['_trackEvent', 'Booking Form', 'modify/Cancel', '']);
        _gaq.push(['_linkByPost', this]);

        toggleField("disabled");

        if ($("#fld_SelectHotel").val() == "NYCMH")//send to synexis
        {
            if (SubmitbookingForm_synxis()) {
                $('#bookingForm_synxis').submit();
            }
        }
        else {//Send to trust
            toggleBookingURL();
            $("#quick").val("modifyCancel");
            $('#bookingForm').submit();
        }
        

        return false;
    });
 
        
    $('.showPromotion').click(function() {
      if(!_showCorporate){
          if(!_showPromotion){
            _showPromotion = true;
            $("#dv_code_promotion").show();
          }
          else{
            _showPromotion = false;
            $("#dv_code_promotion").hide();
            $("#fld_accountId").val("");
          }
      }
      return false;
    });    

    $('.showCorporate').click(function() {
      if(!_showCorporate){
        _showCorporate = true;
        _showPromotion = true;
        $("#dv_code_corporate").show();
        $("#dv_code_promotion").show();
      }
      else{
        _showCorporate = false;
        $("#dv_code_corporate").hide();
        $("#fld_rateAccessCode").val("");
        
       _showPromotion = false;
        $("#dv_code_promotion").hide();
        $("#fld_accountId").val("");        
      }
      return false;
    });    
    
    $('#btn_showPromotion_tooltip').tooltip({ position: "bottom right"});; 
    $('#btn_showCorporate_tooltip').tooltip({ position: "bottom right"});;

    //ensure rooms only have 3 occupants
    $('#fld_adults1').change(function() {
        FixRoomsAdults();
    });
    $('#fld_children1').change(function() {
        FixRoomsChildren();
    });
}

//Select Castille URL or standard Trust URL
function toggleBookingURL(){
    if ($("#fld_SelectHotel").val() == "SY-HWPAR05"){
        $("#bookingForm").attr("action", _resURLCastille);
    }
    else{
        $("#bookingForm").attr("action", _resURL);
    }
}


function toggleField(prmState) {
    $("#ccpSelectHotel").attr("disabled", prmState);
    $("#calArrivalDateField").attr("disabled", prmState);
    $("#calDepartureDateField").attr("disabled", prmState);
    $("#accountId").attr("disabled", prmState);
    $("#rateAccessCode").attr("disabled", prmState);
}


function ValidateCodes(){
    var _valid = true;

    if(_showCorporate){
        if($("#fld_rateAccessCode").val().length==0 || $("#fld_accountId").val().length==0){
            alert($("#txt_show_corporate").val());
            _valid = false;
        }    
    }
    else{
        if(_showPromotion){       

            if($("#fld_accountId").val().length==0){
                alert($("#txt_show_promotion").val());
                
                 _valid = false;
            }
        }
    }    
    
    return _valid;
}


//=============================================================================
function FixRoomsAdults() {
    var _num_adults = 3;
    var _num_children = 2;

    var _selected_adults = $('#fld_adults1').val();
    var _selected_children = $('#fld_children1').val();

    if (_selected_adults > 1) {
        _num_children = _num_children - (_selected_adults - 1);
    }

    $('#fld_children1').empty();

    $('#fld_children1').append("<option value='-1'>0</option>");
    for (var _x = 1; _x < _num_children + 1; _x++) {
        var _selected = (_selected_children == _x) ? "selected" : "";

        $('#fld_children1').append("<option value='" + _x + "' " + _selected + ">" + _x + "</option>");
    }
}

function FixRoomsChildren() {
    var _num_adults = 3;
    var _num_children = 2;

    var _selected_adults = $('#fld_adults1').val();
    var _selected_children = $('#fld_children1').val();

    if (_selected_children == -1) { _selected_children = 0 };


    _num_adults = _num_adults - (_selected_children);

    $('#fld_adults1').empty();

    for (var _x = 1; _x < _num_adults + 1; _x++) {
        var _selected = (_selected_adults == _x) ? "selected" : "";

        $('#fld_adults1').append("<option value='" + _x + "' " + _selected + ">" + _x + "</option>");
    }
}

//=============================================================================
function SetupBookingDatePicker() {
    $.datepicker.setDefaults({constrainInput: false, showButtonPanel:true, closeText:'x'});


    $("#fld_startDate").datepicker({ dateFormat: 'dd-mm-yy', firstDay: 1, showOtherMonths: false, selectOtherMonths: false, defaultDate: +7, gotoCurrent: true, onSelect: function(dateText, inst) { UpdateStartDate() }, beforeShowDay: CheckStartDateDay, beforeShow: BookingDateBeforeShow, onChangeMonthYear: ChangeMonthYear, numberOfMonths: 2 });
    $("#fld_endDate").datepicker({ dateFormat: 'dd-mm-yy', firstDay: 1, showOtherMonths: false, selectOtherMonths: false, defaultDate: +14, gotoCurrent: true, onSelect: function(dateText, inst) { UpdateEndDate() }, beforeShowDay: CheckStartDateDay, beforeShow: BookingDateBeforeShow, onChangeMonthYear: ChangeMonthYear, numberOfMonths: 2 });

    $("#fld_startDate").datepicker("setDate", new Date());
    $("#fld_endDate").datepicker("setDate", +1);
  
    $( "#fld_startDate" ).datepicker( "option", "minDate", '0d' );
    $( "#fld_endDate" ).datepicker( "option", "minDate", '+1d' );
         
}

var _datePickerCount = 0;
var _datePickerVisible = false;
function BookingDateBeforeShow(input, inst){    
    _datePickerVisible = false;
    setTimeout(BookingDateCheckVisibility, 10);
}

function BookingDateCheckVisibility(){
    _datePickerVisible = $("#ui-datepicker-div").is(":visible");
    
    if(!_datePickerVisible && _datePickerCount <250){
        _datePickerCount++;
        setTimeout(BookingDateCheckVisibility, 10);   
    }
    else{
        
        $("#ui-datepicker-div").css("top", "225px");
        BookingDateAppendHTML();
    }
    
}
function BookingDateAppendHTML(){
    var _startDate = $("#fld_startDate").datepicker("getDate");
    var _endDate = $("#fld_endDate").datepicker("getDate");
    
    _startDate = _startDate.getDate() + "." + (_startDate.getMonth()+1) + "." + _startDate.getFullYear(); 
    _endDate = _endDate.getDate() + "." + (_endDate.getMonth()+1) + "." + _endDate.getFullYear(); 
    
    var _newString = "";
    _newString +="<div class='baseDates'>";
    _newString +="<div class='dateEntry'><div class='text'>Check in - </div><div class='date'>" + _startDate + "</div></div>";
    _newString +="<div class='dateEntry'><div class='text'>Check out - </div><div class='date'>" + _endDate + "</div></div>";
    _newString +="</div>";
    
    $("#ui-datepicker-div").append(_newString)
}


function CheckStartDateDay(date){
    var _inRange = false;
    var _valid = false;
    
    var _startDate = $("#fld_startDate").datepicker("getDate");
    var _endDate = $("#fld_endDate").datepicker("getDate");
    var _today = new Date();
    
    if(date>=_startDate){
        if(date<=_endDate){
            _inRange=true;
        }
    }
    
    if(_inRange){
        return [true, "ui-state-activeRange"];
    }
    else{   
        var _class="";
        _valid = true;
        if(date>= _today){
            _valid = true;
        }
        
        if(_startDate){
            if(date> _today){
                if(date.getDate() == _startDate.getDate()){
                    _class = "ui-state-blank"; 
                }
            }
        }
        if(_endDate){
            if(date> _today){
                if(date.getDate() == _endDate.getDate()){
                    _class = "ui-state-blank"; 
                }
            }
        }       
        
        return [_valid, _class];
    }
}

function ChangeMonthYear(year, month, inst){
    setTimeout(BookingDateAppendHTML, 1);   
}

function UpdateStartDate(){    
    //Ensure start date is before end date
    var _startDate = $("#fld_startDate").datepicker("getDate");
    var _endDate = $("#fld_endDate").datepicker("getDate");
    
    if(_startDate.getTime() >= _endDate.getTime()){
       _endDate.setTime(_startDate.getTime()+86400000)

       $("#fld_endDate").datepicker("setDate", _endDate);
    }
}
function UpdateEndDate(){
    //Ensure start date is before end date
    var _startDate = $("#fld_startDate").datepicker("getDate");
    var _endDate = $("#fld_endDate").datepicker("getDate");
    
    if(_startDate.getTime()>=_endDate.getTime()){     
        _startDate.setTime(_endDate.getTime()-86400000);

        $("#fld_startDate").datepicker("setDate", _startDate);
    }

}

function ShowRooms(){
    var _num_rooms = $("#fld_rooms").val();
    
    for(var _x=1; _x<=6; _x++){
        $("#room" + _x).hide();
    }
    
    for(var _x=1; _x<=_num_rooms; _x++){
        $("#room" + _x).show();
    }
}



function ApplyNewBookingNights(prmField){
    var _startDate = $("#fld_startDate").datepicker("getDate");
    var _endDate = $("#fld_endDate").datepicker("getDate");

    _endDate = _startDate;
    _endDate.setDate(_endDate.getDate()+prmField.selectedIndex);

    $("#fld_endDate").datepicker("setDate", _endDate);    
}

function SubmitbookingForm(){
    var _submit = true;
    
    var _startDate = new Date;
    var _endDate = new Date;

//    var _startDate = $("#fld_startDate").datepicker("getDate");
//    var _endDate = $("#fld_endDate").datepicker("getDate");
//        
//    //var _adults = $("#fld_adults").val();
//    var _rooms = parseInt($("#fld_rooms").val());

    $("#ccpSelectHotel").val($("#fld_SelectHotel").val());
    $("#accountId").val($("#fld_accountId").val());
    $("#rateAccessCode").val($("#fld_rateAccessCode").val());
    
    if(_startDate){
        $("#calArrivalDateField").val(_startDate.getFullYear() + "-" + FormatDateNumber(_startDate.getMonth() + 1) + "-" + FormatDateNumber(_startDate.getDate()));
   }
    if(_endDate){
        $("#calDepartureDateField").val(_endDate.getFullYear() + "-" + FormatDateNumber(_endDate.getMonth() + 1) + "-" + FormatDateNumber(_endDate.getDate()));
    }   
    

//    $('#adults1').remove();$('#childrenAges1').remove();
//    $('#adults2').remove();$('#childrenAges2').remove();
//    $('#adults3').remove();$('#childrenAges3').remove();
//    $('#adults4').remove();$('#childrenAges4').remove();


//    for(var _x=1; _x<_rooms+1; _x++){
//        var _childrenAges = getChildAges(_x);
//        if (_childrenAges == null || _childrenAges=="") { _childrenAges = -1 };
//        
//        $('#bookingForm').append("<input name='adults" + _x + "' id='adults" + _x + "' type='hidden' value='" + $("#fld_adults" + _x).val() + "' />");
//        $('#bookingForm').append("<input name='childrenAges" + _x + "' id='childrenAges" + _x + "' type='hidden' value='" + _childrenAges + "' />");
//    }
    
    
    
    return _submit;
}

function SubmitbookingForm_synxis() {
    var _submit = true;

//    var _startDate = $("#fld_startDate").datepicker("getDate");
//    var _endDate = $("#fld_endDate").datepicker("getDate");

//    $("#arrive").val(FormatDateNumber(_startDate.getMonth() + 1) + "/" + FormatDateNumber(_startDate.getDate()) + "/" + _startDate.getFullYear());
//    $("#depart").val(FormatDateNumber(_endDate.getMonth() + 1) + "/" + FormatDateNumber(_endDate.getDate()) + "/" + _endDate.getFullYear());
//    $("#adult").val($("#fld_adults1").val());
//    $("#child").val($("#fld_children1").val());
//    $("#rooms").val($("#fld_rooms").val());
    $("#group").val($("#fld_accountId").val());
    $("#promo").val($("#fld_rateAccessCode").val()); 
       
    return _submit;
}


function FormatDateNumber(prmNumber) {

    if (prmNumber.toString().length < 2) {
        prmNumber = "0" + prmNumber;
    }
    
    return prmNumber;
}

function getChildAges(prmPosition){
    var _return = "";
    var _comma = "";
    
    var _childValue = $("#fld_children" + prmPosition).val();
    
    for(var _x=0; _x<=_childValue-1; _x++){
        _return += _comma + "5";
        _comma=",";
    }
        
    return _return;
}


//=============================================================================
//Best rate button
//modal_popUp
//_currentLanguage
var _showModalPopUp = false;

function SetupBestRate() {
    $('#best_rate').click(function() {
        if (!_showModalPopUp) {

            if ($('#modal_popUp').html().length<2) {
                //Get content
                BestRate_GetContent();

            }
            else {
                //Show popup
                BestRateShowModalPopUp();
            }
        }
    });


}

function BestRate_GetContent() {
    $.ajax({
        url: "/" + _currentLanguage + "/popup_bestrate.aspx",
        context: document.body,
        success: function(html) {
            $('#modal_popUp').append("<div id='best_rate_close'></div>");
       
            $('#best_rate_close').click(function() {
                BestRatehideModalPopUp();
       
            });

            //split header from main content
            var _htmlHeading;
            if (html.toString().indexOf("</h2>") > -1) {
                var _splitHTML = html.toString().split("</h2>");
                _htmlHeading = _splitHTML[0] + "</h2>";
                html = _splitHTML[1];
            }

            $('#modal_popUp').append(_htmlHeading + "<div class='innerContent'>" + html + "</div>");
            BestRateShowModalPopUp();
            
            
        }
    });
}





function BestRateShowModalPopUp() {
    $(window).resize(function() {
        if (_showModalPopUp) {
            BestRatePositionDiv();
        }
    });

    BestRateShowModalPopUpDo();
    
    _showModalPopUp = true;
}

function BestRateShowModalPopUpDo() {
    BestRatePositionDiv();
    
    //$('#modal_mask').fadeIn(1000);
    $('#modal_mask').fadeTo("quick", 0.2);


    //transition effect
    $('#modal_popUp').fadeIn("quick");

}

function BestRatePositionDiv() {
    var maskHeight = $(document).height();
    var maskWidth = $(window).width();

    //Set height and width to mask to fill up the whole screen
    $('#modal_mask').css({ 'width': maskWidth, 'height': maskHeight });


    //Get the window height and width
    var winH = $(window).height();
    var winW = $(window).width();

    //Set the popup window to center
    $('#modal_popUp').css('top', winH / 2 - $('#modal_popUp').height() / 2);
    $('#modal_popUp').css('left', winW / 2 - $('#modal_popUp').width() / 2);
}

function BestRatehideModalPopUp() {
    $('#modal_mask').fadeOut("quick");
    $('#modal_popUp').fadeOut("quick");
    
    _showModalPopUp = false;
}

//=============================================================================
//=============================================================================
//Event tracking

function TrackFormButton(_action, _label, _value) {
    if (_value == null || _value == "") {
        _value = window.location.pathname;
    }

    _gaq.push(['_trackEvent', _action, _label, _value]);
}

function AddTrackingToLinks() {

    //add tracking code to PDF links
    $("a[href*=.pdf]").click(function() {
        var _href = $(this).attr("href");
        
        _gaq.push(['_trackEvent', 'Downloads', 'PDF', _href]);
    });

    //add tracking code to email links
    $("a[href*=mailto]").click(function() {
        var _href = $(this).attr("href");
        _gaq.push(['_trackEvent', 'Email', 'Link', _href]);
    });    
}


function CheckPrivacyPolicy(){
    var _continue = true;
    
    if($('#privacy_checkbox').length>0){
        if($('#privacy_checkbox').attr("checked")){
            _continue = true;
        }
        else{
            var _continue = false;
            
            if(_currentLanguage=="en"){
                alert("Please flag the check-box to accept the privacy info");
            }
            else{
                alert("E' necessario accettare l'informativa sulla privacy");
            }
            
        }
    }
    
    return _continue;
}
