//*************************************************
//***** COPYRIGHT 2006, PRACTICAL DATA, INC. ******
//***** - UNAUTHORIZED USE IS PROHIBITED **********
//*************************************************

//***************************************************************************
//********************* INITIALIZE PAGING VARIABLES *************************
//***************************************************************************
if(isBlank(pd_itemsPerPage)) var pd_itemsPerPage = 25;
if(isBlank(pd_itemsPerRow)) var pd_itemsPerRow = 1;
if(isBlank(pd_sortBy)) var pd_sortBy = "";
if(isBlank(pd_gridViewTableWidth)) var pd_gridViewTableWidth = 680;

var pd_lastSection = pdGetCookie("V2pd_lastSection");
var pd_refreshId = "";
var pd_debugFlag = false;
var pd_currentPageNumber = getCurrentPageNumber();
var pd_pagesToDisplay = 10;
var pd_searchFirstRun = true;
var pd_filterSearchDelay = 650;

var pd_searchTextFirstLoad = "Filter By Keyword(s):";
var pd_searchText = "Filter By Keyword(s):";
var pd_brandSelected = "";
var pd_sizeSelected = "";
var pd_priceRange = "";
var pd_filterBy = "";

var pd_filteredDisplayList = new Array();
//***************************************************************************
//****************** END INITIALIZE PAGING VARIABLES ************************
//***************************************************************************

//***************************************************************************
//********* FILTER BY KEYWORD/ SEARCH WHILE TYPING FUNCTIONS ****************
//***************************************************************************
function filterProductArrayBySearchTerm(searchText) {

debug("filterProductArrayBySearchTerm");
debug("searchText = " + searchText);

	pd_filteredDisplayList = getFilteredDisplayList(searchText);
	pd_currentPageNumber = 1;
	var success = displayProductArray();
	return false;
}

function getFilteredDisplayList(searchTermString) {
debug("getFilteredDisplayList");
	var productArray = pd_filteredDisplayList;
	searchTermString = String(searchTermString).toLowerCase();
	searchTermString = String(searchTermString).replace(/,/g, " ");
	var searchTermList = String(searchTermString).split(" ");
	var filteredHash = new Array();
	var item = new Object();
	for(item in productArray) {
		var found = true;
		for(item2 in searchTermList) {
			if(!isBlank(searchTermList[item2])) {
				if(productArray[item].searchIndex.indexOf(searchTermList[item2]) == -1) found = false;
			}
		}
		if(found == true) {
			filteredHash[productArray[item].id] = productArray[item];
		}
	}
	var item = new Object();
	var filteredList = new Array();
	var i = 0;
	for(item in filteredHash) {
		filteredList[i] = filteredHash[item];
		i++;
	}
	debug("filteredList.length = " + filteredList.length);
	return filteredList;
}



function performFilter(pageNumber, reset) {
debug("performFilter(" + pageNumber + "," + reset + ")");

	pd_filteredDisplayList = pd_displayList;
	
	if(isBlank(pageNumber)) pd_currentPageNumber = 1;
	else pd_currentPageNumber = pageNumber;
	
	if(isBlank(reset)) reset = false;
		
	if(reset == true) {
		pd_brandSelected = "";
		//pd_sizeSelected = "";
		pd_priceRange = "0to100000";
		pd_searchText = "";
	} else {
		//pd_brandSelected = document.forms.filterByBrandForm.filterByBrandSelect.options[document.forms.filterByBrandForm.filterByBrandSelect.selectedIndex].value;
		//pd_sizeSelected = document.forms.filterBySizeForm.filterBySizeSelect.options[document.forms.filterBySizeForm.filterBySizeSelect.selectedIndex].value;
		//pd_priceRange = document.forms.filterByPriceRangeForm.filterByPriceRangeSelect.options[document.forms.filterByPriceRangeForm.filterByPriceRangeSelect.selectedIndex].value;
		try { pd_searchText = document.forms.pagingSearchForm.filterBySearchTerm.value; } catch(e) {}	//*** IGNORE
	}
	
	//pd_filteredDisplayList = getFilteredDisplayListByBrand(pd_brandSelected);
	//pd_filteredDisplayList = getFilteredDisplayListBySize(pd_sizeSelected);
	//pd_filteredDisplayList = getFilteredDisplayListByPriceRange(pd_priceRange);
	
	//*************************
	//**** FILTER BY KOSHER ***
	//*************************
	if(pd_filterBy == 'kosher') {
		pd_filteredDisplayList = getFilteredDisplayListByKosher();
	}
	
	//*****************************
	//**** FILTER BY BESTSELLER ***
	//*****************************
	if(pd_filterBy == 'bestseller') {
		pd_filteredDisplayList = getFilteredDisplayListByBestseller();
	}
	
	// ***** MAKE SURE TO IGNORE FILTER TEXT IF FIELD CONTAINS INITIAL LOAD TEXT
	if(pd_searchText != pd_searchTextFirstLoad){
		pd_filteredDisplayList = getFilteredDisplayList(pd_searchText);
	}
		
	var success = displayProductArray();
	
	// *** MAINTAIN FOCUS ON KEYWORD TEXT INPUT FIELD ************
	if(document.getElementById("filterBySearchTerm")){
		document.forms["pagingSearchForm"].elements["filterBySearchTerm"].focus();
	}

	return false;
}

function searchWhileTyping(searchTerm) {
	/*
	resetMenuHighlight(); 
	var menu = document.getElementById('filterBySearchTerm');
	var img = document.getElementById('searchFilterArrow');
	menu.className = 'searchFieldOn';
	img.src = imageUrl + 'upArrowOn.gif';	
	*/
	
	pd_searchText = searchTerm;
	document.getElementById("searchButtonDisplay").innerHTML = '<div><a href="#" onClick="return(clearSearch());"><img src="' + imageUrl + 'x.gif" border="0" hspace="3"></a></div>';
	window.clearTimeout(pd_refreshId);
	pd_refreshId = window.setTimeout("performFilter()", pd_filterSearchDelay);
	return false;
}

function renderSearchForm() {
	debug("renderSearchForm");
	var	html = '';
	html += '<form id="pagingSearchForm" name="pagingSearchForm" onSubmit="return(false)" style="display:inline;margin:0;padding:0;">';
	html += '<table border="0" cellpadding="0" cellspacing="0">';
	html += '<tr><td align="center">';
	html += '<input type="text" size="15" class="pagingSearchField" name="filterBySearchTerm" id="filterBySearchTerm" value="' + pd_searchText + '"  onClick="return(clearFirstTimeSearchText())" onKeyUp="return(searchWhileTyping(document.forms.pagingSearchForm.filterBySearchTerm.value))">';
	html += '</td></tr>';
	html += '</table></form>';
	return html;
}

function clearFirstTimeSearchText() {
	if(pd_searchFirstRun) {
		document.forms.pagingSearchForm.filterBySearchTerm.value = "";
		pd_searchFirstRun = false;
	}
	return false;
}

function clearSearchText() {
	document.forms.pagingSearchForm.filterBySearchTerm.value = "";
	return false;
}

function clearSearchBox() {
debug("clearSearchBox");
	document.getElementById("searchButtonDisplay").innerHTML = '<img src="' + imageUrl + 'spacer.gif" width="21">';
	document.forms.pagingSearchForm.filterBySearchTerm.value = "";
	return false;
}

