(function($) {
    var site = window.site = {
        data : {
            globalOverlay : null,
            globalOverlaySelector : "#overlayLayer"
        },
        func : {
            getLoadingHTML : function() {
                return     '<div id="genericLoadingLayer" class="layerLayout">' +
                        '	<div class="layerContent"><img src="' + loadingImage + ' /></div>' +
                        '</div>';
            },
            getProcessingHTML : function() {
                return     '<div id="genericLoadingLayer" class="layerLayout">' +
                        '<img src="' + processingImage + '" alt="Estamos procesando tu solicitud. Demorar\341 s\363lo unos momentos." title="Estamos procesando tu solicitud. Demorar\341 s\363lo unos momentos." />' +
                        '</div>';
            },
            getOrderProcessingHTML : function() {
                return     '<div id="genericLoadingLayer" class="layerLayout">' +
                        '<img src="' + processingOrderImage + '" alt="Estamos procesando tu pedido. No actualices la p\341gina o utilices el bot\363n de retroceso durante esta operaci\363n." title="Procesando" />' +
                        '</div>';
            },
            getPaymentProcessingHTML : function() {
                return  '<div id="genericLoadingLayer" class="layerLayout">' +
                        '<img src="' + processingPaymentImage + '" alt="Estamos procesando tu pago. No actualices la p\341gina o utilices el bot\363n de retroceso durante esta operaci\363n." title="Procesando" />' +
                        '<br>Estamos procesando tu pago. No actualices la p\341gina o utilices el bot\363n de retroceso durante esta operaci\363n.' +
                        '</div>';
            },
            getPrintScript : function() {
                return     '<script>' +
                        'window.print()' +
                        '</script>';
            },
            autoAdvance : function(options) {
                var settings = $.extend({
                    field : ".autoAdv input",
                    ignore : "._nothing"
                }, options);

                $(settings.field).not(settings.ignore).each(function() {
                    $(this).keyup(function() {
                        if ($(this).val().length == $(this).attr('maxlength')) {
                            $(this).next().focus();
                        }
                    });
                });
            },
            equalHeight : function(group) {
                var tallest = 0;

                /*
                 This should be done to all the columns EXCEPT the AJAX one, as
                 That one is done differently.
                 */
                //group.css("height", "auto");
                /* ------------------------ */

                group.each(function() {
                    var thisHeight = $(this).height();
                    if (thisHeight > tallest) {
                        tallest = thisHeight;
                    }
                });
                group.height(tallest);
            },

            newEqualHeight : function() {
                var right = $("#financialSnapshot").height();
                var main = $("#mainContainer").height();
                var left = $("#leftCol").height();

                if (main > right && main > left) {
                    $("#rightCol").css("height", main);
                    $("#leftCol").css("height", main);
                    $("#creditAccountPayment").css("height", main);
                } else if (right > main && right > left) {
                    $("#mainContainer").css("height", right);
                    $("#rightCol").css("height", right);
                    $("#leftCol").css("height", right);
                } else if (left > main && left > right) {
                    $("#mainContainer").css("height", left);
                    $("#leftCol").css("height", left);
                    $("#rightCol").css("height", left);
                    $("#creditAccountPayment").css("height", left);
                }
            },
            fadeInOut : function() {
                    var p = $("#fsCartDisplay table tbody tr.row:last");
                    var offset = p.offset();
                    var h = ($("#fsCartDisplay table tbody tr.row:last").height());
                    var l = ($("#fsCartDisplay table tbody tr.links:last").height());
                    var itemHeight = (h + l + "px");
                    if (offset) {
                    	$("#itemAdded").css({"top" : offset.top + "px" , "left" : offset.left + "px" , "height" : itemHeight }).fadeIn(fadeInFadeOutTime).fadeOut(fadeInFadeOutTime);
                    }
            },
            dropdownNavigation : function() {
                $('.category li').hover(
                        function() {
                            $('.subcategory', this).css('display', 'block');
                        },
                        function() {
                            $('.subcategory', this).css('display', 'none');
                        }
                        );
            },
            globalOverlay : {
                create : function() {
                    if (site.data.globalOverlay == null) {
                        site.data.globalOverlay = new lib.obj.pageOverlay({selector : site.data.globalOverlaySelector});
                    } else {
                        site.func.globalOverlay.remove();
                        site.data.globalOverlay.addOverlay();
                    }
                },
                remove : function() {
                    if (site.data.globalOverlay != null) {
                        site.data.globalOverlay.removeOverlay();
                    }
                }
            },
            openGenericLayer : function(url, f) {
                site.func.globalOverlay.create();
                lib.layer.create("#genericLayer", {
                    url : url,
                    defaultContent : site.func.getLoadingHTML(),
                    method : "post",
                    keepCentered : true,
                    callback: function() {
                        $(".js-closeLayer," + site.data.globalOverlaySelector).click(function(evt) {
                            evt.preventDefault();
                            lib.layer.remove("#genericLayer");
                            site.func.globalOverlay.remove();
                        });
                        //f();
                    }
                });
            },
            openTransparentLayer : function(url, f) {
                site.func.globalOverlay.create();
                lib.layer.create("#transparentLayer", {
                    url : url,
                    defaultContent : site.func.getLoadingHTML(),
                    method : "post",
                    keepCentered : true,
                    callback: function() {
                        $(".js-closeLayer," + site.data.globalOverlaySelector).click(function(evt) {
                            evt.preventDefault();
                            lib.layer.remove("#transparentLayer");
                            site.func.globalOverlay.remove();
                        });
                        //f();
                    }
                });
            },
            openLoadingLayer : function(url) {
                site.func.globalOverlay.create();
                lib.layer.create("#genericLayer", {
                    defaultContent : site.func.getProcessingHTML(),
                    keepCentered : true
                });
            },
            openOrderLoadingLayer : function(url) {
                site.func.globalOverlay.create();
                lib.layer.create("#genericLayer", {
                    defaultContent : site.func.getOrderProcessingHTML(),
                    keepCentered : true
                });
            },
            openPaymentLoadingLayer : function(url) {
                site.func.globalOverlay.create();
                lib.layer.create("#genericLayer", {
                    defaultContent : site.func.getPaymentProcessingHTML(),
                    keepCentered : true
                });
            },
            openModalWindowLayer : function(content) {
                site.func.globalOverlay.create();
                lib.layer.create("#genericLayer", {
                    defaultContent :    '<div class="layerContainer">'+
                    					'<div class="closeTop"><a class="js-closeLayer" href="#"><img border="0" alt="cerrar" src="http://espanol.fingerhut.com/img/fingerhut/ES_104498.gif" title="cerrar"/></a></div>'+
                    					'<div class="clr"><!----></div>'+
                    					'<div class="layerBody">'  +
                    					content + '</div>' +
                    					'<div class="closeBot"><a href="#" class="js-closeLayer"><img border="0" alt="cerrar" src="http://espanol.fingerhut.com/img/fingerhut/ES_104500.gif" title="cerrar"/></a></div>'+
                    					'<div class="clr"><!----></div>'+
                    					'</div>',
                    keepCentered : true
                });
                
				$(".js-closeLayer").click(function(e) {
					e.preventDefault();
					site.func.closeModalWindow();
				});
            },
            openAddedToCartLayer : function() {
            	$.ajax({
            		type: "GET",
            		url: "/checkout/basket_addon_popup.jsp?ts=" + new Date().getTime(),
            		timeout: 15000,
            		success: function(data) {
            			//$("body").append('<div id="basket-addon-popup"></div>');
            			$("#basket-addon-popup").html(data);
            			$("#basket-addon-popup").show();
            		},
            		error: function() {
            			return false;
            		}
            	});
            },
            openWarrantyModalLayer : function(data, pFunc) {
            	$.ajax({
            		type: "GET",
            		url: "/checkout/warranty_modal_popup.jsp",
            		data: data,
            		timeout: 15000,
            		success: function(data) {
                        site.func.openModalWindowLayer(data);
                        doFunc(pFunc);
            		},
            		error: function() {
            			return false;
            		}
            	});            	
            },
            closeLoadingLayer : function() {
                $("#overlayLayer").remove();
                $("#genericLayer").remove();
            },
            closeTransparentLayer : function() {
                $("#overlayLayer").remove();
                $("#transparentLayer").remove();
            },
            closeModalWindow : function() {
                $("#overlayLayer").remove();
                $("#genericLayer").remove();
            },      
            
            openWidgetLayer : function(url) {
                OverlayWidget.show("#headerOverlay", null, { sourceURL : url });
            },
            updateHeader : function(amt) {
                if (amt == 1) {
                    $(".js-headerItemCount").text(amt + " art\355culo");
                }
                else {
                    $(".js-headerItemCount").text(amt + " art\355culos");
                }
            },
            addToWishList : function(scope, params, requestURL) {
                $.ajax({
                    type: "POST",
                    url: requestURL,
                    data: params,
                    dataType: "html",
                    timeout: 15000,
                    success: function(data, textStatus) {

                        var $response = $("<div></div>").append(data);
                        var positiveResponse = false;
                        if ($("#messagesStack", $response).length > 0) {
                            $(".message", $response).each(function() {
                                var message = this;
                                $(".key", message).each(function(i) {
                                    var key = this;
                                    $(".values", message).eq(i).find(".value").each(function() {
                                        if ($.trim($(key).html()) == "forwardToWishList") {
                                            positiveResponse = true;
                                            if ($.trim($(this).html()).indexOf("true") >= 0) {
                                                location.href = "/user/wishlist.jsp";
                                            } else if ($.trim($(this).html()).indexOf("false") >= 0) {
                                                $("form[name=ensembleForm]").submit();
                                            }
                                        }
                                    });
                                });
                            });
                        }
                        if (!positiveResponse) {
                            var hasCommandMessages = site.func.commandMessages($response);
                            if (hasCommandMessages) {
                                $(".displayMsg").show();
                                location.href = "#";
                                return false;
                            }
                        }
                    },
                    error: function() {
                        return false;
                    }
                });
            },
            addToCartEventHandler : function(e, postFunc) {

                // Omniture Tracking
                // var s=s_gi(s_account);

                var scope;
                if ($(".OverlayScreen").css("display") == "block") {
                    scope = $($("input[@name=addToCartScopeQV]").val()); // Use Quick View.
                    s.event = "event6";
                } else {
                    scope = $($("input[@name=addToCartScope]:eq(0)").val());
                }
                var productVariantId = $("input[@name=productVariantId]", scope).val();

                if (productVariantId == null || productVariantId == undefined) {
                    productVariantId = $("input[@name=productVariantId2]", scope).val();
                }

                var prodId = $("input[@name=productId]", scope).val();
                if (prodId == null || prodId == undefined || prodId == '') {
                    prodId = $("input[@name=productId2]", scope).val();
                }

                var itemWarranty = "";
                var $itemWarranty = $("input[@name=itemWarranty]");
                if ($itemWarranty.length > 0) {
                    if ($("input[@name=itemWarranty]:checked", scope).val() != "") {
                        itemWarranty = "&itemWarranty=" + $("input[@name=itemWarranty]:checked", scope).val();
                    } else {
                        itemWarranty = "&itemWarranty=";
                    }
                }

                var itemGUID = "";
                var $itemGUID = $("input[@name=itemGUID]");
                if ($itemGUID.length > 0) {
                    if ($("input[@name=itemGUID]", scope).val() != "") {
                        itemGUID = "&itemGUID=" + $("input[@name=itemGUID]", scope).val();
                    }
                }

                var campaignCatalogCode = "";
                var $campaignCatalogCode = $("input[@name=campaignCatalogCode]");
                if ($campaignCatalogCode.length > 0) {
                    if ($("input[@name=campaignCatalogCode]", scope).val() != "" || $("input[@name=campaignCatalogCode]", scope).val() != null) {
                        campaignCatalogCode = "&campaignCatalogCode=" + $("input[@name=campaignCatalogCode]", scope).val();
                    }
                }

                var params = "productName=" + $("input[@name=productName]", scope).val() +
                        "&productId=" + prodId +
                        "&categoryId=" + $("input[@name=categoryId]", scope).val() +
                        "&parentCategoryId=" + $("input[@name=parentCategoryId]", scope).val() +
                        "&subCategoryId=" + $("input[@name=subCategoryId]", scope).val() +
                        "&quantity=" + $("select[@name=quantity] option:selected", scope).val() +
                        "&productVariantId=" + productVariantId +
                        "&redirectPath=" + $("input[name='redirectPath']").val() +
                        itemWarranty +
                        itemGUID +
                        campaignCatalogCode +
                        "&ts=" + site.func.timestamp();

                var requestURL = $("input[@name=addToCartAction]", scope).val();

                site.func.addToCart(scope, params, requestURL, postFunc);

                // Omniture Tracking
                /* s.linkTrackVars='pagename,prop1,prop2,prop3,prop4,prop6';
                 s.pagename='cart:cart add';
                 s.prop1='cart';
                 s.prop2='cart:cart add';
                 s.prop3='cart:cart add';
                 s.prop4='cart:cart add';
                 s.prop6='cart';
                 s.tl(this,'o','cartAdd'); */
            },
            addEnsembleToCartEventHandler : function(e, $this, postFunc) {
                $(".generalError").html("");
                
                var scope = $($("input[@name=addToCartScope]").val());
                if ($($this).next().attr("name") == "isAddToCartBuyTogether") {
                    scope = $(".buyTogetherEnsembleForm");
                }
                
                var ensembleProducts = "";

                $("input[@name=productVariantId]", scope).each(function(i) {
                	
                    if ((scope.attr("id") == "compareLayerItems" && $(".addToCartEnsemble").index($this) == i) || scope.attr("id") != "compareLayerItems") {

                        var v = $(this).val();

                        var $qty = $("select[name=quantity]:eq(" + i + ")");
                        if ($qty.length == 0) {
                            $qty = $("input[name=quantity]:eq(" + i + ")");
                        }
                        if ($qty.length == 1 && $qty.val() > 0) {
                            var r = "&productVariantId=" + v.substring(v.lastIndexOf("productVariantId_"), v.length);
                            r += "&quantity=" + ($qty.val());
                            if (scope.attr("id") == "compareLayerItems") {
                                r += "&variantIndex=" + i;
                            }
                            else {
                                r += "&ensembleIndexes=" + i;
                            }
                            if ($("input[name=itemWarranty_" + i + "]").length > 0 && $("input[name=itemWarranty_" + i + "]:checked").val() != "") {
                                r += "&itemWarranty=" + ($("input[name=itemWarranty_" + i + "]:checked").val());
                            } else {
                                r += "&itemWarranty=";
                            }
                            if ($("input[name=itemGUID]:eq(" + i + ")").length == 1 && $("input[name=itemGUID]:eq(" + i + ")").val() != "") {
                                r += "&itemGUID=" + ($("input[name=itemGUID]:eq(" + i + ")").val());
                            }
                            ensembleProducts += r;
                        }
                    }

                });
                
                if (ensembleProducts == "") {
                    return false;
                }

                var params = "categoryId=" + $("input[@name=categoryId]", scope).val() +
                        "&parentCategoryId=" + $("input[@name=parentCategoryId]", scope).val() +
                        "&subCategoryId=" + $("input[@name=subCategoryId]", scope).val() +
                        ensembleProducts +
                        "&redirectPath=" + $("input[name='redirectPath']").val() +
                        "&ts=" + site.func.timestamp();

                var requestURL = $("input[@name=addToCartAction]", scope).val();

                site.func.addToCart(scope, params, requestURL, postFunc);

                return false;
            },
            addToCart : function(scope, params, requestURL, postFunc) {
                $.ajax({
                    type: "POST",
                    url: requestURL,
                    data: params,
                    dataType: "html",
                    timeout: 15000,
                    success: function(data, textStatus) {

                        var $response = $("<div></div>").append(data);
                        var hasCommandMessages = site.func.commandMessages($response);
                        if (hasCommandMessages) {
                            $(".displayMsg").show();
                            window.location.hash = "#top";
                            return false;
                        } else {
                            $(".displayMsg").hide();
                            if (scope.attr("id") == "overlayQuickLookWidget" || scope.attr("id") == "compareLayerItems") {
                                OverlayWidget.hideAll();
                                if (scope.attr("id") == "compareLayerItems") {

                                    $("#compareLayerItems").css("visibility", "hidden");
                                    site.func.globalOverlay.remove();
                                }
                            }

                            if ($("input[@name=fromParent]").val() == "onBasketPage" || $("input[@name=fromParent]").val() == "onPaymentPage") {
                                location.href = $("input[@name=pagePath]").val();
                            } else {
                                if ($("#personalizeItemContainer", $response).length > 0) {

                                    var personalizerLayer = document.createElement("div");
                                    personalizerLayer.id = "genericLayer";
                                    var theBody = document.getElementsByTagName("body")[0];
                                    theBody.appendChild(personalizerLayer);
                                    $("#genericLayer").append(data);
                                    site.func.globalOverlay.create();
                                    $("#genericLayer").show();
                                    lib.layer.center($("#genericLayer"));
                                    $(".errorTxt").hide();

                                    site.func.personalization.updatePersonalize(null, postFunc);

                                } else if ($("#financialSnapshotContainer", $response).length > 0) {

                                    $("#financialSnapshot").html($response);
                                    site.func.fadeInOut();
                                    site.func.newEqualHeight();
                                    site.func.updateFinancialSnapshot();

                                    doFunc(postFunc);
                                }
                            }
                        }
                    },
                    error: function() {
                        return false;
                    }
                });
            },
            personalization : {
                open : function(requestURL) {
                    $.ajax({
                        type: "POST",
                        url: requestURL+"&sid=" + Math.random(),
                        dataType: "html",
                        timeout: 15000,
                        cache: false,
                        success: function(data, textStatus) {

                            var personalizerLayer = document.createElement("div");
                            personalizerLayer.id = "genericLayer";
                            var theBody = document.getElementsByTagName("body")[0];
                            theBody.appendChild(personalizerLayer);
                            $("#genericLayer").append(data);
                            site.func.globalOverlay.create();
                            $("#genericLayer").show();
                            lib.layer.center($("#genericLayer"));
                            $(".errorTxt").hide();
                            site.func.personalization.updatePersonalize();

                        }
                    });
                },
                getPersonalization : function(postFunc) {

                    var monograms = "";

                    $(".monogramValue").each(function(i) {
                        // url encode
                        var value = encodeURIComponent($(this).val());
                        monograms += $(this).attr("name") + "=" + value + "&";
                    });

                    var params = "itemIndex=" + $("input[name='itemIndex']").val() +
                            "&redirectPath=" + $("input[name='redirectPath']").val() + "&" +
                            monograms +
                            "personalizeAll=" + $("input[name='personalizeAll']").val() +
                            "&ts=" + site.func.timestamp();

                    $.ajax({
                        type: "POST",
                        url: $("input[name='postAction']").val(),
                        data: params,
                        dataType: "html",
                        timeout: 15000,
                        success: function(data) {
                            var $response = $("<div></div>").append(data);
                            if ($("input[name=isEdit]").length > 0 && $("input[name=isEdit]").val() == "true") {
                                document.location.reload();
                            } else {
                                if ($("#financialSnapshotContainer", $response).length > 0) {
                                    $("#financialSnapshot").html($response);
                                    lib.layer.remove("#genericLayer");
                                    site.func.globalOverlay.remove();
                                    site.func.updateFinancialSnapshot();
                                    
                                    doFunc(postFunc);
                                    
                                } else {
                                    site.func.personalization.updatePersonalize(data, postFunc);
                                }
                            }
                        }
                    });
                },
                updatePersonalize : function(data, postFunc) {

                	if (data) {
                        $("#genericLayer").html(data);
                    }

                    lib.layer.center($("#genericLayer"));
                    lib.layer.ie6Fix("#genericLayer a");

                    $(".js-closeLayer").click(function (e) {
                        lib.layer.remove("#genericLayer");
                        site.func.globalOverlay.remove();
                        site.func.getFinancialSnapshot();
                        e.preventDefault();
                        
                        doFunc(postFunc);
                    });

                    $("#genericLayer").addClass("lib__keepcentered").removeClass("lib__shouldbecentered");

                    $(".addToCartPersonalize").click(function (e) {
                        site.func.personalization.getPersonalization(postFunc);
                        e.preventDefault();
                    });

                    $(".saveAndCont").click(function (e) {
                        site.func.personalization.getPersonalization(postFunc);
                        e.preventDefault();
                    });
                }
            },
            getFinancialSnapshot : function() {
                financialSnapshot.init();
            },
            updateFinancialSnapshot : function() {

                $("#rightCol").html();
                financialSnapshot.initRegistration();
                $(".errorTxt").hide();
                if (arguments.length == 0) {
                    lib.layer.remove("#genericLayer");
                    lib.layer.remove("#overlayLayer");
                }
            },
            timestamp : function() {
                return new Date().getTime();
            },

            priceManipulation : {
                initVariantPricing : function(scope) {
                    /* Setup Variant Prices */
                    $(scope + " .VariantMatrix").each(function(i) {
                        if (this.id.indexOf("mainVariantMatrix_") != -1 || this.id.indexOf("buyTogetherVariantMatrix_") != -1) {
                            $(this).widgetBind("updatevariant", function(evt, productId, variantId, selectedVariant, saleOnly) {

                                var priceParent = $(".js-price:eq(" + i + ")");
                                var salePrice = '';
                                if (selectedVariant != null) /* Show Variant Price */
                                {
                                    salePrice = selectedVariant.props.price;
                                    if ((selectedVariant.props.salePrice != null)) {
                                        salePrice = selectedVariant.props.salePrice;
                                    }
                                    if (this.id.indexOf("mainVariantMatrix_") != -1) {
                                        $("#mainProdIndVariantPrice").val(salePrice);
                                        $("#mainVariant").val(variantId);
                                    } else if (this.id.indexOf("buyTogetherVariantMatrix") != -1) {
                                        $("#buyTogetherProdPIndVariantPrice").val(salePrice);
                                        $("#buyTogetherVariant").val(variantId);
                                    }
                                    if ($("#buyTogetherProdPIndVariantPrice").val() != '' && $("#mainProdIndVariantPrice").val() != '') {

                                        var num1 = convertStringToNumber($("#buyTogetherProdPIndVariantPrice").val());
                                        var num2 = convertStringToNumber($("#mainProdIndVariantPrice").val());
                                        var total = "$" + (new Number(num1 + num2).toFixed(2));
                                        $(".btCombinedArea .priceNormal").html(total);
                                    }

                                } else if (variantId == -1 && selectedVariant == null) {
                                    //do nothing due to more updatevariant events now firing from the VariantMatrixWidget.js
                                    if (this.id.indexOf("mainVariantMatrix_") != -1) {
                                        $("#mainProdIndPrice").val(salePrice);
                                    } else if (this.id.indexOf("buyTogetherVariantMatrix") != -1) {
                                        $("#buyTogetherProdPIndPrice").val(salePrice);
                                    }
                                } else /* Show Default Price */
                                {
                                    //todo  are we showing any default price or mesage?
                                    //$(".js-variantPrice", priceParent).hide();
                                    // $(".js-defaultPrice", priceParent).show();
                                }
                            });
                        } else {
                            $(this).widgetBind("updatevariant", function(evt, productId, variantId, selectedVariant, saleOnly) {
                                $("#mainProdIndPrice").val("");
                                $("#buyTogetherProdPIndPrice").val("");
                                var priceParent = $(".js-price:eq(" + i + ")");
                                if (selectedVariant != null) /* Show Variant Price */
                                {
                                    /* Show as Sale or as Normal */
                                    var priceHTML = '<span class="priceNormal">' + selectedVariant.props.price + '</span>';
                                    if ((selectedVariant.props.salePrice != null) && (selectedVariant.props.salePrice != "$0.00")) {
                                        priceHTML = 'Was <span class="priceSale">' + selectedVariant.props.price + '</span><br /><span class="priceNormal">' + selectedVariant.props.salePrice + '</span></p>';
                                    }
                                    /* ------------------- */

                                    $(".js-defaultPrice", priceParent).hide();
                                    $(".js-variantPrice", priceParent).html(priceHTML).show();
                                } else if (variantId == -1 && selectedVariant == null) {
                                    //do nothing due to more updatevariant events now firing from the VariantMatrixWidget.js
                                } else /* Show Default Price */
                                {
                                    $(".js-variantPrice", priceParent).hide();
                                    $(".js-defaultPrice", priceParent).show();
                                }
                            });
                        }

                    });
                    /* ----------- */
                }
            },
            imageManipulation : {
                initProductImages : function(scope, settings) {                	
                    var settings = $.extend({
                        justSwatches : false,
                        defaultColor : "",
                        imageParams : null
                    }, settings);                    

                    if (!settings.justSwatches) {                    	
                        /* Intialize variant Pricing */
                        site.func.priceManipulation.initVariantPricing(scope);                       
                        /* Create Scene7 Viewers */
                        var viewers = lib.scene7.func.initViewers(scope, settings.imageParams);                        
                        /* Zoom In/Out buttons */
                        $(scope + " .js-zoomControls").each(function(i) {

                            /* setup the buttons */
                            $("a img", this).each(function() {
                                var imgOff = $(this).attr("src");                                
                                var imgOn = $(this).attr("src");                               
                                new lib.obj.button({
                                    off: imgOff,
                                    hover: imgOn,
                                    buttonSelector: this,
                                    buttonCollectionSelector : ".js-zoomControls a img"
                                });
                            });
                            /* ---------------- */
                        });
                        /* ------------------ */


                    }                  
                 
                    $(scope + " .js-swatches").each(function(i) {                    	
                        var thisCollection = this;                      
                        var variantSelector = ".COLOR_NAME ." + $(this).attr("id");                       
                        if (variantSelector.substring((variantSelector.length - 4)) != "sale") {                        	
                            var otherVariantSelector = variantSelector + "-sale";                            
                            var saleOnly = false;                           
                        } else {
                            var otherVariantSelector = variantSelector.substr(0, (variantSelector.length - 5));                           
                            var saleOnly = true;                           
                        }

                        /* Swatch as Button */
                        new lib.obj.button({
                            hasClick: true,
                            activeId: "js-activeSwatch",
                            cssButton: true,
                            cssOff: "swatchOff",
                            cssOn: "swatchOn",
                            cssHover: "swatchOn",
                            buttonSelector: $(".js-aSwatch", thisCollection),
                            buttonCollectionSelector : $(".js-aSwatch", thisCollection)
                        });
                        /* ------------------ */
                       
                        /* Click Swatch */
                        $(".js-aSwatch", this).unbind("click.swatches").bind("click.swatches", function(evt) {                        	
                            evt.preventDefault();
                            var color = $("img", this).attr("alt");                           
                            site.func.imageManipulation.updateColorDropdown(variantSelector, color);
                            $("#productVideoLayer").css("display", "none");
                            $("#productImageLayer").css("display", "block");
                        });
                        /* ------------- */

                        /* Setup the Dropdown [everything runs through this] */
                        if (!settings.justSwatches) {
                        	
                            $(variantSelector).unbind("change.swatches").bind("change.swatches", function() {                            	
                                var color = $(this).val();
                                if (color != "") {
                                    site.func.imageManipulation.resetColorDropdown(otherVariantSelector);
                                    // ugly assignment ensuring same targeting for sale and non-sale variants
                                    if (saleOnly && i == 1) {
                                        i = 0;
                                    }
                                    var sku = $(".js-aSwatch [alt=" + $(this).val() + "]", thisCollection).attr("id");
                                    //site.func.imageManipulation.updateViewer( viewers, sku, i);
                                    site.func.imageManipulation.updateColorSwatch(thisCollection, color);
                                    //site.func.imageManipulation.updateColorName(scope, color, i);
                                    //site.func.imageManipulation.updateSku(scope, sku, i);
                                    //site.func.imageManipulation.createMoreViews(scope, sku, i, null, viewers);
                                }
                            }).change();
                        }
                        /* -------------------- */

                        /* Setup the See More link
                         $(".js-swatchesSeeMore", this).unbind("click.swatchesSeeMore").bind("click.swatchesSeeMore", function(evt) {
                         evt.preventDefault();
                         var pos = lib.utils.getPosition(this)[0];
                         site.func.imageManipulation.showSwatchLayer( $(this).attr("href"), pos[0], pos[1], $(variantSelector).val() );
                         });                        */
                        /* --------------------- */

                        /* Setup the default showing swatch */
                        if (settings.defaultColor != "") {
                            if (!settings.justSwatches) {
                                site.func.imageManipulation.updateColorDropdown(variantSelector, settings.defaultColor);
                            }

                            var defaultSwatch = $(".js-aSwatch [alt=" + settings.defaultColor + "]", thisCollection).parent();
                            $(defaultSwatch).triggerHandler("click.button");
                        }
                        /* ---------------- */
                    });
                },
                createMoreViews : function(scope, sku, i, views, viewers) {
                    if (views != null) {
                        if (views.length > 0) {
                            var viewHTML = "";
                            for (var x = 0; x < views.length; x++) {
                                viewHTML += '<li><a class="js-aView" href="#"><img src="' + views[x] + '" alt="" /></a></li>';
                            }
                            $("ul", $(scope + " .js-moreViews").eq(i)).html(viewHTML);
                            $(scope + " .js-moreViews").eq(i).show();

                            /* CSS BUTTON */
                            new lib.obj.button({
                                hasClick: true,
                                activeId: "js-activeView",
                                cssButton: true,
                                cssOff: "viewOff",
                                cssOn: "viewActive",
                                cssHover: "viewHover",
                                buttonSelector: $(".js-aView", $(scope + " .js-moreViews").eq(i)),
                                buttonCollectionSelector : $(".js-aView", $(scope + " .js-moreViews").eq(i))
                            });
                            /* ----------------- */

                            /* Add Events for the alternate Views */
                            $(".js-aView", $(scope + " .js-moreViews").eq(i)).bind("click.views", function(evt) {
                                evt.preventDefault();
                                var image = $("img", this).attr("src").split("?")[0];
                                image = image.split("/");
                                image = image[image.length - 1];
                                site.func.imageManipulation.updateViewer(viewers, image, i);
                            }).eq(0).triggerHandler("click.button");
                            /* -------------------- */
                        }
                        else {
                            $(scope + " .js-moreViews").eq(i).hide();
                        }
                    }
                    else {
                        /* Request From Scene7 */
                        scene7.func.getMoreViews(scope, sku, i, viewers);
                    }
                },
                resetColorDropdown : function(variantSelector) {
                    $(variantSelector).val("").change();
                },
                updateColorDropdown : function(variantSelector, color) {
                    $(variantSelector).val(color).change();
                },
                updateColorSwatch : function(swatchCollectionSelector, color) {
                    $(".js-aSwatch [alt=" + color + "]", swatchCollectionSelector).parent().triggerHandler("click.button");
                },
                updateViewer : function(viewers, sku, i) {
                    scene7.func.changeImage(viewers[i], sku);
                },
                /*updateColorName : function( scope, colorName, index ) {
                 $(scope + " .js-productColorName").eq(index).text(colorName);
                 },*/
                /*updateSku : function( scope, sku, i ) {
                 $(scope + " .js-sku").eq(i).text(sku);
                 },*/
                showSwatchLayer : function(colorsURL, x, y, currentColor) {
                    lib.layer.create("#swatchLayer", {
                        url : colorsURL,
                        method : "get",
                        xPos : x,
                        yPos : y,
                        callback : function() {
                            /* Create Background Overaly */
                            var overlay = new lib.obj.pageOverlay({selector : "#overlayLayer2"});
                            $("#swatchLayer .js-aSwatch, #swatchLayer .js-closeLayer, #overlayLayer2").click(function(evt) {
                                evt.preventDefault();
                                setTimeout(function() {
                                    lib.layer.remove("#swatchLayer");
                                    overlay.removeOverlay();
                                }, 250);
                            });

                            /* Setup the Swatches */
                            site.func.imageManipulation.initProductImages("#swatchLayer", { justSwatches : true, defaultColor : currentColor });
                        }
                    });
                }
            },
            commandMessages : function($response) {
                var hasCommandMessages = false;
                $(".generalError").html("");
                if ($("#messagesStack", $response).length > 0) {
                    $(".errorTxt").html("");

                    hasCommandMessages = true;
                    $(".error", $response).each(function() {
                        var error = this;
                        $(".key", error).each(function(i) {
                            var key = this;
                            $(".values", error).eq(i).find(".value").each(function() {
                                $("#e_" + $.trim($(key).html())).html("").append($.trim($(this).html()));
                                $("#e_" + $.trim($(key).html())).show();
                            });
                        });
                    });
                }
                return hasCommandMessages;
            }
        },
        events : {
            init : {
                addToWishListSnapshot : function() {
                    $(".js-moveItemToWishlist").click(function() {
                        $(this).parents("form[name=moveItemToWishListCommand]").submit();
                        return false;
                    });
                },
                addToWishListEnsemble : function() {
                    $(".addToWishListEnsemble").unbind();
                    $(".addToWishListEnsemble").click(function () {

                        var $this = this;
                        var scope = $($("input[name=addToCartScope]").val());
                        var ensembleProducts = "";

                        $("input[name=productVariantId]", scope).each(function(i) {

                            var v = $(this).val();
                            var $qty = $("select[name=quantity]:eq(" + i + ")");
                            var r = "&productVariantId=" + v.substring(v.lastIndexOf("productVariantId_"), v.length);
                            r += "&quantity=" + ($qty.val());
                            if (scope.attr("id") == "compareLayerItems") {
                                r += "&variantIndex=" + i;
                            }
                            else {
                                r += "&ensembleIndexes=" + i;
                            }
                            if ($("input[name=itemWarranty_" + i + "]").length > 0 && $("input[name=itemWarranty_" + i + "]:checked").val() != "") {
                                r += "&itemWarranty=" + ($("input[name=itemWarranty_" + i + "]:checked").val());
                            } else {
                                r += "&itemWarranty=";
                            }
                            if ($("input[name=itemGUID]:eq(" + i + ")").length == 1 && $("input[name=itemGUID]:eq(" + i + ")").val() != "") {
                                r += "&itemGUID=" + ($("input[name=itemGUID]:eq(" + i + ")").val());
                            }
                            ensembleProducts += r;

                        });

                        if (ensembleProducts == "") {
                            return false;
                        }

                        var params = "categoryId=" + $("input[name=categoryId]", scope).val() +
                                "&parentCategoryId=" + $("input[name=parentCategoryId]", scope).val() +
                                "&subCategoryId=" + $("input[name=subCategoryId]", scope).val() +
                                ensembleProducts +
                                "&isAjax=true" +
                                "&ts=" + site.func.timestamp();

                        var requestURL = $("input[name=addToWishListEnsembleAction]", scope).val();

                        site.func.addToWishList(scope, params, requestURL);

                        return false;
                    });
                },
                addToCartEnsemble : function() {

                	/**
                	 * Default "add to cart" functionality: 
                	 * no interstitial page, cart layer, or warranty layer
                	 */
                    $(".js-addEnsembleToCartHandler").unbind();
                    $(".js-addEnsembleToCartHandler").click(function (e) {
                    	site.func.addEnsembleToCartEventHandler(e, this);
                    	return false;
                    });
                    
                    /**
                     * Adds an ensemble to the cart and redirects to an 
                     * interstitial page
                     */
                    $(".js-addEnsembleToCartHandler2").unbind();
                    $(".js-addEnsembleToCartHandler2").click(function (e) {
                    	site.func.addEnsembleToCartEventHandler(e, this, function() {
                    		document.location.href = "/checkout/basket_addon.jsp";
                    	});
                    	return false;
                    });
                    
                    /**
                     * Adds an ensemble to the cart and then pops the universal
                     * cart layer
                     */
                    $(".js-addEnsembleToCartHandler3").unbind();
                    $(".js-addEnsembleToCartHandler3").click(function (e) {
                    	site.func.addEnsembleToCartEventHandler(e, this, function() {
                    		site.func.openAddedToCartLayer();
                    	});
                    	return false;
                    });
                    
                    /**
                     * Adds an ensemble to the cart and then pops the warranty
                     * modal layer
                     */
                    $(".js-addEnsembleToCartHandler4").unbind();
                    $(".js-addEnsembleToCartHandler4").click(function (e) {
                    	site.func.addEnsembleToCartEventHandler(e, this, function() {
                    		site.func.openWarrantyModalLayer();
                    	});
                    	return false;
                    });
                    
                    /**
                     * Pops warranty modal layer, redirects to interstitial page
					 * after adding to the cart
                     */
                    $(".js-addEnsembleToCartHandler5").unbind();
                    $(".js-addEnsembleToCartHandler5").click(function (e) {
                    	site.func.addEnsembleToCartEventHandler(e, this, function() {
                    		site.func.openWarrantyModalLayer(null, function() {
                        		// the layer has a hard-coded click handler, remove it
                        		$(".js-closeLayer").attr("onClick", "");
                        		$(".js-closeLayer").unbind();
                    			$(".js-closeLayer").click(function(e) {
                    				e.preventDefault();
                    				site.func.closeModalWindow();
                    				document.location.href = "/checkout/basket_addon.jsp";
                    			});
                    		});
                    	});
                    	return false;
                    });
                    
                    /**
                     * Pops warranty modal layer, pops the universal cart layer
					 * after adding to the cart
                     */
                    $(".js-addEnsembleToCartHandler6").unbind();
                    $(".js-addEnsembleToCartHandler6").click(function (e) {
                    	site.func.addEnsembleToCartEventHandler(e, this, function() {
                    		site.func.openWarrantyModalLayer(null, function() {
                        		// the layer has a hard-coded click handler, remove it
                        		$(".js-closeLayer").attr("onClick", "");
                        		$(".js-closeLayer").unbind();
                    			$(".js-closeLayer").click(function(e) {
                    				e.preventDefault();
                    				site.func.closeModalWindow();
                    				site.func.openAddedToCartLayer();
                    			});
                    		});
                    	});
                    	return false;
                    });
                },
                addToCart : function() {

                	/**
                	 * Default "add to cart" functionality: 
                	 * no interstitial page, cart layer, or warranty layer
                	 */
                    $(".js-addToCartHandler").unbind();
                    $(".js-addToCartHandler").click(function (e) {
                    	site.func.addToCartEventHandler(e);
                        return false;
                    });
                    
                    /**
                     * Adds an item to the cart and redirects to an 
                     * interstitial page
                     */
                    $(".js-addToCartHandler2").unbind();
                    $(".js-addToCartHandler2").click(function (e) {
                    	site.func.addToCartEventHandler(e, function() {
                    		document.location.href = "/checkout/basket_addon.jsp?ts=" + new Date().getTime();
                    	});
                        return false;
                    });
                    
                    /**
                     * Adds an item to the cart and then pops the universal
                     * cart layer
                     */
                    $(".js-addToCartHandler3").unbind();
                    $(".js-addToCartHandler3").click(function (e) {
                    	site.func.addToCartEventHandler(e, function() {
                    		site.func.openAddedToCartLayer();
                    	});
                        return false;
                    });
                    
                    /**
                     * Adds an item to the cart and then pops the warranty
                     * modal layer
                     */
                    $(".js-addToCartHandler4").unbind();
                    $(".js-addToCartHandler4").click(function (e) {
                    	site.func.addToCartEventHandler(e, function() {
                    		site.func.openWarrantyModalLayer();
                    	});
                        return false;
                    });
                    
                    /**
                     * Pops warranty modal layer, redirects to interstitial page
					 * after adding to the cart
                     */
                    $(".js-addToCartHandler5").unbind();
                    $(".js-addToCartHandler5").click(function (e) {
                    	site.func.addToCartEventHandler(e, function() {
                    		site.func.openWarrantyModalLayer(null, function() {
                        		// the layer has a hard-coded click handler, remove it
                        		$(".js-closeLayer").attr("onClick", "");
                        		$(".js-closeLayer").unbind();
                    			$(".js-closeLayer").click(function(e) {
                    				e.preventDefault();
                    				site.func.closeModalWindow();
                    				document.location.href = "/checkout/basket_addon.jsp";
                    			});
                    		});
                    	});
                        return false;
                    });
                    
                    /**
                     * Pops warranty modal layer, pops the universal cart layer
					 * after adding to the cart
                     */
                    $(".js-addToCartHandler6").unbind();
                    $(".js-addToCartHandler6").click(function (e) {
                    	site.func.addToCartEventHandler(e, function() {
                    		site.func.openWarrantyModalLayer(null, function() {
                        		$(".js-closeLayer").unbind();
                    			$(".js-closeLayer").click(function(e) {
                    				e.preventDefault();
                    				site.func.closeModalWindow();
                    				site.func.openAddedToCartLayer();
                    			});
                    		});
                    	});
                        return false;
                    });
                },
                openPersonalize : function() {
                    $(".personalizeItem").unbind();
                    $(".personalizeItem").click(function (e) {

                        var requestURL = $(this).attr("href");

                        site.func.personalization.open(requestURL);

                        return false;
                    });
                },
                deleteAddress : function() {
                    $(".fDeleteAddress").click(function() {
                        var requestURL = $(this).attr("href");

                        $.ajax({
                            type: "GET",
                            url: requestURL,
                            dataType: "html",
                            timeout: 15000,
                            success: function(data) {

                                var deleteLayer = document.createElement("div");
                                deleteLayer.id = "genericLayer";
                                var theBody = document.getElementsByTagName("body")[0];
                                theBody.appendChild(deleteLayer);
                                $("#genericLayer").append(data);
                                site.func.globalOverlay.create();

                                $(".js-closeLayer").click(function() {
                                    lib.layer.remove("#genericLayer");
                                    site.func.globalOverlay.remove();
                                    return false;
                                });

                                lib.layer.center($("#genericLayer"));
                                $("#genericLayer").show();
                                $(".errorTxt").hide();

                            }
                        });

                        return false;
                    });
                },
                omnitureCrossells : function() {
                    $("input[name=omnitureCrossell]").each(function(i) {

                        var omnitureInfluenceId = $("input[name=omnitureInfluenceId]").val();
                        var arrVals = $(this).val().split("|");

                        $(".omnitureRelationship:eq(" + i + ") .image a").click(function() {
                            site.omniture.registerCrossell(omnitureInfluenceId, arrVals[0], arrVals[1], arrVals[2]);
                        });
                        $(".omnitureRelationship:eq(" + i + ") .btProdImg a").click(function() {
                            site.omniture.registerCrossell(omnitureInfluenceId, arrVals[0], arrVals[1], arrVals[2]);
                        });

                        $(".omnitureRelationship:eq(" + i + ") .name a").click(function() {
                            site.omniture.registerCrossell(omnitureInfluenceId, arrVals[0], arrVals[1], arrVals[2]);
                        });
                    });
                },
                switchLanguage : function() {
                    if (/www.fingerhut./.test(window.location)) {
                        site.languages.languageCode = "EN";
                    } else if (/espanol.fingerhut./.test(window.location) || /esfingerhut.convertlanguage./.test(window.location)) {
                        site.languages.languageCode = "ES";
                    }
                    $(".js-switchLanguage").click(function() {
                        site.languages.switchLanguage($(this));
                        return false;
                    });
                },
                nonEmailAccount : {
                    load : function() {
                        if ($("#nonEmailAccount").length == 1) {
                            site.func.openGenericLayer("/non_email_account.jsp?userName=" + $("input[name=userName]").val(), function() {
                                site.events.init.nonEmailAccount.init();
                            });
                        }
                    },
                    init : function() {
                        $("#btnSubmitNonEmailAccount").click(function() {
                            site.nonEmailAccount();
                            return false;
                        });
                        if ($("#updatedUserNameSuccess").length > 0) {
                            $("#loginForm input[name=userName]").val($("#updatedUserName").val());
                            window.setTimeout(function() {
                                $("#loginForm").submit();
                            }, 3000);
                        }
                    }
                },
                emailOptIn : function() {
                    $(".js-submitEmailOptIn").click(function() {
                        if ($(this).attr("id") == "js-home") {
                            $("#dest").val("/");
                        }
                        $("#emailOptInForm").submit();
                        return false;
                    });
                }
            }
        },
        omniture : {
            registerCrossell : function(influenceId, soldId, entityType, linkName) {

                var s = s_gi(s_account);
                s.linkTrackVars = 'events,products';
                s.events = "prodView,event3,event19";
                s.products = ";" + influenceId + ";;;;evar13=" + influenceId + "|evar14=" + soldId + "|evar15=" + entityType;
                s.tl(this, 'o', linkName);

            }
        },
        languages : {
            switchLanguage : function($this) {

                var fingerhutSites = ["www.fingerhut.dev/WOE", "www.fingerhut.dev2", "www.fingerhut.test2", "www.fingerhut.stage", "www.fingerhut.com"];
                var motionpointSites = ["esfingerhut.convertlanguage.com/dfingerhuttest2", "esfingerhut.convertlanguage.com", "espanol.fingerhut.com/dfingerhuttest2", "espanol.fingerhut.com/sdstage", "espanol.fingerhut.com"];

                var fromSite = location.href;
                var toSite = "";
                if (site.languages.languageCode == "EN") {
                    for (i = 0; i < fingerhutSites.length; i++) {
                        idx = fromSite.indexOf(fingerhutSites[i]);
                        if (idx > -1) {
                            break;
                        }
                    }
                    toSite = fromSite.replace(fingerhutSites[i], motionpointSites[i]);
                } else {
                    for (i = 0; i < motionpointSites.length; i++) {
                        idx = fromSite.indexOf(motionpointSites[i]);
                        if (idx > -1) {
                            break;
                        }
                    }
                    toSite = fromSite.replace(motionpointSites[i], fingerhutSites[i]);
                }
                $this.attr("href", toSite);

                var d = (window.location.host).replace("www", "").replace("espanol", "");
                if (site.languages.languageCode == "EN") {
                    document.cookie = "WebsiteLan=1;path=/;domain=" + d + ";";
                } else {
                    document.cookie = "WebsiteLan=2;path=/;domain=" + d + ";";
                }

                /*

                 Story ID:8765139
                 If the user is on a fingerhut site, and wishes to enter the spanish site,
                 then remap the cookie values for JSESSIONID and PIPELINE_SESSION_ID to the
                 global domain (including sub-domains) instead of to the full domain. This
                 will allow a user to maintain their cart between languages.

                 */

                d = d.replace("testwww", "").replace("stgewww", "").replace("devlwww", "");
                if (d.indexOf(".fingerhut.") != -1) {
                    if ($.cookie("JSESSIONID") != null) {
                        $.cookie("JSESSIONID", $.cookie("JSESSIONID"), { path: "/", domain: d });
                    }
                    if ($.cookie("PIPELINE_SESSION_ID") != null) {
                        $.cookie("PIPELINE_SESSION_ID", $.cookie("PIPELINE_SESSION_ID"), { path: "/", domain: d });
                    }
                }

            },
            languageCode : ""
        },
        nonEmailAccount : function() {

            $.ajax({
                type: "POST",
                url: $("#nonEmailAccountForm").attr("action"),
                data: {
                    userName : $("#loginForm input[name=userName]").val(),
                    password : $("#loginForm input[name=password]").val(),
                    updatedUserName : $("#nonEmailAccountForm input[name=updatedUserName]").val()
                },
                dataType: "html",
                timeout: 15000,
                success: function(data) {
                    $("#nonEmailAccountContainer").html(data);
                    site.events.init.nonEmailAccount.init();
                    $(".js-closeLayer," + site.data.globalOverlaySelector).click(function(event) {
                        event.preventDefault();
                        lib.layer.remove("#genericLayer");
                        site.func.globalOverlay.remove();
                    });
                }
            });

        },
        obj : {
        }
    };
})($);

