// Javascript library for the product lister page / search results page / brand page

var RECORDS_PER_PAGE = 30;
var REFINEMENT_PARAMETER = "N=";
var SEARCH_TERM_PARAMETER = "Ntk=";
var SEARCH_INTERFACE_PARAMETER = "Ntt=";
var SORT_PARAMETER = "Ns=";
var PAGE_NUMBER_PARAMETER = "No=";
var updateCall = 0;
var endecaParameters;

// variables to store the price slider selection
var priceSliderMinimum;
var priceSliderMaximum;


// ----------- BEGIN BRAND PAGE FUNCTIONS -------------

function showBrandSubCategories(subCategoriesId) {
	if (document.getElementById(subCategoriesId).style.display == 'inline') {
		document.getElementById(subCategoriesId).style.display = 'none';	
	} else {
		document.getElementById(subCategoriesId).style.display = 'inline';		
	}
}

function hideBrandPageVideos(mainElementDiv, hideLinkDiv, showLinkDiv) {
	hideTermClouds(mainElementDiv, hideLinkDiv, showLinkDiv);
}

function showBrandPageVideos(mainElementDiv, hideLinkDiv, showLinkDiv) {
	showTermClouds(mainElementDiv, hideLinkDiv, showLinkDiv);
}

function playBrandVideo(videoReference, screenSize) {
	if (screenSize == 'wide') {
		var videoString = '<div class="wide_video_container"><object width="572" height="345"><param name="movie" value="http://www.youtube.com/'+videoReference+'&hl=en&fs=1&ap=%2526fmt%3D22&autoplay=1" type="application/x-shockwave-flash" width="572" height="345" allowfullscreen="true" wmode="transparent" /><embed src="http://www.youtube.com/'+videoReference+'&hl=en&fs=1&ap=&fmt=22&autoplay=1" type="application/x-shockwave-flash" width="572" height="345" wmode="transparent" allowfullscreen="true" /></object></div>';	
	} else {
		var videoString = '<div class="standard_video_container"><object width="425" height="344"><param name="movie" value="http://www.youtube.com/'+videoReference+'&hl=en&fs=1&ap=%2526fmt%3D22&autoplay=1" type="application/x-shockwave-flash" width="425" height="344" allowfullscreen="true" wmode="transparent" /><embed src="http://www.youtube.com/'+videoReference+'&hl=en&fs=1&ap=&fmt=22&autoplay=1" type="application/x-shockwave-flash" width="425" height="344" wmode="transparent" allowfullscreen="true" /></object></div>';			
	}
	document.getElementById('video_player').innerHTML = videoString;
}

// ------------ END BRAND PAGE FUNCTIONS --------------





// --------- BEGIN CLEARANCE PAGE FUNCTIONS -----------

function submitClearanceSelectionForm(clearanceSelectionForm){
	if (!busy) {
		busy = true;
		if (clearanceSelectionForm.N.options[clearanceSelectionForm.N.selectedIndex].value != 0) {
	         clearanceSelectionForm.submit();
		}
	}
	return false;
}

// ---------- END CLEARANCE PAGE FUNCTIONS ------------





// ----------- BEGIN LISTER PAGE FUNCTIONS ------------


/* ----------- BEGIN STYLE SHEET SWITCH FUNCTIONS ----------- */
function setActiveStyleSheet(title) { 
  var i, link, links; 
  links = document.getElementsByTagName("link"); 
  for(i=0; i<links.length; i++) { 
    link = links[i]; 
    if(link.getAttribute("title") && link.getAttribute("rel").indexOf("style") != -1) { 
	  link.disabled = true; 
	  if(link.getAttribute("title") == title) link.disabled = false; 
    } 
  } 
} 


function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}


function readCookie(pCookieName) {
  var returnValue = "";
  var cookies = document.cookie.split(";");
  for (var i=0; i<cookies.length; i++) {
    var cookieCrumbs = cookies[i].split("=");
    var cookieName = cookieCrumbs[0];
    var cookieValue = cookieCrumbs[1];
    // if the first character of the cookie name is a space, strip it
    if (cookieName.indexOf(" ") == 0) {
	  cookieName = cookieName.substring(1, cookieName.length);
	}
    if (cookieName.toUpperCase() == pCookieName.toUpperCase()) {
      returnValue = cookieValue;		
    }
  }  
  return returnValue;
}


function switchActiveStyleSheet(name) {
	setActiveStyleSheet(name);
  	createCookie("PLPVIEWCOOKIE", name, 7);
}


/* ------------ END STYLE SHEET SWITCH FUNCTIONS ------------ */


/* -------------- BEGIN TERM CLOUDS FUNCTIONS --------------- */
function hideTermClouds(mainElementDiv, hideLinkDiv, showLinkDiv) {
	document.getElementById(mainElementDiv).style.display = 'none';
	document.getElementById(hideLinkDiv).style.display = 'none';
	document.getElementById(showLinkDiv).style.display = 'block';
}

function showTermClouds(mainElementDiv, hideLinkDiv, showLinkDiv) {
	document.getElementById(mainElementDiv).style.display = 'block';
	document.getElementById(hideLinkDiv).style.display = 'block';
	document.getElementById(showLinkDiv).style.display = 'none';
}
/* --------------- END TERM CLOUDS FUNCTIONS ----------------- */


/* ----------------- BEGIN COMPARE FUNCTIONS ---------------- */
function selectall() {
	var checkboxArray = document.getElementsByName("R");
	for (var i=0; i<checkboxArray.length; i++) {
		checkboxArray[i].checked = true;
	}
}

function unselectall() {
	var checkboxArray = document.getElementsByName("R");
	for (var i=0; i<checkboxArray.length; i++) {
		checkboxArray[i].checked = false;
	}
}

function performCompare() {
	var url = "http://" + document.domain + "/webapp/wcs/stores/servlet/ProductCompareDisplay?storeId=10001&langId=-1&catalogId=10751";
	var parameters = "";
	var checkboxArray = document.getElementsByName("R");
	for (var i=0; i<checkboxArray.length && i<RECORDS_PER_PAGE; i++) {
		if (checkboxArray[i].checked == true && checkboxArray[i].value != null) {
			parameters = parameters + "+" + checkboxArray[i].value;
		}
	}
	url = url + "&R=" + parameters;
	var compareWindow = window.open(url);
}
/* ------------------ END COMPARE FUNCTIONS ----------------- */



function getMinFromPriceRangeString(priceRange) {
	var priceRangeString = "" + priceRange;
	var priceRangeValues = priceRangeString.split(" to ");
	return parseInt(priceRangeValues[0]);
}

