// Pre-load the loading image for both uc and qv. preload_QV_UC_loading = new Image(); preload_QV_UC_loading.src = "http://www.dollartree.com/assets/images/uc_qv/ima-glo-loading.gif"; /* Persistent Cart (universal cart) Javascript Commands persistantCartCommands[0] = "showProduct" action persistantCartCommands[1] = "addProduct" action persistantCartCommands[2] = "addEnsemble" action persistantCartCommands[3] = "remove" action persistantCartCommands[4] = "addCatalogItems" action persistantCartCommands[5] = "addProductWishlist" action persistantCartCommands[6] = "addAllProductsWishlist" action */ var persistantCartCommands = new Array(9); persistantCartCommands[0] = "/checkout/universal_cart.jsp"; persistantCartCommands[1] = "/checkout/add_item_pc.cmd"; persistantCartCommands[2] = "/checkout/add_items_pc.cmd"; persistantCartCommands[3] = "/checkout/delete_item_in_cart.cmd"; persistantCartCommands[4] = "/checkout/add_catalog_order_item_pc.cmd"; persistantCartCommands[5] = "/user/add_wishlist_item_to_basket_pc.cmd"; persistantCartCommands[6] = "/user/add_all_wishlist_items_to_basket_pc.cmd"; persistantCartCommands[7] = "/user/instore_pickup_zip_json_pc.jsp"; persistantCartCommands[8] = "/checkout/add_gift_certificate_pc.cmd"; var requestURL = ""; var persistantCartContainerId = "#widget-ucart"; var persistantCartCloseButClass = ".widget-ucart-close-but"; var hideTimeOuts= new Array(); var ucHideTimeout = null; var isQuickView = false; //var geocoder = new GClientGeocoder(); var ucartLoadingHTML = '
' + '
' + '
' + '
'+ '
Loading...
' + '
' + '
' + '
' + '
'; /* Function(s) to Show the Basket Layer */ function showBasket(action, params) { showloading(); if(action == "show" || action == "showFromQuickview") requestURL = persistantCartCommands[0]; else if(action == "addProduct") requestURL = persistantCartCommands[1]; else if(action == "addEnsemble") requestURL = persistantCartCommands[2]; else if(action == "remove") requestURL = persistantCartCommands[3]; else if(action == "addCatalogItems") requestURL = persistantCartCommands[4]; else if(action == "addProductWishlist") requestURL = persistantCartCommands[5]; else if(action == "addAllProductsWishlist") requestURL = persistantCartCommands[6]; else if(action == "addGiftCertificate") requestURL = persistantCartCommands[8]; else { alert("missing action"); } requestURL = requestURL; params = "ts=" + timestamp() + "&action=" + action + "&" + params; $.ajax({ type: "POST", url: requestURL, data: params, dataType: "html", timeout: 1500000, success: function(data) { hideloading(); $(persistantCartContainerId).append(data); $(persistantCartContainerId).show(); var val = Number($("#grandTotalUpdater").val().substring(1)); if(val > 0) $("#widget-but-ucartcount").html("(" + $("#grandTotalUpdater").val() + ")"); else $("#widget-but-ucartcount").html(""); if(jQuery.browser.msie && jQuery.browser.version < 7) iframeFix.add("iFrameWrapUC", persistantCartContainerId, "outer_wrap"); return true; }, error: function() { hideloading(); return false; } }); }; function showloading() { $(persistantCartContainerId).remove(); //load, position, show new cart $("#outer_wrap").append(ucartLoadingHTML); positionPersistantCart(); $(persistantCartContainerId).show(); }; function hideloading() { $(persistantCartContainerId + " *").remove(); $(persistantCartContainerId).html(""); }; function isZip(s) { // Check for correct zip code reZip = new RegExp(/(^\d{5}$)|(^\d{5}-\d{4}$)/); if (!reZip.test(s)) { // alert("Zip Code Is Not Valid"); return false; } return true; } function isNumber(s) { // Check for correct zip code reNumber = new RegExp(/(^\d{1}$)|(^\d{2})/); if (!reNumber.test(s)) { // alert("Zip Code Is Not Valid"); return false; } return true; } function validateQuantityAndZip() { var cases = $("input[name=quantity]").val(); var zip = $("input[name=inStorePickupZipCode]").val(); var result = false; result = true; //result=true added to force server validation return result; } function addToCart() { if(validateQuantityAndZip()) { params = "productName=" + $("input[name=productName]").val() + "&productId=" + $("input[name=productId]").val() + "&categoryId=" + $("input[name=categoryId]").val() + "&parentCategoryId=" + $("input[name=parentCategoryId]").val() + "&subCategoryId=" + $("input[name=subCategoryId]").val() + "&quantity=" + $("input[name=quantity]").val() + "&productVariantId=" + $("input[name=productVariantId]").val() + "&inStorePickupZipCode=" + $("input[name=inStorePickupZipCode]").val() + "&availableQuantity=" + $("input[name=availableQuantity]").val() + "&casePack=" + $("input[name=casePack]").val() + "&inStorePreferredStore=" + $("input[name=inStorePreferredStore]").val() + "&numOfUnits=" + $("select[name=numOfUnits]").val() + "&upgradeToCase=" + $("input[name=upgradeToCase]").val(); //see if this is an update. if($("input[name=itemGUID]").val().length > 0) params = params + "&itemGUID=" + $("input[name=itemGUID]").val() + "&isUpdate=1"; setUserZipCodePCAndForward('addProduct', params); } }; function addGCToCart() { if (validateQuantityAndZip()) { var gcAmount = $("input[name=amount]").val(); if (gcAmount.indexOf(".") == -1) gcAmount += ".00"; params = "productName=" + $("input[name=styleName]").val() + "&productId=" + $("input[name=productId]").val() + "&productVariantId=" + $("input[name=productVariantId]").val() + "&gcStyle=" + $("#gcStyle").val() + "&amount=" + gcAmount + "&quantity=" + $("input[name=quantity]").val() + "&inStorePickupZipCode=" + $("input[name=inStorePickupZipCode]").val(); //see if this is an update. if( $("input[name=itemGUID]").val().length > 0 ) { params = params + "&itemGUID=" + $("input[name=itemGUID]").val() + "&isUpdate=1"; } setUserZipCodePCAndForward('addGiftCertificate',params); } }; function wishListAddToCart(params) { showBasket('addProductWishlist',params); }; function wishListAddAllToCart(params) { showBasket('addAllProductsWishlist',params); }; function addCatalogOrderItemsToCart() { if (validateQuantityAndZip()) { params = "productId=" + $("input[name=productId]").val() + "&itemNumber=" + $("input[name=itemNumber]").val() + "&productName=" + $("input[name=productName]").val() + "&productVariantId=" + $("input[name=productVariantId]").val() + "&quantity=" + $("input[name=quantity]").val() + "&inStorePickupZipCode=" + $("input[name=inStorePickupZipCode]").val() + "&inStorePreferredStore=" + $("input[name=inStorePreferredStore]").val() + "&numOfUnits=" + $("select[name=numOfUnits]").val(); setUserZipCodePCAndForward('addCatalogItems',params); } }; function addEnsembleToCart(type) { if(validateQuantityAndZip()) { params = "productName=" + $("input[name=productName]").val() + "&productId=" + $("input[name=productId]").val() + "&ensembleId=" + $("input[name=ensembleId]").val() + "&categoryId=" + $("input[name=categoryId]").val() + "&parentCategoryId=" + $("input[name=parentCategoryId]").val() + "&inStorePickupZipCode=" + $("input[name=inStorePickupZipCode]").val() + "&inStorePreferredStore=" + $("input[name=inStorePreferredStore]").val(); // iterate through products in the ensemble for variant id $(".the-variant-ids").each(function() { params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); // iterate through the products for the casepack $(".the-variant-casePack").each(function() { params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); // iterate through the products for available qty $(".the-variant-availQty").each(function() { params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); // iterate through the products for determining if the user chose to upgrade to a case $(".the-variant-upgrade").each(function() { params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); // iterate through the products for num of units $(".the-variant-numOfUnits").each(function() { params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); // iterate through products for qty $(".the-variant-qtys").each(function() { if(type == 'all') { $(this).val("1"); params = params + "&" + $(this).attr("name") + "=1"; } else params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); params = params + "&productCount=" + $(".the-variant-ids").length; setUserZipCodePCAndForward('addEnsemble', params); } }; function setUserZipCodePC(zipCode) { lat = 0; lng = 0; var params = "ts=" + timestamp() + "&action=updateUserZipCode" + "&storesListZipCode=" + zipCode + "&storesListLatitude=" + lat + "&storesListLongitude=" + lng; var requestURL = persistantCartCommands[7]; $.ajax({ type: "GET", url: requestURL, data: params, dataType: "json", timeout: 1500000, success: function(data) { return true; }, error: function() { alert('There was an error trying to save your zip code.'); return false; } }); } /* This function is designed to be called from product, ensemble, and quickview only! On those pages the zip code is stored in a field named inStorePickupZipCode. */ function setUserZipCodePCAndForward(next, paramsToPass) { var zipCode = $("input[name=inStorePickupZipCode]").val(); var cases = $("input[name=quantity]").val(); var numOfUnits = $("select[name=numOfUnits]").val(); var lat = ""; var lng = ""; // we don't know what the coords are so go to google to grab them. var isStateRestricted =$("input[name=isStateRestricted]").val(); if(isStateRestricted == "true") alert("Item not available in state due to state restrictions."); else { if(zipCode=='') { errorAppend("#error-zip","Please enter your ZIP code to ensure that this item is available in your area."); if(cases == '' && numOfUnits <= 0) errorAppend("#error-quantity", "Please enter a quantity between 1 and 999."); return false; } else { // Call the set zip code command. lat = 0; lng = 0; var params = "ts=" + timestamp() + "&action=updateUserZipCode" + "&storesListZipCode=" + zipCode + "&storesListLatitude=" + lat + "&storesListLongitude=" + lng; var requestURL = persistantCartCommands[7]; $.ajax({ type: "GET", url: requestURL, data: params, dataType: "json", timeout: 150000, success: function(data) { showBasket(next, paramsToPass); return true; }, error: function() { alert('There was an error trying to save your zip code.'); return false; } }); } } } function updateHeader(amt) { if(amt == 1) { $("#widget-ucart-item-count").text(amt + " item(s)"); } else { $("#widget-ucart-item-count").text(amt + " item(s)");} }; function errorAppend(area,msg) { $(area).html(msg.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/'/g, "'")); $(area).show(); }; function resetErrorFields() { $(".glo-tex-error").hide(); $(".glo-tex-error").html(""); }; function messageAppend(area,msg) { $(area).html(msg); $(area).show(); }; function resetMessageFields() { $(".glo-tex-info").hide(); }; function clearAllTimeouts() { /* for(x = 0; x < hideTimeOuts.length; x++) { clearTimeout(hideTimeOuts[x]); } */ if (ucHideTimeout != null) clearTimeout(ucHideTimeout); ucHideTimeout = setTimeout( hideBasket, 12000); }; function timestamp() { return new Date().getTime(); } //Edit this function if need to do something special on basket close. function hideBasket() { $(persistantCartContainerId).hide(); $(persistantCartContainerId).remove(); shoppingBagBut = $("#widget-header-active-link").eq(0); $(shoppingBagBut).attr("id",""); $(shoppingBagBut).mouseout(); if (jQuery.browser.msie && jQuery.browser.version < 7) iframeFix.remove("iFrameWrapUC"); if(isQuickView) refreshInputs(); }; //edit this function to update the setup function setupPersistantCartButtons() { // draw focus near this window.location = "#"; $(persistantCartCloseButClass).unbind("click").click(function() { hideBasket(); }); $(persistantCartCloseButClass).attr("href","javascript:void(0)"); clearAllTimeouts(); }; var ucartItemHeights = new Array(); var ucartContentHeight = 0; function setupSlider() { //size the slider //var contentHeight = $(".glo-ucart-slider-item").size() * $(".glo-ucart-slider-item").eq(0).height(); var h = 0; $(".glo-ucart-slider-item").each(function() { h = $(this).height(); //console.log(this); ucartItemHeights.push(h); ucartContentHeight = ucartContentHeight + h; //console.log(contentHeight); }); //$("#glo-ucart-slider-content").height(contentHeight); $.widgetSlider({ viewport: "#glo-ucart-slider-viewport", content: "#glo-ucart-slider-content", next: "#widget-slider-next", prev: "#widget-slider-prev", item: ".glo-ucart-slider-item", direction: "vertical", showAmount: 3 }); }; //edit this function to position cart. function positionPersistantCart() { return; //dynamic positioning not needed newLeft = 10 + ($("body").width() / 2) + ( $("#mainDiv").width() / 2 ) - $(persistantCartContainerId).width(); $(persistantCartContainerId).css("left", newLeft+"px"); $(persistantCartContainerId).css("top", "30px"); }; /* ---------------------------------------- */ /* QuickView Javascript */ /* ---------------------------------------- */ //quickViewcommands[0] = "show" action //quickViewcommands[1] = "add product" action var quickViewCommands = new Array(2); quickViewCommands[0] = "/catalog/quickview.jsp"; quickViewCommands[1] = "/catalog/qv_add_item_pc.cmd"; quickViewCommands[2] = "/checkout/add_item.cmd"; var quickViewContainerId = "#widget-quickview"; var quickViewCloseButtonsClass = ".widget-quickview-but-close"; var quickViewCloseButtonsAdd = ".widget-quickview-but-add"; var quickviewContainerHTML = '
'; var quickviewLoadingHTML = '
' + '
' + '
'+ '
Loading...
' + '
' + '
' + '
'; /* Function(s) for QuickView */ function loadQuickView(params,selector) { isQuickView = true; closeQuickView(); addQuickView(selector); ajaxQuickView(quickViewCommands[0],params); // if this is an edit, want to have this appear above the cart. if ( params.indexOf("itemGUID") != -1 ) { $(quickViewContainerId).css("z-index", "701"); } }; function addQuickView(selector) { $(selector).append(quickviewContainerHTML); $(quickViewContainerId).append(quickviewLoadingHTML); adjustQuickviewLocation(); $(quickViewContainerId).show(); }; function closeQuickView() { $(quickViewContainerId).remove(); if (jQuery.browser.msie && jQuery.browser.version < 7) iframeFix.remove("iFrameWrapQV"); }; function ajaxQuickView(page,params) { params = "rId=" + new Date().getTime() + "&" + params; $.ajax({ type: "POST", url: page, data: params, dataType: "html", success: function(msg) { $(quickViewContainerId +" *").remove(); $(quickViewContainerId).html(""); $(quickViewContainerId).append(msg); adjustQuickviewLocation(); if (jQuery.browser.msie && jQuery.browser.version < 7) iframeFix.add("iFrameWrapQV", quickViewContainerId, "body"); } }); }; function nonAjaxAddItem(page,params) { window.location = page + "?" + params; }; function addProductFromQuickView(params) { var bypassUC = false; params = params + "&productName=" + $(quickViewContainerId + " input[name=productName]").val() + "&productVariantId=" + $(quickViewContainerId + " input[name=productVariantId2]").val() + "&quantity=" +$(quickViewContainerId + " input[name=quantity]").val() + "&inStorePickupZipCode=" + $(quickViewContainerId + " input[name=inStorePickupZipCode]").val() + "&availableQuantity=" + $(quickViewContainerId + " input[name=availableQuantity]").val() + "&casePack=" + $(quickViewContainerId + " input[name=casePack]").val() + "&inStorePreferredStore=" + $(quickViewContainerId + " input[name=inStorePreferredStore]").val() + "&numOfUnits=" + $(quickViewContainerId + " select[name=numOfUnits]").val(); var isStateRestricted =$(quickViewContainerId + " input[name=isStateRestricted]").val(); if( isStateRestricted == "true") { alert("Item not available in state due to state restrictions."); } else { if ( $(quickViewContainerId + " input[name=itemGUID]").size() > 0 ) { params = params + "&itemGUID=" + $(quickViewContainerId + " input[name=itemGUID]").val(); } if ( $(quickViewContainerId + " input[name=onBasketPage]").size() > 0 ) { params = params + "&onBasketPage=" + $(quickViewContainerId + " input[name=onBasketPage]").val(); } $(quickViewContainerId + " select").each(function() { params = params + "&" + $(this).attr("name") + "=" + $(this).val(); }); //setUserZipCodePC( $("input[name=inStorePickupZipCode]").val()); $(quickViewContainerId + " *").remove(); $(quickViewContainerId).append(quickviewLoadingHTML); if (bypassUC) { nonAjaxAddItem(quickViewCommands[2],params); } else { ajaxQuickView(quickViewCommands[1],params); } } }; var qvInterval; function setupQuickViewButtons() { $(quickViewCloseButtonsClass).unbind("click").click(function() { closeQuickView(); }); $(quickViewCloseButtonsAdd).unbind("click").click(function() { params = "productId=" + $(this).attr("id").split("-")[1]; addProductFromQuickView(params); }); $(quickViewCloseButtonsClass).add( $(quickViewCloseButtonsAdd) ).attr("href","javascript:void(0)"); }; // Edit this per site to adjust location function adjustQuickviewLocation() { var bWindowOffsets = getScrollXY(); var bWindowViewport = getViewportSize(); var qvTop = ((bWindowViewport[1] / 2) - ($(quickViewContainerId).height() / 2)) + bWindowOffsets[1]; qvTop = (qvTop < 0) ? 100 : qvTop; $(quickViewContainerId).css("top",qvTop+"px"); }; /* ---------------------- */ // Helper Function(s) function getScrollXY() { var scrOfX = 0, scrOfY = 0; if( typeof( window.pageYOffset ) == 'number' ) { //Netscape compliant scrOfY = window.pageYOffset; scrOfX = window.pageXOffset; } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) { //DOM compliant scrOfY = document.body.scrollTop; scrOfX = document.body.scrollLeft; } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) { //IE6 standards compliant mode scrOfY = document.documentElement.scrollTop; scrOfX = document.documentElement.scrollLeft; } return [ scrOfX, scrOfY ]; } function getViewportSize() { var vpW = 0, vpH = 0; if (typeof window.innerWidth != 'undefined') { vpW = window.innerWidth; vpH = window.innerHeight; } else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) { vpW = document.documentElement.clientWidth; vpH = document.documentElement.clientHeight; } else { vpW = document.getElementsByTagName('body')[0].clientWidth; vpH = document.getElementsByTagName('body')[0].clientHeight; } return [ vpW, vpH ]; }; var iframeFix = function($) { return { add : function(id ,selector, parentId) { if (parentId != "body") parentId = "#" + parentId; iframeFix.remove(id); iframeHTML = '
'; $(parentId).append(iframeHTML); $("#" + id).css("position", "absolute"); $("#" + id).css("top", $(selector).css("top")); $("#" + id).css("left", $(selector).css("left")); $("#" + id).css("right", $(selector).css("right")); $("#" + id).css("margin-top", $(selector).css("margin-top")); $("#" + id).css("margin-right", $(selector).css("margin-right")); $("#" + id).css("margin-bottom", $(selector).css("margin-bottom")); $("#" + id).css("margin-left", $(selector).css("margin-left")); $("#" + id).css("height", $(selector).height() + "px" ); $("#" + id).css("width", $(selector).width() + "px" ); $("#" + id).css("z-index", $(selector).css("z-index") - 1); }, remove : function(id) { $("#" + id).remove(); } }; }($); // ------------------------------------------------ /* Quickview setup */ function setup_quickview() { var qTimer; var imgHTML = 'QUICK VIEW'; $(".widget-app-quickview").each(function() { $(this).parent().parent().css("position","relative"); $(this).mouseover(function() { if( typeof qTimer != undefined ) { clearTimeout(qTimer); $("#widget-quickview-but").parent().remove(); } $(this).parent().parent().append(imgHTML); $("#widget-quickview-but").css("position","absolute"); $("#widget-quickview-but").css("left", "10px"); qTop = $(".widget-app-quickview", $("#widget-quickview-but").parent().parent()).height() - $("#widget-quickview-but").height() - 2 - 10; $("#widget-quickview-but").css("top", qTop+"px"); $("#widget-quickview-but").mouseover(function() { if(typeof qTimer != undefined) { clearTimeout(qTimer); } }); $("#widget-quickview-but").parent().click(function(ev) { type = $(this).parent().attr("id").split("-")[0]; id = $(this).parent().attr("id").split("-")[1]; if( type == "p" ) { params = "productId="+id;} else { params = "ensembleId="+id; } loadQuickView(params, $("body")); }); $("#widget-quickview-but").parent().attr("href","javascript:void(0);"); }); $(this).mouseout(function() { qTimer = setTimeout(function() { $("#widget-quickview-but").parent().remove(); }, 100); }); }); }; function setup_quickview_basket() { var qTimer; var imgHTML = 'QUICK VIEW'; $(".widget-app-quickview-basket").each(function() { $(this).parent().parent().css("position","relative"); $(this).mouseover(function() { if( typeof qTimer != undefined ) { clearTimeout(qTimer); $("#widget-quickview-but").parent().remove(); } $(this).parent().parent().append(imgHTML); $("#widget-quickview-but").css("position","absolute"); $("#widget-quickview-but").css("left", "10px"); qTop = $(".widget-app-quickview-basket", $("#widget-quickview-but").parent().parent()).height() - $("#widget-quickview-but").height() - 2 - 10; $("#widget-quickview-but").css("top", qTop+"px"); $("#widget-quickview-but").mouseover(function() { if(typeof qTimer != undefined) { clearTimeout(qTimer); } }); $("#widget-quickview-but").parent().click(function(ev) { params = $("span", $(this).parent()).text(); loadQuickView(params, $("body")); }); $("#widget-quickview-but").parent().attr("href","javascript:void(0);"); }); $(this).mouseout(function() { qTimer = setTimeout(function() { $("#widget-quickview-but").parent().remove(); }, 100); }); }); }; $(function() { setup_quickview(); setup_quickview_basket(); }); /* -------------------------- */