/*****************************************************************************
Contains all behavioral code for the core sites including ajax interactions
******************************************************************************/


/*****************************************************************************
Mix and Match Template Scripts
******************************************************************************/
function MixAndMatchResp(){}
MixAndMatchResp.prototype.objectType=function(){return "MixAndMatchResp";}
var MixAndMatchResp_mixAndMatchSelections = "mixAndMatchSelections";

function MixAndMatchReq(){}
MixAndMatchReq.prototype.objectType=function(){return "MixAndMatchReq";}
var MixAndMatchReq_action = "action";
var MixAndMatchReq_categoryId = "categoryId";
var MixAndMatchReq_productId = "productId";
var MixAndMatchReq_product = "product";
var MixAndMatchReq_deleteProducts = "deleteProducts";

function MixAndMatchSelections(){}
MixAndMatchSelections.prototype.objectType=function(){return "MixAndMatchSelections";}
var MixAndMatchSelections_mainProductSelections = "mainProductSelections";
var MixAndMatchSelections_productSelections = "productSelections";

function MixMatchProduct(){}
MixMatchProduct.prototype.objectType=function(){return "MixMatchProduct";}
var MixMatchProduct_productId = "productId";
var MixMatchProduct_displayName = "displayName";
var MixMatchProduct_itemId = "itemId";
var MixMatchProduct_mLargeImage = "mLargeImage";
var MixMatchProduct_aLargeImage = "aLargeImage";
var MixMatchProduct_mThumbImage = "mThumbImage";
var MixMatchProduct_aThumbImage = "aThumbImage";
var MixMatchProduct_longDescription = "longDescription";

var MixAndMatchHandler = function() {
	
	this.selectMainProduct = function(categoryId,mLargeImage,mThumbImage,aLargeImage,aThumbImage,displayName,longDescription,productId,itemId) {
					
		var mixMatch = new MixAndMatchReq();
										
		var product = new MixMatchProduct();		
		product[MixMatchProduct_productId] = productId;
		product[MixMatchProduct_displayName] = displayName;
		product[MixMatchProduct_itemId] = itemId;
		product[MixMatchProduct_mLargeImage] = mLargeImage;
		product[MixMatchProduct_aLargeImage] = aLargeImage;
		product[MixMatchProduct_mThumbImage] = mThumbImage;
		product[MixMatchProduct_aThumbImage] = aThumbImage;
		product[MixMatchProduct_longDescription] = encodeURI(longDescription);
		mixMatch[MixAndMatchReq_action] = 2;	
		mixMatch[MixAndMatchReq_categoryId] = categoryId;
		mixMatch[MixAndMatchReq_product] = product;
		defaultGateway.ajaxService(mixMatch, this.handleSuccess, this.handleFailure);
	};
	
	this.addProductSelection = function(categoryId,productId,displayName,itemId) {		
		
		var mixMatch = new MixAndMatchReq();
		
		var product = new MixMatchProduct();		
		product[MixMatchProduct_productId] = productId;
		product[MixMatchProduct_displayName] = displayName;
		product[MixMatchProduct_itemId] = itemId;
		
		mixMatch[MixAndMatchReq_action] = 3;		
		mixMatch[MixAndMatchReq_categoryId] = categoryId;
		mixMatch[MixAndMatchReq_product] = product;
		
		defaultGateway.ajaxService(mixMatch, this.refreshSelectionList, this.handleFailure);
	};
	
	this.deleteProductSelection = function(categoryId,deleteProducts) {		
		defaultGateway.USE_SINGLE_CALLSTACK = false;
		var mixMatch = new MixAndMatchReq();
		mixMatch[MixAndMatchReq_action] = 4;		
		mixMatch[MixAndMatchReq_categoryId] = categoryId;
		mixMatch[MixAndMatchReq_deleteProducts] = deleteProducts;
		defaultGateway.ajaxService(mixMatch, this.refreshSelectionList, this.handleFailure);
	};
		
	this.handleSuccess = function(resp){};
	this.handleFailure = function(resp){
		alert("We encountered a problem with your request. Please try again.");
	};
	
	this.refreshSelectionList = function(resp){
	
		var currentMixMatch = resp.mixAndMatchSelections;
	
		//refresh selection list
		var productSelections = currentMixMatch.productSelections;
		var productIdList = "";
		for (var i=0; i < productSelections.entry.length; i++){
			var categoryId = productSelections.entry[i].string;
			var productList = productSelections.entry[i].list;
			var updatedDiv="";
			for (var j=0; j < productList.length; j++){
				var productSelection = productList[j];			
				updatedDiv = updatedDiv + "<table cellspacing=0 cellpadding=0 ><tr><td align=left valign=top><INPUT TYPE=CHECKBOX NAME='"+ productSelection.productId + "'></td>";
				updatedDiv = updatedDiv + "<td align=left valign=top><font CLASS=GREY12B>"+ productSelection.displayName+ "</font><br><font CLASS=smallcrumb>" + productSelection.itemId + "</font><br><br></td></tr></table>";
				productIdList = productIdList + "," + productSelection.productId;
			}
			var divName = "SelectDiv"+categoryId
			document.getElementById(divName).innerHTML=updatedDiv;
		}
		
		document.selectionForm.itemIds.value = productIdList;
		// display buttons if items are selected
		if (productIdList.length > 0){
			document.getElementById("DeleteOrderDiv").style.display="block";
		} else {
			document.getElementById("DeleteOrderDiv").style.display="none";
		}
	}
}

