﻿//Variables
var Obj;
var CityLabel;
var CheckInLabel;
var NightLabel;
var SubmitLabel;
var CloseTextLabel;
var DdlNight;
var UrlResult;
var LanguageScript;
var TempCode;
var LanguageCodeArr = new Array();
var RTL = false;
var MinDigit = 2;
var ValidateCity = true;
// Optional to show or hide city label when city variable  was fixed.
var ShowCityLabel = true;
var msgCheckInOverDue = "";

// Object Properties
var _cid;
var _filterCityName;
var _fixedCityName;
var _checkinDay;
var _nightDay = 1;
var _language = 1;
var _minDate = 1;
var _newWindow = false;
var _hotelID;
var _style;
var _header;
var _footer;
var _cityWatermark;
var _currencyCode = "USD";
//End Properties

//Initiallize 
function AgodaSearchBox(param) {
    var objHead = document.getElementsByTagName('head');
    jsLanguage = document.createElement("script");
    jsLanguage.setAttribute("language", "javascript");
    jsLanguage.setAttribute("type", "text/javascript");
    jsLanguage.setAttribute("src", GetLanguageURL() + "/js/jquery/ui/jquery-ui-1.8.12.custom.min.js");
    jsLanguage.id = "JqueryUI";
    objHead[0].appendChild(jsLanguage);

//    if (navigator.appVersion.indexOf("MSIE") != -1) {
//        objHead = document.getElementsByTagName('head');
//        jsLanguage = document.createElement("script");
//        jsLanguage.setAttribute("language", "javascript");
//        jsLanguage.setAttribute("type", "text/javascript");
//        jsLanguage.setAttribute("src", GetLanguageURL() + "/partners/Searchbox/Scripts/PIE.js");
//        jsLanguage.id = "JqueryPIEUI";
//        objHead[0].appendChild(jsLanguage);
//    }

    Obj = jQuery("#" + param.Element);

    Obj.html("<center><img src='http://img.agoda.net/images/affiliates/loading_icon.gif' /></center>");

    if ((param.night != null) && (param.night != "")) {
        _nightDay = param.night;
    }

    DdlNight = LoadNightDdl();
    _cid = param.cid;
    if ((param.checkInDateBefore != null) && (param.checkInDateBefore != "")) {
        _minDate = param.checkInDateBefore;
    }
    _filterCityName = param.filterCityName;    // Example "Bangkok", "London" (Default is "")
    _fixedCityName = param.fixedCityName; // "true", "false" (Default is "true")
    _language = param.language; //1,2,3... (Default  is 1)
    _newWindow = param.newWindow; // "true","false" (Default is "true")
    _hotelID = param.hotelID; // Example 71656
    _style = param.style; //Example "Modern" , "Default"
    _header = param.header;  //Default = ""
    _footer = param.footer; // Default = ""
    _cityWatermark = param.cityWatermark;
    if ((param.currencyCode != undefined) && (param.currencyCode != '')) {
        _currencyCode = param.currencyCode;
    }
    //Old Search label cms id = '3211' new '20465'
    //Load Search Box Environemnt
    GetLanguageURL();
    GetDict('22668|22671|22673|22665|22675|22675|3672|22669|22672|22415|22687');
    TempCode = LanguageCodeArr[7];

    // Load CMS Environment
    CityLabel = LanguageCodeArr[0];
    CheckInLabel = LanguageCodeArr[1];
    NightLabel = LanguageCodeArr[2];
    SubmitLabel = LanguageCodeArr[3];
    CloseTextLabel = LanguageCodeArr[4];
};