function clearSearch() {
debug("clearSearch");
	var searchFieldValue = document.forms.pagingSearchForm.filterBySearchTerm.value;
	if(searchFieldValue != pd_searchTextFirstLoad){
		searchFieldValue = pd_searchTextFirstLoad;
	}
	clearSearchBox();
	pd_currentPageNumber = 1;
	performFilter();

	//document.forms.pagingSearchForm.filterBySearchTerm.value = searchFieldValue;
	return false;
	//pd_filteredDisplayList = pd_displayList;
}
//***************************************************************************
//****** END FILTER BY KEYWORD/ SEARCH WHILE TYPING FUNCTIONS ***************
//***************************************************************************

//***********************************************
//********* PAGINATION FUNCTIONS ****************
//***********************************************

function parseDisplayList() {

	//***********************************************
	//***** BUILD JS ARRAY OF PRODUCT ELEMENTS ******
	//***********************************************
	var i = 0;
	var displayList = new Array();
	
	//*******************************************
	//*** ONLY LOAD IF PRODUCT WRAPPER EXISTS ***
	//*******************************************
	var productIdString = "";
	var dataWrapper = "";
	try {
		dataWrapper = document.getElementById("productDataWrapper");
	} catch(e) {
		//*** IGNORE		
	}
	
debug("productDataWrapper = " + dataWrapper);
	
	if(!isBlank(dataWrapper)) {
	
		if(dataWrapper.firstChild) { // check for children
			var oChild = dataWrapper.firstChild;
			while(oChild) {
			
			    if(oChild.nodeType==1 && String(oChild.id).indexOf("productData") > -1) { 
				displayList[i] = new Object();
				displayList[i].id = oChild.id;
				displayList[i].html = document.getElementById(oChild.id).innerHTML;
	
				//**************************************************
				//**** PARSE PRODUCT ATTRIBUTES (2 levels deep) ****
				//**************************************************
				var subChild = oChild.firstChild;
				while(subChild) {
					if(subChild.nodeType==1) {
						if(subChild.id == "itemId") displayList[i].itemId = String(subChild.title);
						if(subChild.id == "name") displayList[i].title = String(subChild.title);
						if(subChild.id == "brand") displayList[i].brand = String(subChild.title).toUpperCase();
						if(subChild.id == "price") displayList[i].price = subChild.title - 0;
						if(subChild.id == "bestseller") displayList[i].bestseller = parseBoolean(subChild.title);
						if(subChild.id == "kosher") displayList[i].kosher = parseBoolean(subChild.title);
						if(subChild.id == "casePackSize") displayList[i].casePackSize = subChild.title - 0;
						if(subChild.id == "unitWeight") displayList[i].unitWeight = subChild.title;
						if(subChild.id == "size") displayList[i].size = subChild.title;
						if(subChild.id == "colors") displayList[i].colors = subChild.title;
						if(subChild.id == "flavors") displayList[i].flavors = subChild.title;
						if(subChild.id == "occasions") displayList[i].occasions = subChild.title;
						if(subChild.id == "defaultSort") displayList[i].defaultSort = subChild.title;
					}
										
					subChild = subChild.nextSibling;
				}
				
				//**************************
				//*** BUILD SEARCH INDEX ***
				//**************************
				displayList[i].searchIndex = "";
				if(displayList[i].title) displayList[i].searchIndex += String(displayList[i].title).toLowerCase();
				if(displayList[i].name) displayList[i].searchIndex += " " + String(displayList[i].name).toLowerCase();
				if(displayList[i].brand) displayList[i].searchIndex += " " + String(displayList[i].brand).toLowerCase();
				if(displayList[i].size) displayList[i].searchIndex += " " + String(displayList[i].size).toLowerCase();
				if(displayList[i].colors) displayList[i].searchIndex += " " + String(displayList[i].colors).toLowerCase();
				if(displayList[i].flavors) displayList[i].searchIndex += " " + String(displayList[i].flavors).toLowerCase();
				if(displayList[i].occasions) displayList[i].searchIndex += " " + String(displayList[i].occasions).toLowerCase();
				
				//***********************************************************
				//**** BUILD PRODUCT ID STRING ******************************
				//**** - LIMIT TO 200 TO PREVENT OVERFLOWING COOKIE LIMIT ***
				//***********************************************************
				if(displayList[i].id && i < 200) productIdString += displayList[i].id + ",";
				
			 	i++;
			 }
			  oChild = oChild.nextSibling;
		   }
		}
		
		//*******************************************
		//**** TURN OFF DISPLAY OF DATA ELEMENTS ****
		//*******************************************
		turnOffDisplayOfDataElements();
		
	} else {
		displayList = false;
	}
	
	//*******************************
	//**** SAVE productIdString *****
	//*******************************
	if(!isBlank(productIdString)) {
		productIdString = String(productIdString).substring(0, productIdString.length -1);	//*** TRIM TRAILING COMMA
		pdSetCookie("V2pd_currentProductList", productIdString, "", "", "");
	}
	
	//*******************************************
	//*** SAVE INITIAL FILTERED PRODUCT ARRAY ***
	//*******************************************
	pd_filteredDisplayList = displayList;
	
	//****************
	//**** RETURN ****
	//****************
	return displayList;	
}

function pagingDisplayStyle(style){
	if(style == "grid"){
		pdSetCookie("V2pd_pagingView", "grid");
	}else{
		pdSetCookie("V2pd_pagingView", "list");
	}
	displayProductArray();
	//window.location.refresh();
}

function renderProductArray() {
	debug("renderProductArray");
	var productArray = pd_filteredDisplayList;
	var html = "";
	var pageNumber = 1;
	var i = 1;
	var item = new Object();
	var tempHtml = "";
	var tempProductHtml = "";
	var rowItemCount = 1;
	var isOpen = false;
	var productIdList = "";
	var shade = true;
	debug("pd_currentPageNumber render = " + pd_currentPageNumber);	

	// RESET PRODUCT WRAPPER HTML TO FIX ISSUE WHEN CHANGING DISPLAY STYLES
	document.getElementById("productWrapper").innerHTML = "";
		
	for(item in productArray) {
		
		productIdList += productArray[item].id;
		tempHtml = '';
		
		if(pageNumber == pd_currentPageNumber || pd_currentPageNumber == "all") {
	
			var pd_pagingView = pdGetCookie("V2pd_pagingView");
			if(isBlank(pd_pagingView)){pd_pagingView = "list";}
			
			//*************************************************
			//*************** GENERATE GRID VIEW HTML *********
			//*************************************************
			if(pd_pagingView == "grid"){
				var cellWidth = pd_gridViewTableWidth / pd_itemsPerRow; 
				if(rowItemCount == 1) {
					tempHtml += '<table border="0" cellpadding="0" cellspacing="0" width="' + pd_gridViewTableWidth + '"><tr valign="top">\r\n';
					isOpen = true;
				}
				tempHtml += '<td width="' + Math.floor(cellWidth) + '"><div id="' + productArray[item].id + '" class="displayDivG';
				if(rowItemCount == 1){tempHtml += 'Left';}
				tempHtml += '">';
				//tempHtml += productArray[item].title;
				tempHtml += genProductHtmlGrid(productArray[item].id);
				tempHtml += '</div></td>';
				rowItemCount++;
				
				if(rowItemCount > pd_itemsPerRow) {
					tempHtml += '</tr></table>';
					tempHtml += '<div class="displayDivGBar"><img src="' + imageUrl + 'spacer.gif" height="1"></div>';
					rowItemCount = 1;
					isOpen = false;
				}			
			//*************************************************
			//*************** GENERATE LIST VIEW HTML *********
			//*************************************************					
			} else {
				tempHtml += '<div id="' + productArray[item].id;
				if(!shade) {
					tempHtml += '" class="displayDivLOn">';
				} else {
					tempHtml += '" class="displayDivL">';
				}
				tempHtml += genProductHtmlList(productArray[item].id);
				//tempHtml += productArray[item].title;
				tempHtml += '</div>';
				
				shade = !shade;
			}

		}
		i++;
		pageNumber = Math.ceil(i / pd_itemsPerPage);
		html += tempHtml;
	}

	return html;
}

