//*************************************************
//***** COPYRIGHT 2006, PRACTICAL DATA, INC. ******
//***** - UNAUTHORIZED USE IS PROHIBITED **********
//*************************************************
if(isBlank(pd_itemsPerPage)) var pd_itemsPerPage = 25;
if(isBlank(pd_itemsPerRow)) var pd_itemsPerRow = 1;
if(isBlank(pd_sortBy)) var pd_sortBy = "";

var pd_lastSection = pdGetCookie("V2pd_lastSection");
var pd_refreshId = "";
var pd_debugFlag = false;
var pd_currentPageNumber = getCurrentPageNumber();
var pd_pagesToDisplay = 5;
var pd_searchFirstRun = true;
var pd_sortMethod = "title"
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_filteredDisplayList = new Array();

//***********************************************
//***** BEGIN MULTI ADD FUNCTIONALITY ******
//***********************************************
function selectItem(checkbox,item,orderable){
	//***** IF PRODUCT IS OUT OF STOCK, DO NOT ALLOW SELECTION ****//
	if(orderable == 'no'){
		alert("This item is out of stock and cannot be added with your order.");
		document.getElementById(checkbox).checked = false;
		return false
	}
	var getCheckboxId = checkbox.substring(3,checkbox.length);
	var status = document.getElementById(checkbox).checked;
	if(status == true){
		document.getElementById(getCheckboxId).checked = true;
	}else{
		document.getElementById(getCheckboxId).checked = false;
	}

	if(document.multiOrderForm[checkbox].checked){
		document.getElementById(item).style.backgroundColor = "#FFFFC8";
	}else{
		document.getElementById(item).style.backgroundColor = "";
	}
	calculateSubtotal();
}

function updateQuantity(name,currentValue){
	var qtyFieldName = name.replace(/add/,"");
	document.multiOrderForm.elements[qtyFieldName].value = currentValue;

	//ADJUST QUANTITY ON SINGLE ORDER BUTTON FORMS, BUY NOW BUTTONS
	var singleFrmNum = name.replace(/addvwquantity/,"");
	var singleFrm = document.getElementById("singleItemFrm" + singleFrmNum);
	singleFrm.vwquantity.value = currentValue;
	
	calculateSubtotal();
}

function calculateSubtotal(){
 var subTotal = 0;
 var formLen = document.multiOrderForm.elements.length;
 var elem;
 var name = "";
 var namevw = "";
 var elemNum = "";
 var elemNumStr = "";
 var quantity = 1;
 var price = 0;
		
	 for(i=0; i<formLen; i++){
		elem = document.multiOrderForm.elements[i]
		name = elem.name;
		namevw = name.substring(0,2);
		elemNum = name.replace(/vwitem/,"");
		
			if(elem.type == "checkbox" && namevw == "vw" && elem.checked){
				price = getFrmElementValue("vwitem" + elemNum + "-price");
				quantity = getFrmElementValue("vwquantity" + elemNum); 
				//alert("price: " + price);
				//alert("quantity: " + quantity);
				subTotal += price * quantity;
			}
	 } 
 document.getElementById("multiOrderSubtotal").innerHTML = 'Checked Items Subtotal: ' + formatCurrency(subTotal);
 document.getElementById("multiOrderSubtotal2").innerHTML = 'Checked Items Subtotal: ' + formatCurrency(subTotal);
}