//Function used to change the UI images on mouseover
function chgImage(imgName, newImg) {
    if (document.images) {
        document[imgName].src = eval(newImg + ".src");
    }
}

//This function is simply a placeholder function for the setImage DHTML API call in order to update the image in the viewer.  A modified version of this function can be used to update the image in your production implementation by providing more logic leading up to the setImage call.
function changeImage(image,identifier) {	
	if(identifier == "lineItem") {		
	    s7zoom.setImage(S7ConfigClient.isRoot + image, true, null, null, null, null,identifier);
	}else {
	    s7zoom.setImage(S7ConfigClient.isRoot + image, true);
	}
}

// on body load
$(function() {

    site.events.init.addToCart();
    site.events.init.addToCartEnsemble();
    site.events.init.addToWishListEnsemble();
    site.events.init.openPersonalize();
    site.events.init.deleteAddress();
    site.events.init.omnitureCrossells();
    site.events.init.switchLanguage();
    site.events.init.nonEmailAccount.load();
    site.events.init.emailOptIn();

    /* input default text for header search & footer email signup */
    var defaultCatCode = "";
    if (document.CatalogQuickSearchForm != null) {
        defaultCatCode = document.CatalogQuickSearchForm.defaultCatalogCodeFieldValue != null ?
                document.CatalogQuickSearchForm.defaultCatalogCodeFieldValue.value : "";
    }
    defaultCatCode = defaultCatCode == "" ? "# cat\341logo" : defaultCatCode;

    lib.input.defaultText("#js-emailEntry", { defaultText : "Ingresa tu email" });
    lib.input.defaultText("#js-emailEntryBox", { defaultText : "Ingresa tu email" });
    lib.input.defaultText("#js-keyword", { defaultText : "Clave o # de art\355culo" });
    lib.input.defaultText("#js-searchKeyword", { defaultText : "Clave o # de art\355culo" });
    lib.input.defaultText("#js-catNo", { defaultText :  defaultCatCode });
    lib.input.defaultText("#js-itemNo", { defaultText :  "# de art\355culo" });
    lib.input.defaultText("#js-searchCatNo", { defaultText :  defaultCatCode });
    lib.input.defaultText("#js-searchItemNo", { defaultText :  "# de art\355culo" });

    /* call top navigation dropdowns */
    site.func.dropdownNavigation();

    /* call equalHeight function for bodyColumn classes */

    //site.func.newEqualHeight();


    // http://www.cjhubbard.com/code/disabling-copypaste-for-your-form-using-jquery/

    $(".js-noCopyPaste").keydown(function(event) {

        var forbiddenKeys = new Array("c", "x", "v");
        var keyCode = (event.keyCode) ? event.keyCode : event.which;
        var isCtrl;
        isCtrl = event.ctrlKey;
        if (isCtrl) {
            for (i = 0; i < forbiddenKeys.length; i++) {
                if (forbiddenKeys[i] == String.fromCharCode(keyCode).toLowerCase()) {
                    var title = $(this).attr("title");
                    $(this).parent().siblings(".pasteError").css("display", "block");
                    return false;
                }
            }
        }
    });
    
    $(".js-forceNumericOnly").keydown(function(event){
        var key = event.charCode || event.keyCode || 0;
        // allow backspace, tab, delete, arrows, numbers and keypad numbers ONLY
        return (
            key == 8 || 
            key == 9 ||
            key == 46 ||
            (key >= 37 && key <= 40) ||
            (key >= 48 && key <= 57) ||
            (key >= 96 && key <= 105));	
    });

});