//***********************************************
//******** VIEW PRODUCT ARRAY AS GRID ***********
//***********************************************
function genProductHtmlGrid(item){
	var displayDiv = new String(item);
	var dataDiv = displayDiv.replace(/Display/g, 'Data');
	var childElem = document.getElementById(dataDiv).childNodes; 
	
	//*** DEFINE PRODUCT DATA ***
	for(var i=0;i<childElem.length;i++){
		if(childElem[i].id == "itemId") var itemId = String(childElem[i].title);
		if(childElem[i].id == "name") var name = String(childElem[i].title);
		if(childElem[i].id == "brand") var brand = String(childElem[i].title);
		if(childElem[i].id == "image") var image = String(childElem[i].title);
		if(childElem[i].id == "price") var price = String(childElem[i].title);
		if(childElem[i].id == "priceReg") var priceReg = String(childElem[i].title);
		if(childElem[i].id == "priceSale") var priceSale = String(childElem[i].title);
		if(childElem[i].id == "kosher") var kosher = parseBoolean(String(childElem[i].title));
		if(childElem[i].id == "bestseller") var bestseller = parseBoolean(String(childElem[i].title));
		if(childElem[i].id == "unitWeight") var unitWeight = String(childElem[i].title);
		if(childElem[i].id == "casePackSize") var casePackSize = String(childElem[i].title);
	}
	//*** PRICE DISPLAY LOGIC ***
	var priceDisplay = '';
	
	priceDisplay = '<div class="pagedPriceDiv"><span class="pagedPriceSale">Unit Price: ' + formatCurrency(price-0) + '</span></div>';
	
	/* ESCAPE PRICE LOGIC FOR IMPERIAL FOODS
	if(isBlank(priceSale)){
		priceDisplay = '<div class="pagedPriceDiv"><span class="pagedPriceSale">Unit Price: ' + formatCurrency(price-0) + '</span></div>';
	}else{
		priceDisplay = '<div class="pagedPriceDiv"><span class="pagedPrice">Regular Price: <strike>' + formatCurrency(priceReg-0) + '</strike></span><br><span class="pagedPriceSale">Sale Price: ' + formatCurrency(price-0) + '</span></div>';
	}
	*/
	var linkHtml = '<a href="' + itemId + '.html" class="pagedLink">';
	var html = '';
	html += '<table border="0" cellpadding="0" cellspacing="0" width="99%"><tr valign="top"><td align="center">';
	html += '<div class="gridImgContainer">' + linkHtml + '<img src="' + image + '" hspace="4" vspace="5" border="0"></a></div>';
	html += linkHtml + name;
	if(!isBlank(unitWeight)){
		html += '&nbsp; - &nbsp;';
		html += unitWeight;
	}
	html += '</a>';
	if(!isBlank(brand)){html += '<div class="brand">By:<b>' + brand + '</b></div>';}
	html += priceDisplay;
	html += '<div class="casePackSize"><b>Case Pack Size: ' + casePackSize + '</b></div>';
	//html +='<div>' + bestseller + '</div>';
	if(kosher == true){html += '<div><center><img src="http://site.imperial-foods.com/pd_pagingEngine/images/kosher.gif" vspace="4"></center></div>';}
	//***********GENERATE ORDER BUTTON AND QUANTITY PRICING *******************//
	/*
	html += '<div style="padding-top:5px;">';
	html += '<form method="POST" style="display:inline;" action="https://order.store.yahoo.net/cgi-bin/wg-order?' + yCatalogId + '+' + itemId + '">';
	html += '<input name="vwitem" type="hidden" value="' + itemId + '">';
	html += '<input name="vwcatalog" type="hidden" value="' + yCatalogId + '">';
	html += '<table border="0"><tr><td><span class="qtyText">Qty: </span><input type="text" name="vwquantity" value="1" size="2" style="width:30px;"></td><td>';
	html += '<input type="image" src="' + imageUrl + 'addToCartSm.gif" border="0"></td></tr></table>';
	html += '</form>';
	html += '</div>';
	*/
	html += '</td></tr></table>';
	return html;
}
//***********************************************
//******** VIEW PRODUCT ARRAY AS LIST ***********
//***********************************************
function genProductHtmlList(item){
	//alert('called list: ' + item);
	var displayDiv = new String(item);
	var dataDiv = displayDiv.replace(/Display/g, 'Data');
	var displayHtml = document.getElementById(dataDiv).innerHTML; 
	//alert(displayHtml);
	return displayHtml;
}

function renderDisplayStyleLinks() {
	var pd_pagingView = pdGetCookie("V2pd_pagingView");
	if(isBlank(pd_pagingView)){pd_pagingView = "list";}
	
	var html = '';
	html += '<nobr>';
	if(pd_pagingView == 'grid'){
		html += '<img src="' + imageUrl + 'gridOn.gif" hspace="4"><span class="displayStyleLOn">Grid View</span>';
	}else{
		html += '<img src="' + imageUrl + 'gridOff.gif" hspace="4"><a href="#" onClick="pagingDisplayStyle(\'grid\');" class="displayStyleL">Grid View</a>';
	}
		
	html += '&nbsp;&nbsp;&nbsp;&nbsp;';
	
	if(pd_pagingView == 'list'){
		html += '<img src="' + imageUrl + 'listOn.gif" hspace="4"><span class="displayStyleLOn">List View</span>';
	}else{
		html += '<img src="' + imageUrl + 'listOff.gif" hspace="4"><a href="#" onClick="pagingDisplayStyle(\'list\');" class="displayStyleL">List View</a>';
	}

	html += '</nobr>';

	return html;
}
//***********************************************
//*** END NEW DISPLAY STYLE FUNCTIONALITY *******
//***********************************************