function getMaxFromPriceRangeString(priceRange) {
	var priceRangeString = "" + priceRange;
	var priceRangeValues = priceRangeString.split(" to ");
	return parseInt(priceRangeValues[1]);
}


/*
 * function to initialise the page display overwriting standard elements
 * and links with ajax / jquery version
 */
function initialise() {
	endecaParameters = new Object();
	endecaParameters.N = endecaN;
	if (endecaNs != undefined && endecaNs.length > 3) {
		endecaParameters.Ns = endecaNs;
	}
	if (endecaNtk != undefined && endecaNtk.length > 4) {
		endecaParameters.Ntt = endecaNtt;
		endecaParameters.Ntk = endecaNtk;
	}
	$.each($("div#navigation-container .refinement-option-link"), function(i, optionLink) {
		$(optionLink).attr("href", "#" + REFINEMENT_PARAMETER + "" + $(optionLink).attr("rel"));
	});
	$.each($("div#brands .refinement-option-link"), function(i, optionLink) {
		$(optionLink).attr("href", "#" + REFINEMENT_PARAMETER + "" + $(optionLink).attr("rel"));	
	});
	$("div#refinement-breadcrumb-trail ul li .bct").addClass("refinement-bct");
	$("div#refinement-breadcrumb-trail ul li .refinement-bct").removeClass("bct");

}


/*
 * function to switch the style sheet for the product list/grid/gallery display
 */
function switchStyleSheet(cookieValue) {
	if (cookieValue == "grid") {
		$("link.product-view-stylesheet").attr("href", "/wcsstore/ConsumerDirect/css/ProductListerGridDesignTest.css");
		$("div#product-view-options img.list").attr("src", "/wcsstore/ConsumerDirect/images/plp-list-view-option.gif");
		$("div#product-view-options img.grid").attr("src", "/wcsstore/ConsumerDirect/images/plp-grid-view-option-selected.gif");
		$("div#product-view-options img.gallery").attr("src", "/wcsstore/ConsumerDirect/images/plp-gallery-view-option.gif");				
	} else if (cookieValue == "gallery") {
		$("link.product-view-stylesheet").attr("href", "/wcsstore/ConsumerDirect/css/ProductListerGallery.css");
		$("div#product-view-options img.list").attr("src", "/wcsstore/ConsumerDirect/images/plp-list-view-option.gif");
		$("div#product-view-options img.grid").attr("src", "/wcsstore/ConsumerDirect/images/plp-grid-view-option.gif");
		$("div#product-view-options img.gallery").attr("src", "/wcsstore/ConsumerDirect/images/plp-gallery-view-option-selected.gif");				
	} else {
		$("link.product-view-stylesheet").attr("href", "/wcsstore/ConsumerDirect/css/ProductListerListDesignTest.css");
		$("div#product-view-options img.list").attr("src", "/wcsstore/ConsumerDirect/images/plp-list-view-option-selected.gif");			
		$("div#product-view-options img.grid").attr("src", "/wcsstore/ConsumerDirect/images/plp-grid-view-option.gif");
		$("div#product-view-options img.gallery").attr("src", "/wcsstore/ConsumerDirect/images/plp-gallery-view-option.gif");				
	}	
}


/*
 * function to parse the url parameters after the hash in the url these are then cached in local variable 
 * endecaParameters called on page load and data update
 */
function parseNavigationString(hash) {
	endecaParameters = new Object();	
	var hashParameters = hash.split("&");	
	$.each(hashParameters, function(i, hashParameter) {
		if (hashParameter.indexOf(SEARCH_INTERFACE_PARAMETER) > -1) {
			endecaParameters.Ntt = hashParameter;
		} else if (hashParameter.indexOf(SEARCH_TERM_PARAMETER) > -1) {
			endecaParameters.Ntk = hashParameter;
		} else if (hashParameter.indexOf(SORT_PARAMETER) > -1) {
			endecaParameters.Ns = hashParameter;
		} else if (hashParameter.indexOf(PAGE_NUMBER_PARAMETER) > -1) {
			endecaParameters.No = hashParameter;
		} else if (hashParameter.indexOf(REFINEMENT_PARAMETER) > -1) {
			endecaParameters.N = hashParameter;
		}
	});
}


/*
 * function to return the navigation parameters as a url string
 */
function navigationParametersAsString(updatedNavigationParameters) {
	var navigationParametersAsString = "";
	navigationParametersAsString = (updatedNavigationParameters.N == undefined ? "" : "&" + updatedNavigationParameters.N) + (updatedNavigationParameters.No == undefined ? "" : "&" + updatedNavigationParameters.No) + (updatedNavigationParameters.Ns == undefined ? "" : "&" + updatedNavigationParameters.Ns) + (updatedNavigationParameters.Ntk == undefined ? "" : "&" + updatedNavigationParameters.Ntk) + (updatedNavigationParameters.Ntt == undefined ? "" : "&" + updatedNavigationParameters.Ntt);
	navigationParametersAsString = navigationParametersAsString.replace("#", "")
	if (navigationParametersAsString.indexOf("&") == 0) {
		navigationParametersAsString = navigationParametersAsString.substring(1, navigationParametersAsString.length);		
	}
	return navigationParametersAsString;
}


/*
 * function to remove an N dimension navigation parameter value
 */ 
function removeNavigationDimensionParameterValue(currentEndecaNParameterString, endecaNParameterValueToRemove) {
	var newEndecaNParameterString = "N=";
	if (currentEndecaNParameterString.indexOf("+") > -1) {
		currentEndecaNParameterString = currentEndecaNParameterString.substring(currentEndecaNParameterString.indexOf('=')+1, currentEndecaNParameterString.length);
		var endecaNValueArray = currentEndecaNParameterString.split("+");
		for (var i=0; i<endecaNValueArray.length; i++) {
			if (endecaNValueArray[i] != endecaNParameterValueToRemove) {
				newEndecaNParameterString += endecaNValueArray[i] + "+";
			}
		}
		newEndecaNParameterString = newEndecaNParameterString.substring(0, newEndecaNParameterString.length-1);
	} else {
		newEndecaNParameterString += "0";
	}
	return newEndecaNParameterString;
}


/*
 * function to update the endeca parameters object with a new parameter
 * the existing endeca parameters can be passed in as a variable to allow multiple
 * updates. If null is passed the global endeca parameters object is updated
 */
