﻿var PopupMap = Class.create({
    startup: function(title, countryID, regionID, resortID, accommodationID) {
        main.lightsOff();

        $('mapNavigation').setStyle({ width: document.viewport.getWidth() - 100 + 'px', height: document.viewport.getHeight() - 100 + 'px' });
        $('mapHolder').setStyle({ width: document.viewport.getWidth() - 110 + 'px', height: document.viewport.getHeight() - 175 + 'px' });
        $('mapNavigation').show()
        $('mapHolder').show()

        this.populate(countryID, regionID, resortID, accommodationID);
        map.create('mapHolder', this.getURL(countryID, regionID, resortID, accommodationID));
    },
    update: function(countryID, regionID, resortID, accommodationID) {
        map.updateFeed('mapHolder', this.getURL(countryID, regionID, resortID, accommodationID));
    },
    close: function() {
        $('mapNavigation').fade()
        $('mapHolder').fade()
        main.lightsOn();
    },
    getURL: function(countryID, regionID, resortID, accommodationID) {
        var s = '/ajax/mapfeed.ashx?countryID=' + countryID;
        //s += '&regionID=' + regionID;
        s += '&resortID=' + resortID;
        s += '&accommodationID=' + accommodationID;
        return s;
    },
    populate: function(countryID, regionID, resortID, accommodationID) {
        //clear drop downs
        $('dd_pum_countries').options.length = 0;
        //$('dd_pum_regions').options.length = 0;
        $('dd_pum_resorts').options.length = 0;
        $('dd_pum_accommodation').options.length = 0;

        //add in values
        $('dd_pum_countries').options.add(new Option('', countryID));
        //$('dd_pum_regions').options.add(new Option('', regionID));
        $('dd_pum_resorts').options.add(new Option('', resortID));
        $('dd_pum_accommodation').options.add(new Option('', accommodationID));

        this.populateLocations('Country', 0, false);
        //this.populateLocations('Region', $F('dd_pum_countries'), false);
        this.populateLocations('Resort', $F('dd_pum_countries'), false);
        this.populateAccommodations($F('dd_pum_resorts'), false);
    },
    populateLocations: function(type, parentID, append) {
    //sort out the countries
    var dd = $('dd_pum_countries');

    if (dd) {
        var currval = $F(dd);

        dd.options.length = 0;
        dd.options.add(new Option(' - Any Country - ', 0));

        var first = true;

        setup.locations.each(function(item) {
            if (item.type == 5) {
                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;
        };
    };

    //sort out the resorts
    dd = $('dd_pum_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;
        };
    };
    },
    populateAccommodations: function(locationID, append) {
        var currval = $F('dd_pum_accommodation');

        if (!append) {
            $('dd_pum_accommodation').options.length = 0;
            $('dd_pum_accommodation').options.add(new Option(' - Any Accommodation - ', 0));
        };

        setup.accommodations.each(function(item) {
            if (item.locationID == locationID || locationID == 0) {
                $('dd_pum_accommodation').options.add(new Option(item.name, item.ID));
            }
        });

        $('dd_pum_accommodation').value = currval;
    }

});

var popupMap = new PopupMap();