function displayProductArray() {
	debug("displayProductArray");
	
	//*************************************
	//**** TEST FOR NOTHING TO DISPLAY ****
	//*************************************
	if(!pd_filteredDisplayList) return false;

	//****************************************************
	//*** DISPLAY SPECIAL LINKS **************************
	//*** - SPECIAL CASE FOR KOSHER / BESTSELLER LINKS ***
	//****************************************************
	document.getElementById("kosherFilterLink").innerHTML = renderKosherFilterLink(pd_filteredDisplayList.length);
	document.getElementById("bestsellerFilterLink").innerHTML = renderBestsellerFilterLink(pd_filteredDisplayList.length);
		
	if(pd_filteredDisplayList.length == 0) {
		document.getElementById("productWrapper").innerHTML = '<div class="noProductsFound">No Items Found.</b></div>';
		return false;
	}
		
	//***********************************
	//**** REMEMBER GLOBAL SETTINGS *****
	//***********************************
	pdSetCookie("V2pd_currentPageNumber", pd_currentPageNumber);
	pdSetCookie("V2pd_pagingSortBy", pd_sortBy);

	//********************
	//*** PERFORM SORT ***
	//********************
	if(pd_sortBy == "title") sortProductArrayByTitle();
	else if(pd_sortBy == "bestseller") sortProductArrayByBestseller();
	else if(pd_sortBy == "brand") sortProductArrayByBrand();
	else if(pd_sortBy == "price") sortProductArrayByPrice();
	else if(pd_sortBy == "casePackSize") sortProductArrayByCasePackSize();
	else if(pd_sortBy == "defaultSort") sortProductArrayByDefaultSort();
	
	//*******************************
	//**** RENDER PAGE ELEMENTS *****
	//*******************************		
	if(isBlank(pd_currentPageNumber)) {
		debug("could not find pd_currentPageNumber " + pd_currentPageNumber + ": setting = 1");
		pd_currentPageNumber = 1;
	}
	
	document.getElementById("productWrapper").innerHTML = renderProductArray();
	document.getElementById("pageInfo").innerHTML = renderPageInfo(pd_filteredDisplayList.length);
	document.getElementById("pageInfoBottom").innerHTML = renderPageInfo(pd_filteredDisplayList.length);
	document.getElementById("pageNumberLinks").innerHTML = renderPageNumberLinks(pd_filteredDisplayList.length,'top');
	document.getElementById("pageNumberLinksBottom").innerHTML = renderPageNumberLinks(pd_filteredDisplayList.length,'bottom');
	document.getElementById("previousButton").innerHTML = renderPreviousButton(pd_filteredDisplayList.length);
	document.getElementById("previousButtonBottom").innerHTML = renderPreviousButton(pd_filteredDisplayList.length);
	document.getElementById("nextButton").innerHTML = renderNextButton(pd_filteredDisplayList.length);
	document.getElementById("nextButtonBottom").innerHTML = renderNextButton(pd_filteredDisplayList.length);
	document.getElementById("viewAllButton").innerHTML = renderViewAllButton(pd_filteredDisplayList.length);
	document.getElementById("viewAllButtonBottom").innerHTML = renderViewAllButton(pd_filteredDisplayList.length);

	document.getElementById("displayStyleLinks").innerHTML = renderDisplayStyleLinks(pd_filteredDisplayList.length);

	document.getElementById("kosherFilterLink").innerHTML = renderKosherFilterLink(pd_filteredDisplayList.length);
	document.getElementById("bestsellerFilterLink").innerHTML = renderBestsellerFilterLink(pd_filteredDisplayList.length);
	document.getElementById("sortLinks").innerHTML = renderSortLinks();

	//document.getElementById("filterMenu").innerHTML = renderFilterDropdown();
	//document.getElementById("sortLinksMenu").innerHTML = renderSortByDropdown();
	document.getElementById("searchFilter").innerHTML = renderSearchForm();

	
	//**************
	//*** RETURN ***
	//**************
	return false;
}