function initializeSelections(){			
	var mixMatch = new MixAndMatchReq();
	mixMatch[MixAndMatchReq_action] = 1;
	defaultGateway.ajaxService(mixMatch, mixAndMatchHandler.refreshSelectionList, mixAndMatchHandler.handleFailure);
}

function switchParent(categoryId,mLargeImage,mThumbImage,aLargeImage,aThumbImage,displayName,longDescription, productId, itemId){
								
	var swapImgName = "largeImgName" + categoryId;
	MM_swapImage_Mix_Match(swapImgName,'',mLargeImage,1);

	var thumbImgName = "thumbImgName" + categoryId;
	if (aThumbImage != null && aThumbImage.length > 1){		
		MM_swapImage_Mix_Match(thumbImgName,'',aThumbImage,1);
	} else {
		MM_swapImage_Mix_Match(thumbImgName,'','/store/catalog/images/shim.gif',1);
	}
		
	while(displayName.indexOf("~") > -1){
		displayName = displayName.replace("~","'");
	}	
	while(displayName.indexOf("|") > -1){
		displayName = displayName.replace("|","\"");
	}
	while(longDescription.indexOf("~") > -1){
		longDescription = longDescription.replace("~","'");
	}
	while(longDescription.indexOf("|") > -1){
		longDescription = longDescription.replace("|","\"");
	}
	if (longDescription != null) longDescription = decodeURI(longDescription);
					
	var formName = "form"+categoryId;	
	var formElement = document.getElementById(formName);	
	if (formElement != null){
				
		formElement.elements["mLargeImg"+categoryId].value=mLargeImage;
		formElement.elements["aLargeImg"+categoryId].value=aLargeImage;
		formElement.elements["mThumbImg"+categoryId].value=mThumbImage;
		formElement.elements["aThumbImg"+categoryId].value=aThumbImage;
		formElement.elements["displayName"+categoryId].value=displayName;
		formElement.elements["productId"+categoryId].value=productId;
		formElement.elements["itemId"+categoryId].value=itemId;
	 
		document.getElementById("Div1"+categoryId).innerHTML="<FONT CLASS=BLACK13B>"+displayName+"</FONT><br><FONT CLASS=smallcrumb>"+longDescription+"</FONT>";
	}	
		
	mixAndMatchHandler.selectMainProduct(categoryId,mLargeImage,mThumbImage,aLargeImage,aThumbImage,displayName,longDescription,productId,itemId);
}
		
function MM_swapImage_Mix_Match() { //v3.0
	var i,j=0,x,a=MM_swapImage_Mix_Match.arguments; parent.document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj_Mix_Match(a[i]))!=null){parent.document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_findObj_Mix_Match(n, d) { //v4.0
	var p,i,x;  if(!d) d=parent.document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].parent.document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj_Mix_Match(n,d.layers[i].parent.document);
	if(!x && parent.document.getElementById) x=parent.document.getElementById(n); return x;
}