function updateNavigationParameters(newParameter, currentEndecaParameters) {
	newParameter = newParameter.replace("#", "");
	if (newParameter.charAt(newParameter.length) == '+') {
		newParameter = newParameter.substring(0, newParameter.length-1);
	}	
	var updatedNavigationParameters = new Object();	
	if (currentEndecaParameters != null) {
		jQuery.extend(updatedNavigationParameters, currentEndecaParameters);
	} else {
		jQuery.extend(updatedNavigationParameters, endecaParameters);
	}
	if (newParameter.indexOf(SEARCH_INTERFACE_PARAMETER) > -1) {
		updatedNavigationParameters.Ntt = newParameter;
	} else if (newParameter.indexOf(SEARCH_TERM_PARAMETER) > -1) {
		updatedNavigationParameters.Ntk = newParameter;
	} else if (newParameter.indexOf(SORT_PARAMETER) > -1) {
		updatedNavigationParameters.Ns = newParameter;
	} else if (newParameter.indexOf(PAGE_NUMBER_PARAMETER) > -1) {
		updatedNavigationParameters.No = newParameter;
	} else if (newParameter.indexOf(REFINEMENT_PARAMETER) > -1) {
		updatedNavigationParameters.N = newParameter;
	}
	return updatedNavigationParameters;
}


/*
 * function to get the updated state using an ajax call
 */
function updateState(newNavigationParameters, updateStats, updateProducts, updateRefinements, moreRecords) {
	try {
		if ($.browser.msie) {
			$("div#products-container").fadeOut(1500);
			$("div#navigation-container").fadeOut(1500);
			$("div#plp-refinement-breadcrumb").fadeOut(1500);
		}
		setTimeout(function() {
			var loadingProducts = $("div#products-container").busyBox({spinner:"<img src=\"/wcsstore/ConsumerDirect/images/loader.gif\" style=\"position:relative; top:100px !important;\" />" }); 
			var loadingRefinements = $("div#navigation-container").busyBox({spinner:"<img src=\"/wcsstore/ConsumerDirect/images/loader.gif\" style=\"position:relative; top:200px !important;\" />" }); 		
			var loadingBreadcrumb = $("div#plp-refinement-breadcrumb").busyBox(); 
			if (!moreRecords) {
				loadingRefinements.busyBox("open");
				loadingBreadcrumb.busyBox("open");
			}
			loadingProducts.busyBox("open");
	
			updateCall++;	
			//alert("update call = " + updateCall + "\nhttp://" + document.domain + "/webapp/wcs/stores/servlet/EndecaResultsJSONCmd?storeId=" + storeId + "&catalogId=" + catalogId + "&langId=" + langId + "&" + navigationParametersAsString(newNavigationParameters) + "&jsoncallback=?");
			//$.getJSON("http://" + document.domain + "/webapp/wcs/stores/servlet/EndecaResultsJSONCmd?storeId=" + storeId + "&catalogId=" + catalogId + "&langId=" + langId + "&" + navigationParametersAsString(newNavigationParameters) + "&promotionZones=ListerPageProductSpotLightTopZone_ListerPageProductSpotLightBottomZone" + "&jsoncallback=?",   
			$.ajax({type: "GET", 
				url: "http://" + document.domain + "/webapp/wcs/stores/servlet/EndecaResultsJSONCmd?storeId=" + storeId + "&catalogId=" + catalogId + "&langId=" + langId + "&" + navigationParametersAsString(newNavigationParameters) + "&promotionZones=ListerPageProductSpotLightTopZone_ListerPageProductSpotLightBottomZone" + "&jsoncallback=?",
			    dataType: "json",
		        async: true,
			    success: function(data){
					if (updateStats) {
						updateStatsDisplay(data);
					}
					if (updateProducts) {
						updateProductsDisplay(data, moreRecords);			
					}
					if (updateRefinements) {
						updateRefinementsDisplay(data, newNavigationParameters);
						updatePriceRangeDisplay(data);
						updateBreadcrumbDisplay(data);	
					}
					
				},
				complete: function(data) {
					if (!moreRecords) {
						loadingRefinements.busyBox("close");
						loadingBreadcrumb.busyBox("close");
					}
					loadingProducts.busyBox("close");
					if ($.browser.msie) {
						$("div#products-container").fadeIn("fast");
						$("div#navigation-container").fadeIn("fast");
						$("div#plp-refinement-breadcrumb").fadeIn("fast");
					}
				}
			});								
		}, 500);			
	} catch(e) {
		alert("apologies we've encountered an error updating page - " + e);
		throw e;
	}
}	


/*
 * function to update the product records statistics displayed
 */
function updateStatsDisplay(json) {
	try {	
		$("div#number-of-products p span.value").html(json.stats.numberOfRecords + " ");
		if (json.stats.numberOfRecords > RECORDS_PER_PAGE) {
			$("a#more-records").show();
		} else {
			$("a#more-records").hide();
		}	
	} catch (e) {
		alert("error encountered updating stats " + e);
	}
}


/*
 * function to update the product records displayed
 */
function updateProductsDisplay(json, moreRecords) {
	try {  
		$("div#plp div.plp-sort-bar").show();
		$("div#plp div.compare").show();
		$("div#plp div.paging-controls").show();				
		if (!moreRecords) {
			$("div#products-container").html("");
		} else {
			$("div#products-container div.under-products-break").remove();
		}
		var productsHTML = "";
		var productHTML = "";

		if (!moreRecords && json.stats.numberOfRecords >= 10) {			
			$.each(json.promotedrecords, function(i, promotionZoneJSONRecord) {
				if (promotionZoneJSONRecord.name == "ListerPageProductSpotLightTopZone") {
					$.each(promotionZoneJSONRecord.records, function(j, promotedProductJSONRecord) {
						productHTML = displayProductObject(promotedProductJSONRecord, json.stats.currencySymbol, j, "product-spotlight-top-box");
						productHTML = productHTML == undefined ? "" : productHTML;
						$("div#products-container").append(productHTML);
					});	
				}
			});
		}
		//productsHTML = productsHTML + "<div class=\"clearboth\"></div>";
		$("div#products-container").append("<div class=\"clearboth\"></div>");
		$.each(json.records, function(i, productJSONRecord) {     
			try {
				productHTML = displayProductObject(productJSONRecord, json.stats.currencySymbol, i, "product-box");
				productHTML = productHTML == undefined ? "" : productHTML;
				$("div#products-container").append(productHTML);
			} catch (f) {
				alert("error with product index: " + i + " " + f);
			}
		});
		//$("div#products-container").append(productsHTML);
		$("div#products-container").append("<div class=\"clearboth under-products-break\"></div>\n");
		$("div#products-container input.buy-button").bind("click", function(event) {
			$('form').submit(function(){
				$('input[type=image]', this).attr('disabled', 'disabled');
				// could open busy box when product add to basket clicked?
				//var loadingPage = $("div#plp").busyBox({spinner:"<img src=\"/wcsstore/ConsumerDirect/images/loader.gif\" />" }); 
				//loadingPage.busyBox("open");
			});
		});		
	} catch (e) {
		alert("error encountered updating products " + e);
		throw e;
	}
}