// Rendering search box area and controls
function RenderSearchBox(CityLabel, CheckInLabel, NightLabel, SubmitLabel, cal_monthNames, cal_shortDays,cal_shortMonth,title1,title2,msgCheckInDateOverDue) {
    var MonthArray = new Array;
    var DayArray = new Array;
    var ShortMonthArray = new Array;
    var FixedCityStr = "<input type='textbox' class='TextBox City' id='txtCitySearch'  value='" + _filterCityName + "' />";
    msgCheckInOverDue = msgCheckInDateOverDue;
    MonthArray = cal_monthNames.toString().split(",");
    DayArray = cal_shortDays.toString().split(",");
    ShortMonthArray = cal_shortMonth.toString().split(",");

    // Filter City Name  null and Fixed City is false
    if (((_fixedCityName == '') && (_hotelID == '')) || (_filterCityName == undefined)) {
        FixedCityStr = "<input type='textbox' class='TextBox City' id='txtCitySearch' />";
    }

    // Filter City Name  is not null and Fixed City is false
    if ((_fixedCityName != true) && (_filterCityName != '') && (_filterCityName != undefined)) {
        FixedCityStr = "<input type='textbox' class='CityTextBox' id='txtCitySearch' value='" + _filterCityName + "' />";
    }

    // Rendering Search Box Widget
    var RTLClass = "";
    var RoundConnerStyle = ""
    if (RTL == true) {
        RTLClass = "class='RTL'";
    }
    var Str = "";
    Str += "<link href='" + GetLanguageURL() + "/partners/Searchbox/Css/jquery-ui-1.8.12.custom.css' rel='stylesheet' type='text/css' />";
    if ((_style == undefined)||(_style == "")) {
        Str += "<link href='" + GetLanguageURL() + "/partners/SearchBox/Css/Default.css' rel='stylesheet' type='text/css' />";
    }
    else {
        Str += "<link href='" + GetLanguageURL() + "/partners/SearchBox/Css/" + _style + ".css' rel='stylesheet' type='text/css' />";
    }

    Str += "<div id='AgodaSearchBoxWrapper' " + RTLClass + ">";
    Str += "<div id='AgodaSearchBox'>";
    Str += "<div id='Title1'>" + title1 + "</div><div id='Title2'>" + title2 + "</div>";
    Str += "<div id='CityRow'><div id='CityLabel'>" + CityLabel + "</div><div id='CityField'>" + FixedCityStr + "</div></div>";
    Str += "<div id='CheckInRow'><div id='CheckInLabel'>" + CheckInLabel + "</div><div id='CheckInField'><input type='textbox' class='CheckInDateTextBox' id='txtCheckInDate' readonly='readonly' /></div>";
    Str += "<div id='NightRow'><div id='NightLabel'>" + NightLabel + "&nbsp;&nbsp;</div>" + DdlNight + "</div></div>";
    Str += "<div id='SearchButtonRow'><div id='ButtonField' style='position:relative;z-index:3;'><input type='button' class='Button' id='SearchButton' value='" + SubmitLabel + "' /></div></div>";
    Str += "</div></div>";

    // Rendering Controls
    Obj.html(Str);

    jQuery("#AgodaSearchBoxWrapper").css("display", "none");
    Obj.html(Str);
    jQuery("#AgodaSearchBoxWrapper").css("visibility", "hidden").css("visibility", "visible").css("padding-left", "1px");

    //Set City Search Water Mark
    var xObj = jQuery("#txtCitySearch");
        if (_cityWatermark != undefined) {
            xObj.val(_cityWatermark);
            xObj.attr("style", "color:#aaaaaa !important;font-size:13px");
        }

        xObj.click(function () {
            if ((xObj.val() == _cityWatermark) && (_cityWatermark != undefined)) {
                xObj.val('');
                xObj.attr("style", "color:#333333  !important;font-size:13px");
            }
        });

        xObj.focusout(function () {
            if ((xObj.val() == "") && (_cityWatermark != undefined)) {
                xObj.val(_cityWatermark);
                xObj.attr("style", "color:#aaaaaa !important;font-size:13px");
            }
        });
     


//    if (navigator.appVersion.indexOf("MSIE") != -1) {

//        jQuery('#AgodaSearchBox').each(function () {
//            PIE.attach(this);
//        });

//        jQuery('.Button').each(function () {
//            PIE.attach(this);
//        });
//    }


    // Add Search Event
        jQuery("#SearchButton").click(function () {
            if (ValidData()) {
                TextSearch = jQuery("#txtCitySearch").val();
                if ((ValidateCity == false) && (TextSearch != "")) {
                    TextSearch = _filterCityName;
                }
                var CheckInDate = jQuery.datepicker.formatDate('MM/dd/yy', jQuery("#txtCheckInDate").datepicker("getDate"));
                var d = new Date(jQuery("#txtCheckInDate").datepicker("getDate"));
                var Night = jQuery("#Night").val()
                var CheckOutDateTemp = new Date(d.getFullYear(), d.getMonth(), d.getDate() + parseInt(Night));
                var CheckOutDate = jQuery.datepicker.formatDate('MM/dd/yy', CheckOutDateTemp);
                if (_hotelID != "") {
                    TextSearch = "bangkok";
                }
                var DestinationUrl = GetLanguageURL() + "/partners/SearchBox/SearchResult.aspx?" + "Search=" + TextSearch + "&Night=" + Night + "&ArrivalDate=" + CheckInDate + "&DepartDate="
                                                    + CheckOutDate + "&LanguageID=" + _language + "&HotelID=" + _hotelID + "&Header=" + _header + "&Footer=" + _footer + "&CID=" + _cid + "&CurrencyCode=" + _currencyCode + "&radius=36";
                if (_newWindow) {
                    window.open(DestinationUrl);
                }
                else {
                    window.location = DestinationUrl;
                }
            }
        });

    // City Change Event
    jQuery("#txtCitySearch").keyup(function () {
        ValidData();
    });

    // Check In Calendar Change Event
    jQuery("#txtCheckInDate").change(function () {
        ValidData();
    });

    jQuery("#txtCheckInDate").click(function () {
        jQuery("img.ui-datepicker-trigger").click();
    });

    // Filter City Name is not null and Fixed City is true or HotelID not null
    if ((_fixedCityName == true) && (_filterCityName != '') || (_hotelID != '')) {
        jQuery("#CityRow").css("display", "none");
        if (ShowCityLabel) {
            jQuery("#CityRow").css("display", "inline");
            jQuery("#txtCitySearch").css("display", "none");
            jQuery("#CityField").html("<font style='font-weight:bold;margin-top:0px;line-height:normal;padding-top:0px'>" + _filterCityName + "</font>");
            TextSearch = _filterCityName;
        }

        if ((_hotelID != '')) {
            jQuery("#CityRow, #CityLabel").css("display", "none");
            jQuery("#AgodaSearchBox").addClass("HideCityRow");
        }
        ValidateCity = false;
    }

    //Initialize Calendar UI
    var CanlendarIcon = "http://img.agoda.net/images/affiliates/" + _style + "/temp_calendar.gif";
    if ((_style.toLowerCase() == "default") || (_style.toLowerCase() == "cmslanding") || (_style == "") || (_style == undefined)) {
        CanlendarIcon = "http://img.agoda.net/images/affiliates/calendar.gif";
    }
    jQuery("#txtCheckInDate").datepicker({
        showOn: "button",
        buttonImage:CanlendarIcon,
        buttonImageOnly: true
    });

    //Set Default Date
    var D = new Date();
    Month = D.getMonth() + 1;
    var Year = D.getFullYear();
    var MinDate;
    var MaxDate;
    if (_minDate != 0) {
        MinDate = new Date(Month + '/' + D.getDate() + '/' + D.getFullYear());
        MinDate.setDate(MinDate.getDate() + _minDate);
        jQuery("#txtCheckInDate").datepicker("setDate", new Date(MinDate));
    }
    MaxDate = Month + '/' + D.getDate() + '/' +  (D.getFullYear() + 1);

    // Override Calendar Text from CMS
    var cal_shortDays = new Array();

    // Date Picker Function
    jQuery("#txtCheckInDate").datepicker("option", jQuery.datepicker.regional[LanguageCode] =
        {
            closeText: CloseTextLabel,
            monthNames: MonthArray,
            monthNamesShort:ShortMonthArray,
            dayNamesShort: DayArray,
            dayNamesMin: DayArray,
            weekHeader: 'Wk',
            firstDay: 0,
            isRTL: false,
            showMonthAfterYear: false,
            yearSuffix: '',
            minDate: new Date(),
            maxDate: new Date(MaxDate),
            dateFormat: "D dd M yy"
        }
    );

    if (_minDate == 0) {
        jQuery("#txtCheckInDate").datepicker("setDate", "+0d");
    }

}