var mixAndMatchHandler = new MixAndMatchHandler();

function GetFragmentReq(){}
GetFragmentReq.prototype.objectType=function(){return "GetFragmentReq";}
var GetFragmentReq_url = "url";

function EventRsvpReq(){}
EventRsvpReq.prototype.objectType=function(){return "EventRsvpReq";}
var EventRsvpReq_selectedEventId = "selectedEventId";
var EventRsvpReq_eventStoreId = "eventStoreId";
var EventRsvpReq_email = "email";
var EventRsvpReq_firstName = "firstName";
var EventRsvpReq_lastName = "lastName";
var EventRsvpReq_phoneNumber = "phoneNumber";
var EventRsvpReq_postalCode = "postalCode";
var EventRsvpReq_numAttending = "numAttending";
var EventRsvpReq_flgSpam = "flgSpam";


/*****************************************************************************
Need to determine where these came from
******************************************************************************/
var gSelectedProductId = null;
var gProductPanelBean = null;
var gRoomCartItemCount = 0;
var gRoomCartBean = null;
var gCurrentRoomCategory = null;
var gUniqueId = 0;

var ROOM_CART_COOKIE_NAME = "ROOMCART_COOKIE";
var COOKIE_SEPARATOR = ",";

function addProductToCookie(productId) {
	var cookieValue = getCookie(ROOM_CART_COOKIE_NAME);

	if (cookieValue != null && cookieValue.length > 0) {
		cookieValue += COOKIE_SEPARATOR + productId;
	} else {
		cookieValue = productId;
	}

	setCookie(ROOM_CART_COOKIE_NAME, cookieValue, 1000);
}

function addProductToRoomCart() {
	var divId = buildDivId(gSelectedProductId);
	var productSilhouette = document.getElementById(divId);

	if (gRoomCartItemCount < 100) {
		if (productSilhouette == null) {
			var roomCartProducts = getRoomCartProductsDiv();
			var productBean = getProduct(gSelectedProductId);

			if (productBean != null) {
				if (gRoomCartItemCount == 0) {
					var silhouette = buildProductSilhouette(divId,productBean.cgImageShot,productBean.cmosProductId,productBean.isSoldOut,true,false);
					roomCartProducts.innerHTML = silhouette + buildBuyYourLook();
				} else {
					var plusElement = document.createElement("div");
					plusElement.className = "plusSign";
					plusElement.id = "plusSign";
					var innerHTML = buildInnerPlus();
					plusElement.innerHTML = innerHTML;

					var prodElement = document.createElement("div");
					prodElement.className = "productSilhouette";
					prodElement.id = divId;
					innerHTML = buildInnerProductSilhouette(divId,productBean.cgImageShot, productBean.cmosProductId,
						productBean.isSoldOut,true);
					prodElement.innerHTML = innerHTML;

					if (gRoomCartItemCount < 8) {
						roomCartProducts.insertBefore(plusElement,roomCartProducts.lastChild);
						roomCartProducts.insertBefore(prodElement,roomCartProducts.lastChild);
					} else  if (gRoomCartItemCount == 8) {
						roomCartProducts.appendChild(prodElement);
					} else {
						roomCartProducts.appendChild(plusElement);
						roomCartProducts.appendChild(prodElement);
					}
				}

				++gRoomCartItemCount;
				addProductToCookie(gSelectedProductId);
				omnitureAddProduct(productBean.cmosProductId);
			}
		} else {
			displayWarningDialog("You will be able to order more than one of this item at the next step in the process.");
		}
	} else {
		displayWarningDialog("Your room cart is full.  You will not be able to add additional items until existing ones are removed.");
	}
}

function buildBuyYourLook() {
	var returnValue = '<div id="buyYourLookButton"><a href="javascript:buyYourLook();"><img src="/category/nav/shopbyroom/images/buy_look.gif"></a></div>';
	return returnValue;
}

