﻿String.format = String.prototype.format = function () {
    var string = this;
    var i = 0;
    if (typeof (this) == "function") {
        string = arguments[0];
        i++;
    }
    for (; i < arguments.length; i++)
        string = string.replace(/\{\d+?\}/, arguments[i]);
    return string;
}

$(function () {
    $("#map-loading-indicator").slideDown();

    var customId = $.cookie("loc");
    if (customId) {
  
        var url = '/locations/customid/?storeNumber=' + encodeURIComponent(customId);
        $("#map-list").load(url, bindLocationData);
       // $("#map-change em").hide();
    } else {
        $("#map-list").load('/locations/geo/', bindLocationData);
    }

   // $("#map-change button").click(showChangeLocation);
    $("#map-prompt button").click(changeLocation);
    $("#map-prompt input").keypress(function (e) {
        var code = (e.keyCode ? e.keyCode : e.which);
        if (code == 13) {
            changeLocation();
        }
    }
    );
});

function showChangeLocation() {
    $("#map-change").slideUp();
    $("#map-prompt").slideDown();
    $("#map-prompt input").focus();
}

function changeLocation() {
    $("#map-prompt").slideUp(function () {
        $("#map-list").slideUp(function () {
            $("#map-loading-indicator").slideDown(function () {
                var url = '/locations/postal/?code=' + encodeURIComponent($("#map-prompt input").val());
                $("#map-list").load(url, bindLocationData);

                $("#map-prompt input").val("");
                $("#map-prompt input").blur();
            });
        });


    });
}

function bindLocationData() {
    bindLocationLinks();

    var map, lat, lng, li, goldStandard, marker;
    $("#map-list li").each(function (i, el) {
        li = $(el);
        lat = parseFloat(li.attr("lat"));
        lng = parseFloat(li.attr("lng"));
        goldStandard = li.attr("data-goldStandard");

        if (i == 0) {
            li.addClass("selected");
            var myOptions = {
                zoom: 11,
                center: new google.maps.LatLng(lat, lng),
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                mapTypeControl: false
            };
            map = new google.maps.Map(document.getElementById("map"), myOptions);
        }

        if (i == 4) {
            map.setZoom(7);
        }

        if (i == 8) {
            map.setZoom(5);
        }

        if (goldStandard == "True") {

            marker = new google.maps.Marker({
                position: new google.maps.LatLng(lat, lng),
                map: map,
                icon: '/images/goldstandard-pin.png'
            });
        }
        else {
            marker = new google.maps.Marker({
                position: new google.maps.LatLng(lat, lng),
                map: map,
                icon: '/images/map-pin.png'
            });
        }


        li.click(function () {
            var lat = parseFloat($(this).attr("lat"));
            var lng = parseFloat($(this).attr("lng"));
            map.panTo(new google.maps.LatLng(lat, lng));
            map.setZoom(11);
            $('#map-list li').removeClass("selected");
            $(this).addClass("selected");

            // Remember selection
            var customId = $(this).attr("data-id");
            var date = new Date();
            date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000));
            $.cookie("loc", customId, { expires: date });
        });
    });

    $("#map-loading-indicator").slideToggle(function () { $("#map-list").slideDown(function () { $("#map-prompt").slideDown(); }); });

}

var bindLocationLinksFlag = false;
function bindLocationLinks() {

    if (bindLocationLinksFlag) return;
    bindLocationLinksFlag = true;

    $("a.email-list").live("click", function (e) {
        e.preventDefault();
        window.open($(this).attr("href"), "emaillist", "width=600,height=525,toolbar=0");
        return false;
    });

    $("a.website,a.directions").live("click", function (e) {
        e.preventDefault();
        window.open($(this).attr("href"));
        return false;
    });

    $(".hours-link").live("click", function (e) {
        e.preventDefault();

        var table = $("#" + $(this).attr("data-id"));
        if (table.length == 0) {
            var parent = $(this).closest(".loc");
            jQuery.get($(this).attr("href"), function (responseText) {
                html = $(responseText);
                $("tr:odd", html).addClass("odd");
                parent.append(html);
            });
        } else if (table.is(":visible")) {
            table.hide();
        } else {
            table.show();
        }
        return false;
    });

    $(".location img").one('error', function () {
        $(this).attr("src", "/media/images/no-photo.gif");
    });
}