//Load night drop down list value
function LoadNightDdl() {
    var CheckStr = "";
    var Str = "<select id='Night'>";
    for (i = 1; i <= 30; i++) {
        CheckStr = ""
        if (i == _nightDay) {
            CheckStr = 'selected = true';
        }
        Str += "<option value='" + i + "'" + CheckStr + ">" + i + "</option>";
    }
    Str += "</select>";
    return Str;
}

// Get CMS 
function GetDict(CmsID) {
    var objHead = document.getElementsByTagName('head');
    jsLanguage = document.createElement("script");
    jsLanguage.setAttribute("language", "javascript");
    jsLanguage.setAttribute("type", "text/javascript");
    jsLanguage.setAttribute("charset", "UTF-8");
    jsLanguage.setAttribute("src", GetLanguageURL() + "/partners/Searchbox/Default.aspx?CmsID=" + CmsID + "&CId=" + _cid + "&LanguageID=" + _language);
    jsLanguage.id = "SearchBox";
    objHead[0].appendChild(jsLanguage);
}

// Script to detect the URL to be used for all scripts
function getScrURL() {
    var objScripts = document.getElementsByTagName("SCRIPT");
    var retVal = "";
    for (i = 0; i < objScripts.length; i++) {
        var tstval = new String(objScripts[i].src.toLowerCase());
        if (tstval.indexOf("agoda.searchbox.js") != -1) {
            retVal = tstval.substring(0, tstval.indexOf("/partners/searchbox/scripts/agoda.searchbox.js"));
        }
    }
    return retVal.replace(".com", ".");
}


