var hPriceWord = '300';
var hPriceMax = '9999999';
var hPriceMin = '600';
var hExcludeLength = '1';
var hExcludeChars = '$,#,&';
var sPriceWord = '300';
var sPriceMax = '9999999';
var sPriceMin = '600';
var sExcludeLength = '1';
var sExcludeChars = '';
var monogramInitial = '607665,562593,607652,562580,634340,634353,640062'.split(",");
// the var: uiIsClearForImageUpdate is used to prevent widget/img js issues
// when the onblur event of messageText is fired by the clicking to move to a different zone.
// this causes a call to update the image when the html of the image area does not exist
// function goToZone in persistent_cart.jsp sets this to false
// function updateImage in personalization_message.jsp checks this before updating an image
window.uiIsClearForImageUpdate = true;
var monthNames=new Array(12);
monthNames["January"] = "0";
monthNames["February"] = "1";
monthNames["March"] = "2";
monthNames["April"] = "3";
monthNames["May"] = "4";
monthNames["June"] = "5";
monthNames["July"] = "6";
monthNames["August"] = "7";
monthNames["September"] = "8";
monthNames["October"] = "9";
monthNames["November"] = "10";
monthNames["December"] = "11";
var persistentCartCommands = new Array(9);
persistentCartCommands[0] = '/checkout/universal_cart.jsp';
persistentCartCommands[1] = '/checkout/add_item_pc.cmd';
persistentCartCommands[2] = '/checkout/add_items_pc.cmd';
persistentCartCommands[3] = '/checkout/delete_item_in_cart.cmd';
persistentCartCommands[4] = '/checkout/add_catalog_order_item_pc.cmd';
persistentCartCommands[5] = '/user/add_wishlist_item_to_basket_pc.cmd';
persistentCartCommands[6] = '/user/add_all_wishlist_items_to_basket_pc.cmd';
persistentCartCommands[7] = '/user/instore_pickup_zip_json_pc.jsp';
persistentCartCommands[8] = '/checkout/save_personalization_pc.cmd';
persistentCartCommands[9] = '/checkout/save_photo_pc.cmd';
var persistentCartContainerId = "#widget-ucart";
var persistentCartCloseButClass = ".widget-ucart-close-but";
var hideTimeOuts= new Array();
var zoneCodeArray = new Array();
var ucartLoadingHTML = '
';
var ucartSimpleHTML = '';
var persistentCartIsShowing = false;
var submitAddToCartForm = true;
var saveZoneInfo = false;
var savePhotoInfo = false;
/* Function(s) to Show the Basket Layer */
function showBasket(action,params,refreshPage,refreshDelayTime) {
if( (action == "show") || (action == "showFromQuickview") )
{ showloading(ucartLoadingHTML); requestURL = persistentCartCommands[0]; }
else if(action == "addProduct")
{ showloading(ucartSimpleHTML); requestURL = persistentCartCommands[1];}
else if(action == "editProduct")
{ showloading(ucartSimpleHTML); requestURL = persistentCartCommands[1];}
else if(action == "addEnsemble")
{ showloading(ucartSimpleHTML); requestURL = persistentCartCommands[2];}
else if(action == "remove")
{ showloading(ucartLoadingHTML); requestURL = persistentCartCommands[3];}
else if(action == "addCatalogItems")
{ showloading(ucartSimpleHTML); requestURL = persistentCartCommands[4];}
else if(action == "addProductWishlist")
{ showloading(ucartSimpleHTML); requestURL = persistentCartCommands[5];}
else if(action == "addAllProductsWishlist")
{ showloading(ucartSimpleHTML); requestURL = persistentCartCommands[6];}
else
{ alert("missing action"); }
requestURL = requestURL;
params = "ts=" + timestamp() + "&action=" + action + "&" + params;
$.ajax({
type: "POST",
url: requestURL,
data: params,
dataType: "html",
timeout: 15000,
success: function(data) {
hideloading();
$(persistentCartContainerId).append(data);
$(persistentCartContainerId).show();
if (refreshPage != undefined && refreshPage) {
setTimeout( function() { location.reload(true); }, (refreshDelayTime != undefined) ? refreshDelayTime : 0);
}
persistentCartIsShowing = true;
submitAddToCartForm = true;
return true;
},
error: function() {
hideloading();
return false;
}
});
}
function showNextStepsLayer(itemQuantity) {
var success = validateForm(".zoneBody");
if (success == false){
return false;
}else{
lib.layer.create("#whatToDoNextLayer", {
defaultContent : "",
url : '/catalog/includes/personalization_next_steps.jsp' + "?itemQuantity=" + itemQuantity,
keepCentered : true
});
return true;
}
}
function showItemInCartLayer() {
lib.layer.create("#itemInCartLayer", {
defaultContent : "",
keepCentered : true
});
// add modal to prevent clicking on other areas.
$('#itemInCartLayer').jqm({ajax: '/catalog/includes/personalization_warning.jsp', modal:true});
$('#itemInCartLayer').jqmShow();
return true;
}
function showDesignWarningLayer(messageType) {
lib.layer.create("#designWarningLayer", {
defaultContent : "",
keepCentered : true
});
// add modal to prevent clicking on other areas.
$('#designWarningLayer').jqm({ajax: '/catalog/includes/design_warning.jsp?messageType=' + messageType, modal:true});
$('#designWarningLayer').jqmShow();
return false;
}
function showPhotoUploadWarningLayer(goToUrl) {
lib.layer.create("#photoUploadWarningLayer", {
defaultContent : "",
keepCentered : true
});
// add modal to prevent clicking on other areas.
$('#photoUploadWarningLayer').jqm({ajax: '/catalog/includes/photo_upload_warning.jsp?goToUrl=' + goToUrl, modal:true});
$('#photoUploadWarningLayer').jqmShow();
return false;
}
function hidePhotoUploadWarningLayer(){
//var myClose=function(hash) { hash.w.fadeOut('2000',function(){ hash.o.remove(); }); };
//$('#photoUploadProgressLayer').jqm({onHide:myClose});
$('#photoUploadWarningLayer').jqmHide();
lib.layer.remove("#photoUploadProgressLayer");
}
function showPhotoUploadProgress() {
lib.layer.create("#photoUploadProgressLayer", {
defaultContent : "",
keepCentered : true
});
// add modal to prevent clicking on other areas.
$('#photoUploadProgressLayer').jqm({ajax: '/catalog/includes/photo_upload_progress.jsp', modal:true});
$('#photoUploadProgressLayer').jqmShow();
return true;
}
function hidePhotoUploadProgress(){
var myClose=function(hash) { hash.w.fadeOut('2000',function(){ hash.o.remove(); }); };
$('#photoUploadProgressLayer').jqm({onHide:myClose});
$('#photoUploadProgressLayer').jqmHide();
//lib.layer.remove("#photoUploadProgressLayer");
}
function validateNextSteps(action) {
if (!$("input[@name=nextStep]:checked").val()){
errorAppend("#error-nextStep","Please select an option below:
");
}else{
//savePersonalization('.zoneBody',action, '', true,1000);
savePersonalization('.zoneBody',action);
lib.layer.remove("#whatToDoNextLayer");
}
}
function savePersonalization(prefix, nextAction, changedElement, refreshPage, refreshDelayTime) {
$('.links-search-container .cart-search-keyword-container').removeClass('bag-open');
var scope = $(prefix);
var isPhotoUploadAvaiable;
params = "productName=" + $("input[@name=productName]", scope).val() +
"&occasionCode=" + $("select[@name=occasionCode]", scope).val() +
"&productId=" + $("input[@name=productId]", scope).val() +
"&zoneId=" + $("input[@name=zoneId]", scope).val() +
"&nextZoneId=" + $("input[@name=nextZoneId]", scope).val() +
"&backToZoneId=" + $("input[@name=fromZoneId]", scope).val() +
"&messageSku=" + $("select[@name=messageSku]", scope).val() +
"&myOwnMessageCost=" + $("input[@name=myOwnMessageCost]", scope).val() +
"&isPersPriceExpanded=" + $("input[@name=isPersPriceExpanded]", scope).val();
var messageTxt = "";
$(".messageText").each(function() {
params = params + "&" + $(this).attr("name") + "=" + encodeURIComponent($(this).val());
messageTxt = messageTxt + " " + $(this).val();
});
if( $("input[@name=defaultTextareaMessage]", scope).val() != undefined )
params = params + "&defaultTextareaMessage=" + encodeURIComponent($("input[@name=defaultTextareaMessage]", scope).val());
if (prefix != undefined)
params = params + "&prefix=" + prefix;
if (changedElement != undefined)
params = params + "&changedElement=" + changedElement;
if (nextAction != undefined)
params = params + "&nextAction=" + nextAction;
if ($("input[@name=nextStep]:checked").val() != undefined)
params = params + "&nextStep=" + $("input[@name=nextStep]:checked").val();
if ($("select[@name=font]", scope).val() != undefined)
params = params + "&font=" + $("select[@name=font]", scope).val();
if ($("input[@name=color]", scope).val() != undefined)
params = params + "&color=" + $("input[@name=color]", scope).val();
if ($("input[@name=fontOption]", scope).val() != undefined)
params = params + "&fontOption=" + $("input[@name=fontOption]", scope).val();
if ($("input[@name=fontValueGroup]", scope).val() != undefined)
params = params + "&fontValueGroup=" + $("input[@name=fontValueGroup]", scope).val();
if ($("input[@name=colorOption]", scope).val() != undefined)
params = params + "&colorOption=" + $("input[@name=colorOption]", scope).val();
if ($("input[@name=colorValueGroup]", scope).val() != undefined)
params = params + "&colorValueGroup=" + $("input[@name=colorValueGroup]", scope).val();
if( $("input[@name=itemGUID]", scope).val() != undefined )
params = params + "&itemGUID=" + $("input[@name=itemGUID]", scope).val();
if( $("input[@name=editMainItem]", scope).val() != undefined )
params = params + "&editMainItem=" + $("input[@name=editMainItem]", scope).val();
if( $("input[@name=popularMessageSku]", scope).val() != undefined )
params = params + "&popularMessageSku=" + $("input[@name=popularMessageSku]", scope).val();
if ($("input[@name=isPhotoUploadAvailable]", scope).val() != undefined ) {
isPhotoUploadAvaiable = $("input[@name=isPhotoUploadAvailable]", scope).val();
params = params + "&isPhotoUploadAvailable=" + isPhotoUploadAvaiable;
}
if ($('input:checkbox[name=notDesignCheck]:checked', scope).val() != undefined ) {
params = params + "¬DesignCheck=" + $("input:checkbox[@name=notDesignCheck]:checked", scope).val();
}
if ($("select[@name=designCat1]", scope).val() != undefined ) {
params = params + "&designCat1=" + $("select[@name=designCat1]", scope).val();
}
if ($("select[@name=designCat2]", scope).val() != undefined ) {
params = params + "&designCat2=" + $("select[@name=designCat2]", scope).val();
}
if ($("select[@name=designCat3]", scope).val() != undefined ) {
params = params + "&designCat3=" + $("select[@name=designCat3]", scope).val();
}
if ($("input[@name=designSku]", scope).val() != undefined ) {
params = params + "&designSku=" + $("input[@name=designSku]", scope).val();
}
if ($('input[name=designLocation]:checked', scope).val() != undefined ) {
params = params + "&designLocation=" + $("input[@name=designLocation]:checked", scope).val();
}
params = "ts=" + timestamp() + "&action=addProduct&" + params;
//Validate the form only in case of the following
if (nextAction == "addToBag" || nextAction == "goToNextZone" || nextAction == "goToNextItem"
|| nextAction == "updateZone" || nextAction == "switchZone" || (nextAction == "saveInfo" && $("input[@name=itemGUID]", scope).val() != "") ){
var success = validateForm(prefix);
if (success == false){
return false;
}else{
if ($("select[@name=messageSku]", scope).val() != ""){
s.eVar17 = messageTxt;
}
}
}
var dataType = "html";
if (nextAction == "updateCost" || nextAction == "updateImage" || nextAction == "updateCostAndImage" ||
nextAction == "selectDesignLoc" || nextAction == "selectDesignSku" || nextAction == "confirmDesignLoc"){
dataType = "json";
}
showloading(ucartSimpleHTML);
$.ajax({
type: "POST",
url: persistentCartCommands[8],
data: params,
dataType: dataType,
timeout: 15000,
success: function(data) {
hideloading();
if (nextAction == "addToBag"){
//line below was needed for entry of multi-step item with single ZONE
// in order for mini-cart to show
showloading(ucartSimpleHTML);
addToBag(data, refreshPage, refreshDelayTime);
saveZoneInfo = false;
savePhotoInfo = false;
setTimeout(function() {
$("#productTabs").tabs('select', 0);
}, 1000);
}else if (nextAction == "goToNextZone"){
goToZone(data, isPhotoUploadAvaiable);
}else if (nextAction == "goToNextItem"){
//lib.layer.remove("#whatToDoNextLayer");
goToNextItem(data, isPhotoUploadAvaiable);
}else if (nextAction == "updateCost"){
updateProductCost(data);
}else if (nextAction == "updateImage"){
updateProductImage(data);
}else if (nextAction == "updateCostAndImage"){
updateProductCost(data);
updateProductImage(data);
updateMessageArea(data.messageUrl);
}else if (nextAction == "saveInfo"){
//Do nothing. This would be the case of switching b/n product detail tab
return true;
}else if (nextAction == "switchZone"){
//Do nothing. This would be the case of switching zones
goToZone(data, isPhotoUploadAvaiable);
}else if (nextAction == "updateZone"){
window.location = '/checkout/basket.jsp';
}else if (nextAction == "selectDesignSku"){
updateSelectedDesignSku(data);
}else if (nextAction == "selectDesignLoc"){
checkSelectedLocation(data);
}else if (nextAction == "confirmDesignLoc"){
confirmDesignLoc(data);
}
},
error: function() {
hideloading();
return false;
}
});
}
function savePhotoUpload(prefix, nextAction, showProgress, changedElement, refreshPage, refreshDelayTime) {
if(showProgress ){
showPhotoUploadProgress();
}
//$('.links-search-container .cart-search-keyword-container').removeClass('bag-open');
var scope = $(prefix);
params = "productName=" + $("input[@name=productName]", scope).val() +
"&productId=" + $("input[@name=productId]", scope).val() +
"&uploadImageName=" + $("input[@name=uploadImageName]", scope).val() +
"&resolutionMessage=" + encodeURIComponent($("input[@name=resolutionMessage]", scope).val()) +
"&resolutionAcceptable=" + $("input[@name=resolutionAcceptable]", scope).val() +
"&uniqueFileName=" + $("input[@name=uniqueFileName]", scope).val();
if (prefix != undefined)
params = params + "&prefix=" + prefix;
if (changedElement != undefined)
params = params + "&changedElement=" + changedElement;
if (nextAction != undefined)
params = params + "&nextAction=" + nextAction;
if( $("input[@name=itemGUID]", scope).val() != undefined )
params = params + "&itemGUID=" + $("input[@name=itemGUID]", scope).val();
params = "ts=" + timestamp() + "&action=addProduct&" + params;
//Validate the form only in case of the following
if (nextAction == "personalize" || (nextAction == "saveInfo" && $("input[@name=itemGUID]", scope).val() != "") ){
var success = validatePhotoUploadForm(prefix);
if (success == false){
savePhotoInfo = true;
saveZoneInfo = false;
return false;
}
}
var dataType = "html";
$.ajax({
type: "POST",
url: persistentCartCommands[9],
data: params,
dataType: dataType,
timeout: 15000,
success: function(data) {
// hideloading();
if (nextAction == "personalize"){
setTimeout(function() {
if(showProgress){
hidePhotoUploadProgress();
}
$("#productTabs").tabs({ selected: 2,cache: false,ajaxOptions: { cache : false }});
}, 500);
}else if (nextAction == "edit"){
window.location = '/checkout/basket.jsp';
}else if (nextAction == "saveInfo"){
//Do nothing. This would be the case of switching b/n tabs
return true;
}else if (nextAction == "addToBag"){
if(showProgress){
hidePhotoUploadProgress();
}
showloading(ucartSimpleHTML);
addToBag(data, refreshPage, refreshDelayTime);
savePhotoInfo = false;
setTimeout(function() {
$("#productTabs").tabs('select', 0);
}, 1000);
}
},
error: function() {
hidePhotoUploadProgress();
return false;
}
});
}
function validatePhotoUploadForm(prefix){
var scope = $(prefix);
var success = true;
$("#error-photoUpload").html("");
if ($("input[@name=photoUploadMandatory]", scope).val() == "Y" && $("input[@name=uploadImageName]", scope).val() == ""){
$("#error-photoUpload").html("Please upload photo before continuing
");
success = false;
}
return success;
}
function validateForm(prefix){
$(".common-error").each(function() {
$(".common-error").html("");
});
var scope = $(prefix);
var success = true;
if ($("select[@name=occasionCode]", scope).val() == ""){
$("#error-occasionCode").html("Please select an occasion
");
success = false;
}else{
if ($("input[@name=isDesignAvailable]", scope).val() == "Y"){
var $radios = $('input:radio[name=designLocation]');
if (($("input[@name=designSku]", scope).val() == "" || ($radios.is(':checked') === false)) && ($("select[@name=designCat1]").val() != "noDesign") && (!$("div.design-body").is(":empty"))){
$("#error-generic").html("You have not completed your design selection. Please select and place a design or select 'No Thanks' in order to continue.
");
success = false;
}
}
if ($("select[@name=messageSku]", scope).val() != ""){
var messageSku = $("select[@name=messageSku]", scope).val();
if ( messageSku == '194071' || messageSku == '219396'){
if ($.trim($("textarea[@name=myOwnMessage]", scope).val()) == "" || $('#defaultTextareaMessage').val() == 'Enter your message here.'){
//$("#error-myOwnMessage").html("Please enter a personal message
");
$("#error-generic").html("You have not entered a message. Please enter your message in the fields provided or choose the 'Do Not Personalize this Area' option from the Personal Message drop down menu.
");
success = false;
}
}else{
var showGenericMessage = false;
var noMessageEntered = true;
var noMessagePresent = true;
$(".messageText").each(function() {
var label = "#" + $(this).attr("name") + "_label";
if ($.trim($(this).val()) != ""){
noMessageEntered = false;
noMessagePresent = false;
var value = $.trim($(this).val());
if (validationTypes){
var validationType = validationTypes[$(this).attr("name")];
if (validationType == 'DATE'){
if (!isValidDate(value)){
$("#error-" + $(this).attr("name")).html("Please enter a valid date.
Valid formats - 10/11/03, 3/3/03, 10/11/2003, 3/3/2003,
10-11-03, 3-3-03, 10-11-2003, 3-3-2003, 11 October 2003,
3 October 2003, October 11, 2003, October 3, 2003,
03/03/2003, 03/03/03, 03-03-2003, 03-03-03
");
success = false;
}
}else if (validationType == 'SHORTDATE'){
if (!isValidShortDate(value)){
$("#error-" + $(this).attr("name")).html("Please enter a valid short date.
Valid formats - 10/11/03, 10-11-03
");
success = false;
}
}else if (validationType == 'YEAR'){
if (!isValidYear(value)){
$("#error-" + $(this).attr("name")).html("Please enter a valid year
");
success = false;
}
}else if (validationType == 'NUMERIC'){
if (!isValidNumeric(value)){
$("#error-" + $(this).attr("name")).html("Please enter a valid number
");
success = false;
}
}else if (validationType == 'WORD'){
if (!isValidWord(value)){
$("#error-" + $(this).attr("name")).html("Please enter a valid word
");
success = false;
}
}
}
}else{
if (requiredFields[$(this).attr("name")] == "Y"){
showGenericMessage = true;
$("#error-" + $(this).attr("name")).html("Please enter " + $(label).text() + "
");
success = false;
}
}
});
if (showGenericMessage){
$("#error-generic").html("Please review the errors below. If you do want to personalize this area, please choose the 'Do Not Personalize this Area' option from the Personal Message drop down menu.
");
}else if (noMessageEntered && !noMessagePresent){
success = false;
$("#error-generic").html("You have not entered a message. Please enter your message in the fields provided or choose the 'Do Not Personalize this Area' option from the Personal Message drop down menu.
");
}
}
}
}
return success;
}
function isValidShortDate(val){
return isValidNumericDate(val, "SHORTDATE");
}
function isValidDate(val){
var isValid = isValidNumericDate(val, "LONGDATE");
if (!isValid){
isValid = isValidNumericDate(val, "SHORTDATE");
if (!isValid){
isValid = isValidStringDate(val);
}
}
return isValid;
}
function isValidStringDate(txtDate){
//Valid values: 11 October 2003, October 11, 2003
var objDate;
var mSeconds;
var day, month, year;
if (txtDate.indexOf(",") > 0){
//This format - October 11, 2003
var dt = txtDate.split(" ");
if (dt.length == 3){
month = monthNames[dt[0]] - 0;
day = dt[1].substring(0, dt[1].length-1) - 0;
year = dt[2] - 0;
if (dt[2].length != 4) return false;
}else{
return false;
}
}else{
//This format - 11 October 2003
var dt = txtDate.split(" ");
if (dt.length == 3){
day = dt[0] - 0;
month = monthNames[dt[1]] - 0;
year = dt[2] - 0;
if (dt[2].length != 4) return false;
}else{
return false;
}
}
// convert txtDate to the milliseconds
mSeconds = (new Date(year, month, day)).getTime();
// initialize Date() object from calculated milliseconds
objDate = new Date();
objDate.setTime(mSeconds);
// compare input parameter date and created Date() object, if difference exists then date isn't valid
if (objDate.getFullYear() != year) return false;
if (objDate.getMonth() != month) return false;
if (objDate.getDate() != day) return false;
// otherwise return true
return true;
}
function isValidNumericDate(txtDate, type){
//Valid values: SHORTDATE - 10/11/03,10-11-03
//Valid values: LONGDATE - 10/11/2003,10-11-2003
var dt = txtDate.split("/");
if (dt.length != 3){
dt = txtDate.split("-");
if (dt.length != 3){
return false;
}
}
if (dt[0].length > 2 || dt[1].length > 2) return false;
var day = dt[1] - 0;
var month = dt[0] - 1;
var year = dt[2] - 0;
// convert txtDate to the milliseconds
mSeconds = (new Date(year, month, day)).getTime();
// initialize Date() object from calculated milliseconds
objDate = new Date();
objDate.setTime(mSeconds);
// compare input parameter date and created Date() object, if difference exists then date isn't valid
if (type == "LONGDATE"){
if (objDate.getFullYear() != year) return false;
}else{
if (objDate.getYear() != year) return false;
}
if (objDate.getMonth() != month) return false;
if (objDate.getDate() != day) return false;
// otherwise return true
return true;
}
function isValidYear(val){
if(val.length != 4 || !isValidNumeric(val)) {
return false;
}
return true;
}
function isValidNumeric(val){
var ValidChars = "0123456789.";
var IsNumber=true;
var Char;
for (i = 0; i < val.length && IsNumber == true; i++){
Char = val.charAt(i);
if (ValidChars.indexOf(Char) == -1){
IsNumber = false;
}
}
return IsNumber;
}
function isValidWord(val){
//No spaces should be allowed
var whiteSpaceExp=/\s/g;
if (whiteSpaceExp.test(val)) {
return false;
}
return true;
}
function addToBag(data, refreshPage, refreshDelayTime){
//Add to bag
$('#zoneAddToBag').hide();
$(persistentCartContainerId).append(data);
$(persistentCartContainerId).show();
if (refreshPage != undefined && refreshPage) {
setTimeout( function() { location.reload(true); }, (refreshDelayTime != undefined) ? refreshDelayTime : 0);
}
persistentCartIsShowing = true;
submitAddToCartForm = true;
return true;
}
function goToZone(data, isPhotoTabAvailable){
//Go to next zone
window.uiIsClearForImageUpdate = false;
if (isPhotoTabAvailable == "Y")
$("div#tabs-3").empty().html(data);
else
$("div#tabs-2").empty().html(data);
persistentCartIsShowing = false;
return true;
}
function goToNextItem(data, isPhotoTabAvailable){
//Go to next item
$('#zoneAddToBag').hide();
//line below was needed for entry of multi-step item with single ZONE
// in order for mini-cart to show
showloading(ucartSimpleHTML);
$(persistentCartContainerId).append(data);
$(persistentCartContainerId).show();
persistentCartIsShowing = true;
submitAddToCartForm = true;
setTimeout(function() {
if (isPhotoTabAvailable == "Y")
$("#productTabs").tabs({ selected: 2,cache: false,ajaxOptions: { cache : false }});
else
$("#productTabs").tabs({ selected: 1,cache: false,ajaxOptions: { cache : false }});
}, 2000);
return true;
}
function updateProductCost(data){
var znCodes = data.znCode.split("|");
var znCosts = data.znCost.split("|");
for (i=0; i < znCodes.length; i++){
var zoneCostId = "#zoneCost_"+ znCodes[i];
$(zoneCostId).text(znCosts[i]);
}
var zoneNameId = "#zoneName_"+ data.zoneCode;
$(zoneNameId).text(data.zoneName);
$("#fontSkuCost").text("");
$("#colorSkuCost").text("");
$("#messageSkuCost").text("");
//Display the cost only if it is non zero
if (data.fontCost != "$0.00"){
$("#fontSkuCost").text(data.fontCost);
}
if (data.colorCost != "$0.00"){
$("#colorSkuCost").text(data.colorCost);
}
if (data.messageCost != "$0.00"){
$("#messageSkuCost").text(data.messageCost);
}
$("#totalCost1").text(data.totalCost);
$("#totalCost2").text(data.totalCost);
$("#totalItemPrice").text(data.totalItemCost);
return true;
}
function confirmDesignLoc(data){
updateSelectedDesignSku(data, "N");
if (data.messageUrl != '' && data.messageUrl != undefined){
$(".contentForm1").children().show();
$(".contentForm2").children().show();
// if ($("#messageSku").val() != ""){
$("#messageSku").val(data.messageSku);
jq14("select#messageSku").msDropDown();
updateMessageInfo();
updateMessageArea(data.messageUrl);
//}
}else{
$(".contentForm1").children().filter(":not(.contentForm2)").hide();
$(".contentForm2").children().filter(":not(#persPreviewImgDiv)").hide();
$(":input", ".contentForm1").each(function(){
$(this).val("");
});
$("#messageSkuCost").text("");
}
setTimeout(function() {
//updateImage();
savePersonalization('.zoneBody','updateImage');
}, 500);
}
function updateSelectedDesignSku(data, updateMessage){
var znCodes = data.znCode.split("|");
var znCosts = data.znCost.split("|");
for (i=0; i < znCodes.length; i++){
var zoneCostId = "#zoneCost_"+ znCodes[i];
$(zoneCostId).text(znCosts[i]);
}
if (data.designName != ''){
$("#designName").text(data.designName);
$("input[@name=designName]").val(data.designName);
}
if (data.designCost != ''){
if (data.designCost == '$0.00'){
$("#designPrice").text("Free");
}else{
$("#designPrice").text(data.designCost);
}
$("input[@name=designPrice]").val(data.designCost);
}
if (data.designCost != null && data.designCost != '' && data.designCost != '$0.00'){
$("#designCost").text(data.designCost);
}else{
$("#designCost").text("");
}
$("input[@name=topBottom]").val(data.topBottom);
$("input[@name=leftRight]").val(data.leftRight);
$("input[@name=center]").val(data.center);
if (data.topBottom != '' && data.topBottom > 0){
$("#designTop").removeAttr("disabled");
$("#designTopLabel").removeClass("disabledRadio");
$("#designBottom").removeAttr("disabled");
$("#designBottomLabel").removeClass("disabledRadio");
}else if (data.topBottom == 0){
$("#designTop").attr("disabled","disabled");
$("#designTopLabel").addClass("disabledRadio");
$("#designBottom").attr("disabled","disabled");
$("#designBottomLabel").addClass("disabledRadio");
}
if (data.leftRight != '' && data.leftRight > 0){
$("#designLeft").removeAttr("disabled");
$("#designLeftLabel").removeClass("disabledRadio");
$("#designRight").removeAttr("disabled");
$("#designRightLabel").removeClass("disabledRadio");
}else if (data.leftRight == 0){
$("#designLeft").attr("disabled","disabled");
$("#designLeftLabel").addClass("disabledRadio");
$("#designRight").attr("disabled","disabled");
$("#designRightLabel").addClass("disabledRadio");
}
if (data.center != '' && data.center > 0){
$("#designCenter").removeAttr("disabled");
$("#designCenterLabel").removeClass("disabledRadio");
}else if (data.center == 0){
$("#designCenter").attr("disabled","disabled");
$("#designCenterLabel").addClass("disabledRadio");
}
$("#totalCost1").text(data.totalCost);
$("#totalCost2").text(data.totalCost);
$("#totalItemPrice").text(data.totalItemCost);
if (data.messageUrl != '' && data.messageUrl != undefined && updateMessage != "N"){
$(".contentForm1").children().show();
$(".contentForm2").children().show();
$("#messageSku").val(data.messageSku);
jq14("select#messageSku").msDropDown();
updateMessageInfo();
updateMessageArea(data.messageUrl);
setTimeout(function() {
//updateImage();
savePersonalization('.zoneBody','updateImage');
}, 500);
}
return true;
}
function updateProductImage(data){
if (data.zoneImage != ''){
var zoneImageId = "#zoneImage";
$(".entity-zone-image img").attr("src", data.zoneImage);
// $(".entity-zone-image img").attr("src", 'testbadimage.jpg');
var notLoaded = false;
$(".entity-zone-image img").error(function(){
if (!notLoaded) {
// if s7 img does not load img then display preview not available message
$(".entity-zone-image img").attr("src", '/assets/images/text/english/preview-not-available.gif');
}
notLoaded = true;
});
if ($(zoneImageId).widgetState().zoomControl){
$(zoneImageId).widgetState().zoomControl.reset();
}
//if ($(zoneImageId).widgetState().zoomControl){
// $(zoneImageId).widgetState().zoomControl.zoomIn();
//}
}
return true;
}
function checkSelectedLocation(data) {
var showDlg = "";
if (data.showDialog != null && data.showDialog != '')
showDlg = data.showDialog;
if (showDlg == "") {
saveSelectedLocation();
}else {
showDesignWarningLayer(showDlg);
}
}
function removeCartOpenClass() {
//css class to highlight cart button area blue when active
$('.links-search-container .cart-search-keyword-container').removeClass('bag-open');
}
function addCartOpenClass() {
//css class to highlight cart button area blue when active
$('.links-search-container .cart-search-keyword-container').addClass('bag-open');
}
function showloading(htmlToShow) {
$(persistentCartContainerId).remove();
//load, position, show new cart
$("body").append(htmlToShow);
positionpersistentCart();
$(persistentCartContainerId).show();
// add an event for close layer.
//$(persistentCartCloseButClass).click(function() { hideBasket(); });
}
function hideloading() {
$(persistentCartContainerId + " *").remove();
$(persistentCartContainerId).html("");
}
//edit this function to position cart.
function positionpersistentCart() {
// newLeft = 10 + ($("body").width() / 2) + ( $(".common-template-shell").width() / 2 ) - $(persistentCartContainerId).width();
var logoposleft = $(".common-template-standard").position().left;
newLeft = logoposleft + 409;
$(persistentCartContainerId).css("left", newLeft+"px");
$(persistentCartContainerId).css("top", "30px");
}
//edit this function to update the setup
function setupPersistentCartButtons() {
// draw focus near this
window.location = "#";
$(persistentCartCloseButClass).unbind("click").click(function() {
hideBasket();
});
$(persistentCartCloseButClass).attr("href","javascript:void(0)");
clearAllTimeouts();
}
//Edit this function if need to do something special on basket close.
function hideBasket() {
$(persistentCartContainerId).hide();
$(persistentCartContainerId).remove();
// this is added in universal_cart.jsp docready
$('.links-search-container .cart-search-keyword-container').removeClass('bag-open');
shoppingBagBut = $("#widget-header-active-link").eq(0);
$(shoppingBagBut).attr("id","");
$(shoppingBagBut).mouseout();
persistentCartIsShowing = false;
}
function isShowingBasket() {
return persistentCartIsShowing;
}
function updateHeader(amt) {
if(amt == 1)
{ $("#widget-ucart-item-count").text(amt + " item(s)"); }
else
{ $("#widget-ucart-item-count").text(amt + " item(s)");}
}
function addToCart(prefix, container, refreshPage, refreshDelayTime) {
var scope = $(prefix);
if (container)
scope = $(container).parents(prefix);
var productVariantId = $("input[@name=productVariantId]", scope).val();
if (productVariantId == null || productVariantId == undefined)
productVariantId = $("input[@name=productVariantId2]", scope).val();
if (refreshPage != undefined && refreshPage) {
setTimeout( function() { location.reload(true); }, (refreshDelayTime != undefined) ? refreshDelayTime : 0);
}
params = "productName=" + $("input[@name=productName]", scope).val() +
"&productStyle=" + $("input[@name=productStyle]", scope).val() +
"&productId=" + $("input[@name=productId]", scope).val() +
"&categoryId=" + $("input[@name=categoryId]", scope).val() +
"&parentCategoryId=" + $("input[@name=parentCategoryId]", scope).val() +
"&subCategoryId=" + $("input[@name=subCategoryId]", scope).val() +
"&quantity=" + $("input[@name=quantity]", scope).val() +
"&productType=" + $("input[@name=productType]", scope).val() +
"&bomKey=" + $("input[@name=bomKey]", scope).val() +
"&occasionFromBrowse=" + $("input[@name=occasionFromBrowse]", scope).val() +
"&goToReloadPage=" + $("input[@name=goToReloadPage]", scope).val() +
"&goToPersonalize=" + $("input[@name=goToPersonalize]", scope).val() +
"&goToPhotoUpload=" + $("input[@name=goToPhotoUpload]", scope).val() +
"&editMainItem=" + $("input[@name=editMainItem]", scope).val() +
"&photoUploadAvailable=" + $("input[@name=photoUploadAvailable]", scope).val() +
"&photoUploadMandatory=" + $("input[@name=photoUploadMandatory]", scope).val() +
"&includeBackorderCheck=" + $("input[@name=includeBackorderCheck]", scope).val() +
"&productVariantId=" + productVariantId +
"&shipLocation=" + $("input[@name=shipLocation]", scope).val();
$(".bomSelection").each(function() {
params = params + "&" + $(this).attr("name") + "=" + $(this).val();
});
var action = "addProduct";
//see if this is an update.
if( $("input[@name=itemGUID]", scope).val() != "" ){
params = params + "&itemGUID=" + $("input[@name=itemGUID]", scope).val() + "&isUpdate=1";
action = "editProduct";
}
if( $("input[@name=onBasketPage]", scope).size() > 0 )
{ params = params + "&onBasketPage=" + $("input[@name=onBasketPage]", scope).val(); }
if (prefix != undefined)
params = params + "&prefix=" + prefix;
persistentCartIsShowing = false;
submitAddToCartForm = false;
showBasket(action,params);
}
function wishListAddToCart(params,refreshPage,refreshDelayTime) {
showBasket('addProductWishlist',params,refreshPage,refreshDelayTime);
}
function wishListAddAllToCart(params,refreshPage,refreshDelayTime) {
showBasket('addAllProductsWishlist',params,refreshPage,refreshDelayTime);
}
function addCatalogOrderItemsToCart() {
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();
showBasket('addCatalogItems',params);
}
function addEnsembleToCart(type) {
params = "productName=" + $("input[@name=productName]").val() +
"&ensembleId=" + $("input[@name=ensembleId]").val() +
"&categoryId=" + $("input[@name=categoryId]").val() +
"&parentCategoryId=" + $("input[@name=parentCategoryId]").val();
// iterate through products in the ensemble for variant id
$(".the-variant-ids").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(); }
});
// iterate through products variant count
$(".the-variant-count").each(function() {
params = params + "&" + $(this).attr("name") + "=" + $(this).val();
});
params = params + "&productCount=" + $(".the-variant-ids").length;
persistentCartIsShowing = false;
showBasket('addEnsemble',params);
}
function setUserZipCodePC(refresh) {
var params = "ts=" + timestamp() + "&action=updateUserZipCode" +
"&storesListZipCode=" + $("input[@name=storesListZipCodePC]").val() +
"&storesListLatitude=" + $("input[@name=storesListLatitudePC]").val() +
"&storesListLongitude=" + $("input[@name=storesListLongitudePC]").val();
var requestURL = persistentCartCommands[7];
$.ajax({
type: "GET",
url: requestURL,
data: params,
dataType: "json",
timeout: 15000,
success: function(data) {
if(data.validZip){
if (refresh) {
showBasket('show', '');
}
return true;
}else{
alert(data.result);
return false;
}
},
error: function() {
alert('There was an error trying to save your zip code.');
return false;
}
});
}
// Edit this per site to adjust location
function adjustDivLocation(divToAdjust) {
var bWindowOffsets = getScrollXY();
var bWindowViewport = getViewportSize();
var qvTop = ((bWindowViewport[1] / 2) - ($(divToAdjust).height() / 2)) + bWindowOffsets[1];
qvTop = (qvTop < 0) ? 100 : qvTop;
$(divToAdjust).css("top",qvTop+"px");
$(divToAdjust).css("left","50%");
$(divToAdjust).css("margin-left",-($(divToAdjust).width()/2));
}
// 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 ];
}
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]); }
}
function timestamp() {
return new Date().getTime();
}
function loadQuickView(overlayURL)
{
if (typeof OverlayWidget != "undefined")
OverlayWidget.show("#headerOverlay", null, { sourceURL : overlayURL });
}
function hideQuickView()
{
if (typeof OverlayWidget != "undefined") { OverlayWidget.hideAll(); }
}
function loadOverlay(overlay, overlayURL)
{
if (typeof OverlayWidget != "undefined")
OverlayWidget.show(overlay, null, { sourceURL : overlayURL });
}
function containsChar(arr, value){
for (var i=0; i < arr.length; i++){
if (arr[i]==value) return true;
}
return false;
}
function calcPrice(strTemp){
var messageCost = document.getElementById("myOwnMessageCost");
var messageCostDisplay = document.getElementById("messageSkuCost");
var zoneCostDisplay = document.getElementById("zoneCost_" + document.getElementById("zoneCode").value);
var fontCostDisplay = document.getElementById("fontSkuCost");
var colorCostDisplay = document.getElementById("colorSkuCost");
var designCostDisplay = document.getElementById("designCost");
var totalCostDisplay1 = document.getElementById("totalCost1");
var totalCostDisplay2 = document.getElementById("totalCost2");
var totalItemCost = getCostInCents(document.getElementById("totalItemPrice"));
var photoCost = getCostInCents(document.getElementById("photoCost"));
var fontCost = getCostInCents(fontCostDisplay);
var colorCost = getCostInCents(colorCostDisplay);
var designCost = getCostInCents(designCostDisplay);
if (fontCost == ''){
fontCost = 0;
}
if (colorCost == ''){
colorCost = 0;
}
if (designCost == ''){
designCost = 0;
}
if (strTemp != undefined && $('#defaultTextareaMessage').val() != 'Enter your message here.'){
//Hardline prices
var priceWord = hPriceWord;
var priceMax = hPriceMax;
var priceMin = hPriceMin;
var excludeLength = hExcludeLength;
var excludeChars = hExcludeChars;
var sku = $("#messageSku").val();
if (sku == '219396'){
priceWord = sPriceWord;
priceMax = sPriceMax;
priceMin = sPriceMin;
excludeLength = sExcludeLength;
excludeChars = sExcludeChars;
}
var excludeCharsArr = excludeChars.split(",");
strTemp = trim(strTemp);
strTemp = replaceSubString(strTemp, /(\r\n|\r|\n)/g, "\n");
var myPrc = strTemp.split(' ');
var qCalc = 0;
for (i=0; i < myPrc.length; i++){
var myCarriagePrc = myPrc[i].split('\n');
for (t=0; t < myCarriagePrc.length; t++){
if (myCarriagePrc[t].length > excludeLength || (myCarriagePrc[t].length == excludeLength && containsChar(excludeCharsArr, myCarriagePrc[t]))){
qCalc++;
}
}
}
// calculate # of usable words
var curPr = (priceWord)*qCalc;
var mCost = 0;
if (curPr>priceMin){
// display curPr as price.
if (curPr < priceMax){
mCost = curPr;
}else{
mCost = priceMax;
}
} else {
// display priceMin as price
mCost = priceMin;
}
messageCostDisplay.innerHTML = formatAmount(mCost/100);
messageCost.value=mCost/100;
}else if ($('#defaultTextareaMessage').val() == 'Enter your message here.'){
messageCostDisplay.innerHTML = "";
messageCost.value=0;
mCost = 0;
}
//Update zone cost
var zoneCost = fontCost + colorCost + designCost + parseFloat(mCost);
zoneCostDisplay.innerHTML = formatAmount(zoneCost/100);
var totalCost = totalItemCost + photoCost + parseFloat(zoneCost);
for (k=0; k< zoneCodeArray.length; k++){
if (zoneCodeArray[k] != document.getElementById("zoneCode").value){
totalCost = totalCost + getCostInCents(document.getElementById("zoneCost_" + zoneCodeArray[k]));
}
}
totalCostDisplay1.innerHTML = formatAmount(totalCost/100);
totalCostDisplay2.innerHTML = totalCostDisplay1.innerHTML;
}
function formatAmount(value){
//if (value.toFixed)
value = value.toFixed(2);
value = new String(value);
myArr2 = value.split(".");
if (myArr2.length == 1){
value = "$"+value + ".00";
}else if(myArr2[1].length >1){
value = "$"+value;
} else {
value = "$"+value + "0";
}
return value;
}
function getCostInCents(costElement){
var cost = 0;
if (costElement != undefined){
var cost = costElement.innerHTML.substring(1,costElement.innerHTML.length);
if (cost != ""){
cost = parseFloat(cost) * 100;
}
}
return cost;
}