/*******************************************************************************
* Create By          : MR Banpot Sangsue and Team                              *
*                      @ Travel Pro Dot Com Co.,Ltd.                           *
* Creation Date      : Monday 31 Junuary 2011 11:58 GMT +7                     *
* Copyright          : Travel Pro Dot Co.,Ltd. 2010 (c)                        *
* Version            : 2.2.2.0                                                 *
* Build              : 2011.0.0809.0900                                        *
* Test on            : Windows XP SP3 32bit / IIS 6.0 / PHP 5.3.5              *
* Description        : This script created for Abacus PowerOnline IBE          *
*                    : usage on customer site for link search to portal        *
*                    : site in domain name abacuspoweronline.com               *
* Last update        :                                                         *
* 2011-01-31 11:58   : first release version 2.0.0.0                           *
* 2011-02-23 13:55   : version 2.1.0.0                                         *
*                      - added isDomestic, isStartWith                         *
*                      - keep id name to variable                              *
* 2011-04-25 10:25   : version 2.2.0.0                                         *
*                      - added click for auto show drop down list on from, to  *
*                        and airline.                                          *
*                      - added check same airprot on from and to.              *
* 2011-04-28 1416    : version 2.2.1.0                                         *
*                      - refactoring auto drop down code                       *
* 2011-08-09 0900    : version 2.2.2.0                                         *
*                      - add smart search for sale data search                 *
*******************************************************************************/
$(function () {
    var JSON_URL = "http://json.abacuspoweronline.com";
    var MIN_DATE = new Date().add("d", 3);
    var COMPANY_ID = "79552ce8-a8da-4d99-a73e-15e080419c02";
    var SECURE_CODE = "353a55fda8a742909a59";
    var FROM_CITY_ID = "#fromCity";
    var TO_CITY_ID = "#toCity";
    var AIRLINE_ID = "#airline";
    var SET_FROM_CITY_ID = "#originCity";
    var SET_TO_CITY_ID = "#destinationCity";
    var SET_AIRLINE_ID = "#airlineCode";

    var FROM_CITY_ID_DOM = "#fromCityDom";
    var TO_CITY_ID_DOM = "#toCityDom";
    var AIRLINE_ID_DOM = "#airlineDom";
    var SET_FROM_CITY_ID_DOM = "#originCityDom";
    var SET_TO_CITY_ID_DOM = "#destinationCityDom";
    var SET_AIRLINE_ID_DOM = "#airlineCodeDom";

    function log(message) {
        $("<div/>").text(message).prependTo("#log");
        $("#log").attr("scrollTop", 0);
    }

    function topValue(obj) {
        // for select data in box
        $(obj).focus();
        $(obj).select();
        // for auto drop down
        $(obj).autocomplete("search", "  ");
    }

    $(FROM_CITY_ID).click(function () {
        topValue(this);
    });

    $(TO_CITY_ID).click(function () {
        topValue(this);
    });

    $(AIRLINE_ID).click(function () {
        topValue(this);
    });

    $(AIRLINE_ID_DOM).click(function () {
        topValue(this);
    });

    $(FROM_CITY_ID_DOM).click(function () {
        topValue(this);
    });

    $(TO_CITY_ID_DOM).click(function () {
        topValue(this);
    });

    $(FROM_CITY_ID).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: JSON_URL + '/Airport',
                dataType: "jsonp",
                data: {
                    maxRows: 12,
                    q: request.term,
                    companyId: COMPANY_ID,
                    isOriginCity: true,
                    isDomestic: true,
                    isStartWith: false,
                    secureCode: SECURE_CODE,
                    airlineCode: $(SET_AIRLINE_ID).val()
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.Text, value: item.Text, id: item.Value }
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
          "Selected: " + ui.item.label + " value is " + ui.item.value :
          "Nothing selected, input was " + this.value);
            $(SET_FROM_CITY_ID).attr('value', ui.item.id);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });
    $(TO_CITY_ID).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: JSON_URL + '/Airport',
                dataType: "jsonp",
                data: {
                    maxRows: 12,
                    q: request.term,
                    companyId: COMPANY_ID,
                    isOriginCity: false,
                    isDomestic: false,
                    isStartWith: false,
                    secureCode: SECURE_CODE,
                    airlineCode: $(SET_AIRLINE_ID).val(),
                    originCity: $(SET_FROM_CITY_ID).val()
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.Text, value: item.Text, id: item.Value }
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
          "Selected: " + ui.item.label + " value is " + ui.item.value :
          "Nothing selected, input was " + this.value);
            $(SET_TO_CITY_ID).attr('value', ui.item.id);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });
    $(AIRLINE_ID).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: JSON_URL + '/Airline',
                dataType: "jsonp",
                data: {
                    maxRows: 12,
                    q: request.term,
                    companyId: COMPANY_ID,
                    secureCode: SECURE_CODE,
                    isDomestic: false,
                    isStartWith: false,
                    originCity: $(SET_FROM_CITY_ID).val(),
                    destinationCity: $(SET_TO_CITY_ID).val()
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        $(SET_AIRLINE_ID).attr('value', item.value);
                        return { label: item.Text, value: item.Text, id: item.Value }

                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
          "Selected: " + ui.item.label + " id is " + ui.item.id :
          "Nothing selected, input was " + this.value);
            $(SET_AIRLINE_ID).attr('value', ui.item.id);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });



    $(AIRLINE_ID_DOM).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: JSON_URL + '/Airline',
                dataType: "jsonp",
                data: {
                    maxRows: 12,
                    q: request.term,
                    companyId: COMPANY_ID,
                    secureCode: SECURE_CODE,
                    isDomestic: true,
                    isStartWith: false,
                    originCity: $(SET_FROM_CITY_ID_DOM).val(),
                    destinationCity: $(SET_TO_CITY_ID_DOM).val()
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        $(SET_AIRLINE_ID_DOM).attr('value', item.value);
                        return { label: item.Text, value: item.Text, id: item.Value }

                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
          "Selected: " + ui.item.label + " id is " + ui.item.id :
          "Nothing selected, input was " + this.value);
            $(SET_AIRLINE_ID_DOM).attr('value', ui.item.id);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });

    $(FROM_CITY_ID_DOM).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: JSON_URL + '/Airport',
                dataType: "jsonp",
                data: {
                    maxRows: 12,
                    q: request.term,
                    companyId: COMPANY_ID,
                    isOriginCity: true,
                    isDomestic: true,
                    isStartWith: false,
                    secureCode: SECURE_CODE,
                    airlineCode: $(SET_AIRLINE_ID_DOM).val()
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.Text, value: item.Text, id: item.Value }
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
          "Selected: " + ui.item.label + " value is " + ui.item.value :
          "Nothing selected, input was " + this.value);
            $(SET_FROM_CITY_ID_DOM).attr('value', ui.item.id);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });
    $(TO_CITY_ID_DOM).autocomplete({
        source: function (request, response) {
            $.ajax({
                url: JSON_URL + '/Airport',
                dataType: "jsonp",
                data: {
                    maxRows: 12,
                    q: request.term,
                    companyId: COMPANY_ID,
                    isOriginCity: false,
                    isDomestic: true,
                    isStartWith: false,
                    secureCode: SECURE_CODE,
                    airlineCode: $(SET_AIRLINE_ID_DOM).val(),
                    originCity: $(SET_FROM_CITY_ID_DOM).val()
                },
                success: function (data) {
                    response($.map(data, function (item) {
                        return { label: item.Text, value: item.Text, id: item.Value }
                    }));
                }
            });
        },
        minLength: 2,
        select: function (event, ui) {
            log(ui.item ?
          "Selected: " + ui.item.label + " value is " + ui.item.value :
          "Nothing selected, input was " + this.value);
            $(SET_TO_CITY_ID_DOM).attr('value', ui.item.id);
        },
        open: function () {
            $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
        },
        close: function () {
            $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
        }
    });


    // calender
    var depart = $("#depDate").datepicker({
        dateFormat: 'd M yy',
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonImage: 'img/be_calendar.gif',
        buttonImageOnly: true,
        numberOfMonths: 1,
        minDate: MIN_DATE,
        onSelect: function (selectedDate) {
            var option = "minDate";
            var instance = $("#retDate").data("datepicker");
            var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
            $("#retDate").datepicker("option", option, date);
        },
        create: function () {
            $(this).css("z-index", "1000");
        }
    });
    var ret = $("#retDate").datepicker({
        dateFormat: 'd M yy',
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonImage: 'img/be_calendar.gif',
        buttonImageOnly: true,
        numberOfMonths: 1,
        minDate: MIN_DATE,
        disabled: true,
        create: function () {
            $(this).css("z-index", "1000");
        }
    });


    var departDom = $("#depDateDom").datepicker({
        dateFormat: 'd M yy',
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonImage: 'img/be_calendar.gif',
        buttonImageOnly: true,
        numberOfMonths: 1,
        minDate: MIN_DATE,
        onSelect: function (selectedDate) {
            var option = "minDate";
            var instance = $("#retDate").data("datepicker");
            var date = $.datepicker.parseDate(instance.settings.dateFormat || $.datepicker._defaults.dateFormat, selectedDate, instance.settings);
            $("#retDateDom").datepicker("option", option, date);
        },
        create: function () {
            $(this).css("z-index", 1000);
        }
    });

    var retDom = $("#retDateDom").datepicker({
        dateFormat: 'd M yy',
        changeMonth: true,
        changeYear: true,
        showOn: 'button',
        buttonImage: 'img/be_calendar.gif',
        buttonImageOnly: true,
        numberOfMonths: 1,
        minDate: MIN_DATE,
        disabled: true,
        create: function () {
            $(this).css("z-index", 1000);
        }
    });

    $('#oneway').click(function () {
        $('#retDate').datepicker("disable")
    });

    $('#roundtrip').click(function () {
        $('#retDate').datepicker("enable")

    });

    $('#onewayDom').click(function () {
        $('#retDateDom').datepicker("disable")
    });

    $('#roundtripDom').click(function () {
        $('#retDateDom').datepicker("enable")

    });

    $(':submit', $("#FareQuery")).click(function () {
        var msg = "Please select";
        var _tab = $("#FareQuery").tabs("select").tabs("option", "selected");

        if (_tab == 0) {
            if ($(SET_FROM_CITY_ID).val() == "")
                msg += " [From City] ";
            if ($(SET_TO_CITY_ID).val() == "")
                msg += " [To City] ";
            if ($('#depDate').val() == "")
                msg += " [Departure Date] ";
            if ($('#retDate').val() == "" && $('#roundtrip').attr('checked') == true)
                msg += " [Return Date] ";
        } else {
            if ($(SET_FROM_CITY_ID_DOM).val() == "")
                msg += " [From City] ";
            if ($(SET_TO_CITY_ID_DOM).val() == "")
                msg += " [To City] ";
            if ($('#depDateDom').val() == "")
                msg += " [Departure Date] ";
            if ($('#retDateDom').val() == "" && $('#roundtrip').attr('checked') == true)
                msg += " [Return Date] ";
        }

        // check select same airport
        if ($(SET_FROM_CITY_ID).val() == $(SET_TO_CITY_ID).val())
            msg += " [From City] and [To City] is same airport ";

        if (msg == "Please select") {
            return true;
        }
        else {
            alert(msg + "!");
            return false;
        }

    });
});

