dojo.require("site.locator.Locator");

var locator;

var locator_utils = {
    info_window: {
        show_form: function(door_id) {
            var link_node = dojo.byId("infowindow_dirtarget_" + door_id);
            dojo.addClass(link_node, "hidden");
            var form_node = dojo.byId("infowindow_dirform_" + door_id);
            dojo.removeClass(form_node, "hidden");
        },
        process: function(e) {
            var start = dojo.byId("infowindow_start_address").value;
            var doorid = dojo.byId("infowindow_door_id").value;
            //console.log("start: ", start, " doorid: ", doorid);
            return false;
        },
        close: function() {
            var map_ref = locator._gmap.getMap();
            map_ref.closeExtInfoWindow();
        }
    },

    pane_control: {
        panes: ['pane_store_search','results_placeholder'],
        add: function(id) {
            if (!id) { return; }
            locator_utils.pane_control.panes.push(dojo.byId(id));
        },
        show: function(id) {
            if (!id) { return; }
            var panes = locator_utils.pane_control.panes;
            for (var i = 0; i < panes.length; i++) {
                var pid = panes[i];
                var pane = dojo.byId(pid);
                var set = (pid == id) ? false : true;
                dojo.toggleClass(pane, "hidden", set);
            }
        },
        hide: function(id) {
            if (!id) { return; }
            var p = dojo.byId(id);
            dojo.toggleClass(p, "hidden", false);
        }
    },

    acc_open: function(id) {
        var dp = dijit.byId(id);
        var lp = dijit.byId("psubitem_found_locations");
        var ep = dijit.byId("psubitem_found_events");

        if (lp.isOpen) {
            lp.close();
        }
        if (ep.isOpen) {
            ep.close();
        }

        dp.open();
    }
};


dojo.addOnLoad(function() {
    var locator_config = {
        search_results: dojo.global.page_data.search_results,
        use: [ "map", "results", "directions" ],
        map: {
            node: "map_placeholder",
            _class: "site.locator.GoogleMap",
            useCustomIcon: true,
            customIconOptions: {
                width: 15,
                height: 30,
                cornerColor: "#003366FF",
                strokeColor: "#003366FF",
                primaryColor: "#003366FF"
            },
            useLabeledMarkers: true,
            useDefaultDirections: true,
            directionsNode: "directions_placeholder"
        },
        results: {
            node: "results_placeholder",
            _class: "site.locator.Results",
            preload: true
        },
        directions: {
            node: "directions_placeholder",
            //_class: "site.locator.Directions",
            show_default: false
        }
    };

    // browser caching the get directions image so it shows up when info window is opened.
    var get_dir_img = new Image();
    get_dir_img.src = "/locator/images/popup/btn_get_directions.gif";

    var cdim = dijit.getViewport();
    //console.log("client dimensions: ", cdim);
    var mbody = dojo.byId("map_placeholder");
    var mwrap = dojo.byId("module_wrapper");
    var gdirs = dojo.byId("directions_panel");

    var map_w = parseInt(cdim.w - 476) + "px";
    var map_h = parseInt(cdim.h - 18) + "px";
    dojo.style(mbody, {
        width: map_w,
        height: map_h
    });

    dojo.style(mwrap, {
        width: cdim.w,
        height: cdim.h,
        overflow: "visible"
    });

    var dir_w = parseInt(cdim.w - 505) + "px";
    dojo.style(gdirs, {
        width: dir_w,
        top: map_h,
        overflow: "hidden"
    });

    if (page_data.search_results.doors && page_data.search_results.doors !== 'null') {
        //console.log("instantiating Locator");
        locator = new site.locator.Locator(locator_config);
        locator.startup();
        
    } else {
        //console.log("No results ... populate accordion with errors. Landing page mode = "+page_data.search_is_landing);
        var flContainer = dijit.byId("psubitem_found_locations");
        var feContainer = dijit.byId("psubitem_found_events");
        var dsContainer = dijit.byId("psubitem_detailed_search");

        var msg = sl_error;

        var flContent = dojo.doc.createElement("div");
        flContent.className = "no_results";
        flContent.innerHTML = msg;
        flContainer.addSubItem(flContent);
        flContainer.startup();
        //console.log("locations container started");

        var feContent = dojo.doc.createElement("div");
        feContent.className = "no_results";
        feContent.innerHTML = msg;
        feContainer.addSubItem(feContent);
        feContainer.startup();
        //console.log("events container started");

        dojo.byId("loading_image").style.display = "none";
        dojo.removeClass(dojo.byId("pnav_locator_panel"), "hidden");
        dojo.query("#locator_menu .accordion_content").style.height = "44px";
        
        // show panel in landing page mode
        if (page_data.search_is_landing === "1") {
            dsContainer.open();
            
        // show 0 results message
        } else {
            flContainer.open();
        }
    }

});