function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num%100;
num = Math.floor(num/100).toString();
if(cents<10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
num = num.substring(0,num.length-(4*i+3))+','+
num.substring(num.length-(4*i+3));
return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function checkPagedBoxes(){
	var frm = document.multiOrderForm;
	var name= "";
	for (var i=0; i<frm.elements.length; i++) {
		name = frm.elements[i].name;
		namevw = name.substring(0,2);
		nameAdd = "add" + name;
		if(frm.elements[i].type == 'checkbox' && namevw == "vw" && frm.elements[i].checked) {
			doCheckPagedItemBox(nameAdd);
		}
	}
}
function doCheckPagedItemBox(item){
	if(document.getElementById(item)){
		document.getElementById(item).checked = "true";
		var itemValue = document.getElementById(item).value;
		selectItem(item,itemValue,'yes');
	}
}

function adjustPagedQuantity(){
	//alert("adjustPagedQuantity");
	var frm = document.multiOrderForm;
	var name= "";
	var namevw = "";
	var nameadd = "";
	for (var i=0; i<frm.elements.length; i++) {
		name = frm.elements[i].name;
		namevw = name.substring(0,2);
		nameadd = name.substring(0,3);
		if(frm.elements[i].type == 'text' && nameadd == "add") {
			doQtyAdjItem(name);
		}
	}
}
function doQtyAdjItem(item){
	if(document.getElementById(item)){
		itemQtyAdjName = item.replace(/add/,"");
		var qty = getFrmElementValue(itemQtyAdjName);
		document.getElementById(item).value = qty;
	}
}
//***********************************************
//***** END MULTI ADD FUNCTIONALITY *************
//***********************************************

//***********************************************
//***** PRODUCT COMPARISON ***********************
//***********************************************
function doCompare(){
	var frm = document.multiOrderForm;
	var name= "";
	var namevw = "";
	var linkIds = "";
	for (var i=0; i<frm.elements.length; i++) {
		name = frm.elements[i].name;
		namevw = name.substring(0,2);
		nameAdd = "add" + name;
		if(frm.elements[i].type == 'checkbox' && namevw == "vw" && frm.elements[i].checked) {
			linkIds += getFrmElementValue(name);
			linkIds += " ";
		}
	}
	comparePop(linkIds);
	return false;
	
}
function comparePop(ids){
	var url = "http://www.vitadigest.net/pdCompareDisplay/display.php?ids=" + ids;
	window.open(url,"comparison", "");
}
//***********************************************
//***** UTILITY FUNCTIONS ***********************
//***********************************************
function getCheckedValues() {
	var frm = document.multiOrderForm;
	var checked = "";
	for (var i=0; i<frm.elements.length; i++) {
		if(frm.elements[i].type == 'checkbox' && frm.elements[i].checked) {
			checked += frm.elements[i].name;
			checked += " ";
		}
	}
	return checked;
}

function getFrmElementValue(elemId) {
	var value = document.getElementById(elemId).value;
	return value;
}
function resetDisplay(){
	var frm = document.multiOrderForm;
	var name = "";
	var nameMatch = "";
	var itemValue = "";
	for (var i=0; i<frm.elements.length; i++) {
		
		if(frm.elements[i].type == 'checkbox' && frm.elements[i].checked) {
			name = frm.elements[i].name;
			itemValue = frm.elements[i].value;
			frm.elements[i].checked = false;
			document.getElementById(itemValue).style.backgroundColor = "";
		}
	}
	for (var i=0; i<frm.elements.length; i++) {
		name = frm.elements[i].name;
		nameMatch = name.match("vwquantity");
		if(frm.elements[i].type == 'text' && nameMatch) {
			frm.elements[i].value = "1";
		}
	}
	//clearSearch();
	viewPage(1);
}
//***********************************************
//***** END UTILITY FUNCTIONS *******************
//***********************************************

//***************************************************************************
//********* 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;
		pd_searchText = document.forms.pagingSearchForm.filterBySearchTerm.value;
	}
	
	//pd_filteredDisplayList = getFilteredDisplayListByBrand(pd_brandSelected);
	//pd_filteredDisplayList = getFilteredDisplayListBySize(pd_sizeSelected);
	//pd_filteredDisplayList = getFilteredDisplayListByPriceRange(pd_priceRange);

	// ***** 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();
	
	return false;
}

function searchWhileTyping(searchTerm) {
	pd_searchText = searchTerm;
	document.getElementById("searchButtonDisplay").innerHTML = '<a href="#" onClick="return(clearSearch());"><img src="' + imageUrl + 'x.gif" border="0"></a>';
	window.clearTimeout(pd_refreshId);
	pd_refreshId = window.setTimeout("performFilter()", pd_filterSearchDelay);
	return false;
}

function renderSearchForm() {
	debug("renderSearchForm");
	var	html = '<form id="pagingSearchForm" onSubmit="return(false)" style="display:inline">';
	html += '<input type="text" size="15" class="searchField" name="filterBySearchTerm" value="' + pd_searchText + '"  onClick="return(clearFirstTimeSearchText())" onKeyUp="return(searchWhileTyping(document.forms.pagingSearchForm.filterBySearchTerm.value))">';
	html += '</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");
	clearSearchBox();
	pd_searchText = "";
	pd_currentPageNumber = 1;
	performFilter();
	return false;
	//pd_filteredDisplayList = pd_displayList;
	//document.forms.pagingSearchForm.filterBySearchTerm.value = pd_searchTextFirstLoad;	
}