function renderSortLinks() {
	//if(pd_currentPageNumber!="all" && pd_currentPageNumber>1) pd_currentPageNumber=1;
	var html="";
	
	html += '<table border=0><tr>';
	
	//********** SORT BY BRAND ***************
	html += '<td>';
	if(pd_sortBy == "brand") {
		html += '<span class="sortLinkOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowDown.gif">Sort By Brand</nobr></span>';
	} else {
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" class="sortLink" onClick="return(doSortBy(\'brand\'))">Sort By Brand</a></nobr>';
	}
	html += '</td>';
	html += '<td><img src="' + imageUrl + 'spacer.gif" width="20" height="5"></td>';

	//********** SORT BY NAME ***************
	html += '<td>';
	if(pd_sortBy == "title") {
		html += '<span class="sortLinkOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowDown.gif">Sort By Name</nobr></span>';
	} else {
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" class="sortLink" onClick="return(doSortBy(\'title\'))">Sort By Name</a></nobr>';
	}
	html += '</td>';
	html += '<td><img src="' + imageUrl + 'spacer.gif" width="20" height="5"></td>';

	//********** SORT BY PRICE ***************
	html += '<td>';
	if(pd_sortBy == "price") {
		html += '<span class="sortLinkOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowDown.gif">Sort By Price</nobr></span>';
	} else {
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" class="sortLink" onClick="return(doSortBy(\'price\'))">Sort By Price</a></nobr>';
	}
	html += '</td>';
	html += '<td><img src="' + imageUrl + 'spacer.gif" width="20" height="5"></td>';

	//********** SORT BY BESTSELLER ***************
	/*
	html += '<td>';
	if(pd_sortBy == "bestseller") {
		html += '<span class="sortLinkOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowDown.gif">Sort By Bestseller</nobr></span>';
	} else {
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" class="sortLink" onClick="return(doSortBy(\'bestseller\'))">Sort By Bestseller</a></nobr>';
	}
	html += '</td>';
	html += '<td><img src="' + imageUrl + 'spacer.gif" width="60" height="5"></td>';
	*/
	
	//********** SORT BY CASE PACK SIZE ***************
	html += '<td>';
	if(pd_sortBy == "casePackSize") {
		html += '<span class="sortLinkOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowDown.gif">Sort By Case Pack Size</nobr></span>';
	} else {
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" class="sortLink" onClick="return(doSortBy(\'casePackSize\'))">Sort By Case Pack Size</a></nobr>';
	}	
	html += '</td>';
	html += '<td><img src="' + imageUrl + 'spacer.gif" width="20" height="5"></td>';

	
	html += '</tr></table>';
	
	return html;
}



//*********************************************************************
//****** DISPLAY PAGE ELEMENTS RELATED TO SORTING AND FILTERING *******
//*********************************************************************

function clearFilter() {
debug("clearFilter");
	pd_currentPageNumber = 1;
	performFilter();
	return false;
}


function renderItemCountInfo(productCount) {

	var html = "";
	html += '<table border="0" cellpadding="0" cellspacing="0" width="175"><tr valign="middle">';
	
	if(productCount == 1) html += '<td class="catPageInfo">' + productCount + ' Available Model</td>';
	else html += '<td class="catPageInfo">' + productCount + ' Available Models</td>';
	
	html += '<td><img src="/images/spacer.gif" width="25" height="1"></td>';
	html += '</tr></table>';

	return html;
}

function renderPageNumberLinks(productCount, position) {

debug("renderPageNumberLinks");

	var pageCount = Math.ceil(productCount/pd_itemsPerPage);
	if(pageCount == 1) return "";	
	var html = "";

	if(pd_currentPageNumber != "all") {
	
		//****** DISPLAY PAGE NUMBER TITLE
		//document.getElementById("pageNumberTitle").innerHTML = 'Page';
	
		var pagesToDisplay = pd_pagesToDisplay;
		var extraPages = 0;

		var firstPageNumberToDisplay = pd_currentPageNumber - Math.floor(pagesToDisplay / 2);
		if(firstPageNumberToDisplay < 1) {
			extraPages = Math.abs(firstPageNumberToDisplay) + 1;
			firstPageNumberToDisplay = 1;
		}

		var lastPageNumberToDisplay = (pd_currentPageNumber - 0) + Math.floor(pagesToDisplay / 2) + extraPages;
		if(lastPageNumberToDisplay > pageCount) {
			firstPageNumberToDisplay -= lastPageNumberToDisplay - pageCount;
			lastPageNumberToDisplay = pageCount;
			if(firstPageNumberToDisplay < 1) firstPageNumberToDisplay = 1;
		}		
		html += '<table border="0" cellpadding="0" cellspacing="1"><tr>';
		for(var i=firstPageNumberToDisplay;i<=lastPageNumberToDisplay;i++) {
			if(pd_currentPageNumber == i) {
				html += '<td><div class="pageNumBgOn">' + i + '</div></td>';
				if(i < lastPageNumberToDisplay) html += '';
			} else {
				html += '<td><div class="pageNumBg" onClick="return(viewPage(' + i + '))"><a href="#" class="pageNum" onClick="return(viewPage(' + i + '))">' + i + '</a></div></td>';
				if(i < lastPageNumberToDisplay) html += '';
			}
		}
		html += '</tr></table>';
	} else {
		//document.getElementById("pageNumberTitle").innerHTML = "";
	}
	
	return html;
}


function renderPageInfo(productCount) {

debug("renderPageInfo");

	var pageCount = Math.ceil(productCount/pd_itemsPerPage);
	if(pageCount == 1 || pageCount == 0) return "";
	var html = "";
	
	if(pd_currentPageNumber != "all") {
		html += '<span class="pageInfo"><nobr>Page ' + pd_currentPageNumber + ' of ' + pageCount + '&nbsp; &nbsp;</nobr></span>';
	}
	
	return html;
}

function renderPreviousButton(productCount){

debug("pd_currentPageNumber = " + pd_currentPageNumber);

	var html="";
	if(pd_currentPageNumber!="all"){
		if(pd_currentPageNumber > 1) {
			var previousPage = pd_currentPageNumber - 1;
			html += '<div class="pageArrowButton"><a href="#" onClick="return(viewPage(' + previousPage + '))"><img src="' + imageUrl + 'pagingPrevious.gif" border="0"></a></div>';
		} else {
			html+='';
		}
	}
	
debug("pd_currentPageNumber = " + pd_currentPageNumber);
	
	return html;
}

function renderNextButton(productCount) {
	var pageCount=Math.ceil(productCount/pd_itemsPerPage);
	var html="";
	if(pd_currentPageNumber!="all"){
		var nextPage=pd_currentPageNumber+1;
		if(nextPage<=pageCount) {
			html+='<div class="pageArrowButton"><a href="#" onClick="return(viewPage(' + nextPage + '))"><img src="' + imageUrl + 'pagingNext.gif" border="0"></a></div>';
		} else {
			html+='';
		}
	}
	return html;
}

function renderViewAllButton(productCount) {

debug("renderViewAllButton");

	var pageCount = Math.ceil(productCount/pd_itemsPerPage);
	if(pageCount == 1) return "";
	var html = "";
	
	if(pd_currentPageNumber == "all") {
		html += '<span class="sortLinkOn"><nobr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" onClick="return(viewPage(1))" class="viewAllLink"><b>Paged View</b></a></nobr></span>';
	} else {
		html += '<nobr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href="#" onClick="return(viewAll())" class="viewAllLink">View All Items</a><nobr>';
	}
	
	return html;
}

function viewAll() {

	//************************
	//**** REDRAW DISPLAY ****
	//************************	
	var result = performFilter("all", false);	//*** page = all, RESET = true
	
	//**************
	//*** RETURN ***
	//**************	
	return false;
}

function viewPage(pageNumber) {
	debug("viewPage, setting pageNumber = " + pageNumber);

	pd_currentPageNumber = pageNumber;
	var result = performFilter(pageNumber);
	return false;
}

function renderBrandList() {
	var brandList = getBrandList();
	var html = '<form id="filterByBrandForm" style="display:inline">';
	html += 'Brand&nbsp;';
	html +='<select name="filterByBrandSelect" onChange="return(performFilter())">';
	html += '<option value="">-- All Brands --</option>';
	var item = new Object();
	for(item in brandList) {
		html += '<option value="' + brandList[item].name + '"';
		if(brandList[item].name == pd_brandSelected) html += ' SELECTED';
		html += '>' + brandList[item].name + ' (' + brandList[item].count + ')</option>';
	}
	html += '</select></form>';
	
	return html;
}

function renderSizeList() {
	var sizeList = getSizeList();
	var html = '<form id="filterBySizeForm" style="display:inline">';
	html += '<span class="filterBarText">Size&nbsp;</span>';
	html += '<span style="width:100px">';
	html +='<select name="filterBySizeSelect" onChange="return(performFilter())" style="border:1px #AD4A72 solid;font-size:10px;color:#AD2E61;">';
	html += '<option value="">-- All Sizes --</option>';
	var item = new Object();
	for(item in sizeList) {
		html += '<option value="' + sizeList[item].size + '"';
		if(sizeList[item].size == pd_sizeSelected) html += ' SELECTED';
		html += '>' + sizeList[item].size + '</option>';
	}
	html += '</select></span></form>';
	return html;
}

function renderPriceFilter() {
	var html = '<form id="filterByPriceRangeForm" style="display:inline">';
	html += 'Price&nbsp;';
	html +='<select name="filterByPriceRangeSelect" onChange="return(performFilter())">';

	html += '<option value="0to100000">-- All Prices --</option>';
	html += '<option value="0to49"';
	if(pd_priceRange == "0to49") html += ' SELECTED';
	html += '>$0 - $49</option>';
	html += '<option value="50to99"';
	if(pd_priceRange == "50to99") html += ' SELECTED';
	html += '>$50 - $99</option>';
	html += '<option value="100to199"';
	if(pd_priceRange == "100to199") html += ' SELECTED';
	html += '>$100 - $199</option>';
	html += '<option value="200to299"';
	if(pd_priceRange == "200to299") html += ' SELECTED';
	html += '>$200 - $299</option>';
	html += '<option value="300to499"';
	if(pd_priceRange == "300to499") html += ' SELECTED';
	html += '>$300 - $499</option>';
	html += '<option value="500to999"';
	if(pd_priceRange == "500to999") html += ' SELECTED';
	html += '>$500 - $999</option>';
	html += '<option value="1000to2500"';
	if(pd_priceRange == "1000to2500") html += ' SELECTED';
	html += '>$1000 - $2500</option>';
	html += '<option value="2500to100000"';
	if(pd_priceRange == "2500to100000") html += ' SELECTED';
	html += '>$2500+</option>';
	html += '</select></form>';
	return html;
}

function renderFilterDropdown() {
	var html = '';
	html += '<form style="display:inline;margin:0;padding:0;">';
	html += '<table border="0" cellpadding="0" cellspacing="0"><tr><td align="center">';
	html += '<select name="filterBy" id="filterBy" onChange="return(doFilterBy(this.options[this.selectedIndex].value,\'filterBy\'))" class="sortDDMenu">';
	html += '<option>Filter Results By</option>';

	html += '<option>Option 1 </option>';
	html += '<option>Option 2 </option>';
	html += '<option>Option 3 </option>';

	html += '</select></td></tr>';
	html += '<tr><td align="center"><img src="' + imageUrl + 'upArrowOff.gif" border="0" id="filterArrow"></td></tr>';
	html += '</table></form>';
	
	return html;
	resetMenuHighlight();
}

function renderKosherFilterLink() {
	var html = '';
	if(pd_filterBy != 'kosher'){
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href=" " class="filterLink"  onClick="return(filterProductArrayByKosher(\'kosher\'))">Show Kosher Items</a></nobr>';
	}else{	
		html += '<div class="filterLinkDOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmallW.gif" hspace="4"><a href=" " class="filterLinkOn"  onClick="return(filterProductArrayByKosher(\'all\'))"><b>Show All Items</b></a></nobr></div>';
	}
	return html;
}

function renderBestsellerFilterLink() {
	var html = '';
	if(pd_filterBy != 'bestseller'){
		html += '<nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmall.gif"><a href=" " class="filterLink"  onClick="return(filterProductArrayByBestseller(\'bestseller\'))">Show Bestsellers</a></nobr>';
	}else{	
		html += '<div class="filterLinkDOn"><nobr><img src="http://site.imperial-foods.com/pd_pagingEngine/images/arrowSmallW.gif" hspace="4"><a href=" " class="filterLinkOn"  onClick="return(filterProductArrayByBestseller(\'all\'))"><b>Show All Items</b></a></nobr></div>';
	}
	return html;
}


function renderSortByDropdown() {
	var html = '';
	html += '<form style="display:inline;margin:0;padding:0;">';
	html += '<table border="0" cellpadding="0" cellspacing="0"><tr><td align="center">';
	html += '<select name="sortBy" id="sortBy" onChange="return(doSortBy(this.options[this.selectedIndex].value,\'sortBy\'))" class="sortDDMenu">';
	html += '<option>Sort Results By</option>';

	html += '<option value="title"';
	if(pd_sortBy == "title") html += ' SELECTED';
	html += '>Name</option>';

	html += '<option value="brand"';
	if(pd_sortBy == "brand") html += ' SELECTED';
	html += '>Brand</option>';

	html += '<option value="price"';
	if(pd_sortBy == "price") html += ' SELECTED';
	html += '>Price</option>';

	/*
	html += '<option value="bestseller"';
	if(pd_sortBy == "bestseller") html += ' SELECTED';
	html += '>Top Sellers</option>';
	
	
	html += '<option value="costPerServing"';
	if(pd_sortBy == "costPerServing") html += ' SELECTED';
	html += '>Cost Per Serving</option>';
	*/
	
	html += '</select></td></tr>';
	html += '<tr><td align="center"><img src="' + imageUrl + 'upArrowOff.gif" border="0" id="sortArrow"></td></tr>';
	html += '</table></form>';
	
	return html;
	resetMenuHighlight();
}

function doSortBy(sortBy,elem) {
	pd_sortBy = sortBy;
	var result = displayProductArray();
	//var menu = document.getElementById(elem);
	//var img = document.getElementById("sortArrow");
	//menu.className = 'sortDDMenuOn';
	//img.src = imageUrl + 'upArrowOn.gif';	
	return false;
}

function doFilterBy(sortBy,elem) {
	pd_sortBy = sortBy;
	var result = displayProductArray();
	/*
	var menu = document.getElementById(elem);
	var img = document.getElementById("filterArrow");
	menu.className = 'sortDDMenuOn';
	img.src = imageUrl + 'upArrowOn.gif';	
	*/
	return false;
}

function resetMenuHighlight() {
	var sortImg = document.getElementById('sortArrow');
	var filterImg = document.getElementById('filterArrow');
	var searchFilterImg = document.getElementById('searchFilterArrow');
	sortImg.src = imageUrl + 'upArrowOff.gif';	
	filterImg.src = imageUrl + 'upArrowOff.gif';	
	searchFilterImg.src = imageUrl + 'upArrowOff.gif';	
	var sortMenu = document.getElementById('filterBy');
	var filterMenu = document.getElementById('sortBy');
	var searchFilterField = document.getElementById('filterBySearchTerm');
	sortMenu.className = 'sortDDMenu';
	filterMenu.className = 'sortDDMenu';
	searchFilterField.className = 'searchField';
}

function sortByBrandClick() {
	debug("sortByBrandClick");
	return(displayProductArray('brand'));
}

function sortByTitleClick() {
	debug("sortByTitleClick");
	return(displayProductArray('title'));
}

function sortBySizeFormClick() {
	debug("sortBySizeFormClick");
	return(displayProductArray('sizeForm'));
}

function sortByPriceClick() {
	debug("sortByPriceClick");
	return(displayProductArray('price'));
}

function filterProductArrayByBrand(brand) {
debug("filterProductArrayByBrand:" + brand);
	pd_brandSelected = brand;
	pd_filteredDisplayList = getFilteredDisplayListByBrand(brand);
	pd_currentPageNumber = 1;
	var success = displayProductArray();
	return false;
}

//*********************************************
//*********** FILTER KOSHER ITEMS *************
//*********************************************
function filterProductArrayByKosher(filterBy) {
debug("filterProductArrayByKosher:");

	if(filterBy == 'kosher'){
		pd_filterBy = 'kosher';
		pd_filteredDisplayList = getFilteredDisplayListByKosher();
		pd_currentPageNumber = 1;
		var success = displayProductArray();
	}else{
		pd_filterBy = 'all';
		return(clearFilter());
	}
	
	return false;
}

function getFilteredDisplayListByKosher() {
	debug("getFilteredDisplayList");
	var productArray = pd_filteredDisplayList;
	debug("productArray.length = " + productArray.length);

	var filteredHash = new Array();
	var item = new Object();
	
	for(item in productArray) {
		var isKosher = productArray[item].kosher;
		if(isKosher == true){
			filteredHash[productArray[item].id] = productArray[item];
		}
	}
	
	var item = new Object();
	var filteredList = new Array();
	var i = 0;
	for(item in filteredHash) {
		filteredList[i] = filteredHash[item];
		i++;
	}
	//alert(filteredList.length);
	return filteredList;
}
//*********************************************
//******** END FILTER KOSHER ITEMS ************
//*********************************************

//*********************************************
//********* FILTER BESTSELLER ITEMS ***********
//*********************************************
function filterProductArrayByBestseller(filterBy) {
debug("filterProductArrayByBestseller:");

	if(filterBy == 'bestseller'){
		pd_filterBy = 'bestseller';
		pd_filteredDisplayList = getFilteredDisplayListByBestseller();
		pd_currentPageNumber = 1;
		var success = displayProductArray();
	}else{
		pd_filterBy = 'all';
		return(clearFilter());
	}
	
	return false;
}

function getFilteredDisplayListByBestseller() {
	debug("getFilteredDisplayListByBestseller");
	var productArray = pd_filteredDisplayList;
	debug("productArray.length = " + productArray.length);

	var filteredHash = new Array();
	var item = new Object();
	
	for(item in productArray) {
		var isBestseller = productArray[item].bestseller;
		if(isBestseller == true){
			filteredHash[productArray[item].id] = productArray[item];
		}
	}
	
	var item = new Object();
	var filteredList = new Array();
	var i = 0;
	for(item in filteredHash) {
		filteredList[i] = filteredHash[item];
		i++;
	}
	//alert(filteredList.length);
	return filteredList;
}
//*********************************************
//****** END FILTER BESTSELLER ITEMS **********
//*********************************************

function filterProductArrayByPriceRange(priceRange) {
	pd_priceRange = priceRange;
	pd_filteredDisplayList = getFilteredDisplayListByPriceRange(priceRange);
	pd_currentPageNumber = 1;
	var success = displayProductArray();
	return false;
}


function getFilteredDisplayListByBrand(brand) {
	debug("getFilteredDisplayList");
	var productArray = pd_filteredDisplayList;
	debug("productArray.length = " + productArray.length);
	brand = String(brand).toLowerCase();
	var filteredHash = new Array();
	var item = new Object();
	for(item in productArray) {
		var found = true;
		if(String(productArray[item].brand).toLowerCase() != brand && brand != "") found = false;
		if(found == true) {
			filteredHash[productArray[item].id] = productArray[item];
		}
	}
	var item = new Object();
	var filteredList = new Array();
	var i = 0;
	for(item in filteredHash) {
		filteredList[i] = filteredHash[item];
		i++;
	}
	debug("filteredList.length = " + filteredList.length);
	return filteredList;
}


function getFilteredDisplayListBySize(size) {
	debug("getFilteredDisplayListBySize");
	var productArray = pd_filteredDisplayList;
	debug("productArray.length = " + productArray.length);
	size = String(size).toLowerCase();
	var filteredHash = new Array();
	var item = new Object();
	for(item in productArray) {
		var found = false;
		var tempArray = productArray[item].sizeList.split(",");
		var item2 = new Object();
		for(item2 in tempArray) {
			if(String(tempArray[item2]).toLowerCase() == size) found = true;
			if(isBlank(size)) found = true;
		}
		if(found == true) {
			filteredHash[productArray[item].id] = productArray[item];
		}
	}
	var item = new Object();
	var filteredList = new Array();
	var i = 0;
	for(item in filteredHash) {
		filteredList[i] = filteredHash[item];
		i++;
	}
	debug("filteredList.length = " + filteredList.length);
	return filteredList;
}


function getFilteredDisplayListByPriceRange(priceRange) {
	debug("getFilteredDisplayListByPriceRange");
	var productArray = pd_filteredDisplayList;
	var priceRangeComponents = priceRange.split("to");
	var lowPrice = priceRangeComponents[0];
	var highPrice = priceRangeComponents[1];
	
	var filteredList = new Array();
	var item = new Object();
	var j = 0;
	for(item in productArray) {
		var found = false;
		if(productArray[item].price >= lowPrice && productArray[item].price <= highPrice) found = true;
		if(found == true) {
			filteredList[j] = productArray[item];
			j++;
		}
	}
	debug("filteredList.length = " + filteredList.length);
	return filteredList;
}


function getFilteredDisplayListByTitleFirstLetterIsNumber() {
	debug("getFilteredDisplayListByTitleFirstLetterIsNumber");
	var productArray = pd_displayList;
	var filteredList = new Array();
	var item = new Object();
	var i = 0;
	for(item in productArray) {
		if(startsWithNumber(productArray[item].title)) {
			filteredList[i] = productArray[item];
			i++;
		}
	}
	return filteredList;
}

function getFilteredDisplayListByBrandFirstLetterIsNumber() {
	debug("getFilteredDisplayListByBrandFirstLetterIsNumber");
	var productArray = pd_displayList;
	var filteredList = new Array();
	var item = new Object();
	var i = 0;
	for(item in productArray) {
		if(startsWithNumber(productArray[item].brand)) {
			filteredList[i] = productArray[item];
			i++;
		}
	}
	return filteredList;
}

function getFilteredDisplayListByTitleFirstLetter(firstLetter) {
	debug("getFilteredDisplayListByTitleFirstLetter");
	var productArray = pd_displayList;
	var filteredList = new Array();
	var item = new Object();
	var i = 0;
	for(item in productArray) {
		if((String(productArray[item].title).substring(0, 1)).toLowerCase() == String(firstLetter).toLowerCase()) {
			filteredList[i] = productArray[item];
			i++;
		}
	}
	return filteredList;
}

function getFilteredDisplayListByBrandFirstLetter(firstLetter) {
	debug("getFilteredDisplayListByBrandFirstLetter");
	var productArray = pd_displayList;
	var filteredList = new Array();
	var item = new Object();
	var i = 0;
	for(item in productArray) {
		if((String(productArray[item].brand).substring(0, 1)).toLowerCase() == String(firstLetter).toLowerCase()) {
			filteredList[i] = productArray[item];
			i++;
		}
	}
	return filteredList;
}

function getFirstLetterListByBrand() {
	debug("getFirstLetterListByBrand");
	var productArray = pd_displayList;
	var firstLetterHash = new Array();
	var item = new Object();
	var firstLetter = "";
	for(item in productArray) {
		firstLetter = (String(productArray[item].brand).substring(0,1)).toUpperCase();
		firstLetterHash[firstLetter] = firstLetter;
	}
	return firstLetterHash;
}

function getFirstLetterListByTitle() {
	debug("getFirstLetterListByTitle");
	var productArray = pd_displayList;
	var firstLetterHash = new Array();
	var item = new Object();
	var firstLetter = "";
	for(item in productArray) {
		firstLetter = (String(productArray[item].title).substring(0,1)).toUpperCase();
		firstLetterHash[firstLetter] = firstLetter;
	}
	return firstLetterHash;
}


function getBrandList() {
	var productArray = pd_displayList;
	var brandList = new Array();
	var item = new Object();
	for(item in productArray) {
		if(!brandList[productArray[item].brand]) {
			brandList[productArray[item].brand] = new Object();
			brandList[productArray[item].brand].name = productArray[item].brand;
			brandList[productArray[item].brand].count = 1;
		} else {
			brandList[productArray[item].brand].count++;
		}		
	}
	var i = 0;
	var tempArray = new Array();
	for(item in brandList) {
		tempArray[i] = brandList[item];
		i++;
	}
	brandList = tempArray;
	brandList.sort(compareBrandListName);
	return brandList;
}

function getSizeList() {
	var productArray = pd_displayList;
	var sizeList = new Array();
	var item = new Object();
	var item2 = new Object();
	for(item in productArray) {
		var tempList = productArray[item].sizeList.split(",");
		for(item2 in tempList) {
			if(!isBlank(tempList[item2])) {
				sizeList[tempList[item2]] = new Object();
				sizeList[tempList[item2]].size = tempList[item2];
			}
		}	
	}
	var i = 0;
	var tempArray = new Array();
	for(item in sizeList) {
		tempArray[i] = sizeList[item];
		i++;
	}
	sizeList = tempArray;
	sizeList.sort(compareSize);
	return sizeList;
}


function startsWithNumber(input) {
	if(	String(input).substring(0, 1) == "0" ||
		String(input).substring(0, 1) == "1" ||
		String(input).substring(0, 1) == "2" ||
		String(input).substring(0, 1) == "3" ||
		String(input).substring(0, 1) == "4" ||
		String(input).substring(0, 1) == "5" ||
		String(input).substring(0, 1) == "6" ||
		String(input).substring(0, 1) == "7" ||
		String(input).substring(0, 1) == "8" ||
		String(input).substring(0, 1) == "9") {
		return true;
	} else {
		return false;
	}
}


function getCurrentPageNumber() {
	debug("initialize : getCurrentPageNumber");
	var pageNumber = 1;
	var currentSection = pdGetCookie("pd_stickyBreadcrumbSection");
	if(pd_lastSection == currentSection) {
		pageNumber = pdGetCookie("V2pd_currentPageNumber");
	}
	pdSetCookie("V2pd_lastPageNumber", pageNumber);
	pdSetCookie("V2pd_lastSection", currentSection);
	if(isBlank(pageNumber)) pageNumber = 1;
	return pageNumber;	
}
//*******************************************************************
//*********** END DISPLAY PAGE ELEMENTS RELATED TO SORTING **********
//*******************************************************************

//*******************************************************************
//****************** COMPARE AND SORT FUNCTIONS *********************
//*******************************************************************
function getCurrentSortBy() {
	debug("initialize : getCurrentSortBy");
	var pd_sortBy = "";
	var currentSection = "";
	if(pd_lastSection == currentSection) {
		pd_sortBy = pdGetCookie("V2pd_pagingSortBy");
	}
	if(isBlank(pd_sortBy)) pd_sortBy = "";
	return pd_sortBy;	
}

function sortProductArrayByPrice() {
	debug("sortProductArrayByPrice");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(comparePrice);
	pd_sortBy = "price";
	return true;
}

function sortProductArrayByCasePackSize() {
	debug("sortProductArrayByCasePackSize");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareCasePackSize);
	pd_sortBy = "casePackSize";
	return true;
}

function sortProductArrayByDefaultSort() {
	debug("sortProductArrayByDefaultSort");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareBrand);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareDefaultSort);
	pd_sortBy = "defaultSort";
	return true;
}


function sortProductArrayByTitle() {
	debug("sortProductArrayByTitle");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareTitle);
	pd_sortBy = "title";
	return false;
}

function sortProductArrayByBrand() {
	debug("sortProductArrayByBrand");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareBrand);
	pd_sortBy = "brand";
	return false;
}

function sortProductArrayBySizeForm() {
	debug("parseDisplayListBySizeForm");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareSizeForm);
	pd_sortBy = "sizeForm";
	return false;
}
function sortProductArrayByRating() {
	debug("sortProductArrayByRating");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareRating);
	pd_sortBy = "rating";
	return false;
}

function sortProductArrayByBestseller() {
	debug("sortProductArrayByBestseller");
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareId);
	pd_filteredDisplayList = pd_filteredDisplayList.sort(compareBestseller);
	pd_sortBy = "bestseller";
	return false;
} 