function buildEmptyRoomCart() {
	var returnValue = "";

	returnValue += buildProductSilhouette("","/category/nav/shopbyroom/images/chair_sil.gif","1",false,false,true);
	returnValue += buildProductSilhouette("","/category/nav/shopbyroom/images/lamp_sil.gif","2",false,false,true);
	returnValue += buildProductSilhouette("","/category/nav/shopbyroom/images/chest_sil.gif","3",false,false,false);
	returnValue += buildBuyYourLook();

	return returnValue;
}

function buildInnerPlus() {
	return '<img src="/category/nav/shopbyroom/images/plus.gif">';
}

function buildInnerProductSilhouette(divId, productImage, cmosProductId, soldOut, allowRemove) {
	var returnValue = null;

	var imgString = "<" + 'img src="' + productImage + '"' + ">";
    var removeItemDiv = '<div class="removeLabel"><a href="javascript:removeProductFromRoomCart(' + "'" + divId + "'" + ')"><img src="/category/nav/shopbyroom/images/remove_item.gif" border="0"></a></div>';
    var soldOutDiv = '<div class="soldOutTag"><img src="/category/nav/shopbyroom/images/sold_tag.png"></div>';
	var catalogInfoDiv = '<input type="hidden" id="' + divId + '_catalogId" value="' + cmosProductId + '">';
	returnValue = imgString + catalogInfoDiv;

    if (allowRemove) {
    	returnValue += removeItemDiv;
    }

    if (soldOut) {
    	returnValue += soldOutDiv;
    }

    return returnValue;
}

function buildPlus() {
	return '<div class="plusSign">' + buildInnerPlus() + "</div>";
}

function buildProductSilhouette(divId, productImage, cmosProductId, soldOut, allowRemove, addSeparator) {
    var returnValue = "";
    var divString = '<div id="' + divId + '" class="productSilhouette">';
    var divCloseString = "</div>";

    returnValue = divString + buildInnerProductSilhouette(divId, productImage, cmosProductId, soldOut, allowRemove) + divCloseString;

    if (addSeparator) {
    	returnValue += buildPlus();
    }

	return returnValue;
}

function buildDivId(id) {
	//++gUniqueId;
	//return id + "_" + gUniqueId;
	return id;
}

function buyYourLook() {
	var buyYourLookForm = document.forms["roomCartForm"];
	var cookieValue = getCookie(ROOM_CART_COOKIE_NAME);
	var itemIds = document.getElementById("itemIds");
	itemIds.value = cookieValue;
	buyYourLookForm.submit();
}

function displayBackground() {
 	var anim2 = new YAHOO.util.Anim('opaqueBackground', { opacity: { to: .8 } }, 2.5, YAHOO.util.Easing.easeIn);
	var opaqueBackground = document.getElementById("opaqueBackground");
	opaqueBackground.style.display = "block";
    anim2.animate();
}

function displayProductPanel() {
 	var anim1 = new YAHOO.util.Anim('productPanel', { opacity: { to: 1 } }, 1, YAHOO.util.Easing.easeIn);
 	//var anim2 = new YAHOO.util.Anim('opaqueBackground', { opacity: { to: .8 } }, 1, YAHOO.util.Easing.easeIn);

	var productPanel = document.getElementById("productPanel");
	productPanel.style.display = "block";

	//var opaqueBackground = document.getElementById("opaqueBackground");
	//opaqueBackground.style.display = "block";

	anim1.animate();
    //anim2.animate();
}

function displayWarningDialog(message) {
	// Define various event handlers for Dialog
	var handleYes = function() {
		this.hide();
	};

	var simpleDialog1 = new YAHOO.widget.SimpleDialog("simpledialog1",
		 { width: "300px",
		   fixedcenter: true,
		   visible: false,
		   draggable: false,
		   close: false,
		   text: message,
		   modal: true,
		   constraintoviewport: true,
		   buttons: [ { text:"Continue",handler:handleYes,isDefault:true }]
		 } );

	simpleDialog1.render("page");
	simpleDialog1.show();
}

function getChildIndex(parent, child) {
	var returnValue = -1;
	var children = parent.childNodes;

	for(var i = 0; i < children.length; ++i) {
		if (child == children[i]) {
			returnValue = i;
			break;
		}
	}

	return returnValue;
}