//Get Language URL
function GetLanguageURL() {
    var EnvironmentString = getScrURL();
    switch (_language) {
        case 2:
            UrlResult = "fr";
            LanguageCode = "fr";
            LanguageScript = "jquery.ui.datepicker-fr.js";
            break;
        case 3:
            UrlResult = "de";
            LanguageCode = "de";
            LanguageScript = "jquery.ui.datepicker-de.js";
            break;
        case 4:
            UrlResult = "it";
            LanguageCode = "it";
            LanguageScript = "jquery.ui.datepicker-it.js";
            break;
        case 5:
            UrlResult = "es";
            LanguageCode = "es";
            LanguageScript = "jquery.ui.datepicker-es.js";
            break;
        case 6:
            UrlResult = "jp";
            LanguageCode = "ja";
            LanguageScript = "jquery.ui.datepicker-ja.js";
            break;
        case 7:
            UrlResult = "com.hk";
            LanguageCode = "zh-TW";
            LanguageScript = "jquery.ui.datepicker-zh-HK.js";
            break;
        case 8:
            UrlResult = "com.cn";
            LanguageCode = "zh-CN";
            LanguageScript = "jquery.ui.datepicker-zh-CN.js";
            break;
        case 9:
            UrlResult = "co.kr";
            LanguageCode = "ko";
            LanguageScript = "jquery.ui.datepicker-ko.js";
            MinDigit = 1;
            break;
        case 10:
            UrlResult = "gr";
            LanguageCode = "gr";
            LanguageScript = "jquery.ui.datepicker-el.js";
            break;
        case 11:
            UrlResult = "ru";
            break;
        case 12:
            UrlResult = "com.pt";
            break;
        case 13:
            UrlResult = "nl";
            break;
        case 22:
            UrlResult = "co.th";
            break;
        case 23:
            UrlResult = "com.my";
            break;
        case 24:
            UrlResult = "vn";
            break;
        case 25:
            UrlResult = "se";
            break;
        case 26:
            UrlResult = "web.id";
            break;
        case 27:
            UrlResult = "pl";
            break;
        case 28:
            UrlResult = "no";
            break;
        case 29:
            UrlResult = "dk";
            break;
        case 30:
            UrlResult = "fi";
            break;
        case 31:
            UrlResult = "cz";
            break;
        case 32:
            UrlResult = "com.tr";
            break;
        case 33:
            UrlResult = "cat";
            break;
        case 34:
            UrlResult = "hu";
            break;
        case 35: UrlResult = "in"; break;
        case 36: UrlResult = "bg"; break;
        case 37: UrlResult = "ro"; break;
        case 38: UrlResult = "si"; break;
        case 39: UrlResult = "co.il"; RTL = true; break;
        case 40:
            UrlResult = "ae";
            RTL = true;
            break;
        case 46: UrlResult = "lt"; break;
        case 47: UrlResult = "lv"; break;
        case 48: UrlResult = "co.cr"; break;
        case 49: UrlResult = "co.ee"; break;
        case 50: UrlResult = "ua"; break;
        default:
            UrlResult = "com";
            LanguageCode = "en-GB";
            LanguageScript = "jquery.ui.datepicker-en-GB.js";
            break;
    }

    if (getScrURL() == "http://localhost"){
        return "http://localhost-vn";
    }else{
     return EnvironmentString + UrlResult;
    }
}


function ValidData() {
    var ValidateTextBox = false;
    var ValidateCalendar = false;

    if (ValidateCity) {
        if (jQuery("#txtCitySearch").val().length < MinDigit) {
            jQuery("#txtCitySearch").addClass("Invalid");
            //alert('Please input city');
            jQuery("#txtCitySearch").focus();
        }
        else {
            jQuery("#txtCitySearch").removeClass("Invalid");
            ValidateTextBox = true;
        }
    }
    else {
        ValidateTextBox = true;
    }
    var D = new Date(jQuery.datepicker.formatDate('MM/dd/yy', jQuery("#txtCheckInDate").datepicker("getDate")));
    var x = new Date();
        x.setFullYear(D.getFullYear(), D.getMonth(), D.getDate());
    //x.setFullYear(2012,5,31);
    var today = new Date();

    if ((jQuery("#txtCheckInDate").val() == "")||(x < today)) {
        jQuery("#txtCheckInDate").addClass("Invalid");
        if (x < today) {
            alert(msgCheckInOverDue);
        }
    }
    else {
        jQuery("#txtCheckInDate").removeClass("Invalid");
        ValidateCalendar = true;
    }
    return ValidateTextBox & ValidateCalendar;
}