function compareId(item1, item2) {
	if(item1.id > item2.id) return 1;
	else if(item1.id < item2.id) return -1;
	else return 0;
}

function compareDefaultSort(item1, item2) {
	var sortValue1 = 0;
	var sortValue2 = 0;
	if(item1.defaultSort == "top") sortValue1 = 1;
	if(item2.defaultSort == "top") sortValue2 = 1;
	if(item1.defaultSort == "bot") sortValue1 = -1;
	if(item2.defaultSort == "bot") sortValue2 = -1;	
	if(sortValue1 > sortValue2) return -1;
	else if(sortValue1 < sortValue2) return 1;
	else return 0;
}

function compareTitle(item1, item2) {
	if(item1.title > item2.title) return 1;
	else if(item1.title < item2.title) return -1;
	else return 0;
}

function compareBrand(item1, item2) {
	if(item1.brand > item2.brand) return 1;
	else if(item1.brand < item2.brand) return -1;
	else return 0;
}

function compareSizeForm(item1, item2) {
	if(item1.sizeForm > item2.sizeForm) return 1;
	else if(item1.sizeForm < item2.sizeForm) return -1;
	else return 0;
}

function comparePrice(item1, item2) {
	if(item1.price > item2.price) return 1;
	else if(item1.price < item2.price) return -1;
	else return 0;
}
function compareCasePackSize(item1, item2) {
	if(item1.casePackSize > item2.casePackSize) return 1;
	else if(item1.casePackSize < item2.casePackSize) return -1;
	else return 0;
}