function getCookie(c_name) {
	if (document.cookie.length > 0) {
  		c_start=document.cookie.indexOf(c_name + "=");
  		if (c_start!=-1) {
    		c_start=c_start + c_name.length + 1;
    		c_end=document.cookie.indexOf(";",c_start);

    		if (c_end==-1) c_end=document.cookie.length;
    			return unescape(document.cookie.substring(c_start,c_end));
  		}
  	}
	return "";
}

function getProduct(productId) {
	var returnValue = null;

    if (gProductPanelBean != null) {
	   	var productBeans = gProductPanelBean.productBeans;

	   	for(i = 0; i < productBeans.length; ++i) {
	   		if (productBeans[i].productId == productId) {
	   			returnValue = productBeans[i];
	   			break;
	   		}
	   	}
   	}

	return returnValue;
}

function getProductIdFromDivId(divId) {
	var returnValue = "";

	//var index = divId.indexOf("_");

	//if (index != -1) {
	//	returnValue = divId.substring(0,index);
	//}

	return divId;
}

function getRoomCartProductsDiv() {
	return document.getElementById("roomCartProducts");
}

function hideProductPanel() {
  var opaqueBackground = document.getElementById("opaqueBackground");
  opaqueBackground.style.display = "none";
  opaqueBackground.style.opacity = 0;
	opaqueBackground.style.filter = "filter: alpha(opacity=0)";
	var productPanel = document.getElementById("productPanel");
	productPanel.style.display = "none";
	productPanel.style.opacity = 0;
	productPanel.style.filter = "filter: alpha(opacity=0)";
	var page = document.getElementById("page");
	page.style.cursor = "auto";
}

function initializeEmptyRoomCart() {
	var roomCartProducts = getRoomCartProductsDiv();

	gRoomCartItemCount = 0;
	var emptyRoomCart = buildEmptyRoomCart();
	roomCartProducts.innerHTML = emptyRoomCart;

	setCookie(ROOM_CART_COOKIE_NAME,"",1000);
}

function omnitureAddProduct(cmosProductId) {
	var s_var = s_gi(s_account);
	s_var.channel = "Product";
	s_var.events = "event17";
	s_var.products = ";" + cmosProductId + ";1;;;event17=1";
	var s_code = s_var.t();if(s_code)document.write(s_code);
}

function omnitureProductPanel(categoryId) {
	var s_var = s_gi(s_account);
	s_var.pageName = "RoomView";
	s_var.products = categoryId;
	var s_code = s_var.t();if(s_code)document.write(s_code);
}

function omnitureRemoveProduct(cmosProductId) {
	var s_var = s_gi(s_account);
	s_var.channel = "Product";
	s_var.events = "event18";
	s_var.products = ";" + cmosProductId + ";1;;;event18=1";
	var s_code = s_var.t();if(s_code)document.write(s_code);
}

function popUp(url, width, height, scrolls) {
	winOptions = "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=" + scrolls + ",resizable=yes,copyhistory=no,width=" + width + ",height=" + height + ",screenX=20,screenY=20";
	var win = window.open(url, '', winOptions);
	if (!win.opener) win.opener = self; // For JS1.0
	if (win.focus) win.focus();
}

function removeProductFromCookie(productId) {
	var cookieValue = getCookie(ROOM_CART_COOKIE_NAME);
	if (cookieValue != null && cookieValue.length > 0) {
		var startIndex = cookieValue.indexOf(productId);

		if (startIndex == 0) {
		    var productIdLength = productId.length;

			if (cookieValue.length == productIdLength) {
				cookieValue = "";
			} else {
				cookieValue = cookieValue.substring(productIdLength + 1);
			}
		} else if (startIndex > 0) {
		    var startIndex = startIndex - 1;
		    var endIndex = startIndex + productId.length + 1;
		    var cookieValueLength = cookieValue.length;

			if (endIndex > cookieValue.length) {
				cookieValue = cookieValue.substring(0,startIndex);
			} else {
				cookieValue = cookieValue.substring(0,startIndex) + cookieValue.substring(endIndex);
			}
		}

		setCookie(ROOM_CART_COOKIE_NAME,cookieValue,1000);
	}
}