/*
 * function to update the refinement options displayed
 */
function updateRefinementsDisplay(json, newEndecaParameters) {
	try {		
		$("div#plp div.nav-list-group-category").show();
		$("div#plp div.nav-list-group-category-title").show();
		// set all options to inavailable / inactive				
		$("div#navigation-container li.refinement-option").removeClass("selected");	
		$("div#navigation-container li.refinement-option").removeClass("unselected");			
		$("div#navigation-container li.refinement-option").addClass("inactive");
		$("div#navigation-container li a").removeAttr("href");
		$("div#navigation-container .nav-option-stats").hide();
		$("div#navigation-container .checkbox").removeClass("checkbox-selected")
		$("div#navigation-container .checkbox").removeClass("checkbox-unselected")
		$("div#navigation-container .checkbox").addClass("checkbox-inactive");
		$("div#navigation-container .nav-list-colour-options .colour-option").hide();
				
		// re-activate any options which are available
		$.each(json.dimensions, function(j, dimension) {
			$.each(dimension.values, function(x, dimensionValue) { 
				if ($("#rol-"+dimensionValue.id) != undefined) {					
					if ($("#rol-"+dimensionValue.id).hasClass("colour-option")) {
						$("#rol-"+dimensionValue.id).show();
						$("#rol-"+dimensionValue.id+" img").attr("src", $("#rol-"+dimensionValue.id+" img").attr("rel") + ".gif");
					} else {
						$("#rol-"+dimensionValue.id).removeClass("inactive");					
						$("#rol-"+dimensionValue.id+" .nav-option-stats").show();
						$("#rol-"+dimensionValue.id+" .nav-option-stats").html("&nbsp;&nbsp;("+dimensionValue.stats+")");
						$("#rol-"+dimensionValue.id+" .checkbox").removeClass("checkbox-inactive");
						$("#rol-"+dimensionValue.id+" .checkbox").addClass("checkbox-unselected");
					}
					$("#rol-"+dimensionValue.id+" a").attr("href", ("#" + navigationParametersAsString(updateNavigationParameters(REFINEMENT_PARAMETER + dimensionValue.N.replace(/ /g, "+"), null))));
				}
			});
		});
			
		$.each(newEndecaParameters.N.split("+"), function(k, endecaNValue) {
			endecaNValue = endecaNValue.replace("N=", "");
			if ($("#rol-"+endecaNValue) != undefined) {
				if ($("#rol-"+endecaNValue).hasClass("colour-option")) {
					$("#rol-"+endecaNValue).show();
					$("#rol-"+endecaNValue+" img").attr("src", $("#rol-"+endecaNValue+" img").attr("rel") + "-selected.gif");					
				} else {
					$("#rol-"+endecaNValue).removeClass("inactive");
					$("#rol-"+endecaNValue).addClass("selected");
					$("#rol-"+endecaNValue+" .checkbox").removeClass("checkbox-inactive");
					$("#rol-"+endecaNValue+" .checkbox").removeClass("checkbox-unselected");					
					$("#rol-"+endecaNValue+" .checkbox").addClass("checkbox-selected");
				}	
				$("#rol-"+endecaNValue+" a").attr("href", ("#" + navigationParametersAsString(updateNavigationParameters(removeNavigationDimensionParameterValue(newEndecaParameters.N, endecaNValue), null))));
			}
		});
		
	} catch (e) {
		alert("error encountered updating dimensions " + e);
		throw e;
	}		
}


/*
 * function to update the price range slide refinement displayed
 */
function updatePriceRangeDisplay(json) {
	try {
		$("div#slider-range").slider("destroy");		
		//var availableMinPrice;
		//var availableMaxPrice;
		var selectedMinPrice; 
		var selectedMaxPrice;
		if (priceSliderMinimum == undefined || priceSliderMaximum == undefined) {
			$.each($("div#navigation-container div.price-nav-list-group-inner li"), function(i, priceOption) {
				if (!$(priceOption).hasClass("inactive")) {
					/*
					if (availableMinPrice == undefined || getMinFromPriceRangeString($(priceOption).attr("rel")) < availableMinPrice) {
						availableMinPrice = getMinFromPriceRangeString($(priceOption).attr("rel"));
					}
					if (availableMaxPrice == undefined || getMaxFromPriceRangeString($(priceOption).attr("rel")) > availableMaxPrice) {	
						availableMaxPrice = getMaxFromPriceRangeString($(priceOption).attr("rel"));
					}
					*/
					if ($(priceOption).hasClass("selected")) {
						if (selectedMinPrice == undefined || getMinFromPriceRangeString($(priceOption).attr("rel")) < selectedMinPrice) {
							selectedMinPrice = getMinFromPriceRangeString($(priceOption).attr("rel"));
						}
						if (selectedMaxPrice == undefined || getMaxFromPriceRangeString($(priceOption).attr("rel")) > selectedMaxPrice) {	
							selectedMaxPrice = getMaxFromPriceRangeString($(priceOption).attr("rel"));
						}
					}
				}
			});
			/*
			$("input#minPriceRangeId").val(availableMinPrice);
			$("input#maxPriceRangeId").val(availableMaxPrice);
			*/
			if (selectedMinPrice == undefined) { selectedMinPrice = getMinFromPriceRangeString($("input#minPriceRangeId").val()); }
			if (selectedMaxPrice == undefined) { selectedMaxPrice = getMaxFromPriceRangeString($("input#maxPriceRangeId").val()); }				
			$("input#minAmount").val(selectedMinPrice);
			$("input#maxAmount").val(selectedMaxPrice);
		} else {
			$("input#minAmount").val(priceSliderMinimum);
			$("input#maxAmount").val(priceSliderMaximum);
			priceSliderMinimum = undefined;
			priceSliderMaximum = undefined;
		}
		$(function() {
			$("div#slider-range").slider({range:true, min:getMinFromPriceRangeString($("input#minPriceRangeId").val()), max:getMaxFromPriceRangeString($("input#maxPriceRangeId").val()), values:[parseInt($("input#minAmount").val()),parseInt($("input#maxAmount").val())], step:20, slide:function(event, ui) {
					$("input#minAmount").val(ui.values[0]);
					$("input#maxAmount").val(ui.values[1]);	
				}
			});
		});			
	} catch (e) {
		alert("error encountered updating price range " + e);
		throw e;
	}	
}

