/*
#Region "History"
'20100205 - RH - Script file added
'20100211 - RH - Pass search parameters onto SearchBox
'20100212 - RH - Set default date of calendar using hidden field
#End Region
*/

Event.observe(window, 'load', function() {
    searchBox.startUp();
});

var SearchBox = Class.create({
    startUp: function () {
        this.setMode($F('hid_searchboxmode'));
        this.selectRooms();
        this.loggedinUser();
        this.shortBreak();
        this.populateLocations('Country', 0, false);
        this.populateLocations('Resort', $F('dd_countries'), false);
        this.populateDurations($('dd_startdate'));

        calendar.init();
    },
    hover: function () {
        main.lightsOff();
        $('SearchBoxClose').show();
        $('SearchBox_Destination').hide();
        $('SearchBox').setStyle({ "position": "absolute", "top": "150px", "left": (main.getSize().width - 225) / 2 + 'px', "zIndex": "999", "width": "225px" });
    },
    endHover: function () {
        $('hid_accommodation').value = '0';
        main.lightsOn();
        $('SearchBoxClose').hide();
        $('SearchBox_Destination').show();
        $('SearchBox').setStyle({ "position": "static" });
    },
    setMode: function (mode) {

        var dd = $('dd_countries');
        var cid = $F('hid_countryID');
        if ($F('dd_countries') > 0) {
            cid = $F('dd_countries');
        }

        dd.options.length = 0;

        switch (mode) {
            case 'holiday':

                opt = document.createElement("OPTION");
                opt.text = " - Any Country - ";
                opt.value = "0";
                dd.options.add(opt);

                opt = document.createElement("OPTION");
                opt.text = "Austria";
                opt.value = "4";
                if (cid == '4') {
                    opt.selected = "true";
                }
                dd.options.add(opt);

                opt = document.createElement("OPTION");
                opt.text = "France";
                opt.value = "1";
                if (cid == '1') {
                    opt.selected = "true";
                }
                dd.options.add(opt);
                opt = document.createElement("OPTION");
                opt.text = "Italy";
                opt.value = "6";
                if (cid == '6') {
                    opt.selected = "true";
                }
                dd.options.add(opt);
                opt = document.createElement("OPTION");
                opt.text = "Switzerland";
                opt.value = "5";
                if (cid == '5') {
                    opt.selected = "true";
                }
                dd.options.add(opt);

                $('SearchBox_Mode_Holiday').addClassName('selected');
                $('SearchBox_Mode_AccommodationOnly').removeClassName('selected');
                $('sb_search').innerHTML = 'Search for ski holidays';
                break;
            case 'accommodation':

                opt = document.createElement("OPTION");
                opt.text = " - Any Country - ";
                opt.value = "0";
                dd.options.add(opt);

                opt = document.createElement("OPTION");
                opt.text = "Austria";
                opt.value = "4";
                if (cid == '4') {
                    opt.selected = "true";
                }

                dd.options.add(opt);
                opt = document.createElement("OPTION");
                opt.text = "France";
                opt.value = "1";
                if (cid == '1') {
                    opt.selected = "true";
                }
                dd.options.add(opt);
                opt = document.createElement("OPTION");
                opt.text = "Italy";
                opt.value = "6";
                if (cid == '6') {
                    opt.selected = "true";
                }
                dd.options.add(opt);
                opt = document.createElement("OPTION");
                opt.text = "Switzerland";
                opt.value = "5";
                if (cid == '5') {
                    opt.selected = "true";
                }
                dd.options.add(opt);

                opt = document.createElement("OPTION");
                opt.text = "Canada";
                opt.value = "2";
                if (cid == '2') {
                    opt.selected = "true";
                }
                dd.options.add(opt);

                opt = document.createElement("OPTION");
                opt.text = "USA";
                opt.value = "3";
                if (cid == '3') {
                    opt.selected = "true";
                }
                dd.options.add(opt);

                $('SearchBox_Mode_AccommodationOnly').addClassName('selected');
                $('SearchBox_Mode_Holiday').removeClassName('selected');
                $('sb_search').innerHTML = 'Search for ski accommodation';
                break;
        };

        $('hid_searchboxmode').value = mode;
    },
    shortBreak: function () {
        if ($('chk_short').checked) {
            $('pan_startdate').show();
            $('dd_startdate').hide();
           
        } else {
            $('pan_startdate').hide();
            $('dd_startdate').show();
        };

        this.populateDurations($('dd_startdate'));
    },


    loggedinUser: function () {

        if ($('hd_currentuser').value == 0) {
            $('dd_duration').show();
            $('dd_startdate').show();
            $('pan_startdate').hide();
            $('txt_duration').hide();
        } else {
            $('dd_duration').hide();
            $('dd_startdate').hide();
            $('pan_startdate').show();
            $('txt_duration').show();
        };
    },


    populateDurations: function (t) {
        if ($('dd_startdate')) {
            if ($('chk_short').checked) {
                var curr = $F('dd_duration')
                $('dd_duration').options.length = 0;
                for (var i = 2; i < 7; i++) {
                    opt = document.createElement("OPTION");
                    opt.text = i + ' Nights';
                    opt.value = i;
                    if (i == curr) {
                        opt.selected = "true";
                    }
                    $('dd_duration').options.add(opt);
                };

            } else {

                if ($F('dd_startdate') != '') {
                    var s = t.options[t.selectedIndex].getAttribute("vdays").split(',');
                    $('txt_startdate').value = t.value;
                    var curr = $F('dd_duration')
                    $('dd_duration').options.length = 0;

                    for (var i = 0; i < s.size(); i++) {
                        opt = document.createElement("OPTION");
                        opt.text = s[i] + ' Nights';
                        opt.value = s[i];
                        if (s[i] == curr) {
                            opt.selected = "true";
                        }
                        $('dd_duration').options.add(opt);
                    };
                };
                
                
                
                     
            };               


        };
    },
    selectRooms: function () {
        var occupancyArray = $F('hid_occ').split('|');

        $('dd_rooms').value = occupancyArray.size();

        this.setRooms($F('dd_rooms'));

        occupancyArray.each(function (s, index) {
            $('dd_ad_' + index).value = occupancyArray[index].split(',')[0];
            $('dd_ch_' + index).value = occupancyArray[index].split(',')[1];
            $('dd_in_' + index).value = occupancyArray[index].split(',')[2];
        });
    },
    search: function () {
        if (Date.parseDate($F('txt_startdate'), "d/m/Y") < Date.parseDate($F('hid_today'), "d/m/Y")) {
            main.warning('Error', 'Departure date is in the past.');
            return;
        };

        if (($F('dd_countries') == 0) && ($F('dd_resorts') == 0)) {
            main.warning('Warning', 'Please select a destination.');
            return;
        };

        if ($F('dd_ad_0') == '0') {
            main.warning('Warning', 'You must select at least one adult.');
            return;
        };

        var s = '/Search.aspx?';
        s += 'Mode=';
        s += $F('hid_searchboxmode');

        //if ($F('dd_resorts') > 0) {
        s += '&ResortID=';
        s += $F('dd_resorts');
        //};

        //if ($F('dd_countries') > 0) {
        s += '&CountryID=';
        s += $F('dd_countries');
        // };

        if ($F('hid_accommodation') > 0) {
            s += '&AccommodationID=';
            s += $F('hid_accommodation');
        };

        s += '&shortBreak=';
        s += ($('chk_short').checked ? 'true' : 'false');

        s += '&startDate=';
        s += $F('txt_startdate');

        s += '&dd_startDate=';
        s += $F('dd_startdate');




        s += '&duration=';
        s += $F('dd_duration');

        s += '&txt_duration=';
        s += $F('txt_duration');


        s += '&occupancy=';
        s += this.getOccupancyString();
        s += '&rooms=';
        s += $F('dd_rooms');

        document.location.href = s;
    },
    setRooms: function (n) {
        for (var i = 0; i < 6; i++) {
            var ca = $F('dd_ad_' + i);
            var cc = $F('dd_ch_' + i);
            var ci = $F('dd_in_' + i);

            if (i < n) {
                $('tr_rm_' + i).show();
            } else {
                $('tr_rm_' + i).hide();
            };

            $('dd_ad_' + i).options.length = 0;
            $('dd_ch_' + i).options.length = 0;
            $('dd_in_' + i).options.length = 0;

            for (var j = 0; j < 15; j++) {
                $('dd_ad_' + i).options.add(new Option(j, j));
                $('dd_ch_' + i).options.add(new Option(j, j));
                $('dd_in_' + i).options.add(new Option(j, j));
            };

            $('dd_ad_' + i).value = ca;
            $('dd_ch_' + i).value = cc;
            $('dd_in_' + i).value = ci;
        };
    },
    populateLocations: function (type, parentID) {
        //sort out the countries
        var dd = $('dd_countries');

        if (dd) {
            var currval = $F(dd);



            var first = true;



            var found = false;

            for (var i = 0; i < $(dd).options.length; i++) {
                if ($(dd).options[i].value == currval) {
                    found = true;
                };
            };

            if (!found) {
                $(dd).options[0].value = 0;
            } else {
                $(dd).value = currval;
            };

            
        };

        //sort out the resorts
        dd = $('dd_resorts');

        if (dd) {
            var currval = $F(dd);

            dd.options.length = 0;
            dd.options.add(new Option(' - Any Resort - ', 0));

            var first = true;

            setup.locations.each(function (item) {
                if (item.type == 3) {
                    if (item.parentID == parentID || parentID == 0) {
                        dd.options.add(new Option(item.name, item.ID));
                    };
                };
            });

            var found = false;

            for (var i = 0; i < $(dd).options.length; i++) {
                if ($(dd).options[i].value == currval) {
                    found = true;
                };
            };

            if (!found) {
                $(dd).options[0].value = 0;
            } else {
                $(dd).value = currval;
            };
        };
    },
    getOccupancyString: function () {
        var occ = '';

        for (var i = 0; i < $F('dd_rooms'); i++) {
            if (occ != '') {
                occ += '|';
            };
            occ += $F('dd_ad_' + i) + ',' + $F('dd_ch_' + i) + ',' + $F('dd_in_' + i);
        };

        return occ;
    }
});

var searchBox = new SearchBox(); 
