/*$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
 
    le.inlineShoppingBag.js - inline shopping bag functionality
    This is a singleton object and is instantiated on page load

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$*/
var inLineShoppingBag = false;
    		
function inlineShoppingBag() {
    var isbWindow                   = document.getElementById("inlineShoppingBag");
    var isbLayout                   = isbWindow.getElementsByTagName("div");
    var isbLineItems                = new Array();
    var keepShoppingDiv             = document.getElementById("keepShoppingButton");
    var keepShoppingLink            = document.getElementById("keepShoppingButtonLink");
    var checkoutDiv                 = document.getElementById("checkoutButton");
    var isbAccountLoginLink         = document.getElementById("isbAccountLoginLink");
    var isbAccountLogin             = document.getElementById("isbAccountLogin");
    //Jesse P Change to button
    //var isbViewBagLink              = document.getElementById("isbViewBagLink");
    //Jesse P Change to button
    var viewBagDiv             		= document.getElementById("viewBagButton");
    var isbShoppingBagSubTotalText  = document.getElementById("isbShoppingBagSubTotalText");
    var isbItems                    = document.getElementById("isbItems");
    var errorContainer              = document.getElementById("isbError");
    var livePersonContainer         = document.getElementById("lpContainer");
    var thisIsb                     = this;
    var cartTotal                   = 0;
    var numItems                    = 0;
    var isLoggedIn                  = 0;
    var isUpdateItem                = false;
    var isNewAddress				= false;
    var inventoryStatus             = "";
    var theBuyGrid;
    var singleSelObj;
    var singleSelNum				= 0; //initialize this for collection pages
    var selObjs;
    var shoppingBagLink;            
    var refer = getReferForLink();
    
    this.displayBag = function() {
        isbItems.innerHTML = "";
    	//Jesse P Change to button
	    //isbViewBagLink.href = hostname + "/cgi-bin/ShoppingBag.cgi?refer=" + encodeURIComponent(ppPath);
        isbShoppingBagSubTotalText.innerHTML = toUSCurrency(cartTotal/100) + "&nbsp;";
	    window.cartTotalAmt=window.toUSCurrency(cartTotal/100,false);
	     setCookie("cTotal",cartTotalAmt);
	    
        var i; 
        if (isLoggedIn == 1) {
            hide(isbAccountLogin);
	    } else {
 	    	isbAccountLoginLink.href = "https://" + window.location.hostname + "/cgi-bin/Login.cgi?redirect=/cgi-bin/AccountPortal.cgi&type=GenLogin";
            show(isbAccountLogin);
	   	}

		doDebug("[displayBag] selObjs = " + selObjs);
        if (selObjs != null && selObjs != undefined ) {
        	var total = 0;
        	for (i = 0; i < selObjs.length; i++) {
				if (selObjs[i] != null) {
        			thisIsb.addLineItemToDisplay(selObjs[i], total);
        			total++;
        		}
        	}
        } else if (numItems > 0){
        	doDebug("[displayBag] numItems = " + numItems);
            thisIsb.addLineItemToDisplay(singleSelObj, singleSelNum);
		}
		// we must be in error message mode.
		if (numItems < 1) {
			hide(isbItems)
		}
        isbWindow.style.visibility = "visible";
        
        // resize the ISB to 300 px if it gets too long
        if(isbWindow.offsetHeight >= 300){
            isbItems.style.height = "300px";
            isbItems.style.overflow = "auto";
        }
        try {
            thisIsb.doLivePerson(singleSelObj.style, singleSelObj.sku.mediaCode, cartTotal);
        } catch (err) {
            doDebug("[displayBag] There was an error contacting LivePerson for the inline shopping bag..." + err);
            window.onerror(err);
        }
       	show(isbWindow);
        movePopupLayer(isbWindow);
        cmDisplayShop5s();
        keepShoppingLink.focus();        
        doDebug("[displayBag] - complete"); 
	};
    
    this.doLivePerson = function(styleNum, mediaCode, cartTotal) {
        var el = document.createElement("iframe");
        el.setAttribute("height", 0);
        el.setAttribute("width", 0);
        var lpUrl = hostname + "/pp/LivePersonISBServlet.html?styleNumber=" + styleNum + "&mediaCode=" + mediaCode + "&cartTotal=" + cartTotal;
        el.setAttribute("src", lpUrl);
        el.setAttribute("id", "livePersonMask");
        doDebug("[doLivePerson] Calling Live person..." + lpUrl);
        document.body.appendChild(el);
    };
    
	this.parseResponse = function(request) {
        var xmldoc = request.responseXML;
        var inventoryErrors = "";
        
        doDebug("[parseResponse] responseXML: " + request.responseText);
        theSid = xmldoc.getElementsByTagName('sid')[0].childNodes[0].nodeValue;
        doDebug("[parseResponse]theSid: " + theSid);
        cartTotal = xmldoc.getElementsByTagName('ItemSubTotal')[0].childNodes[0].nodeValue;
        doDebug("[parseResponse] cartTotal: " + cartTotal);
        numItems = xmldoc.getElementsByTagName('ItemCount')[0].childNodes[0].nodeValue;
        doDebug("[parseResponse] numItems: " + numItems);
        isLoggedIn = xmldoc.getElementsByTagName('IsLoggedIn')[0].childNodes[0].nodeValue;
        doDebug("[parseResponse] isLoggedIn: " + isLoggedIn);
        shoppingBagLink = hostname + "/cgi-bin/ShoppingBag.cgi?refer=" + encodeURIComponent(refer);

        // update single item selection
        if (selObjs == null || selObjs == 'undefined') {
        	var shoppingBagPrice;
        	shoppingBagPrice = xmldoc.getElementsByTagName('UnitPrice')[0].childNodes[0].nodeValue;
        	doDebug("[parseResponse] shoppingBagPrice: " + shoppingBagPrice);
        	singleSelObj.shoppingBagPrice = shoppingBagPrice / 100;
        } else {
        	var shoppingBagPrice, i;
        	var total = 0;
        	shoppingBagPrice = xmldoc.getElementsByTagName('UnitPrice')[0].childNodes[0].nodeValue;
        	
        	for (i = 0; i < selObjs.length; i++) {
				if (selObjs[i] != null) {
					singleSelObj = selObjs[i];
        			shoppingBagPrice = xmldoc.getElementsByTagName('UnitPrice')[total].childNodes[0].nodeValue;
        			doDebug("[parseResponse] shoppingBagPrice_" + total + ": " + shoppingBagPrice);
        			selObjs[i].shoppingBagPrice = shoppingBagPrice / 100;
        			total++;
        		}
        	} 	
        }

		// if single item 
		if (selObjs == null || selObjs == 'undefined'){
			inventoryStatus = xmldoc.getElementsByTagName("InventoryCode")[0].childNodes[0].nodeValue;
			doDebug("[parseResponse] inventoryStatus: " + inventoryStatus);
			if (inventoryStatus == "N" || inventoryStatus == "U") {
				inventoryErrors = inventoryErrors + messages.info.productNoInventory(document.getElementById('productName_prd_' + singleSelObj.buyGridNumber).innerHTML, colorAssoc[singleSelObj.colorCode], sizeAssoc[singleSelObj.sizeCode]) + "<br /> <br />";
			}
		}
		// if collections or multi-item
		else{
			var currentSelectionIndex;
			for(currentSelectionIndex = 0;currentSelectionIndex < selObjs.length;currentSelectionIndex++){ 
				inventoryStatus = xmldoc.getElementsByTagName("InventoryCode")[currentSelectionIndex].childNodes[0].nodeValue;
				doDebug("[parseResponse] inventoryStatus: " + inventoryStatus);
				if (inventoryStatus == "N" || inventoryStatus == "U") {
					inventoryErrors = inventoryErrors + messages.info.productNoInventory(document.getElementById('productName_prd_' + selObjs[currentSelectionIndex].buyGridNumber).innerHTML, colorAssoc[selObjs[currentSelectionIndex].colorCode], sizeAssoc[selObjs[currentSelectionIndex].sizeCode]) + "<br /> <br />";
				}
			}
		}

        if (inventoryErrors != null && inventoryErrors.length > 0) {
        	errorContainer.innerHTML = inventoryErrors
        	show(errorContainer);
        }
        
		if (isUpdateItem == false) {
		    thisIsb.displayBag();
		} else if (isUpdateItem == true && (inventoryStatus != "N" || inventoryStatus != "U")) {
			window.location = shoppingBagLink;
		}
        
        if (isNewAddress == true) {
			doDebug("[parseResponse] found new address");
			loadBasicCustomerData();
			var buyGridI; 
			// if new address added, then update all the buy grids with the new list
    		for(buyGridI in sA){
				buyGrids[buyGridI].buildShipToList();
			}
		}

		if(theBuyGrid != null){
			theBuyGrid.enableAddToBagButton();
		}
		doDebug("[parseResponse]- complete");
    };
    
    this.buildAddToBagRequest = function(selectionNum) {
		var url="";
     	var selection = singleSelObj;
     	
  		// Someone Else == "-2"
     	if (selection.shipTo == "-2") {
     		isNewAddress = true;
     		url = url + "newNickName=" + encodeURIComponent(selection.shipToNickname) + "&";
     	} else if (parseInt(selection.shipTo) > 0) {
     		isNewAddress = false;
     		url = url + "addressID=" + selection.shipTo + "&";
     	}
     	
     	url += this.buildSelectionAddToBagString(selection, 0);

        doDebug("request=" + url);
        return url;
    };
    
    this.buildSelectionAddToBagString = function(selection, index) {
    	var str = "";
    	
	   	str = str + "sku_" + index + "=" + selection.style + selection.sku.mediaCode + selection.sku.checkDigit + ":" + selection.sizeCode + ":" + selection.colorCode + 
    	"&qty_" + index + "=" + selection.quantity;
    	
    	if (selection.itemID != null && selection.itemID != "") {
    		str = str + "&itemID=" + selection.itemID;
    		isUpdateItem = true;
    	}
    	
    	if (selection.giftBox) {
    		str = str + "&giftBoxing_" + index + "=true";
    	}
    	
    	if (selection.monogrammed) {
    		str = str + "&monoLoc_" + index + "=" + selection.monogram.location;
    		str = str + "&monoTypeCode_" + index + "=" + selection.monogram.style;
    		
    		var monoValue;
	        switch (selection.monogram.type) {
	            case "Single Initial":
	            	str = str + "&monoIsInitial_" + index + "=true";
	                monoValue = selection.monogram.siText;
	                break;
	            case "Initials":
		            str = str + "&monoIsInitial_" + index + "=true";
	                monoValue = selection.monogram.multiInitialArr.join("");
	                break;
	            case "Multi-Line":
	                monoValue = selection.monogram.multiLineArr.join("|");
	                break;
	            default:
	                monoValue = selection.monogram.wordText;
	                break;
	        }
	        
	        str = str + "&monoValue_" + index + "=" + encodeURIComponent(monoValue);
	        str = str + "&monoColor_" + index + "=" + selection.sku.monoThreadColorCode;
    	}
    
    	if (selection.hemmed == true) {
 		   	if(selection.hemming.finished == false) {
    			str = str + "&inseamLength_" + index + "=UNF";
    		} else if(selection.hemming.length != null && selection.hemming.length != "") {
    			str = str + "&inseamLength_" + index + "=" + selection.hemming.length;

	    		if (selection.hemming.cuffed) {
	    			str = str + "&cuffed_" + index + "=true";
	    		}
    		}
    	}
    	
    	if (selection.schoolUniformmed) {
    		str = str + "&school_unfrm_logo_id_" + index + "=" + selection.schoolUniform.logo;
    		str = str + "&school_org_num_" + index + "=" + selection.schoolUniform.code;
    		str = str + "&school_logo_loc_" + index + "=LSC";
    		str = str + "&school_program_type_" + index + "=3";
    	}
    	
    	if (selection.dropShipDayPhone != null && selection.dropShipDayPhone != "") {
    		var dropShipDayPhone= "&primContactPhone_" + index + "=" + selection.dropShipDayPhone;
    		
    		if (selection.dropShipDayPhoneExt != null && selection.dropShipDayPhoneExt != "") {
    			dropShipDayPhone = dropShipDayPhone + "/"  + selection.dropShipDayPhoneExt;
    		}
    		str = str + dropShipDayPhone;
    	}   	
    	
    	if (selection.dropShipAltPhone != null && selection.dropShipAltPhone != "") {
    		var dropShipAltPhone= "&secContactPhone_" + index + "=" + selection.dropShipAltPhone;
    		
    		if (selection.dropShipAltPhoneExt != null && selection.dropShipAltPhoneExt != "") {
    			dropShipAltPhone = dropShipAltPhone + "/"  + selection.dropShipAltPhoneExt;
    		}
    		str = str + dropShipAltPhone;
    	}
    	str = str + "&cm_merch_" + index + "=" + getCategoryID();
    	doDebug("selection addtobag string=" + str);
        return str;
    };
        
    this.addToBag = function(selectionNum,theBuyGridPar) {
        var requestURL = hostname + "/cgi-bin/ItemToBag.cgi";
        var requestParams = this.buildAddToBagRequest(selectionNum);
        requestURL = requestURL;

		try {
        	theBuyGridPar.disableAddToBagButton();
            var loader = new contentLoader(requestURL, thisIsb.parseResponse, thisIsb.handleError, "POST",requestParams);
        } catch (err) {
            errorContainer.innerHTML = messages.error[33].getMessageText(true);
            show(errorContainer);
            theBuyGridPar.enableAddToBagButton();
            window.onerror(err);            
        }
    };
    
    this.addSelectionToBag = function(selectionNum,selectionObj,theBuyGridPar, saKey) {
    	inLineShoppingBag = true;
        singleSelObj = selectionObj;
        singleSelNum = selectionNum;
        theBuyGrid = theBuyGridPar;
        doDebug("[addSelectionToBag] singleSelObj: " + singleSelObj);
        doDebug("[addSelectionToBag] sku.mediaCode = " + singleSelObj.sku.mediaCode);
        doDebug("[addSelectionToBag] sku.checkDigit = " + singleSelObj.sku.checkDigit);
        this.sendAddToBagMetric(saKey);
        this.addToBag(selectionNum,theBuyGridPar);
    };
 
     this.sendAddToBagMetric = function(saKey){
		s = s_gi(s_account);
        s.linkTrackVars='products,events';
        s.linkTrackEvents='scAdd,event12';
        s.events='scAdd,event12';
        s.products=';' + priceCode[singleSelObj.style] + '_' + singleSelObj.style + ';;;event12=' + singleSelObj.quantity;
        
        
        if(singleSelObj.sku != null && singleSelObj.sku.promoTypeCode != null){
        	var selectedSkuPromoCode = singleSelObj.sku.promoTypeCode;
        	var selectedQuantity = singleSelObj.quantity;
        	if(selectedSkuPromoCode == 1){
        		s.products = s.products + "|event47=" + selectedQuantity;
        		s.events = s.events + ",event47";
        		s.linkTrackEvents = s.linkTrackEvents  + ",event47";
        	}else if(selectedSkuPromoCode == 2){
        		s.products = s.products + "|event48=" + selectedQuantity;
        		s.events = s.events + ",event48";
        		s.linkTrackEvents = s.linkTrackEvents  + ",event48";
        	}else if(selectedSkuPromoCode == 3){
        		s.products = s.products + "|event49=" + selectedQuantity;
        		s.events = s.events + ",event49";
        		s.linkTrackEvents = s.linkTrackEvents  + ",event49";
        	}
        }
        
        s.tl(true,'o','Add To Bag');
    }
  
     this.sendMultiItemAddToBagMetric = function(selectionObjs){
		s = s_gi(s_account);
        s.linkTrackVars='products,events,eVar4';
        s.linkTrackEvents='scAdd';
        s.events='scAdd';
        
        s.products = '';
        var i;
        var selectionObject;
        
        var event47add = false;
        var event48add = false;
        var event49add = false;
        for(i = 0;i < selectionObjs.length;i++){
        	selectionObject = selectionObjs[i];
          //s.products= s.products + ';' + priceCode[selectionObject.style] + '_' + selectionObject.style + ';'+ selectionObject.quantity +';;;evar4=' + s.getQueryParam('cm_merch');	

            if(selectionObject.sku != null && selectionObject.sku.promoTypeCode != null){
            	var selectedSkuPromoCode = selectionObject.sku.promoTypeCode;
            	var selectedQuantity = selectionObject.quantity;
            	var eventString = "";
            	if(selectedSkuPromoCode == 1){
            		eventString = eventString + "event47=" + selectedQuantity;
            		event47add = true;
            	}else if(selectedSkuPromoCode == 2){
            		eventString = eventString + "event48=" + selectedQuantity;
            		event48add = true;
            	}else if(selectedSkuPromoCode == 3){
            		eventString = eventString + "event49=" + selectedQuantity;
            		event49add = true;
            	}
            }        	        	
        	s.products += ';' + priceCode[selectionObject.style] + '_' + selectionObject.style + ';'+ selectionObject.quantity +';;event12='+ selectionObject.quantity + '|' + eventString;
            if (i < selectionObjs.length -1) {
            	s.products += ",";
            }
        }
        
        if(event47add){
        	s.events += ",event47";
        	s.linkTrackEvents += ",event47"; 
        }
        if(event48add){
        	s.events = s.events + ",event48";
        	s.linkTrackEvents += ",event48"; 
        }
        if(event49add){
        	s.events += ",event49";
        	s.linkTrackEvents +=  ",event49"; 
        }        
        
        s.tl(true,'o','Add To Bag');
    }   
    
    this.addAllToBag = function(selectionObjs, buyGridContainer, saKey) {
        var requestURL = hostname + "/cgi-bin/ItemToBag.cgi";
		var i;
		var selectionista;
		var numItems = 0;
		
		theBuyGrid = buyGridContainer;
		selObjs = selectionObjs;
		
		this.sendMultiItemAddToBagMetric(selectionObjs, saKey);

   		doDebug("[addAllToBag] selObjs.length = " + selObjs.length);
   		doDebug("[addAllToBag] selectionObjs.length = " + selectionObjs.length);
	
		// shrink the array before so it's easy to match the response items back to the array
	    for (i=0; i < selectionObjs.length; i++) {
	    	doDebug("[addAllToBag] selectionObjs[" + i + "] = " + selectionObjs[i]);
	    	if (selectionObjs[i] == null) {
	    		selectionObjs.splice(i, 1);
	    		// if we don't do this, we'll skip over the next item since the array is shrinking, creepy huh?
	    		i = i - 1;
	    	}
	    }
   		doDebug("[addAllToBag] selObjs.length = " + selObjs.length);
   		doDebug("[addAllToBag] selectionObjs.length = " + selectionObjs.length);
		
	    for (i=0; i < selectionObjs.length; i++) {
	    	if (selectionObjs[i] != null) {
	    		selectionista = selectionObjs[i];
	    		doDebug("[addAllToBag] adding selectionObj[" + i + "]");
	    		
	    		if (numItems == 0) {
	    			requestURL += "?" + this.buildSelectionAddToBagString(selectionista, numItems);
	    		} else {
		    		requestURL += "&" + this.buildSelectionAddToBagString(selectionista, numItems);
		    	}
	    		numItems = numItems + 1;
	    	} 
	    }
	    requestURL += "&cm_re=1-_-Bottom_Nav-_-Items_to_Bag";
	    if (theSid != null && theSid != "") {
            requestURL = requestURL + "&sid=" + theSid;
        }
	    doDebug("[addAllToBag] numItems =" + numItems + ", requestURL=" + requestURL);
             
      	if (numItems > 0) { 
	     	// Someone Else == "-2"
	     	if (selectionista.shipTo == "-2") {
	     		isNewAddress = true;
	     		requestURL = requestURL + "&newNickName=" + encodeURIComponent(selectionista.shipToNickname);
	     	} else if (parseInt(selectionista.shipTo) > 0) {
	     		isNewAddress = false;
	     		requestURL = requestURL + "&addressID=" + selectionista.shipTo;
	     	}     	
 
        	doDebug("[addAllToBag] requestURL = " + requestURL); 
			theBuyGrid.disableAddToBagButton();
        	var loader = new contentLoader(requestURL, thisIsb.parseResponse, thisIsb.handleError, "GET");
        	return true;
        } else {
        	return false;
        }
    };
    
    this.handleError = function(request) {
        errorContainer.innerHTML = messages.error[33].getMessageText(true);
        show(errorContainer);
        thisIsb.displayBag();
       // buyGrids[singleSelNum].enableAddToBagButton();
        doDebug("[addToBag handleError] There was an AJAX error...");
    };
        
    this.addLineItemToDisplay = function(lineItem, lineItemNum) {
        var isbItemClass = "isbItem_last";
        var prodImage = lineItem.productImageURL;
        doDebug("[addLineItemToDisplay] prodImage: " + prodImage);
        
        var el = document.createElement("div");  
        isbItems.appendChild(el); 

        var innerHTML = "<div id=\"isbItem_" + lineItemNum + "\" class=\""+ isbItemClass + "\">" +
                	   "<div id=\"isbImage_" + lineItemNum + "\" class=\"isbImage\">" +
                       "<img src=\"" + prodImage + "\" width=\"100\" alt=\"\" />" + "</div>" +
                       "<div id=\"isbInfo_" + lineItemNum + "\" class=\"isbInfo\">" +
                       "<div id=\"isbName_" + lineItemNum + "\" class=\"isbName\">" + lineItem.styleText + "</div>";
                       
                       
        if (lineItem.colorCode != null && lineItem.colorCode != "") {
           innerHTML = innerHTML + "<div id=\"isbColor_" + lineItemNum + "\" class=\"isbColor\">" +
                       "<span class=\"featureText\">color: </span><span class=\"attributeText\">" + colorAssoc[lineItem.colorCode] + "</span>" +
                       "</div>";
        }
            
        if (lineItem.sizeCode != null && lineItem.sizeCode != "" && lineItem.hemmed == false) {
 		    innerHTML = innerHTML + "<div id=\"isbSize_" + lineItemNum + "\" class=\"isbSize\">" +
        	    "<span class=\"featureText\">size: </span><span class=\"attributeText\">" + sizeAssoc[lineItem.sizeCode] + "</span>" +
                "</div>";
        } else if (lineItem.sizeCode != null && lineItem.sizeCode != "" && lineItem.hemmed == true) {
 			var displaySizeCode = sizeAssoc[lineItem.sizeCode];
        	
        	if (lineItem.hemming.finished == false) {
       			displaySizeCode = displaySizeCode + " x unfinished";
       		} else {
       			displaySizeCode = displaySizeCode + " x " + lineItem.hemming.length;
       		}
       	
        	if (lineItem.hemming.cuffed == true) {
        		displaySizeCode = displaySizeCode + " (cuffed)" 
        	}  
            innerHTML = innerHTML + "<div id=\"isbInseam_" + lineItemNum + "\" class=\"isbSize\">" +
                "<span class=\"featureText\">size: </span><span class=\"attributeText\">" + displaySizeCode + "</span>" +
                "</div>";
        }

        innerHTML = innerHTML + "<div id=\"isbQuantity_" + lineItemNum + "\" class=\"isbQuantity\">" +
                       "<span class=\"featureText\">qty: </span><span class=\"attributeText\">" + lineItem.quantity + "</span>" +
                       "</div>" +
                       "<div id=\"isbPrice_2\" class=\"isbPrice\">" +
                       "<span class=\"featureText\">price: </span><span class=\"attributeText\">" + toUSCurrency(lineItem.shoppingBagPrice) + "</span>" +
                       "</div>";
        
        // handle the summary of VAS options           
        if (lineItem.monogrammed == true || 
                lineItem.giftBox == true || (
                    lineItem.schoolUniformmed == true && 
                    lineItem.schoolUniform.logo != "" && 
                    lineItem.schoolUniform.logo != null && 
                    lineItem.schoolUniform.logo != undefined
                )
            ) 
            
            {
            var monoHolder = "";
            var gbHolder = "";
            var suHolder = "";
            
            if (lineItem.monogrammed == true) {
                monoHolder = "monogramming; ";
            }
            
            if (lineItem.giftBox == true) {
                gbHolder = "gift box";
            }
            
            if (lineItem.schoolUniformmed == true &&
                     lineItem.schoolUniform.logo != "" && 
                     lineItem.schoolUniform.logo != null && 
                     lineItem.schoolUniform.logo != undefined) {
                suHolder = "school logo; ";
            }
            
            innerHTML = innerHTML + "<div id=\"isbVas_" + lineItemNum + "\" class=\"isbVAS\">" +
                        "<span class=\"attributeText\">" + monoHolder + suHolder + gbHolder + "</span>" +
                        "</div>";
        }
        
        // the closing div
        innerHTML += "</div>";
		el.innerHTML = innerHTML;
        cmCreateShopAction5Tag(lineItem.style, lineItem.styleText, lineItem.quantity, lineItem.shoppingBagPrice, getCategoryID());
        doDebug("[addLineItemToDisplay] line item html: " + el.innerHTML);
	};
    
    // close add to bag confirmation
    keepShoppingDiv.onclick = function() {
        hide(isbWindow);
        wipeProductPage();
        return false;
    };
    
    // go to checkout
    checkoutDiv.onclick = function() {
        window.location = hostname + "/cgi-bin/ShoppingBag.cgi?Checkout.x=1&Checkout.y=1&refer=" + encodeURIComponent(refer);
    }; 
    
    // view bag
    viewBagDiv.onclick = function() {
        window.location = hostname + "/cgi-bin/ShoppingBag.cgi?refer=" + encodeURIComponent(refer);
    }; 
}

/*===========================================================

    Clear all selections and buy grids on the product page by
    reloading it fresh from the history.
    
===========================================================*/
function wipeProductPage() {

	// if single item, no fit change, and the sid is the same 
	if(! multiItem && currentBuyGridUrl == null){
		history.go(0);
	}

	var newURL;
	// if multi-item page construct new url
	if(multiItem){
		newURL = hostname + '/pp/MultiItem.html' + multiItem.reloadPage();
	}
	
	// if single item product page and there was a fit change
	if(! multiItem && currentBuyGridUrl != null){
		var edit = new RegExp(/\/pp\/(\w*)[\-\~]/);
		var productName = window.location.href.match(edit)[1];
		newURL = currentBuyGridUrl.replace(/ProdPageBG/,productName);
		newURL = hostname + newURL + window.location.search;
	}
	// if single item product page and there was not a fit change
	else if(!multiItem){
		newURL = window.location.href;
	}
	var finalURL = newURL.replace(/#+.*$/, "");
	doDebug("[] finalURL='"+finalURL+"'");
   	window.location.href = finalURL;

}