var parentCategoryLink;

/*
 * function to update the refinements breadcrumb trail displayed
 */
function updateBreadcrumbDisplay(json) {
	try {
		if (parentCategoryLink == undefined) {
			if (parentCategoryId != undefined) {
				parentCategoryLink = "categorydisplay4_" + catalogId + "_" + parentCategoryId + "_" + langId + "_" + storeId + "_"; 
			} else {
				parentCategoryLink = "topcategory_" + catalogId + "_" + langId + "_" + storeId;
			}
		}
		$("div#plp-refinement-breadcrumb").show();
		$("div#refinement-breadcrumb-trail ul li").remove();
		if (json.breadcrumbs.length > 0) {
			$("div#refinement-breadcrumb-trail ul li.bct").hide();
			$.each(json.breadcrumbs, function(j, breadcrumb) {
				if (breadcrumb.name != 'Price Range') {
					var breadcrumbString = "";
					breadcrumbString = breadcrumbString + "<li class=\"refinement-bct\">\n";
					if (breadcrumb.N != 0) {
						breadcrumbString = breadcrumbString + "<a href=\"#" + navigationParametersAsString(updateNavigationParameters(REFINEMENT_PARAMETER + breadcrumb.N.replace(/ /g, "+"), null)) + "\" rel=\"nofollow\"><img src=\"/wcsstore/ConsumerDirect/images/lister-breadcrumb-checkbox.gif\" class=\"bct-remove-checkbox\" /></a>\n";
						breadcrumbString = breadcrumbString + "<a href=\"#" + navigationParametersAsString(updateNavigationParameters(REFINEMENT_PARAMETER + breadcrumb.N.replace(/ /g, "+"), null)) + "\" rel=\"nofollow\">" + breadcrumb.value + "</a>\n";
					} else {
						breadcrumbString = breadcrumbString + "<a href=\"" + parentCategoryLink + "\" rel=\"nofollow\"><img src=\"/wcsstore/ConsumerDirect/images/lister-breadcrumb-checkbox.gif\" class=\"bct-remove-checkbox\" /></a>\n";
						breadcrumbString = breadcrumbString + "<a href=\"" + parentCategoryLink + "\" rel=\"nofollow\">" + breadcrumb.value + "</a>\n";						
					}			
					breadcrumbString = breadcrumbString + "</li>\n";
					$("div#refinement-breadcrumb-trail ul").append(breadcrumbString);
				}
			});
		} else {
			$("div#refinement-breadcrumb-trail ul li").addClass("refinement-bct");
			$("div#refinement-breadcrumb-trail ul li.refinement-bct a").attr("href", parentCategoryLink);
		}
		$("div#refinement-breadcrumb-trail ul li").bind("mouseenter", function(event) {
			$(this).addClass("hover");
			$(this).find("img").attr("src", "/wcsstore/ConsumerDirect/images/lister-breadcrumb-checkbox-hover.png");
		});	
		$("div#refinement-breadcrumb-trail ul li").bind("mouseleave", function(event) {
			$(this).removeClass("hover");
			$(this).find("img").attr("src", "/wcsstore/ConsumerDirect/images/lister-breadcrumb-checkbox.png");
		});					
	} catch (e) {
		alert("error encountered updating breadcrumb trail " + e);
		throw e;
	}	
}