//***********************************************
//********* 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 listWrapper = "";
	try {
		listWrapper = document.getElementById("listWrapper");
	} catch(e) {
		//*** IGNORE		
	}
	
debug("listWrapper = " + listWrapper);
	
	if(!isBlank(listWrapper)) {
	
		if(listWrapper.firstChild) { // check for children
			var oChild = listWrapper.firstChild;
			while(oChild) {
			
			    if(oChild.nodeType==1 && String(oChild.id).indexOf("productDisplay") > -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 == "id") displayList[i].id = String(subChild.title);
						if(subChild.id == "ha-name") displayList[i].haName = 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 == "sizeForm") displayList[i].sizeForm = String(subChild.title);
						if(subChild.id == "price") displayList[i].price = subChild.title - 0;
						if(subChild.id == "rating") displayList[i].rating = subChild.title - 0;
						if(subChild.id == "bestseller") displayList[i].bestseller = subChild.title;
						if(subChild.id == "sizeList") displayList[i].sizeList = subChild.title;
					}
					
					//*********************************
					//*** USE HA-NAME, IF SPECIFIED ***
					//*********************************					
					if(!isBlank(displayList[i].haName)) displayList[i].title = displayList[i].haName;
										
					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();
				
				//***********************************************************
				//**** 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;
		   }
		}
	} 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 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);	
	for(item in productArray) {
		productIdList += productArray[item].id;
		tempHtml = '';
		if(pageNumber == pd_currentPageNumber || pd_currentPageNumber == "all") {

			//******* CREATE OPENING PRODUCT HTML DIV WRAPPER **********
			tempHtml += '<div id="' + productArray[item].id;
			if(!shade) {
				tempHtml += '" class="displayDivOn">';
			} else {
				tempHtml += '" class="displayDiv">';
			}
			//******* GET HTML FROM PRODUCT DIV **********
			tempHtml += String(productArray[item].html)
			//******* CLOSE DIV **********
			tempHtml += '</div>';
			rowItemCount++;
			
			if(rowItemCount > pd_itemsPerRow) {
				tempHtml += '';
				rowItemCount = 1;
				isOpen = false;
			}
			
			shade = !shade;
		}
		i++;
		pageNumber = Math.ceil(i / pd_itemsPerPage);
		html += tempHtml;
	}
	return html;
}


function displayProductArray() {
	debug("displayProductArray");
	
	//*************************************
	//**** TEST FOR NOTHING TO DISPLAY ****
	//*************************************
	if(!pd_filteredDisplayList) return false;
	
	if(pd_filteredDisplayList.length == 0) {
		document.getElementById("listWrapper").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 == "brand") sortProductArrayByBrand();
	else if(pd_sortBy == "price") sortProductArrayByPrice();
	else if(pd_sortBy == "rating") sortProductArrayByRating();
	else if(pd_sortBy == "bestseller") sortProductArrayByBestseller();
	else if(pd_sortBy == "sizeForm") sortProductArrayBySizeForm();
	
	//*******************************
	//**** RENDER PAGE ELEMENTS *****
	//*******************************		
	if(isBlank(pd_currentPageNumber)) {
		debug("could not find pd_currentPageNumber " + pd_currentPageNumber + ": setting = 1");
		pd_currentPageNumber = 1;
	}
	
	document.getElementById("listWrapper").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("nextButton").innerHTML = renderNextButton(pd_filteredDisplayList.length);
	document.getElementById("viewAllButton").innerHTML = renderViewAllButton(pd_filteredDisplayList.length);
	document.getElementById("viewAllButtonBottom").innerHTML = renderViewAllButton(pd_filteredDisplayList.length);

	document.getElementById("sortLinksMenu").innerHTML = renderSortByDropdown();
	document.getElementById("searchFilter").innerHTML = renderSearchForm();

	//******************************************************************
	//******* REMEMBER CHECKED BOXES AND QUANTITY IN PAGED DISPLAY
	//******************************************************************
	checkPagedBoxes();
	adjustPagedQuantity();

	/*
	NOT BEING USED
	//******************************************************************
	//*** ONLY DISPLAY BOTTOM ITEMS IF MORE THAN ONE PAGE OF RESULTS ***
	//******************************************************************
	var pageCount = Math.ceil(pd_filteredDisplayList.length/pd_itemsPerPage);
	if(pageCount > 1) {
		document.getElementById("itemCountInfoBottom").innerHTML = renderItemCountInfo(pd_filteredDisplayList.length);
	} else {
		document.getElementById("itemCountInfoBottom").innerHTML = "";
	}
		
	document.getElementById("itemCountInfo").innerHTML = renderItemCountInfo(pd_filteredDisplayList.length);
	document.getElementById("sortLinks").innerHTML = renderSortLinks();
	document.getElementById("filterByBrand").innerHTML = renderBrandList();
	document.getElementById("searchPriceFilterSpan").innerHTML = renderPriceFilter();
	document.getElementById("alphaLinksHTML").innerHTML = renderAlphaLinks("title"); 
	hideAlphaBar();
	*/
	
	//**************
	//*** RETURN ***
	//**************
	return false;
}

