var controller;
var pipPopup;
dojo.require("dijit.Dialog");
dojo.require("pb.widget.RichCartDialog");
dojo.require("pb.widget.DialogProductLineItem");
dojo.addOnLoad(function(){
        pipController = new GiftCardController();
		pipPopup = new DisplayPopup("pipPopup", "width=800, height=560, top=4, left=4, toolbar=0, menubar=0, location=0, status=0, scrollbars=1, resizable=1");
});
	
dojo.declare("GiftCardController", null, {
        constructor: function() {
		this._productDatasetLookup = new ProductDatasetLookup();
		this._renderProductDropDowns();
		this._resetBaseXMLRequest();
        this._initEditModeValues();
        this._processCartXML();
		dojo.connect(dojo.byId('qty_product1'), "onblur", this, "_handleQtyOnBlur");
        dojo.subscribe("/riaCloseEvent", this, "_handleRiaCloseEvent");
        dojo.connect(dojo.byId('pipform'), "onsubmit", this, "_handlePipFormSubmit");
        
        this.showProductInfoTabs();
	},
	
	selectElemEventIds: {},
	_xml: null,
	_productDatasetLookup: null,
	isNLAInEditMode :true,
	
	_handlePipFormSubmit: function(evt){ 
		evt.preventDefault(); 
		evt.stopPropagation(); 
		
		if(dojo.byId('userstatus') && (dojo.byId('userstatus').value == "giftgiver"))
			this._handleAddToCartGiftGiver(evt.currentTarget);
		else
			this._handleAddToCart(evt.currentTarget);
	},
    _processCartXML: function(){
        if (!isEmpty(dojo.byId("cartxml")) && !isEmpty(dojo.byId("cartxml").value)) {
        	this._processXMLResponse(dojo.byId("cartxml").value);
		}
    },
    _handleRiaCloseEvent: function(evt){
        dojo.byId('product1_attr2').selectedIndex = 0;
        dojo.byId('qty_product1').value = "";
		if (dojo.byId("h_added")) {
    		dojo.byId("h_added").value ="";;
   		}
	
		if (dojo.byId("h_ls")) {
       		dojo.byId("h_ls").value ="";;
   		}
    },
	_resetBaseXMLRequest: function(){
		this._xml = dojox.data.dom.createDocument("<addtocartrequest><items></items><shiptoinfo></shiptoinfo><isgiftcard></isgiftcard></addtocartrequest>");
	},
    _initEditModeValues: function(){
        var editModeSku = dojo.byId('skuedit_product1').value;
        if(editModeSku != ""){
    	    dojo.byId('product1_attr2').value = dojo.byId('skuedit_product1').value;
            this._handleAttr2OnChange(dojo.byId('product1_attr2'));
        }
    },
	_findSkuInDropDowns: function(sku,productCount){
		var products = productMap.products.productSet;
		var product;
		var foundAtInfo = this._productDatasetLookup.searchDataSetForSku(products, sku, 1, null,productCount);
		var selectElem;
		var self = this;
		if (foundAtInfo["depth2_index"]) {
			setTimeout(function(){
				selectElem = dojo.byId("product" + foundAtInfo["depth1_index"] + "_attr2");
				selectElem.selectedIndex = foundAtInfo["depth2_index"];
				self._handleAttr2OnChange(selectElem);
			}, 10);
		}
		if (foundAtInfo["depth3_index"]) {
			setTimeout(function(){
				selectElem = dojo.byId("product" + foundAtInfo["depth1_index"] + "_attr3");
				selectElem.selectedIndex = foundAtInfo["depth3_index"];
				self._handleAttr3OnChange(selectElem);
			}, 65);
		}
		if (foundAtInfo["depth4_index"]) {
			setTimeout(function(){
				selectElem = dojo.byId("product" + foundAtInfo["depth1_index"] + "_attr4");
				selectElem.selectedIndex = foundAtInfo["depth4_index"];
				self._handleAttr4OnChange(selectElem);
			}, 120);
		}
	},
	_renderStaticBackOrderStatus: function(productCounter){
		var productSet = productMap.products.productSet;
		var backOrderHook;
	//	for(var i = 0; i < productSet.length; i++){
			backOrderHook = document.createElement("div");
			backOrderHook.setAttribute("id", "product" + (productCounter+1) + "_backOrderHook");
			dojo.byId('product' + (productCounter + 1)).appendChild(backOrderHook);
			var backorder = productSet[productCounter].backorder;
			
			if (backorder) {
				var dl = document.createElement("dl");
				removeChildren(dojo.byId("product" + (productCounter+1) + "_backOrderHook"));
				var dd = document.createElement("dd");
				setClass(dd, "specialAlerts");
				var backOrderMessage = document.createTextNode("This item is backordered untill "  + this._formatDate(backorder,""));
				dd.appendChild(backOrderMessage);
				dl.appendChild(dd);
				dojo.byId("product" + (productCounter+1) + "_backOrderHook").appendChild(dl);
			}		
		//}
	},
	_renderProductDropDowns: function(sku){
		var products = productMap.products.productSet;
		var selectElem = null;
		var optionElem = null;
		var textNode = null;
		
		var dropDownHook, attribs, priceHook;
		for(var i = 0; i < products.length; i++){
			attribs = products[i].attr2;
			if (!attribs) {
				this._renderStaticPricing(i);
				this._renderStaticBackOrderStatus(i);
			} else {
				this._renderDropDownForSubset(i);
				this._populateDropDownEditMode(i);
			}
			this._populateQuantityBoxEditMode(i);
			
		}
		
		
	},
	_renderDropDownForSubset:  function(productCounter){
			var products = productMap.products.productSet;
  			dropDownHook = dojo.byId("product" + (productCounter+1));
			//setClass(dropDownHook, "attrDropDowns");
			removeChildren(dropDownHook);
			selectElem = document.createElement("select");
			selectElem.setAttribute("id", "product" + (productCounter+1) + "_attr2");
			//set a class simply so we can dojo.query to get an array of all selects. -Chad			
			//selectElem.setAttribute("class", "attr2");
			setClass(selectElem, "attr2");
			selectElem.productNumber = (productCounter+1);
			this.selectElemEventIds['product' + (productCounter+1) + '_attr2'] = dojo.connect(selectElem, "onchange", this, "handleAttr2OnChange");
			
			attribs = products[productCounter].attr2;
			if(!attribs)
				return;
			if (attribs[0]) {
				optionElem = document.createElement("option");
				optionElem.setAttribute("value", "");
				//textNode = document.createTextNode(attribs[0].label);
				//optionElem.appendChild(textNode);
				optionElem.innerHTML = attribs[0].label;
				selectElem.appendChild(optionElem);
			}
				
			for(var j = 0; j < attribs.length; j++){
				optionElem = document.createElement("option");
				optionElem.setAttribute("value", attribs[j].sku);
				//textNode = document.createTextNode(attribs[j].value);
				//optionElem.appendChild(textNode);
				optionElem.innerHTML = attribs[j].value;
				optionElem.attr3 = attribs[j].attr3;
				selectElem.appendChild(optionElem);
			}
			
			dropDownHook.appendChild(selectElem);
			
			if (attribs[0].attr3) {
				//render 2 disabled DDs
				selectElem = document.createElement("select");
				selectElem.disabled = true;
				selectElem.setAttribute("id", "product" + (productCounter+1) + "_attr3");
				setClass(selectElem, "attr3");
				selectElem.productNumber = (productCounter+1);
				dropDownHook.appendChild(selectElem);
				if (attribs[0].attr3[0].attr4) {
					selectElem = document.createElement("select");
					selectElem.disabled = true;
					selectElem.setAttribute("id", "product" + (productCounter+1) + "_attr4");
					setClass(selectElem, "attr4");
					selectElem.productNumber = (productCounter+1);
					dropDownHook.appendChild(selectElem);
				}
			}
			
			//create the price "hook"
			priceHook = document.createElement("div");
			priceHook.setAttribute("id", "product" + (productCounter+1) + "_priceHook");
			setClass(priceHook, "priceHook");
			dropDownHook.appendChild(priceHook);
		//}	
		var skut = dojo.byId("skuTotal");
            if (skut) {
                skut.value = "1";
            }	
	},
	handleAttr2OnChange: function(evt){
		this._handleAttr2OnChange(evt.target);
	},
	_handleAttr2OnChange: function(sourceElem){
		var currentProductNumber = sourceElem.productNumber;

		//disable attr3 dropdown (if exists), check if we need to render the price, then exit the function
		if (!sourceElem.options[sourceElem.selectedIndex].attr3) {
			var dataSet = productMap.products.productSet[currentProductNumber-1].attr2;
			var sku = sourceElem.value;
			//this._doPriceAndThumbRender(currentProductNumber, dataSet, sku);
			this._renderBackOrderStatus(currentProductNumber, dataSet, sku);
			this._setPipFormValues(currentProductNumber, dataSet[sourceElem.selectedIndex - 1], sku);
			if(sourceElem.selectedIndex == 0)
				this._clearQuantityBox(currentProductNumber);
			else
				this._setQuantityBox(1, currentProductNumber);
			return;
		}
	},
	_setQuantityBox: function(amount, productNumber){
		var qty = dojo.byId("qty_product" + productNumber);
		if(qty && qty.value==""){
			qty.value = amount;	
		}
	},
	_clearQuantityBox: function(productNumber){
		var qty = dojo.byId("qty_product" + productNumber);
		qty.value = "";
	},
	_handleQtyOnBlur: function(evt) {
		var node = evt.currentTarget;
		if(node) {
			if(node.value == "") {
				this.showGeneralError(true);
			} else if (node.value && !isNumeric(node.value)) {
				node.value = "";
				this.showGeneralError(false);
			}
		} 
	},
	_renderBackOrderStatus: function(productNumber, dataSet, sku){
		var backorder = null;
		var backOrderHook;
		for(var j = 0; j < dataSet.length; j++){
			if (dataSet[j].sku == sku) {
				backorder = dataSet[j].backorder;
				break;
			}
		}
		backOrderHook = document.createElement("div");
		if(! dojo.byId(dojo.byId("product" + productNumber + "_backOrderHook"))){
		backOrderHook.setAttribute("id", "product" + productNumber + "_backOrderHook");
		dojo.byId('product' + productNumber).appendChild(backOrderHook);
		}
		removeChildren(dojo.byId("product" + productNumber + "_backOrderHook"));
		if (backorder) {
				var dl = document.createElement("dl");
				var dd = document.createElement("dd");
				setClass(dd, "specialAlerts");
				var backOrderMessage = document.createTextNode("This item is backordered untill "  + this._formatDate(backorder,""));;
				dd.appendChild(backOrderMessage);
				dl.appendChild(dd);
				dojo.byId('product' + productNumber + '_backOrderHook').appendChild(dl);
			}
	},
	_formatDate: function (dateStr,separator)
	{
		var year = "";
		var day = "";
		var month = "";
		var date="";
		var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
		var SHORTMONTH_NAMES =new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
		if (((dateStr.length) == 8) && (isNumeric(dateStr))) {
		   year = dateStr.substr(0,4);
		   month =dateStr.substr(4,2);
		   day = dateStr.substr(6,2);
		   
		   if (separator != ""){
		       date = month + separator + day + separator + year;     
		   } else {
		       //date = "#MonthAsString(month)# #day#, #year#";   
				   date = MONTH_NAMES[month-1] + " " + day +" "  +year;
		   }
		} 
		return date;
	},
	_setPipFormValues: function(productNumber, dataSet, sku){
		//guard against non leaf node in dataSet.
		if(!dataSet || !dataSet.sku)
			return;
		
		
		var form = dojo.byId('pipform');
		form["skuName_product" + productNumber].value = dataSet.skuName;
		form["skuid" + productNumber].value = dataSet.sku;
		var price = dataSet.price;
		if(price.regular > price.saleSpecial)
			form["price_product" + productNumber].value = dataSet.price.regular;
		else
			form["price_product" + productNumber].value = dataSet.price.saleSpecial;
		form["backorder_product" + productNumber].value = dataSet.backorder;
		form["cartThumbSrc_product" + productNumber].value = dataSet.thumb.src;
		form["cartThumbAlt_product" + productNumber].value = dataSet.thumb.alt;
		form["isMultiple_product" + productNumber].value = 1;
		form["skuquantity" + productNumber].value = dojo.byId('qty_product' + productNumber).value;
		//form["giftwrap"].value = 0; 
		//form["pip_shiptoproduct" + productNumber].value = dojo.byId('pip_shiptoproduct' + productNumber).value;
		
		//check shipTo value
		if(dojo.query('.shipTo').length > 0){
			shipToInfo = dojo.query('.shipTo')[0].value;
			form["pip_shiptoproduct" + productNumber].value = shipToInfo;
		}
			
		if(!form["catalog" + productNumber]){
			var input = document.createElement("input");
			input.setAttribute("id", "catalog" + productNumber);
			input.setAttribute("name", "catalog" + productNumber);
			input.setAttribute("type", "hidden");
			form.appendChild(input);
		}
		form["catalog" + productNumber].value = dataSet.catalog;
	},
	_populateQuantityBox: function(productNumber){
		var qty = dojo.byId("qty_product" + productNumber);
		if(qty && qty.value==""){
			if(dojo.byId('qtyEdit_' + (productNumber) ) && dojo.byId('qtyEdit_' + (productNumber)).value !=""){
				qty.value = dojo.byId('qtyEdit_' + (productNumber) ).value;
			} else {
				qty.value = "1";
			}
		}
	},
	_populateQuantityBoxEditMode: function(productNumber){
		var qty = dojo.byId("qty_product" + (productNumber +1));
		if(qty &&  qty.value==""){
			if(dojo.byId('qtyEdit_' + (productNumber +1) ) && dojo.byId('qtyEdit_' + (productNumber+1)).value !=""){
				qty.value = dojo.byId('qtyEdit_' + (productNumber+1) ).value;
				this.isNLAInEditMode= false;
			}
		}
	},
	_populateDropDownEditMode: function(productNumber){
		if(dojo.isIE){
			var self = this;
			setTimeout(function(){
				self._populateDropDownEditModeHelper(self, productNumber);
			}, 10);
		}else{
			this._populateDropDownEditModeHelper(this, productNumber);
		}
	},
	_populateDropDownEditModeHelper: function(scopeObject, productNumber){
		if(dojo.byId('skuEdit_' + (productNumber +1) ) && dojo.byId('skuEdit_' + (productNumber+1)).value !="" ){
			scopeObject._findSkuInDropDowns(dojo.byId('skuEdit_' + (productNumber+1) ).value,productNumber);
		}
	},
	_generateXMLRequestFromForm: function(form){
		var productNumber = 1;
		var itemNode, needGiftWrap, shipToInfo;
		while(productNumber <= productMap.products.productSet.length){
			//if(productNumber >7)
			//alert(form["skuid" + productNumber].value);
			
			if ((form["skuid" + productNumber].value != "") && (form["skuquantity" + productNumber].value != "")) {
				itemNode = this._xml.createElement("item");
				itemNode.appendChild(this._createXMLNodeWithTextValue("sku", form["skuid" + productNumber].value));
				if(form["backorder_product" + productNumber].value != "")
					itemNode.appendChild(this._createXMLNodeWithTextValue("backorderinfo", form["backorder_product" + productNumber].value));
				itemNode.appendChild(this._createXMLNodeWithTextValue("quantity", form["skuquantity" + productNumber].value));
				if(form["catalog" + productNumber])
					itemNode.appendChild(this._createXMLNodeWithTextValue("catalog", form["catalog" + productNumber].value));
				this._xml.getElementsByTagName("items")[0].appendChild(itemNode);
				/*
				if (form["giftwrap_product" + productNumber]) {
					needGiftWrap = form["giftwrap_product" + productNumber].value;
					itemNode.appendChild(this._createXMLNodeWithTextValue("wrapany", form["giftwrap_product" + productNumber].value));
				}
				else {
					needGiftWrap = "0";
					itemNode.appendChild(this._createXMLNodeWithTextValue("wrapany", "0"));
				}
				*/
			}
			productNumber++;
		}
		
		//check shipTo value
		if(dojo.query('.shipTo').length > 0)
			shipToInfo = dojo.query('.shipTo')[0].value;
		if(shipToInfo) {
			this._xml.getElementsByTagName("shiptoinfo")[0].appendChild(this._xml.createTextNode(shipToInfo));
		}
		if (dojo.byId('giftwrap') && (dojo.byId('giftwrap').value != "1")) {
			this._xml.getElementsByTagName("addtocartrequest")[0].appendChild(this._createXMLNodeWithTextValue("wrapany", "0"));
		}
		if (dojo.byId('isgiftcard')) {
			this._xml.getElementsByTagName("isgiftcard")[0].appendChild(this._xml.createTextNode("1"));
		} else {
			this._xml.getElementsByTagName("isgiftcard")[0].appendChild(this._xml.createTextNode("0"));
		}
	},
	_createXMLNodeWithTextValue: function(tagName, textValue){
		var node = this._xml.createElement(tagName);
		var textNode = this._xml.createTextNode(textValue);
		node.appendChild(textNode);
		return node;
	},
	_sendXMLToRIAService: function(){
		//generate an xmlString from this._xml
		var xmlStr;
		if(dojo.isIE){
			xmlStr = this._xml.xml;
		}else{
			var s = new XMLSerializer();
			xmlStr = s.serializeToString(this._xml);
		}
		var self = this;
		dojo.xhrPost({
			handleAs: "xml",
			url: "/services/wh/shoppingcart",
			content: { "p_xml": xmlStr },
			handle: function(res, ioArgs){
				if(dojo._isDocumentOk(ioArgs.xhr)){
					self._processXMLResponse(res);
					self._resetBaseXMLRequest();
					return true;
				}else{
					console.debug("doc failed."); 
					return false; 
				}		
			},
			sync: true
		});
	},
	_setBasketCount: function(totalQuantity){
		var basketCount = dojo.byId("basketCount");
		if(basketCount)
			basketCount.innerHTML = totalQuantity;
	},
	_processXMLResponse: function(xml){
		//check xml for typeof Document
		if(typeof xml != 'object')
			xml = dojox.data.dom.createDocument(xml);	
			
		//check xml for instance of 'pageid' node
		if (xml.getElementsByTagName("pageid").length > 0) {
			// A pageid was in the xml, submit the page and it will take the user to the interstitial pages
			var transactionId = xml.getElementsByTagName("transactionid");
			dojo.byId("transactionid").value = (transactionId.length > 0) ? transactionId[0].value : "-1";
			this.setHiddenValues();
			var formObj = dojo.byId('pipform');
			formObj.method = "post";
			formObj.submit();
			return;
		}
			
		var totalItemQuantity = xml.getElementsByTagName("totalquantity")[0].firstChild.nodeValue;
		this._setBasketCount(totalItemQuantity);
		
		var dialog = dijit.byId('dialog0');
		dialog.renderFromXML(xml);
		dialog.show();
	},
	_isFormValidAndRenderErrorMessages :function(form){
		var productList = productMap.products.productSet;
		var Skuerror= new Array();
		var skuWiseError =false;
		var anyValidRow =false;
                if(form["skuquantity1"] && form["skuquantity1"].value !=""){
                        if(isNumeric(form["skuquantity1"].value) && parseInt(form["skuquantity1"].value, 10) >0 && parseInt(form["skuquantity1"].value, 10) < 100){
                                if(this._checkDropDownValid(form,1) ==0){
                                        skuWiseError=true;
                                        //This error message may change. This is copied from production.
                                        Skuerror.push({"id": productList[0], "messageID": "svcseldropdown"});
                                
                                } else{
                                        anyValidRow =true;
                                }
                        } else {
                                skuWiseError=true;
                                Skuerror.push({"id": productList[0], "messageID": "qtyreq"});
                        }
                }
                
                if(this._checkDropDownValid(form,1) ==1){
                        if(form["skuquantity1"].value !="" && (isNumeric(form["skuquantity1"].value) && parseInt(form["skuquantity1"].value, 10) >0 && parseInt(form["skuquantity1"].value, 10) < 100))
                        {
                        anyValidRow =true;
                        } else {
                                skuWiseError=true;
                                Skuerror.push({"id": productList[0], "messageID": "qtyreq"});
                        }
                } 
				
                if (Skuerror.length > 0 || (Skuerror.length ==0 && !anyValidRow)) {
                        if(Skuerror.length >0){
                                this.showSkuErrors(Skuerror);
                                //this.showGeneralError(true);
                        } else {
                                this.showGeneralError(false);
                        }
                        return false;	
                }  else {
                            return true;
                }
	},
	_checkDropDownValid :function(form, productNumber){
		//This function returns -1 when it is not a dropdown
		// 0 when dropdown exists but not selected
		// 1 when dropdown exists and a valid selction is done
		for(var attrInteger =4 ;attrInteger >1; attrInteger--)
		{
			if(dojo.byId("product" + productNumber + "_attr" + attrInteger )){
				return (dojo.byId("product" + productNumber + "_attr" + attrInteger).value != "");
			} else {
				continue;
			}
		}
		return -1;
	},
	showSkuErrors:  function(errorObj) {
		for(var errorCnt =0 ;errorCnt < errorObj.length; errorCnt = errorCnt + 1 ){
			
			var errorContainer = dojo.byId("PageWiseErrorContainer");
			errorContainer.innerHTML ='';
			var divContainer = document.createElement("div");
		
			setClass(divContainer, "errorMsg");
			var dt = document.createElement("dt");
			dt.appendChild(document.createTextNode(this.getErrorMessageByMessageId(errorObj[errorCnt].messageID)));
			divContainer.appendChild(dt);
			if(errorContainer)
				errorContainer.appendChild(divContainer);
		}
		

	},
	getErrorMessageByMessageId: function(messageId){
		return ErrorMap[messageId];
	},
	showGeneralError: function(areSkuErrors) {
		var generalErrorPip = "Please select a gift card amount and enter a quantity before continuing."
		var errorSkuWise = "Please select the items you wish to purchase. Enter a quantity between 1 and 99. ";
		var errorMessage = "";
		if(areSkuErrors){
			errorMessage = errorSkuWise;
		} else {
			errorMessage =generalErrorPip;
		} 
		
		var prodObjGEn = dojo.byId("PageWiseErrorContainer");
		prodObjGEn.innerHTML ='';
		var container = document.createElement("div");
			
		setClass(container, "errorMsg");
		container.appendChild(document.createTextNode(errorMessage));
		prodObjGEn.appendChild(container);
	},
	removeErrors: function() {
		var genErrorContainer = dojo.byId("PageWiseErrorContainer");
		if(genErrorContainer) {
			removeChildren(genErrorContainer);
		}
		var productList = productMap.products.productSet;
		for(prodCnt =1;prodCnt <= productList.length; prodCnt = prodCnt + 1)
		{
			var skuErrorContainer = dojo.byId("SkuWiseErrorContainer_product" + prodCnt );
			removeChildren(skuErrorContainer);
		}
	},
	showErrorForSku: function(infoObj) {
                var errorObj = infoObj.getElementsByTagName("error");
		
		//var errorObj = (errors.length > 0) ? errors.error : null;
		var productList = this.productMap.products;
		
		this.removeErrors();
		var prodObj = dojo.byId("placeholder");
		prodObj.innerHTML ="";
		if (errorObj.length > 0) {
			for (var i=0; i<errorObj.length; i++) {
				//var prodId = this.dropdownObj.getMatchingSkuProductId(productList, errorObj[i].getElementsByTagName("sku")[0].firstChild);
				
				var el = document.createElement("div");
				setClass(el, "errorMsg");
				var icon = document.createElement("div");
				setClass(icon, "alertIcon");
				icon.appendChild(document.createTextNode("!"));
				el.appendChild(icon);
				el.appendChild(document.createTextNode(this.getMessageText(errorObj[i].getElementsByTagName("message")[0].firstChild.nodeValue)));
				prodObj.appendChild(el);
			}
		}
	},
        //does an XML RIA post
	_handleAddToCart: function(sourceElem){
		try
		{
                        var  form =dojo.byId('pipform');
			this.removeErrors();
			if(this._isFormValidAndRenderErrorMessages(form)==false) {
				return false;
			}
			this._generateXMLRequestFromForm(form);		
			this._sendXMLToRIAService();	
		}catch(err){
			console.debug("error addtoCartXML");			
		}
		return false;
	},
    //does a standard form submit
    _handleAddToCartGiftGiver: function(sourceElem){
		try
		{
                        var form =dojo.byId('pipform');
			this.removeErrors();
			if(this._isFormValidAndRenderErrorMessages(form)==false) {
				return false;
			}
                        form.submit();
		}catch(err){
			console.debug("Unable to submit GiftGiver Form.");			
		}
		return false;
	},
	setHiddenValues: function() {
		var productArr = productMap.products.productSet;
		var formObj = dojo.byId('pipform');
		if (!isEmpty(dojo.byId("giftwrap")) && !isEmpty(dojo.byId("wrapany"))) {
			dojo.byId("wrapany").value = (dojo.byId("giftwrap").checked) ? "1" : "0";
		}
		
		if (!isEmpty(dojo.byId("pip_shipto")) && !isEmpty(dojo.byId("shipto"))) {
			dojo.byId("shipto").value = dojo.byId("pip_shipto").value;
		}
		
		if(!isEmpty(formObj["registry"]) && !isEmpty(dojo.byId("shiptooption"))) {
			var radioEl = formObj["registry"];
			var registryValue = "";
			
			if (!isEmpty(radioEl) && radioEl.length > 0) {
				for (var i=0; i<radioEl.length; i++) {
					if (radioEl[i].checked) {
						registryValue = radioEl[i].value;
						break;
					}
				}
			}
			dojo.byId("shiptooption").value = registryValue;
		}
	},
	showEmailPopup: function(url){
		if(url)
			window.open(url, "emailPopup", "width=470,height=675,status=yes,resizable=no,scrollbars=no");
	},
	showPrintPopup: function(url){
		if(url)
			window.open(url, "printPopup", "width=770,status=yes,resizable=no,scrollbars=yes"); 
	},
	showProductInfoTabs: function(){
		if(dojo.query('.product-info-tabs-loading').length < 1)
			return;
		dojo.query('.product-info-tabs-loading')[0].style["display"] = "none";
		
		if(dojo.query('.product-info-tabs').length < 1)
			return;
		dojo.query('.product-info-tabs')[0].style["opacity"] =  0;
		dojo.query('.product-info-tabs')[0].style["visibility"] =  "visible";
		dojo.fadeIn({ node: dojo.query('.product-info-tabs')[0], duration: 50}).play();
	}	
});

function DisplayPopup(popName, featureList) {
	var self = this;
	this.init(popName, featureList);
}

DisplayPopup.prototype = {
	init: function(popName, featureList) {
		this.popName = (!popName) ? "newWin" : popName;
		this.featureList = (!featureList) ? "" : featureList;
		this.newWin = "";
		this.althref = "";
	},
	
	show: function(url) {
		var urlStr = (this.althref != "") ? this.althref : url;
		this.newWin = window.open(urlStr, this.popName, this.featureList);
		this.focus();
	},
	
	close: function() {
		this.newWin.close();
	},
	
	focus: function() {
		this.newWin.focus();
	},
	
	changeUrl: function(urlStr) {
		if (urlStr) this.althref = urlStr;
	}
};