﻿EmeritStore = {

    hideRegionSelection: function(e) {
        $("#Purchase").fadeOut("slow");
    },

    initialize: function() {
        $("#Purchase").click(EmeritStore.stopNonButtonClicks).find("form").submit(EmeritStore.onSubmit);
        $("a[rel = 'download']").click(EmeritStore.showDownloadForm);
        $("a[rel = 'purchase']").click(EmeritStore.showRegionSelection);

        EmeritStore.hideRegionSelection();
    },

    onSubmit: function(e) {
        var form = $(this);

        document.cookie = "Store=" + $(this).find("#store").val();

        window.open(form.attr("action") + '?' + form.serialize());

        e.preventDefault();
    },

    parseQuery: function(str) {
        var query = {};
        var querySrc = str.split('&');

        for (var i = 0, l = querySrc.length; i < l; i++) {
            var term = querySrc[i].split('=');

            query[unescape(term[0])] = unescape(term[1]);
        }

        return query;
    },

    showDownloadForm: function(e) {
        var separator = this.href.indexOf('?') >= 0 ? '&' : '?';

        $.fn.colorbox({ href: this.href + separator + 'popup=true', iframe: true, innerWidth: "500px", innerHeight: "380px", rel: 'nofollow' });

        return false;
    },

    showRegionSelection: function(e) {
        var form = $("#Purchase");
        var link = $(this);
        var linkOffset = $(this).offset();
        var query = EmeritStore.parseQuery(this.href.split('?').pop());

        // assign link querystring parameters
        for (var key in query) {
            form.find("#" + key).val(query[key]);
        }

        form.css({ left: linkOffset.left + "px", top: (linkOffset.top + link.height()) + "px", visibility: "visible" }).fadeIn("slow");

        e.preventDefault();
        e.stopPropagation();
    },

    stopNonButtonClicks: function(e) {
        if (e.target.nodeName != "BUTTON") {
            e.stopPropagation();
        }
    }
}

$(document).ready(EmeritStore.initialize).click(EmeritStore.hideRegionSelection);