function removeProductFromRoomCart(divId) {
	var roomCartProducts = getRoomCartProductsDiv();

	var productSilhouette = document.getElementById(divId);

	if (productSilhouette != null) {
	    var plusSign = productSilhouette.previousSibling;

		if (plusSign != null && plusSign.className == "plusSign") {
			roomCartProducts.removeChild(plusSign);
		} else {
			plusSign = productSilhouette.nextSibling;

			if (plusSign != null && plusSign.className == "plusSign") {
				roomCartProducts.removeChild(plusSign);
			}
		}

		if (gRoomCartItemCount > 8) {
			var index = getChildIndex(roomCartProducts,productSilhouette);
			if (index < 14) {
				var buyYourLookButton = document.getElementById("buyYourLookButton");
				var nextProduct = buyYourLookButton.nextSibling;
				var nextPlus = nextProduct.nextSibling;
				if (nextPlus != null) {
					roomCartProducts.removeChild(nextPlus);
					roomCartProducts.insertBefore(nextPlus,buyYourLookButton);
				} else {
					var plusElement = document.createElement("div");
					plusElement.className = "plusSign";
					plusElement.id = "plusSign";
					var innerHTML = buildInnerPlus();
					plusElement.innerHTML = innerHTML;
					roomCartProducts.insertBefore(plusElement,buyYourLookButton);
				}

				roomCartProducts.removeChild(nextProduct);
				roomCartProducts.insertBefore(nextProduct,buyYourLookButton);
			}
		}

		/* var catalogId = document.getElementById(divId + "_catalogId");
		if (catalogId != null) {
			var cmosProductId = catalogId.value;

			if (cmosProductId != null && cmosProductId.length > 0) {
				omnitureRemoveProduct(cmosProductId);
			}
		} */

		roomCartProducts.removeChild(productSilhouette);

		--gRoomCartItemCount;

		var productId = getProductIdFromDivId(divId);
		removeProductFromCookie(productId);

		if (gRoomCartItemCount == 0) {
			initializeEmptyRoomCart();
		}
	}
}

function selectProduct(productId) {
	gSelectedProductId = productId;

	var selectedProduct = getProduct(productId);

	if (selectedProduct != null) {
		var productShot = document.getElementById("productShot");
		productShot.src = selectedProduct.mjImageShot;
		var cutlinePanel = document.getElementById("cutlinePanel");
		cutlinePanel.innerHTML = selectedProduct.cutline;

		var zoomDiv = document.getElementById("zoomDiv");

		if (selectedProduct.canZoom) {
			zoomDiv.style.visibility = "visible";
		} else {
			zoomDiv.style.visibility = "hidden";
		}
		
		var addProductDiv = document.getElementById("addProductDiv");
		
		if (selectedProduct.isSoldOut) {
			addProductDiv.style.visibility = "hidden";
		} else {
			addProductDiv.style.visibility = "visible";
		}
		
	}
}