$(document).ready(function(){  

   	$("select#sort-form-select").removeAttr("onchange");
	$("select#records-per-page-form-top-select").hide();
	$("select#records-per-page-form-btm-select").hide();	
	$("div#standard-paging-controls-top").hide();
	$("div#standard-paging-controls-btm").hide();	
	$("input#brand-search-box").show();
	//$("div#navigation-container div.price-nav-list-group-inner").hide();
	//$("div#price-range-slider").show();
	if (parseInt($("div#number-of-products p span.value").html()) > RECORDS_PER_PAGE) {
		$("a#more-records").show();
	}

		
	// ---------- BEGIN INITIALISE PAGE DISPLAY ----------	  
    $.history.init(function(hash){
        if(hash == "" && endecaParameters == undefined) {
            // very first time landing on page
            initialise();
        } else {
        	if (hash == "") {
        		// user has gone backwards to the start state
        		hash = endecaN;
        		//hash = endecaN + "&" + endecaNtt + "&" + endecaNtk;
        	}
	        // hash not empty or change in hash
	 		parseNavigationString(hash);
			if (endecaParameters != undefined && (endecaParameters.N != undefined || endecaParameters.Ns != undefined)) {
				updateState(endecaParameters, true, true, true, false);
				if (endecaParameters.Ns != undefined) {
					$("select#sort-form-select option[selected]").removeAttr("selected");
					$("select#sort-form-select option[value='"+endecaParameters.Ns.substring(endecaParameters.Ns.indexOf("=")+1, endecaParameters.Ns.length)+"']").attr("selected", "selected");     
				}
			}  
        }
    },
    { unescape: ",/" });
	// ----------- END INITIALISE PAGE DISPLAY -----------


	// ---------- BEGIN PRODUCT VIEW FUNCTIONS -----------
	// check is new style page and use new stylesheet switcher - otherwise old
	if ($("div#product-view-options").length) {
		if ($.cookie("PLPVIEWCOOKIE")) {
			if ($.cookie("PLPVIEWCOOKIE") != null) {
				switchStyleSheet($.cookie("PLPVIEWCOOKIE"));
			}
		}
		$("div#product-view-options img").click(function() {
			$.cookie("PLPVIEWCOOKIE", $(this).attr("rel"), {expires: 365, path: "/"});	
			switchStyleSheet($(this).attr("rel"));
			return false;
		});
	} else {
		var cookie = readCookie("PLPVIEWCOOKIE");
		if (cookie != null && cookie == 'grid') {
			setActiveStyleSheet(cookie);
		}
	}
	// ----------- END PRODUCT VIEW FUNCTIONS ------------
	
	
	// ------ BEGIN REFINEMENT BREDCRUMB FUNCTIONS -------		
	$("div#refinement-breadcrumb-trail ul li").hover(
		function() {
			$(this).addClass("hover");
			$(this).find("img").attr("src", "/wcsstore/ConsumerDirect/images/lister-breadcrumb-checkbox-hover.gif");
		},
		function() {
			$(this).removeClass("hover");
			$(this).find("img").attr("src", "/wcsstore/ConsumerDirect/images/lister-breadcrumb-checkbox.gif");
	});	
	// ------- END REFINEMENT BREDCRUMB FUNCTIONS --------	
	

	// -------- BEGIN REFINEMENT GROUP FUNCTIONS ---------	
	$("div#navigation-container .refinement-title").click(function() {
		var refinementGroup = $(this).attr("rel");
		if ($("div#"+refinementGroup+"").is(":visible")) {
			$("div#"+refinementGroup+"").slideUp("fast");
			$("img#"+refinementGroup+"-icon").attr("src", "/wcsstore/ConsumerDirect/images/refinement-group-icon-closed.gif");
		} else {
			$("div#"+refinementGroup+"").slideDown("fast");
			$("img#"+refinementGroup+"-icon").attr("src", "/wcsstore/ConsumerDirect/images/refinement-group-icon-open.gif");
		}		
	});
	
	$("div#plp .plp-left-nav .left-nav-slot .nav-list .nav-list-group-wrapper .nav-list-group li").hover(
		function() {
			if (!$(this).hasClass("inactive")) {
				if ($(this).hasClass("selected")) {
					$(this).addClass("hover-selected");
				} else {
					$(this).addClass("hover-unselected");
				}
			}
		},
		function() {
			$(this).removeClass("hover-unselected");
			$(this).removeClass("hover-selected");
	});	
	
	$("div#plp .plp-left-nav .left-nav-slot .nav-list .nav-list-group-wrapper .nav-list-group li.refinement-view-more").click(function() {	
		if ($(this).parents(".nav-list-group").find("ul.refinement-more-options").is(":visible")) {
			$(this).find("div.refinement-view-more-icon").css("background", "url(/wcsstore/ConsumerDirect/images/refinement-view-more-closed.png) no-repeat top left");
			$(this).find("span").html("View more");				
			$(this).parents(".nav-list-group").find("ul.refinement-more-options").slideUp("fast");					
		} else {
			$(this).find("div.refinement-view-more-icon").css("background", "url(/wcsstore/ConsumerDirect/images/refinement-view-more-open.png) no-repeat top left");
			$(this).find("span").html("View less");
			$(this).parents(".nav-list-group").find("ul.refinement-more-options").slideDown("fast");						
		}
	});
	// --------- END REFINEMENT GROUP FUNCTIONS ----------	
	
	
	// -------- BEGIN MAIN PROMO FLASH FUNCTIONS ---------		
	$("div#plp-main-flash .main-flash-show-hide-icon").click(function() {
		var displayArea = $(this).attr("rel");
		if ($("div#plp-main-flash ."+displayArea+"").is(":visible")) {
			$("div#plp-main-flash ."+displayArea+"").slideUp("fast");
			$(this).attr("src", "/wcsstore/ConsumerDirect/images/lister-flash-closed.gif");
		} else {
			$("div#plp-main-flash ."+displayArea+"").slideDown("fast");
			$(this).attr("src", "/wcsstore/ConsumerDirect/images/lister-flash-open.gif");
		}
	});
	// --------- END MAIN PROMO FLASH FUNCTIONS ----------			
	
	
		
	// ------------ BEGIN SORT BAR FUNCTIONS -------------		
	$("select#sort-form-select").change(function(){
		var updatedSortParameters = updateNavigationParameters($("select#sort-form-select").attr("name") + "=" + $("select#sort-form-select").val(), null);
		window.location.hash = navigationParametersAsString(updatedSortParameters);
	});
	// ------------- END SORT BAR FUNCTIONS --------------	
	

	// ---------- BEGIN MORE RECORDS FUNCTIONS -----------		
	$("a#more-records").click(function() {
		var recordOffset = parseInt($("a#more-records").attr("rel")) + RECORDS_PER_PAGE;
		updateState(updateNavigationParameters(PAGE_NUMBER_PARAMETER + recordOffset, null), false, true, false, true);
		if (parseInt($("div#number-of-products p span.value").html()) > (recordOffset + RECORDS_PER_PAGE)) {
			$("a#more-records").attr("rel", recordOffset);
		} else {
			$("a#more-records").hide();
		}
	});
	// ----------- END MORE RECORDS FUNCTIONS ------------	
	
	
	// ------- BEGIN BRAND NAME SEARCH FUNCTIONS ---------	
	$("input#brand-search-box").focus(function() {
		if ($("input#brand-search-box").val() == $("input#brand-search-box").attr("default")) {
			$("input#brand-search-box").val("");
		}
	});
	$("input#brand-search-box").keyup(function() {
		if ($("input#brand-search-box").val().length > 0) {
			$("div#navigation-container div.brand-nav-list-group ul li.refinement-view-more").remove();
			$("div#navigation-container div.brand-nav-list-group ul.refinement-more-options").show();		
		}		
		$.each($("div#navigation-container div.brand-nav-list-group ul li"), function(i, brandOption) {
			if ($(brandOption).attr("rel").toUpperCase().indexOf($("input#brand-search-box").val().toUpperCase()) != 0) {
				$(brandOption).hide();
			} else {
				$(brandOption).show();
			}
		});
	});	
	// -------- END BRAND NAME SEARCH FUNCTIONS ----------	



	// ------- BEGIN PRICE RANGE SLIDER FUNCTIONS --------	
	$(function() {
		$("div#slider-range").slider({range:true, min:getMinFromPriceRangeString($("input#minPriceRangeId").val()), max:getMaxFromPriceRangeString($("input#maxPriceRangeId").val()), values:[getMinFromPriceRangeString($("input#minPriceRangeId").val()),getMaxFromPriceRangeString($("input#maxPriceRangeId").val())], step:20, slide:function(event, ui) {
				$("input#minAmount").val(ui.values[0]);
				$("input#maxAmount").val(ui.values[1]);	
			}
		});
		$("input#minAmount").val($("#slider-range").slider("values", 0));
		$("input#maxAmount").val($("#slider-range").slider("values", 1));		
	});
	$("div#slider-range").mouseup(function(){
		var newPriceNValues = "";
		var priceRangeEndecaN = "";
		$.each($("div#navigation-container div.price-nav-list-group-inner li"), function(i, priceOption) {
			if (!$(priceOption).hasClass("inactive")) {
				if ($("input#minAmount").val() < getMinFromPriceRangeString($(priceOption).attr("rel"))+1 && $("input#maxAmount").val() > getMaxFromPriceRangeString($(priceOption).attr("rel"))-1) {
					newPriceNValues = newPriceNValues + "+" + $(priceOption).attr("code");
				}
				if ($(priceOption).hasClass("selected")) {
					priceRangeEndecaN = priceRangeEndecaN + "+" + $(priceOption).attr("code");
				}
			}
		});	
		newPriceNValues = newPriceNValues.substring(1, newPriceNValues.length);
		if (newPriceNValues.charAt(newPriceNValues.length) == "+") {
			newPriceNValues.substring(0, newPriceNValues.length-1);
		}		
		if (priceRangeEndecaN.length > 0) {
			endecaParameters.N = endecaParameters.N.replace((priceRangeEndecaN), "");
		}
		priceSliderMinimum = $("input#minAmount").val();
		priceSliderMaximum = $("input#maxAmount").val();		
		
		var newHash = navigationParametersAsString(updateNavigationParameters(REFINEMENT_PARAMETER + (endecaParameters.N.substring(2, endecaParameters.N.length) + "+" + newPriceNValues), null))
		if (("#" + newHash) == window.location.hash) {
			$("div#price-range-slider div.price-range-update-message").html("<p>Your selection does not change the product results.</p>");
		} else {
			$("div#price-range-slider div.price-range-update-message").html("");
			window.location.hash = navigationParametersAsString(updateNavigationParameters(REFINEMENT_PARAMETER + (endecaParameters.N.substring(2, endecaParameters.N.length) + "+" + newPriceNValues), null));				
		}
	});
	// -------- END PRICE RANGE SLIDER FUNCTIONS ---------	

});