function convertStringToNumber(stringVal) {
    var num1 = stringVal.toString().replace(/\$|\,/g, '');
    if (isNaN(num1)) {
        num1 = "0";
    }
    return parseFloat(num1);

}

/*************************
 Learn More
 *************************/
function proceedSwap() {
    if ($("#cartSide .row").size() <= 1) {
        $(".proceedCheckout").css("display", "none");
        $(".learnMore").css("display", "block");
    } else {
        $(".proceedCheckout").css("display", "block");
        $(".learnMore").css("display", "none");
    }
}


/*************************
 Footer Javascript
 *************************/

function callEmailSignup() {
    var formAction = $("#subscribeForm").attr("action");
    $("#emailSignUp").html("Ahorro...").load(formAction, {"userEmail":$("#subscribeForm input[@name=userEmail]").val()});
}

$(function() {
    $("#subscribeForm input[@name=userEmail]").keydown(function(event) {
        if (event.keyCode == 13) {
            callEmailSignup();
            return false;
        }
    });

    $(".js-emailSignup").click(function() {
        callEmailSignup();
    });
});

/******************************************** */
function callEmailSignupBox() {
    var formAction = $("#subscribeFormBox").attr("action");
    $("#emailSignUpBox").html("Ahorro...").load(formAction, {"userEmailBox":$("#subscribeFormBox input[@name=userEmailBox]").val()});
}

$(function() {
    $("#subscribeFormBox input[@name=userEmailBox]").keydown(function(event) {
        if (event.keyCode == 13) {
            callEmailSignupBox();
            return false;
        }
    });

    $(".js-emailSignupBox").click(function() {
        callEmailSignupBox();
    });
});

/**
 * If the function exists, execute it
 * @param func
 */
function doFunc(func) {
	if (func) {
		func();
	}
}