function compareBestseller(item1, item2) {
	if(item1.bestseller > item2.bestseller) return -1;
	else if(item1.bestseller < item2.bestseller) return 1;
	else return 0;
}

function compareRating(item1, item2) {
	if(item1.rating > item2.rating) return -1;
	else if(item1.rating < item2.rating) return 1;
	else return 0;
}

function compareBrandListName(item1, item2) {
	if(item1.name > item2.name) return 1;
	else if(item1.name < item2.name) return -1;
	else return 0;
}


function compareSize(item1, item2) {
	if(getSizeSortValue(item1.size) > getSizeSortValue(item2.size)) return 1;
	else if(getSizeSortValue(item1.size) < getSizeSortValue(item2.size)) return -1;
	else return 0;
}

function getSizeSortValue(size) {
	size = size.toUpperCase();
	if(size == "XS" || size == "X-SMALL" || size == "EXTRA SMALL") sizeScore = 0;
	else if(size == "S" || size == "SMALL") sizeScore = 2;
	else if(size == "M" || size == "MEDIUM") sizeScore = 6;
	else if(size == "L" || size == "LARGE") sizeScore = 8;
	else if(size == "XL" || size == "EXTRA LARGE" || size == "X-LARGE") sizeScore = 10;
	else if(size - 0 == size) sizeScore = size;
	else sizeScore = 999;
	return sizeScore;
}
//*******************************************************************
//************** END COMPARE AND SORT FUNCTIONS *********************
//*******************************************************************

function debug(message) {
	if(pd_debugFlag == true) {
		alert(message);
	}
	return false;
}

function getElementsByClassName(classname, node)  {
    if(!node) node = document.getElementsByTagName("body")[0];
    var a = [];
    var re = new RegExp('\\b' + classname + '\\b');
    var els = node.getElementsByTagName("*");
    for(var i=0,j=els.length; i<j; i++)
        if(re.test(els[i].className))a.push(els[i]);
    return a;
}


function turnOffDisplayOfDataElements() {
	var elementArray = getElementsByClassName("displayDiv");
	var item = new Object();
	for(item in elementArray) {
		elementArray[item].className = "displayDivHide";
	}
	return true;
}

function parseBoolean(input, returnType) {
	var trueValue = true;
	var falseValue = false;
	if(returnType == "YESNO" || returnType == "YES/NO") {
		trueValue = "yes";
		falseValue = "no";
	}
	input = String(input).toUpperCase();
	if(input == "TRUE" || input == "YES" || input == "1" || input == "T" || input == "Y") return trueValue;
	else if(input == "FALSE" || input == "NO" || input == "0" || input == "F" || input == "N") return falseValue;
	else return false;
}
