﻿/********************************** jQuery EXTENSIONS **********************************/
/** getUrlVars(url), getUrlVar(url, param), getActualUrlVars(), getActualUrlVar(param) */
$.extend({
    getActualUrl: function() {
        return window.location.href;
    },

    getUrlVars: function(urlString) {
        var vars = [], hash;
        var hashes = urlString.slice(urlString.indexOf('?') + 1).split('&');
        for (var i = 0; i < hashes.length; i++) {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    },

    getActualUrlVars: function() {
        return $.getUrlVars(window.location.href);
    },

    getUrlVar: function(urlString, name) {
        return $.getUrlVars(urlString)[name];
    },

    getActualUrlVar: function(name) {
        return $.getActualUrlVars()[name];
    }
});
/*****************************************************************************************/

function initSelectableVariations() {
    if ($(".variation-selector").length > 0) {
        $(".variation-selector").each(function(index) {
            $(this).bind("click", function(obj) {
                var value = "";
                var url = $(this).attr("href");
                var itemId = $.getUrlVar(url, "item");
                var variationId = $.getUrlVar(url, "variation");

                if ((itemId > 0) && (variationId > 0)) {
                    //value = itemId + "|" + variationId;
                    value = variationId;

                    $(this).addClass('selected');
                    $(this).parent().siblings().children('a').removeClass('selected');

                    $(this).parents("div.variation").children("input[name^='variation']").val(value);
                    validateAddToCart();
                }

                return false;
            });
        });
    } else {
        // ONLY DEFAULT VARIATION SET
        if (typeof productDefaultVariation != "undefined") {
            $("input[name^='variation']").val(productDefaultVariation);
        }
    }
    validateAddToCart();
}

function validateAddToCart() {
    var result = true;
    if ($("input[name^='variation']").length > 0) {
        $("input[name^='variation']").each(function(index) {
            if ($(this).val() == "") result = false;
            //alert($(this).val());
        });
    } else {
        result = false;
    }
    if (result) {
        // ENABLE ADD TO CART BUTTON
        $("input.buy").css("display", "block");
    } else {
        // DISABLE ADD TO CART BUTTON
        $("input.buy").css("display", "none");
    }
}

function selectVariation(variation) {
    $("input[name='variation']").val(variation);
    alert(this);
    return void (0);
}

function initFormTooltips() {
    $(".hint input").each(function(index) {
        $(this).bind("focus", function(obj) {
            $(this).siblings('span').fadeIn();
        });
        $(this).bind("blur", function(obj) {
            $(this).siblings('span').fadeOut();
        });
        $(this).siblings('span').hide();
    });
}

function cleanAnchors(container) {
    if (typeof container != "undefined") {
        $(container + " a").each(function(i, item) {
            item.onfocus = new Function("if(this.blur)this.blur()");
        });
    } else {
        $("a").each(function(i, item) {
            item.onfocus = new Function("if(this.blur)this.blur()");
        });
        /*
        anclas = document.getElementsByTagName("a").length;
        for (i = 0; i < anclas; i++)
            document.getElementsByTagName("a").item(i).onfocus = new Function("if(this.blur)this.blur()");
        */
    }
}

function externalRelFix() {
    $('a[rel="external"]').attr("target", "_blank");
    $('a.external').attr("target", "_blank");
}

function initBillAddress() {
    $("span.show-bill input").bind("click", function() {
        if ($("span.show-bill input").attr("checked") == false)
            $(".checkout-bill-info").slideUp();
        else
            $(".checkout-bill-info").slideDown();
    });

    $("span.show-bill-address input").bind("click", function() {
        if ($("span.show-bill-address input").attr("checked") == false)
            $(".checkout-bill-address").slideDown();
        else
            $(".checkout-bill-address").slideUp();
    });

    if ($("span.show-bill input").attr("checked") == true)
        $(".checkout-bill-info").show();
    else
        $(".checkout-bill-info").hide();

    if ($("span.show-bill-address input").attr("checked") == false)
        $(".checkout-bill-address").show();
    else
        $(".checkout-bill-address").hide();
}

function manageProvinceSelector(obj, activeDNI) {
    var country = obj.find('.country-selector :selected').text();
    if (country == unescape('ESPA%D1A')) {
        //'<mgr:LiteralAdvanced ID="LiteralAdvanced6" runat="server" ResText="Province_None"></mgr:LiteralAdvanced>'
        obj.find('.province-selector :first').text('Selecciona una provincia');
        obj.find('.province-selector').attr('disabled', false);
    } else {
        //<mgr:LiteralAdvanced ID="LiteralAdvanced7" runat="server" ResText="Province_OutOfSpain"></mgr:LiteralAdvanced>
        obj.find('.province-selector :first').text(unescape('Fuera de Espa%F1a'));
        obj.find('.province-selector').val(0).attr('disabled', true);
    }

    if ((typeof dniProvinces != "undefined") && (activeDNI)) {
        //alert(dniProvinces);
        var provinceId = obj.find('.province-selector :selected').val();
        if ($.inArray(parseInt(provinceId), dniProvinces) >= 0) {
            obj.find('.checkout-address-dni').slideDown();
        } else {
            obj.find('.checkout-address-dni').hide();
        }
    }
}

function initShippingForm() {
    // PROVINCE/COUNTRY
    var obj1 = $('.checkout-shipping');
    obj1.find('.country-selector').bind("change", function() {
        manageProvinceSelector(obj1, true);
    });
    obj1.find('.province-selector').bind("change", function() {
        manageProvinceSelector(obj1, true);
    });
    manageProvinceSelector(obj1, true);

    var obj2 = $('.checkout-bill');
    obj2.find('.country-selector').bind("change", function() {
        manageProvinceSelector(obj2, false);
    });
    manageProvinceSelector(obj2, false);
}

// ON LOAD PAGE EXECUTION ------------------------------------------
$(document).ready(function() {
    cleanAnchors();
    //initSelectableVariations();
    initFormTooltips();
    externalRelFix();
    initShippingForm();
    initBillAddress();
});