Date.prototype.add = function(sInterval, iNum) {
    var dTemp = this;
    if (!sInterval || iNum == 0) return dTemp;
    //d_alert("dTemp=" + dTemp + ", sInterval=" + sInterval + ", iNum=" + iNum);
    switch (sInterval.toLowerCase()) {
        case "ms":
            dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
            break;
        case "s":
            dTemp.setSeconds(dTemp.getSeconds() + iNum);
            break;
        case "mi":
            dTemp.setMinutes(dTemp.getMinutes() + iNum);
            break;
        case "h":
            dTemp.setHours(dTemp.getHours() + iNum);
            break;
        case "d":
            //d_alert("dTemp.getDate() + iNum = " + dTemp.getDate() + " " + iNum);
            //dTemp.setHours(dTemp.getHours() + iNum * 24);
            var addD = (dTemp.getDate() + iNum);
            //d_alert(addD);
            dTemp.setDate(addD);
            break;
        case "mo":
            //d_alert("dTemp.getMonth() + iNum = " + dTemp.getMonth() + " " + iNum);
            var addMo = (dTemp.getMonth() + iNum);
            //d_alert("addMo=" + addMo);
            dTemp.setMonth(addMo);
            break;
        case "y":
            dTemp.setFullYear(dTemp.getFullYear() + iNum);
            break;
    }
    return dTemp;
}