/*
 * function to display the product 
 */
function displayProductObject(product, currencySymbol, index, productClassName) {
	var pds = "";	
	
	// *************** product record parent categories **********************
	if (categoryId != undefined) {
		var url = "http://" + document.domain + "/webapp/wcs/stores/servlet/productdisplayA_" + endecaN.replace(/N=/g, "") + "_" + catalogId + "_" + langId + "_" + categoryId + "_" + product["WebsphereID"] + "_" + storeId + "_" + parentCategoryId + "";
	} else {
		var url = "http://" + document.domain + "/webapp/wcs/stores/servlet/productdisplay0_" + catalogId + "_" + langId + "_" + product["WebsphereID"] + "_" + storeId + "";	
	}	
	var isInSaleCategory = 0;
	var isInXmasGiftCategory = 0;	
	var i = 1;
	var parentCategoryNumber;
	while (i < 9) {
		parentCategoryNumber = "Parent Category " + i + "";
		if (product[parentCategoryNumber] != undefined) {
			if (isInSaleCategory == 0 &&
					(product[parentCategoryNumber] == "Bargains"
					|| product[parentCategoryNumber] == "Clearance Toys"
					|| product[parentCategoryNumber] == "Half Price"
					|| product[parentCategoryNumber] == "WIGIG"
					|| product[parentCategoryNumber] == "Sale Items")) {
				isInSaleCategory = "1";
			} else if (product[parentCategoryNumber] == "Christmas Gifts") {
				isInXmasGiftCategory = "1";
			}
		} else {
			break;
		}
		i++;
	}

	pds += "<div class=\"" + productClassName + "\">\n";
	pds += "<div class=\"pdb-content\">\n";
	pds += "<div class=\"pdb-content-inner\">\n";
	
	// ***************** Image, Offer icon, Video icon, Compare ******************
	pds += "<div class=\"pdb-image\">\n";
	pds += "<a href=\"" + url + "\">\n";
	pds += "<div class=\"pdb-image-img\" style=\"background:#FFFFFF url(/wcsstore/ConsumerDirect/" + product["Medium Image"] + ") no-repeat top center;\">\n";
	pds += "<div class=\"offer-icon\">\n";
	if (isInXmasGiftCategory == "1") {
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/christmas-gift-product-tag.png\"/>\n";
	} else if (product["Newly Stocked Flag"] == "1") {
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/new-product-tag.png\"/>\n";
	} else if (isInSaleCategory == "1") {
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/offer-product-tag.png\"/>\n";
	} else if (product["Package Flag"] == "1") {
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/package-product-tag.png\"/>\n";		
	}
	pds += "</div> <!-- offer-icon -->\n";
	pds += "<div class=\"video-icon\">\n";
	if (product["Video Flag"] != undefined) {	
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/video-icon-big.png\" alt=\"video\"\>\n";
	}
	pds += "</div> <!-- video-icon -->";
	pds += "</div> <!-- pdb-image-img -->";
	pds += "</a>\n";
	pds += "<div class=\"pdb-compare\">";
	pds += "<input type=\"checkbox\" name=\"R\" value=\"" + product["WebsphereID"] + "\"><label>Select &amp; Compare</label>";
	pds += "</div> <!-- pdb-compare -->";
	pds += "</div> <!-- pdb-image -->\n";	
			
	pds += "<div class=\"pdb-main\">\n";
	pds += "<div class=\"pdb-main-detail\">\n";	

	// ********************* Name, Short Description and Rating *********************
	pds += "<div class=\"pdb-detail-upper\">\n";		
	pds += "<div class=\"pdb-spotlight-icon\"></div>\n";
	pds += "<div class=\"pdb-name\">\n";
	pds += "<a href=\"" + url + "\">" +  product["ProductName"] + "</a>\n";
	pds += "<p>" + product["Short Description"] == undefined ? "" : product["Short Description"] + "</p>\n";
	pds += "</div> <!-- pdb-name -->\n";	
	pds += "<div class=\"pdb-rating\">\n";
	var rating = product["Rating"] == undefined ? 0 : product["Rating"];
	if (rating != 0) { 
		if (rating.indexOf('.5') > 0) {
			rating = parseFloat(rating).toFixed(1);
		} else {
			rating = parseFloat(rating).toFixed(0);
		}
	}	
	if (product["Exclude From Site Promotions Flag"] != 'YES') {
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/stars/" + rating + "-stars.png\" alt=\"" + rating + " star rating\" align=\"absmiddle\" />\n";
		pds += "<p>(" + (product["Full Reviews"] == undefined ? 0 : product["Full Reviews"]) + " Ratings)</p>\n";
	}
	pds += "</div> <!-- pdb-rating -->\n";		
	pds += "</div> <!-- pdb-detail-upper -->\n";		
	
	// ******************* Review comments and Free Delivery ************************	
	pds += "<div class=\"pdb-detail-lower\">\n";	
	if (product["Exclude From Site Promotions Flag"] != 'YES') {
		pds += "<div class=\"pdb-review-comment\">\n";		
		if (product["Review Override Text"] != undefined && product["Review Override Text"] != "") {
			pds += "<p class=\"comment-title\">Most recent review</p>\n";
			pds += "<p class=\"comment\">'" + product["Review Override Text"] + "'</p>\n";
		} else {
			var reviewComment = product["Comment"] == undefined ? "" : product["Comment"];
			if (reviewComment != "") {
				if (reviewComment.length > 100) {
					reviewComment = reviewComment.substring(0,120) + "...";
				}			
				pds += "<p class=\"comment-title\">Most recent customer review</p>\n";		
				pds += "<p class=\"comment\">'" + reviewComment + "'</p>\n";
				pds += "<p class=\"reviewer-details\">" + (product["Reviewer Nickname"] == undefined ? "" : product["Reviewer Nickname"]) + " - " + (product["Reviewer Location"] == undefined ? "" : product["Reviewer Location"]) + "</p>\n";
			}
		}
		pds += "</div> <!-- pdb-review-comment -->\n";	
	}
	if (product["Free Delivery Flag"] == "1") {
		pds += "<div class=\"pdb-free-delivery\"></div>"; 
	}		
	pds += "</div> <!-- pdb-detail-lower -->\n";	
	pds += "</div> <!-- pdb-main-detail -->\n";
	pds += "<div class=\"clearboth\"></div>\n";	
	pds += "</div> <!-- pdb-main -->\n";

	
	// ***************** Price and Discount ********************
	var price = parseFloat(product["Price"]).toFixed(2);
	var rrp = product["Rrp"] == undefined ? 0 : parseFloat(product["Rrp"]).toFixed(2);
	var literalSaving = rrp - price;
	var saving = undefined;
	if (literalSaving <= 0) {
		saving = undefined;
	} else if (literalSaving >= 30) {
		saving = currencySymbol + literalSaving.toFixed(0);
	} else {
		var percentageSaving = ((literalSaving / rrp) * 100).toFixed(0);
		if (percentageSaving > 5) {
			saving = percentageSaving + "%";
		} else {
			saving = undefined;
		}
	}		
	pds += "<div class=\"pdb-price\">\n";
	pds += "<div class=\"pdb-price-upper\">\n";
	pds += "<div class=\"pdb-promotion-discount\">\n";	
	if (product["Exclude From Site Promotions Flag"]) {
		pds += "<div class=\"feature_endeca_promo_saving\">\n";		
		if (product["Multibuy Flag"] == "1") {
			pds += "<div class=\"multibuy\">\n";
			pds += "</div> <!-- multibuy -->\n";
		}
		else{
			if (saving != undefined) {
				pds += "<div class=\"saving-circle\">\n";
				pds += "<p class=\"saving-circle-percentage\">SAVE<br/>" + saving + "</p>\n";
				pds += "</div> <!-- saving-circle -->\n";
			}
		}
		pds += "</div> <!-- feature_endeca_promo_saving -->\n";
	}
	pds += "</div> <!-- pdb-promotion-discount -->\n";
	pds += "</div> <!-- pdb-price-upper -->\n";	
	pds += "<div class=\"pdb-price-lower\">\n";	
	pds += "<div class=\"pdb-price-figures\">\n";	
	pds += "<div class=\"productPrice\">";
	if (product["Multiple Prices Flag"] == "1") { 
		pds += "From "; 
	}
	pds += currencySymbol + "" + price + "</div>\n";
	pds += "<div class=\"productRRP\"><br/>";
	if (price < rrp) { 
		pds += "RRP " + currencySymbol + "" + rrp; 
	}
	pds += "</div> <!-- productRRP -->\n";	
	pds += "</div> <!-- pdb-price-figures -->\n";
	
	
	// ********************* Buy button ************************
	pds += "<div class=\"pdb-buy-button\">\n";
	if (product["Multiple Items Flag"] == "1" 
			|| product["Buyable Flag"] == "0"
			|| product["Dutailier Flag"] == "1"
			|| product["Terms Flag"] == "1"	
			|| product["Tripp Trapp Flag"] == "1"	
			|| product["Direct Delivery Flag"] == "1") {
		pds += "<a href=\"" + url + "\" alt=\"more info\" >";
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/info.gif\" alt=\"more info\" />";
		pds += "</a>";
	} else if (product["PreOrder Flag"] == "1") {
		pds += "<a href=\"" + url + "\" alt=\"available for pre-order\" >";
		pds += "<img src=\"/wcsstore/ConsumerDirect/images/bt_pre_order_only.gif\" alt=\"available for pre-order\" />";
		pds += "</a>";			
	} else {
		pds += "<form name=\"OrderItemAddForm_plp_"+index+"\" onsubmit=\"Add2ShopCart(this, 'ProductDisplay')\" action=\"OrderItemAdd\" method=\"post\" id=\"OrderItemAddForm_plp_"+index+"\" >\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"storeId\" value=\"10001\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"orderId\" value=\".\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"catalogId\" value=\"10751\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"URL\" value=\"OrderCalculate?URL=OrderItemDisplay\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"errorViewName\" value=\"ProductDisplayErrorView\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"catEntryId\" value=\"" + product["WebsphereID"] + "\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"productId\" value=\"" + product["WebsphereID"] + "\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"calculationUsageId\" value=\"-1\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"shouldCachePage\" value=\"false\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"quantity\" value=\"1\" />\n";
		pds += "<input type=\"hidden\" class=\"hiddeninput\" name=\"bct\" value=\"\" />\n";
		pds += "<input type=\"image\" src=\"/wcsstore/ConsumerDirect/images/bt-buy-only.png\" rel=\"OrderItemAddForm_plp_spotlight_"+index+"\" alt=\"Add to shopping cart\" class=\"buy-button\" />\n";		
		pds += "</form>\n";	
	}
	pds += "</div> <!-- pdb-buy-button -->\n";
	
	
	pds += "</div> <!-- pdb-price-lower -->\n";
	pds += "</div> <!-- pdb-price -->\n";
		
	pds += "<div class=\"clearboth\"></div>\n";
	pds += "</div> <!-- pdb-content-inner -->\n";
	pds += "</div> <!-- pdb-content -->\n";
	pds += "</div> <!-- product-box -->\n";
	
	return pds;
}


// ------------ END LISTER PAGE FUNCTIONS --------------