function renderSortLinks() {
	//if(pd_currentPageNumber!="all" && pd_currentPageNumber>1) pd_currentPageNumber=1;
	var html="";
	if(pd_sortBy=="brand") {
		html+='<font class="sortLinkOn">Sort By Designer</font>'
	} else {
		html+='<img src="http://files.duematernity.com/v3/images/pageSortArrows.gif">&nbsp;<a href="#" class="sortLink" onClick="return(doSortBy(\'brand\'))">Sort By Designer</a>'
	}
	html+='  &nbsp;&nbsp;&nbsp;';
	if(pd_sortBy=="price") {
		html+='<font class="sortLinkOn">Sort By Price</font>'
	} else {
		html+='<img src="http://files.duematernity.com/v3/images/pageSortArrows.gif">&nbsp;<a href="#" class="sortLink" onClick="return(doSortBy(\'price\'))">Sort By Price</a>';
	}
	return html;
}



//*******************************************************
//****** DISPLAY PAGE ELEMENTS RELATED TO SORTING *******
//*******************************************************
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 firstPageNumber = pd_currentPageNumber - Math.floor(pagesToDisplay / 2);
		if(firstPageNumber < 1) {
			extraPages = 1 - firstPageNumber;
			firstPageNumber = 1;
		}
		var lastPageNumber = (pd_currentPageNumber - 0) + Math.floor(pagesToDisplay / 2) + extraPages;
		if(lastPageNumber > pageCount) lastPageNumber = pageCount;
		html += '<table border="0" cellpadding="0" cellspacing="0"><tr>';
		for(var i=firstPageNumber;i<=lastPageNumber;i++) {
			if(pd_currentPageNumber == i) {
				html += '<td><div class="pageNumBgOn"><font class="pageNumOn">' + i + '</font></div></td>';
				if(i < lastPageNumber) html += '';
			} else {
				html += '<td><div class="pageNumBg"><a href="#" class="pageNum" onClick="return(viewPage(' + i + '))">' + i + '</a></div></td>';
				if(i < lastPageNumber) 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 += '<div class="viewAllDiv"><nobr><a href="#" onClick="return(viewPage(1))" class="viewAllLink">Return to Paged View</a></nobr></div>';
	} else {
		html += '<div class="viewAllDiv"><nobr><a href="#" onClick="return(viewAll())" class="viewAllLink">View All Items</a></nobr></div>';
	}
	
	calculateSubtotal();
	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 renderSortByDropdown() {
	var html = '<form style="display:inline">';
	html += '<select name="sortBy" onChange="return(doSortBy(this.options[this.selectedIndex].value))" class="sortDDMenu">';
	html += '<option>Sort Items 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></form>';
	return html;
}

function doSortBy(sortBy) {
	pd_sortBy = sortBy;
	var result = displayProductArray();
	return false;
}


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;
}

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("V2pd_stickyBreadcrumbSection");
	if(pd_lastSection == currentSection) {
		pageNumber = pdGetCookie("V2pd_currentPageNumber");
	}
	pdSetCookie("V2pd_lastPageNumber", pageNumber);
	pdSetCookie("V2pd_lastSection", currentSection);
	if(isBlank(pageNumber)) pageNumber = 1;
	return pageNumber;	
}

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 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 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 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;
}


function debug(message) {
	if(pd_debugFlag == true) {
		alert(message);
	}
	return false;
}