function setCookie(c_name,value,expiredays) {
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=c_name+ "=" +escape(value)+
	((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function zoom() {
	var url = "/store/catalog/productImagesPopup.jhtml?selected=mg&mwsInfo=large&item=" + gSelectedProductId + "&yB=mg_" + gSelectedProductId;
	popUp(url,570,565,'yes');
}

/***************************************************************************************************
** Ajax calls and beans
****************************************************************************************************/
function successfulProductPanelResponse(responseObj) {
	gProductPanelBean = responseObj;
	var productBeans = gProductPanelBean.productBeans;
  
	if (productBeans == null) {
	  var page = document.getElementById("page");
	  page.style.cursor = "auto";	  
	} else if (productBeans.length > 0) {
		completeProductPanelResponse();
	} else {
		errorProductPanelResponse(null);
	}
}

function errorProductPanelResponse(err) {
	var page = document.getElementById("page");
	page.style.cursor = "auto";

	hideProductPanel();
}

function completeProductPanelResponse() {
	var page = document.getElementById("page");
	page.style.cursor = "auto";
	var productPanel = document.getElementById("productPanel");
	productPanel.innerHTML = gProductPanelBean.displayFragment;
	gSelectedProductId = gProductPanelBean.productBeans[0].productId;
	displayProductPanel();
	omnitureProductPanel(gProductPanelBean.categoryId);
}

function sendProductPanelRequest(categoryId) {
	displayBackground();

	var page = document.getElementById("page");
	page.style.cursor = "wait";
	var productPanelBean = new ProductPanelBean();
	productPanelBean.categoryId = categoryId;
	productPanelBean.roomCategoryId = gCurrentRoomCategory;
	defaultGateway.ajaxService(productPanelBean, successfulProductPanelResponse, errorProductPanelResponse);
}

function successfulRoomCartResponse(responseObj) {
	var productBeans = responseObj.productBeans;

	if (productBeans != null && productBeans.length > 0) {
		var count = productBeans.length;

		var innerHTML = "";
		var divId = "";
		var i;

		for(i = 0; i < count - 1; ++i) {
		    divId = buildDivId(productBeans[i].productId);

		    if (i == 7) {
		    	innerHTML += buildProductSilhouette(divId,productBeans[i].cgImageShot,
					productBeans[i].cmosProductId, productBeans[i].isSoldOut,true,false) +
					buildBuyYourLook();
		    } else {
		    	innerHTML += buildProductSilhouette(divId,productBeans[i].cgImageShot,
					productBeans[i].cmosProductId, productBeans[i].isSoldOut,true,true);
			}
		}

		i = count - 1;

		divId = buildDivId(productBeans[count-1].productId);
		innerHTML += buildProductSilhouette(divId,productBeans[count-1].cgImageShot,
				productBeans[i].cmosProductId, productBeans[count-1].isSoldOut,true,false);

		if (i < 8) {
			innerHTML += buildBuyYourLook();
		}

		gRoomCartItemCount = count;

		var roomCartProducts = getRoomCartProductsDiv();

		roomCartProducts.innerHTML = innerHTML;
	} else {
		initializeEmptyRoomCart();
	}
}

function errorRoomCartResponse(err) {
	initializeEmptyRoomCart();
}

function sendRoomCartRequest() {
	var roomCartBean = new RoomCartBean();
	roomCartBean.cookieValue = getCookie(ROOM_CART_COOKIE_NAME);
	roomCartBean.separator = COOKIE_SEPARATOR;
	defaultGateway.ajaxService(roomCartBean, successfulRoomCartResponse, errorRoomCartResponse);
}

function ProductPanelBean() {
}

ProductPanelBean.prototype.objectType = function() { return("ProductPanelBean"); };

function ProductBean() {
}

ProductBean.prototype.objectType = function() { return("ProductBean"); };

function RoomCartBean() {
}

RoomCartBean.prototype.objectType = function() { return("RoomCartBean"); };


/*
EmailForwarding functions
*/
function GetDeptForSubjectReq(){}
GetDeptForSubjectReq.prototype.objectType=function(){return "GetDeptForSubjectReq";}
GetDeptForSubjectReq.subjectKey = "subject";

function GetDeptForSubjectResp(){}
GetDeptForSubjectResp.prototype.objectType=function(){return "GetDeptForSubjectResp";}
GetDeptForSubjectResp.displayDeptFragmentKey = "displayDeptFragment";

function EmailForwardingForm(emailType){	
  this.emailType = emailType;
  this.deptSelection = document.getElementById("deptSelection");  
  this.subjectSelection = document.getElementById("emailSubject"); 
  YAHOO.util.Event.on( "emailSubject", "change", this.getDepartmentsForSubjectSelection, this);  		 			
}
EmailForwardingForm.prototype={
	getDepartmentsForSubjectSelection:function(e, obj){		
		var getDeptForSubjectRequest = new GetDeptForSubjectReq();
		getDeptForSubjectRequest[GetDeptForSubjectReq.subjectKey] = obj.subjectSelection.value;		
		if(obj.emailType === "contact24"){
			defaultGateway.ajaxService(getDeptForSubjectRequest, obj.showDeptSuccess, obj.onError, "getDeptForSubject24", obj);	
		}else{
			defaultGateway.ajaxService(getDeptForSubjectRequest, obj.showDeptSuccess, obj.onError, "getDeptForSubject", obj);	
		}
	},
	showDeptSuccess:function(responseObj){
		var deptResp = responseObj;				
		if (deptResp[GetDeptForSubjectResp.displayDeptFragmentKey]){		
			this.deptSelection.innerHTML = deptResp[GetDeptForSubjectResp.displayDeptFragmentKey];
		}
		else{
			this.deptSelection.innerHTML = "";
		}
	},
	onError:function(){alert("error");}
}




function submit(formName){
	formName.submit();
}

function hideDiv(divId){
    changeObjectVisibility(divId, "hidden");
	changeObjectVisibility("helpMsgDivInner", "hidden");
}

function showDiv(divId){
    changeObjectVisibility(divId, "visible");
	changeObjectVisibility("helpMsgDivInner", "visible");
}

function changeObjectDisplay(objectId, newDisplay) {
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
        styleObject.display = newDisplay;
        return true;
    } else {
        return false;
    }
}

function changeObjectVisibility(objectId, newVisibility) {
    var styleObject = getStyleObject(objectId);
    if(styleObject) {
        styleObject.visibility = newVisibility;
        return true;
    } else {
        return false;
    }
}

function changeObjectZIndex(objectId, newZIndex) {
   var styleObject = getStyleObject(objectId);
    if(styleObject) {
        styleObject.zIndex = newZIndex;
        return true;
    } else {
        return false;
    }
}

function getStyleObject(objectId) {
    if(document.getElementById && document.getElementById(objectId)) {
        return document.getElementById(objectId).style;
    } else if (document.all && document.all(objectId)) {
        return document.all(objectId).style;
    } else if (document.layers && document.layers[objectId]) {
        return document.layers[objectId];
    } else {
        return false;
    }
}

function calculateCount(field, countfield, maxlimit) {
	if(field.value.length > maxlimit){
		field.value = field.value.substring(0, maxlimit);
	}else{
		countfield.value = maxlimit - field.value.length;
	}
}

var comment = {
	commentId: null,
	
	show: function(productOverlayId, commentId, commentLinkId){		
		this.commentId = commentId;
		changeObjectZIndex(productOverlayId, 200);
		var commentObj = document.getElementById(commentId);
		if (!commentObj) return;		
		this.position(commentObj, commentLinkId);				
	},

	hide: function(productOverlayId, commentId){
		changeObjectZIndex(productOverlayId, 1);		
		jQuery('#t_'+commentId).empty().remove();		
	},

 	position: function(commentObj, commentLinkId) {	  	  	  
	  var $obj = jQuery('#'+commentObj.id).clone();
	  $obj.attr("id", "t_"+$obj.attr("id"));	  
	  jQuery('body').append($obj);	  
	  var $commentLink = jQuery('#'+commentLinkId);
	  $obj.css("position", "absolute");
	  $obj.css("visibility", "visible");
	  $obj.css("z-index", "200");	  
	  var y = $commentLink.offset().top-4;	  
	  $obj.css("top", y+"px");
	  $obj.css("left", $commentLink.offset().left+"px");	 
	}
} /** end var comment **/

function showFilter(filterLinkId, filterId){
	var filterObj = document.getElementById(filterId);
	if (!filterObj) return;
	
	if( filterLinkId != null ) {    
		var coordPositionDiv = document.getElementById(filterLinkId);
		var x=0;
		var y=0;
      
		while(coordPositionDiv.offsetParent) {
			x += coordPositionDiv.offsetLeft;
			coordPositionDiv=coordPositionDiv.offsetParent;
		}

		coordPositionDiv = document.getElementById(filterLinkId);

		while(coordPositionDiv.offsetParent) {
			y += coordPositionDiv.offsetTop;
			coordPositionDiv=coordPositionDiv.offsetParent;
		}
	}
    
    /* Adjust the coordinates for placement on the template*/
	y = y + 16;
	x = x - 8;


	filterObj.style.left = x + "px"; 
	filterObj.style.top = y + "px";
	filterObj.style.position ="absolute";
	
	changeObjectVisibility(filterId, "visible");
}

