//** This includes all these files.... ***//
//** 1 pdUtilities.js ************//
//** 2 pagingRoutines.js **//
//** 3 recentlyViewedItems.js ** //
//** 4 displayRecentlyViewedItems.js **//
//** 5 serialize.js **//
//** 6 getStoreCode.js **//
//** 7 formatCurrency.js **//
//** 8 floatingCartDisplayPage.js **//
//** 9 displayShoppingCart.js **//

//** 1 pdUtilities.js ************//
//*************************************************
//***** COPYRIGHT 2005, PRACTICAL DATA, INC. ******
//***** - UNAUTHORIZED USE IS PROHIBITED **********
//*************************************************
function pdGetCookie(cookieName) {
	var allCookies = document.cookie;
	var cookieStart = allCookies.indexOf(cookieName)
	if(cookieStart == -1) return "";
	cookieStart = cookieStart + cookieName.length + 1;
	var cookieEnd = allCookies.indexOf(";", cookieStart);
	if(cookieEnd == -1) cookieEnd = allCookies.length;
	var cookieValue = unescape(allCookies.substring(cookieStart, cookieEnd));
	return cookieValue;
}

function pdSetCookie(cookieName, cookieValue, cookieDomain, cookiePath, expirationDate) {
	if(isBlank(cookieDomain)) cookieDomain = getCurrentDomainName();
	if(isBlank(cookiePath)) cookiePath = "/";
	var cookieString = cookieName + "=" + escape(cookieValue) + ";domain=" + cookieDomain + ";path=" + cookiePath;
	if(!isBlank(expirationDate)) {
		cookieString += ";expires=" + expirationDate.toGMTString();
	}
	document.cookie = cookieString;
	return true;
}

function getCurrentDomainName() {
	var url = String(location);
	var domainName = extractDomain(url);
	return domainName;
}

function extractDomain(url) {
	var url = url.replace("http://", "");
	var slashIndex = url.indexOf("/");
	if(slashIndex == -1) slashIndex = url.length;
	var url = url.substring(0, slashIndex);
	var urlSectionArray = url.split('.');
	var urlSectionArrayLength = urlSectionArray.length;
	var domainName = "";
	for(var i=urlSectionArrayLength - 2;i<urlSectionArrayLength; i++) {
		domainName += "." + urlSectionArray[i];
	}
	return domainName;
}

function isBlank(item) {
	item = String(item).toLowerCase();
	if(item == "undefined" || item == "" || item == "null") return true;
	else return false;
}


//** 2 pagingRoutines.js **
//*************************************************
//***** COPYRIGHT 2005, PRACTICAL DATA, INC. ******
//***** - UNAUTHORIZED USE IS PROHIBITED **********
//*************************************************
if(isBlank(imageUrl)) var imageUrl = "http://site.vitamaker.com/";
var lastSection = "";
function parseProductArray(itemsPerPage) {

	//***********************************************
	//***** BUILD JS ARRAY OF PRODUCT ELEMENTS ******
	//***********************************************
	var i = 0;
	var productArray = new Array();
	
	//*******************************************
	//*** ONLY LOAD IF PRODUCT WRAPPER EXISTS ***
	//*******************************************
	var productIdString = "";
	var productWrapper = document.getElementById("productWrapper");
	if(!isBlank(productWrapper)) {
		if(productWrapper.firstChild) { // check for children
			var oChild = productWrapper.firstChild;
			while(oChild) {
			 if(oChild.nodeType==1 && String(oChild.id).indexOf("productDisplay") > -1) { 
				productArray[i] = new Object();
				productArray[i].id = oChild.id;
				productArray[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 == "name") productArray[i].title = subChild.title;
						if(subChild.id == "id") productArray[i].productId = subChild.title;
						if(subChild.id == "price") productArray[i].price = subChild.title - 0;
						if(subChild.id == "rating") productArray[i].rating = subChild.title - 0;
						if(subChild.id == "topSeller") productArray[i].topSeller = subChild.title;
						if(subChild.id == "manufacturer") productArray[i].manufacturer = subChild.title;
						if(subChild.id == "costPerServing") {
							productArray[i].costPerServing = subChild.title;
							if(isBlank(productArray[i].costPerServing)) productArray[i].costPerServing = 9999;
							productArray[i].costPerServing = productArray[i].costPerServing -0;
						}
						
					}
					subChild = subChild.nextSibling;
				}
				
				//*********************************
				//**** BUILD PRODUCT ID STRING ****
				//*********************************
				if(productArray[i].productId) productIdString += productArray[i].productId + ",";
				
			 	i++;
			 }
			  oChild = oChild.nextSibling;
		   }
		}
	}
	
	//*******************************
	//**** SAVE productIdString *****
	//*******************************
	if(!isBlank(productIdString)) {
		productIdString = String(productIdString).substring(0, productIdString.length -1);	//*** TRIM TRAILING COMMA
		pdSetCookie("pd_currentProductList", productIdString, "", "", "");
	}
	
	//****************
	//**** RETURN ****
	//****************
	return productArray;	
}


function renderProductArray(productArray, currentPageNumber, itemsPerPage, sortByField) {

	var html = "";
	var pageNumber = 1;
	var i = 1;
	var item = new Object();
	var tempHtml = "";
	var tempProductHtml = "";
	var rowItemCount = 1;
	var isOpen = false;
	var productIdList = "";
	for(item in productArray) {
		productIdList += productArray[item].id;
		tempHtml = "";
		
		if(pageNumber == currentPageNumber || currentPageNumber == "all") {
			
			if(rowItemCount == 1) {
				tempHtml += '<table border="0"><tr>\r\n';
				isOpen = true;
			}
			tempHtml += '<td valign="top"><div id="' + productArray[item].id + '" class="displayDiv">';

			tempProductHtml = String(productArray[item].html);
			if(sortByField == "costPerServing") {
				tempProductHtml = tempProductHtml.replace("costPerServingDisplay", "costPerServingDisplayOn");
			} else if(sortByField == "rating") {
				tempProductHtml = tempProductHtml.replace("ratingDisplay", "ratingDisplayOn");
			} else if(sortByField == "manufacturer") {
				tempProductHtml = tempProductHtml.replace("manufacturerDisplay", "manufacturerDisplayOn");
			}
			tempHtml += tempProductHtml;
			
			tempHtml += '</div></td>';
			rowItemCount++;
			
			if(rowItemCount > itemsPerRow) {
				tempHtml += '<tr><td colspan="' + itemsPerRow + '"><hr class="pagingHrRow"></td></tr>';
				tempHtml += '</tr></table>';
				rowItemCount = 1;
				isOpen = false;
			}
		}
		
		i++;
		pageNumber = Math.ceil(i / itemsPerPage);
		html += tempHtml;
	}
	
	if(isOpen) html += '\r\n</tr></table>\r\n';
	return html;
}

function sortProductArrayByPrice(productArray) {
	productArray = productArray.sort(compareId);
	productArray = productArray.sort(comparePrice);
	sortBy = "price";	
	return productArray;
}

function sortProductArrayByTitle(productArray) {
	productArray = productArray.sort(compareId);
	productArray = productArray.sort(compareTitle);
	sortBy = "title";
	return productArray;
}

function sortProductArrayByRating(productArray) {
	productArray = productArray.sort(compareId);
	productArray = productArray.sort(compareRating);
	sortBy = "rating";
	return productArray;
}

function sortProductArrayByTopSeller(productArray) {
	productArray = productArray.sort(compareId);
	productArray = productArray.sort(compareTopSeller);
	sortBy = "topSeller";
	return productArray;
} 

function sortProductArrayByManufacturer(productArray) {
	productArray = productArray.sort(compareId);
	productArray = productArray.sort(compareManufacturer);
	sortBy = "manufacturer";
	return productArray;
} 

function sortProductArrayByCostPerServing(productArray) {
	productArray = productArray.sort(compareId);
	productArray = productArray.sort(compareCostPerServing);
	sortBy = "costPerServing";
	return productArray;
}

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 comparePrice(item1, item2) {
	if(item1.price > item2.price) return 1;
	else if(item1.price < item2.price) return -1;
	else return 0;
}

function compareTopSeller(item1, item2) {
	if(item1.topSeller > item2.topSeller) return -1;
	else if(item1.topSeller < item2.topSeller) return 1;
	else return 0;
}

function compareManufacturer(item1, item2) {
	if(item1.manufacturer > item2.manufacturer) return 1;
	else if(item1.manufacturer < item2.manufacturer) 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 compareCostPerServing(item1, item2) {
	if(item1.costPerServing > item2.costPerServing) return 1;
	else if(item1.costPerServing < item2.costPerServing) return -1;
	else return 0;
}

function displayProductArray(productArray, currentPageNumber, itemsPerPageRequest, sortByField) {
	
	//*************************************
	//**** TEST FOR NOTHING TO DISPLAY ****
	//*************************************
	if(productArray.length == 0) return false;
	
	//***********************************
	//**** REMEMBER GLOBAL SETTINGS *****
	//***********************************
	if(!isBlank(sortByField)) sortBy = sortByField;
	itemsPerPage = itemsPerPageRequest;
	pdSetCookie("pd_currentPageNumber", currentPageNumber);
	pdSetCookie("pd_pagingSortBy", sortBy);
	
	//********************
	//*** PERFORM SORT ***
	//********************
	if(sortBy == "title") productArray = sortProductArrayByTitle(productArray);
	else if(sortBy == "price") productArray = sortProductArrayByPrice(productArray);
	else if(sortBy == "rating") productArray = sortProductArrayByRating(productArray);
	else if(sortBy == "topSeller") productArray = sortProductArrayByTopSeller(productArray);
	else if(sortBy == "manufacturer") productArray = sortProductArrayByManufacturer(productArray);
	else if(sortBy == "costPerServing") productArray = sortProductArrayByCostPerServing(productArray);
		
	if(isBlank(currentPageNumber)) currentPageNumber = 1;
	document.getElementById("productWrapper").innerHTML = renderProductArray(productArray, currentPageNumber, itemsPerPage, sortByField);
	document.getElementById("pageInfo").innerHTML = renderPageInfo(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("pageInfoBottom").innerHTML = renderPageInfo(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("sortLinks").innerHTML = renderSortLinks(currentPageNumber, sortBy);
	document.getElementById("previousButton").innerHTML = renderPreviousButton(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("previousButtonBottom").innerHTML = renderPreviousButton(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("pageNumberLinks").innerHTML = renderPageNumberLinks(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("pageNumberLinksBottom").innerHTML = renderPageNumberLinks(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("nextButton").innerHTML = renderNextButton(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("nextButtonBottom").innerHTML = renderNextButton(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("viewAllButton").innerHTML = renderViewAllButton(productArray.length, currentPageNumber, itemsPerPage);
	document.getElementById("viewAllButtonBottom").innerHTML = renderViewAllButton(productArray.length, currentPageNumber, itemsPerPage);

	//**************
	//*** RETURN ***
	//**************
	return false;
}

function getCurrentPageNumber() {
	var pageNumber = 1;
	var currentSection = pdGetCookie("pd_stickyBreadcrumbSection");
	if(lastSection == currentSection) {
		pageNumber = pdGetCookie("pd_currentPageNumber");
	}
	pdSetCookie("pd_lastPageNumber", pageNumber);
	if(isBlank(pageNumber)) pageNumber = 1;
	return pageNumber;	
}

function getCurrentSortBy(defaultSortBy) {
	var sortBy = "";
	var currentSection = pdGetCookie("pd_stickyBreadcrumbSection");
	sortBy = pdGetCookie("pd_pagingSortBy");
	if(isBlank(sortBy)) sortBy = defaultSortBy;
	if(isBlank(sortBy)) sortBy = "";
	return sortBy;
}

//*******************************************************
//****** DISPLAY PAGE ELEMENTS RELATED TO SORTING *******
//*******************************************************
function renderPageNumberLinks(productCount, currentPageNumber, itemsPerPage) {
	var pageCount = Math.ceil(productCount/itemsPerPage);
	if(pageCount == 1) return "";	
	var html = "";
	if(currentPageNumber != "all") {
		for(var i=1;i<pageCount + 1;i++) {
			if(currentPageNumber == i) {
				html += '<font class="pageNumOn">' + i + '</font>&nbsp;<font class="pageNum"> | </font>&nbsp;';
			} else {
				html += '<a href="#" class="pageNum" onClick="return(displayProductArray(productArray, ' + i + ', ' +  itemsPerPage + '))">' + i + '</a>&nbsp;<font class="pageNum"> | </font>&nbsp;';
			}
		}
		html = html.substring(0, html.length - 15);	//**** TRIM TRAILING SEPARATOR
	}
	return html;
}

function renderPageInfo(productCount, currentPageNumber, itemsPerPage) {
	var pageCount = Math.ceil(productCount/itemsPerPage);
	if(pageCount == 1) return "";
	var html = "";
	
	if(currentPageNumber != "all") {
		html += '<font class="pageInfo">Page ' + currentPageNumber + ' of ' + pageCount + '</font>';
	}
	
	return html;
}

function renderPreviousButton(productCount, currentPageNumber, itemsPerPage) {
	var html = "";
	if(currentPageNumber != "all") {	
		if(currentPageNumber > 1) {
			var previousPage = currentPageNumber - 1;
			html += '<a href="#" onClick="return(displayProductArray(productArray, ' + previousPage + ', ' +  itemsPerPage + '))"><img src="' + imageUrl + '/images/pageArrowPrevious.gif" border="0"></a>';
		} else {
			html += '';
		}
	}
	return html;
}

function renderNextButton(productCount, currentPageNumber, itemsPerPage) {
	var pageCount = Math.ceil(productCount/itemsPerPage);
	var html = "";
	if(currentPageNumber != "all") {	
		var nextPage = currentPageNumber + 1;
		if(nextPage <= pageCount) {
			html += '<a href="#" onClick="return(displayProductArray(productArray, ' + nextPage + ', ' +  itemsPerPage + '))"><img src="' + imageUrl + '/images/pageArrowNext.gif" border="0"></a>';
		} else {
			html += '';
		}
	}
	return html;
}

function renderViewAllButton(productCount, currentPageNumber, itemsPerPage) {
	var pageCount = Math.ceil(productCount/itemsPerPage);
	if(pageCount == 1) return "";
	var html = "";
	if(currentPageNumber == "all") {
		html += '<a href="#" onClick="return(displayProductArray(productArray, 1, itemsPerPage))" class="viewAllLink">Return to Paged View</a>';
	} else {
		html += '<a href="#" onClick="return(displayProductArray(productArray, \'all\', itemsPerPage))" class="viewAllLink">View All Items</a>';
	}
	return html;
}

function renderSortLinks(currentPageNumber, sortBy) {
	if(currentPageNumber != "all" && currentPageNumber > 1) currentPageNumber = 1;
	var html = "";
	html += '<table border="0" cellpadding="0" cellspacing="0" background="http://site.vitamaker.com/pdPagingEngine/images/sortBg.gif"><tr>';
	html += '<td><img src="http://site.vitamaker.com/pdPagingEngine/images/sortProducts.gif" border="0"></td>';
	html += '</td><td>';
	if(sortBy == "title") {
		html += '<img src="http://site.vitamaker.com/pdPagingEngine/images/sortByNameOn.gif" border="0">';
	} else {
		html += '<a href="#" class="sortLink" onClick="return(displayProductArray(productArray, \'' + currentPageNumber + '\',itemsPerPage, \'title\'))"><img src="http://site.vitamaker.com/pdPagingEngine/images/sortByName.gif" border="0"></a>';
	}
	html += '</td><td>';
	
	if(sortBy == "price") {
		html += '<img src="http://site.vitamaker.com/pdPagingEngine/images/sortByPriceOn.gif" border="0">';
	} else {
		html += '<a href="#" class="sortLink" onClick="return(displayProductArray(productArray, \'' +  currentPageNumber + '\',itemsPerPage, \'price\'))"><img src="http://site.vitamaker.com/pdPagingEngine/images/sortByPrice.gif" border="0"></a>';
	}
	html += '</td><td>';
	
	if(sortBy == "rating") {
		html += '<img src="http://site.vitamaker.com/pdPagingEngine/images/sortByTopRatedOn.gif" border="0">';
	} else {
		html += '<a href="#" class="sortLink" onClick="return(displayProductArray(productArray, \'' + currentPageNumber + '\',itemsPerPage, \'rating\'))"><img src="http://site.vitamaker.com/pdPagingEngine/images/sortByTopRated.gif" border="0"></a>';
	}
	html += '</td><td>';
	
	/*
	if(sortBy == "topSeller") {
		html += '<img src="http://site.vitamaker.com/pdPagingEngine/images/sortByTopSellersOn.gif" border="0">';
	} else {
		html += '<a href="#" class="sortLink" onClick="return(displayProductArray(productArray, \'' +  currentPageNumber + '\',itemsPerPage, \'topSeller\'))"><img src="http://site.vitamaker.com/pdPagingEngine/images/sortByTopSellers.gif" border="0"></a>';
	}
	html += '</td><td>';
	*/
	
	if(sortBy == "manufacturer") {
		html += '<img src="http://site.vitamaker.com/pdPagingEngine/images/sortByManufacturerOn.gif" border="0">';
	} else {
		html += '<a href="#" class="sortLink" onClick="return(displayProductArray(productArray, \'' +  currentPageNumber + '\',itemsPerPage, \'manufacturer\'))"><img src="http://site.vitamaker.com/pdPagingEngine/images/sortByManufacturer.gif" border="0"></a>';
	}
	html += '</td><td>';
	
	
	if(sortBy == "costPerServing") {
		html += '<img src="http://site.vitamaker.com/pdPagingEngine/images/sortByCPSOn.gif" border="0">';
	} else {
		html += '<a href="#" class="sortLink" onClick="return(displayProductArray(productArray, \'' +  currentPageNumber + '\',itemsPerPage, \'costPerServing\'))"><img src="http://site.vitamaker.com/pdPagingEngine/images/sortByCPS.gif" border="0"></a>';
	}
	
	html += '</tr></table>';
	
	return html;
}


function renderPreviousNextProductButtons(currentProductId) {
	var html = "";
	var productListString = pdGetCookie("pd_currentProductList");
	if(!isBlank(productListString)) {
		if(String(productListString).indexOf(currentProductId) > -1) {
			var productArray = String(productListString).split(",");
			var item = new Object();
			var i = 0;
			for(item in productArray) {
				if(currentProductId == productArray[item]) break;
				i++;
			}
			if(i > 0) {
				html += '<a href="#" onclick="return(jumpToUrl(\'' + productArray[i-1] + '.html\'))"><img src="' + imageUrl + '/images/previousItemButton.gif" border="0"></a>';
			}
			if(i+1 < productArray.length) {
				html += '<a href="#" onclick="return(jumpToUrl(\'' + productArray[i+1] + '.html\'))"><img src="' + imageUrl + '/images/nextItemButton.gif" border="0"></a>';
			}
		}
	}
	
	document.getElementById("previousNextProductButtons").innerHTML = html;
	return false;
}





//** 3 recentlyViewedItems.js ** //

function isBlank(item) {
	item = String(item).toLowerCase();
	if(item == "undefined" || item == "" || item == "null") return true;
	else return false;
}

function getCurrentDomainName() {
	var url = String(location);
	var domainName = extractDomain(url);	
	return domainName;
}

function extractDomain(url) {
	var url = url.replace("http://", "");
	var slashIndex = url.indexOf("/");
	if(slashIndex == -1) slashIndex = url.length;
	var url = url.substring(0, slashIndex);
	var urlSectionArray = url.split('.');
	var urlSectionArrayLength = urlSectionArray.length;
	var domainName = "";
	for(var i=urlSectionArrayLength - 2;i<urlSectionArrayLength; i++) {
		domainName += "." + urlSectionArray[i];
	}
	return domainName;
}

function getCookie(cookieName) {
	var allCookies = document.cookie;
	var cookieStart = allCookies.indexOf(cookieName)
	if(cookieStart == -1) return "";
	cookieStart = cookieStart + cookieName.length + 1;
	var cookieEnd = allCookies.indexOf(";", cookieStart);
	if(cookieEnd == -1) cookieEnd = allCookies.length;
	var cookieValue = allCookies.substring(cookieStart, cookieEnd);
	return cookieValue;
}

function getProductList() {
	var storeCode = getStoreCode();
	var cartCookieInfoName = "pdrv_" + storeCode + "_info";
	var cartCookieName = "pdrv_" + storeCode + "_";
	var productList = new Array();
	var pd_productListInfo = getCookie(cartCookieInfoName);
	var cookieValue = "";
	for(var i=0;i<pd_productListInfo;i++) {
		cookieValue += getCookie(cartCookieName + i);
	}
	cookieValue = unescape(cookieValue);
	try {
		if(cookieValue.length > 10)	eval(cookieValue);
	} catch(e) {
		//alert(cookieValue);
	}
	return productList;
}

function addProductToProductList(product, productList, maxItems) {
	var item = new Object();
	for(item in productList) {
		if(productList[item].productId == product.productId) return productList;
	}
	if(isBlank(maxItems) || maxItems == 0) maxItems = 5;
	productList.unshift(product);
	productList = productList.splice(0,maxItems);
	return productList;
}

function recordProductList(productList, storeCode, cookieDomain, expirationDate) {
	var productListString = serialize("productList", productList);
	var chunkSize = 3000;
	var cookieArray = new Array();
	var j = 0;
	var i = 0;
	for(i=0;i<productListString.length;i+=chunkSize) {
		cookieArray[j] = productListString.substring(i, chunkSize + i);
		j++;
	}
	var cookieString = "pdrv_" + storeCode + "_info=" + j +";domain=" + cookieDomain + ";path=/";
	if(!isBlank(expirationDate)) {
		cookieString += ";expires=" + expirationDate.toGMTString();
	}
	document.cookie = cookieString;
	
	for(i=0;i<j;i++) {
		cookieString = "pdrv_" + storeCode + "_" + i + "=" + escape(cookieArray[i]) + ";domain=" + cookieDomain + ";path=/";
		if(!isBlank(expirationDate)) cookieString +=";expires=" + expirationDate.toGMTString();
		document.cookie = cookieString;
	}
	return true;
}





//** 4 displayRecentlyViewedItems.js **//

function displayRecentlyViewedItems(productList) {
	var item = new Object();
	var innerHtml = '<table width="100%" cellpadding="8" cellspacing="0"><tr>';
	var product = new Object();
	for(item in productList) {
		if(productList[item].price){innerHtml += '<form method=post action="http://order.store.yahoo.com/cgi-bin/wg-order?vitamaker+' + productList[item].productId + '"><input name=vwcatalog type=hidden value=vitamaker><input name=vwitem type=hidden value=' + productList[item].productId + '>';};	
		innerHtml += '<td align="center">';
		innerHtml += '<a href="' + productList[item].url	+ '"><font size=2>';
		innerHtml += '<img src="' + productList[item].imageThumbnailUrl + '" border="0">';
		innerHtml += '<br>';
		innerHtml += productList[item].name;
		innerHtml += '</a>';
		if(productList[item].price && productList[item].salePrice){innerHtml += '<br><font style="font-size:11px">Retail Price:<b> ' + productList[item].price + '</b></font>';}else if(productList[item].price){innerHtml += '<br><font color="#ff1414"><b>Our Price: ' + productList[item].price + '</b></font>';};	
		if(productList[item].salePrice){innerHtml += '<br><font color="#ff1414"><b>Our Price: ' + productList[item].salePrice + '</b></font>';};	
		if(productList[item].price){innerHtml += '<br><input type="image" src="http://lib.store.yahoo.net/lib/vitamaker/buttonAddToCart.gif" border="0" vspace=5>';};	
		innerHtml += '</font></td><td>&nbsp;</td>';
		if(productList[item].price){innerHtml += '</form>';};	
		
	}
	innerHtml += '</tr></table>';
	document.getElementById("recentlyViewedProducts").innerHTML = innerHtml;
}






//** 5 serialize.js //

//***************************************************
//***** CODE COPYRIGHT PRACTICAL DATA, INC 2004 *****
//***** - USE WITHOUT PERMISSION IS PROHIBITED ******
//***************************************************
function serialize(objectName, myObject) {
	
	//***************************************
	//********* BEGIN SERIALIZATION *********
	//***************************************
	var objectString = "";
	var objectType = typeof(myObject);
	
	//***********************************************
	//******* CREATE STRING ACCORDING TO TYPE *******
	//***********************************************	
	if(objectType == 'undefined') return objectString;
	else if(objectType == 'string') {
		objectString += 'var ' + serializeString(objectName, myObject);
	} else if(objectType == 'number') {
		objectString += 'var ' + serializeNumber(objectName, myObject);
	} else if(objectType == 'boolean') {
		objectString += 'var ' + serializeBoolean(objectName, myObject);
	} else if(objectType == 'object' && myObject.constructor == Array) {
		objectString += 'var ' + serializeArray(objectName, myObject);
	} else if(objectType == 'object') {
		objectString += 'var ' + serializeObject(objectName, myObject);
	}
	
	//**************************************
	//****** RETURN SERIALIZED OBJECT ******
	//**************************************
	return objectString + "";
}

function serializeString(name, value) {
	var tempString = "";
	value = value.replace(/"/g, '\\"');
	value = value.replace(/\r/g, '\\r');
	value = value.replace(/\n/g, '\\n');

	if(name - 0 == name) tempString = '[' + name + '] = "' + value + '";\r\n';
	else tempString = name + ' = "' + value + '";\r\n';
	return tempString;
}

function serializeNumber(name, value) {

	var tempString = "";
	if(name - 0 == name) tempString = '[' + name + '] = ' + value + ';\r\n';
	else tempString = name + ' = ' + value + ';\r\n';
	return tempString;
}

function serializeBoolean(name, value) {
	var tempString = "";
	if(name - 0 == name) tempString = '[' + name + '] = ' + value + ';\r\n';
	else tempString = name + ' = ' + value + ';\r\n';
	return tempString;
}

function serializeDate(name, value) {
	var tempString = "";
	if(name - 0 == name) tempString = '[' + name + '] = new Date("' + value + '");\r\n';
	else tempString = name + ' = new Date("' + value + '");\r\n';
	return tempString;
}

function serializeObject(name, myObject) {
	var objectString = name + ' = new Object();\r\n';
	
	//*********************************************************
	//***** ITERATE OBJECT AND GENERATE EQUIVALENT STRING *****
	//*********************************************************
	var item = new Object();	//*** ITERATOR
	for(item in myObject) {
	
		//***********************************************
		//******* CREATE STRING ACCORDING TO TYPE *******
		//***********************************************
		objectType = typeof(myObject[item]);
		
		//**************************************************************************************
		//******* TRAP OBJECTS THAT HAVE BEEN SET TO NULL AND REDEFINE AS EMPTY STRINGS ********
		//**************************************************************************************
		try {
			var temp = myObject[item].constructor;
		} catch(e) {
			myObject[item] = new String();
			objectType = typeof(myObject[item]);
		}

		if(objectType == 'undefined') return objectString;
		else if(objectType == 'string' || myObject[item].constructor == String) {
			objectString += name + "." + serializeString(item, myObject[item]);
		} else if(objectType == 'number') {
			objectString += name + "." + serializeNumber(item, myObject[item]);
		} else if(objectType == 'boolean') {
			objectString += name + "." + serializeBoolean(item, myObject[item]);
		} else if(objectType == 'object' && myObject[item].constructor == Array) {
			if(item - 0 == item) objectString += serializeArray(name + "[" + item + "]", myObject[item]);
			else objectString += serializeArray(name + "." + item, myObject[item]);
		} else if(objectType == 'object' && myObject[item].constructor == Date) {
			if(item - 0 == item) objectString += serializeDate(name + "[" + item + "]", myObject[item]);
			else objectString += serializeDate(name + "." + item, myObject[item]);
		} else if(objectType == 'object') {
			if(item - 0 == item) objectString += serializeObject(name + "[" + item + "]", myObject[item]);
			else objectString += serializeObject(name + "." + item, myObject[item]);
		}
	}

	return objectString;
}


function serializeArray(name, myObject) {
	
	var objectString = name + ' = new Array();\r\n';
	
	//*********************************************************
	//***** ITERATE OBJECT AND GENERATE EQUIVALENT STRING *****
	//*********************************************************
	var item = new Object();	//*** ITERATOR
	for(item in myObject) {
	
		//***********************************************
		//******* CREATE STRING ACCORDING TO TYPE *******
		//***********************************************
		objectType = typeof(myObject[item]);
		
		//**************************************************************************************
		//******* TRAP OBJECTS THAT HAVE BEEN SET TO NULL AND REDEFINE AS EMPTY STRINGS ********
		//**************************************************************************************
		try {
			var temp = myObject[item].constructor;
		} catch(e) {
			myObject[item] = new String();
			objectType = typeof(myObject[item]);
		}

		if(objectType == 'undefined') return objectString;
		else if(objectType == 'string' || myObject[item].constructor == String) {
			objectString += name + serializeString(item, myObject[item]);
		} else if(objectType == 'number') {
			objectString += name + serializeNumber(item, myObject[item]);
		} else if(objectType == 'boolean') {
			objectString += name + serializeBoolean(item, myObject[item]);
		} else if(objectType == 'object' && myObject[item].constructor == Array) {
			if(item - 0 == item) objectString += serializeArray(name + "[" + item + "]", myObject[item]);
			else objectString += serializeArray(name + "." + item, myObject[item]);
		} else if(objectType == 'object' && myObject[item].constructor == Date) {
			if(item - 0 == item) objectString += serializeDate(name + "[" + item + "]", myObject[item]);
			else objectString += serializeDate(name + "." + item, myObject[item]);
		} else if(objectType == 'object') {
			if(item - 0 == item) objectString += serializeObject(name + "[" + item + "]", myObject[item]);
			else objectString += serializeObject(name + "." + item, myObject[item]);
		}
	}

	return objectString;
}




//** 6 getStoreCode.js //
function getStoreCode() {
	return "vitamaker";
}



//***************************************************
//***** CODE COPYRIGHT VITAMAKER.COM 2004 *****
//***** - USE WITHOUT PERMISSION IS PROHIBITED ******
//***************************************************
try { var product = product } catch(e) { product = null }

var cookieDomain = getCurrentDomainName();
var storeCode = getStoreCode();
var productList = getProductList();
if(product) productList = addProductToProductList(product, productList, 3);
recordProductList(productList, storeCode, cookieDomain, "");






//** 7 formatCurrency.js **//


//***************************************************
//***** CODE COPYRIGHT PRACTICAL DATA, INC 2004 *****
//***** - USE WITHOUT PERMISSION IS PROHIBITED ******
//***************************************************

//*************************************************************************
//******* FORMAT A NUMBER AS CURRENCY WITH OPTIONAL COMMA FORMATTING ******
//*************************************************************************
function formatCurrency(item) {
	item = String(Math.round(item * 100) /100);
	var frontString = "";
	var backString = "";
	var decimalIndex = item.indexOf(".");		

	if(decimalIndex == -1) {
		item += ".00";
		decimalIndex = item.indexOf(".");
	}

	//*****************************************
	//**** FORMAT WHOLE AND DECIMAL PARTS *****		
	//*****************************************
	frontString = item.substring(0, decimalIndex);
	backString = item.substring(decimalIndex, item.length);
	if(backString.length < 3) backString += "0";
	
	//***********************************************************
	//***** COMMA-FORMAT WHOLE PORTION OF OUR CURRENCY VALUE ****
	//***********************************************************
	if(true) {
		var tempString = new String();
		var frontLength = frontString.length;
		var i = 0;
		var j = 0;
		for(i=frontLength; i>=0;i--) {
			tempString += String(frontString.charAt(i));
			if(j%3 == 0 && j<frontLength && j != 0 && frontString.charAt(i-1) != '-') tempString += ",";
			j++;
		}
	
		frontString = "";
		var tempLength = tempString.length;
		for(i=tempLength; i>=0;i--) {
			frontString += String(tempString.charAt(i));				
		}
		
	}
	
	//***********************************************************
	//***** RECONSTRUCT AND RETURN FORMATTED CURRENCY VALUE *****
	//***********************************************************		
	item = "$" + frontString + backString;
	return (item);
}




//** 8 floatingCartDisplayPage.js **//

//***************************************************
//***** CODE COPYRIGHT PRACTICAL DATA, INC 2004 *****
//***** - USE WITHOUT PERMISSION IS PROHIBITED ******
//***************************************************
function getCookie(cookieName) {
	var allCookies = document.cookie;
	var cookieStart = allCookies.indexOf(cookieName)
	if(cookieStart == -1) return "";
	cookieStart = cookieStart + cookieName.length + 1;
	var cookieEnd = allCookies.indexOf(";", cookieStart);
	if(cookieEnd == -1) cookieEnd = allCookies.length;
	var cookieValue = allCookies.substring(cookieStart, cookieEnd);
	return cookieValue;
}

function getShoppingCart() {
	var storeCode = getStoreCode();
	var cartCookieInfoName = "pdsc_" + storeCode + "_info";
	var cartCookieName = "pdsc_" + storeCode + "_";
	var shoppingCart = new Object();
	shoppingCart.products = new Array();
	var pd_shoppingCartInfo = getCookie(cartCookieInfoName);
	var cookieValue = "";
	for(var i=0;i<pd_shoppingCartInfo;i++) {
		cookieValue += getCookie(cartCookieName + i);
	}
	cookieValue = unescape(cookieValue);
	
	if(cookieValue.length > 10) shoppingCart = decodeShoppingCart(cookieValue);
	shoppingCart.subtotal = 0;
	if(shoppingCart.products) {
		for(var i=0;i<shoppingCart.products.length;i++) {
			shoppingCart.subtotal+= (shoppingCart.products[i].price * shoppingCart.products[i].qty); 
		}
	}
	return shoppingCart;
}

function getCurrentPagePath() {
	var url = String(location);
	url = url.replace("http://", "");
	var slashIndex = url.lastIndexOf("/");
	if(slashIndex == -1) slashIndex = url.length;
	var pagePath = url.substring(0, slashIndex);
	return pagePath;
}

function decodeShoppingCart(encodedCart) {

	var shoppingCart = new Object();
	shoppingCart.isTrimmed = false;
	shoppingCart.products = new Array();
	
	//**************************
	//*** TEST FOR CART TRIM ***
	//**************************
	if(encodedCart.charAt(0) == '+') {
		shoppingCart.isTrimmed = true;
		encodedCart = encodedCart.substring(1, encodedCart.length);
	}
	
	//*************************
	//**** SPLIT CART ROWS ****
	//*************************	
	var tempArray = encodedCart.split("~");
	
	var tempArray2 = new Array();
	var i = 0;
	var item = new Object();
	for(item in tempArray) {
	
		//************************************************
		//*** SPLIT APART ATTRIBUTES & BUILD CART ITEM ***
		//************************************************
		tempArray2 = tempArray[item].split("^");
		
		shoppingCart.products[i] = new Object();
		shoppingCart.products[i].productId = tempArray2[0];
		shoppingCart.products[i].name = decodeSpecialCharacters(tempArray2[1]);
		shoppingCart.products[i].options = decodeSpecialCharacters(tempArray2[2]);
		shoppingCart.products[i].price = tempArray2[3];
		shoppingCart.products[i].qty = tempArray2[4];
		shoppingCart.products[i].inStock = tempArray2[5];
		i++;		
	}
	//**************
	//*** RETURN ***
	//**************
	return shoppingCart;
}

function decodeSpecialCharacters(value) {
	
	//**************
	//*** DECODE ***
	//**************
	value = String(value);
	value = value.replace(/\\"/g, '"');
	value = value.replace(/\\r/g, '\r');
	value = value.replace(/\\n/g, '\n');
	
	//***************
	//*** RETURN ***
	//**************
	return value;
}




//** 9 displayShoppingCart.js **//
//***************************************************
//***** CODE COPYRIGHT PRACTICAL DATA, INC 2004 *****
//***** - USE WITHOUT PERMISSION IS PROHIBITED ******
//***************************************************
function displayShoppingCart(shoppingCart) {
	
	var itemsInCart = shoppingCart.products.length;
	
	//****************************************
	//***** FREE SHIPPING QUALIFICATION ******
	//****************************************
	var freeShippingCutoff = 150;
	var freeShipMessage = "";
	if(shoppingCart.subtotal >= freeShippingCutoff) freeShipMessage = "<font class=scFreeShipText>You Qualify for FREE Shipping! &nbsp;<a href=shipment-info.html onclick=popIt(250,250); class=scFreeShipText target=popIt> > details</a></font><br>";
	else freeShipMessage = "<font class=scFreeShipText>You are " + formatCurrency(freeShippingCutoff - shoppingCart.subtotal) + " away from FREE Shipping!</font> &nbsp;<a href=shipment-info.html onclick=popIt(800,800); class=scFreeShipText target=popIt> > details</a><br>";

		var innerHTML = '';
		innerHTML += '<table border="0" cellspacing="0" cellpadding="0" width="179">';
	 	innerHTML += '<tr><td colspan="5"><img src="http://site.vitamaker.com/imagesOptimized/shoppingCart.gif"></td></tr>';
		innerHTML += '<tr><td width="1" bgcolor="#000066"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="1" height="1"></td>';
		innerHTML += '<td width="8"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="8" height="1"></td>';
		innerHTML += '<td width="161"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="161" height="10"></td>';
	    innerHTML += '<td width="8"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="8" height="1"></td>';
		innerHTML += '<td width="1" bgcolor="#000066"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="1" height="1"></td></tr>';
		innerHTML += '<tr><td width="1" bgcolor="#000066"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="1" height="1"></td>';
		innerHTML += '<td width="8"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="8" height="1"></td>';
		innerHTML += '<td width="161"><table border="0" cellspacing="0" cellpadding="0" width="161"><tr><td>';
	
		
		innerHTML += '<table border="0" cellpadding="0" cellspacing="0" width="161">';
		innerHTML += '<tr><td class="shoppingCart">';
		if(itemsInCart == 1) {innerHTML += '<b>' + itemsInCart + ' item in cart: </b><br><div class="scHrDiv"><hr class="scHr"></div>';}else{innerHTML += '<b>' + itemsInCart + ' items in cart: </b><br><div class="scHrDiv"><hr class="scHr"></div>'}
		
		var item = new Object();
		for(item in shoppingCart.products) {
			innerHTML += '<a href="http://' + getCurrentPagePath() + "/" + shoppingCart.products[item].productId + '.html" class="scProductLink">';
			innerHTML += shoppingCart.products[item].name;
			innerHTML += '</a>';
			innerHTML +=  '<br><font class="scProductName">' + shoppingCart.products[item].qty + 'x </font>&nbsp; <font class="scPrice">' + formatCurrency(shoppingCart.products[item].price) + '</font><div class="scHrDiv"><hr class="scHr"></div>';
		}
		innerHTML += '<div style="margin-top:2px;" class="scSubtotal">SubTotal = ' + formatCurrency(shoppingCart.subtotal) + '</div>';
		innerHTML += '<div style="margin-top:6px;margin-bottom:8px;">';
		innerHTML += freeShipMessage;
		innerHTML += '</div>';
		innerHTML += '<a href="http://order.store.yahoo.com/cgi-bin/wg-order?vitamaker" class="scEditLink">> Edit Shopping Cart</a>';
		innerHTML += '</td>';
		innerHTML += '<tr><td class="scBg"><a href="https://order.store.yahoo.com/cgi-bin/shipping-form?catalog=vitamaker"><img src="http://site.vitamaker.com/imagesOptimized/secureCheckout.gif" border="0" vspace="4"></a></td></tr>';
		innerHTML += '</table>';
		innerHTML += '</td></tr><tr><td><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" height="10"></td></tr></table></td>';
		innerHTML += '<td width="8"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="8" height="1"></td>';
		innerHTML += '<td width="1" bgcolor="#000066"><img src="http://site.vitamaker.com/imagesOptimized/spacer.gif" width="1" height="1"></td>';
		innerHTML += '</tr><tr><td colspan="5"><img src="http://site.vitamaker.com/imagesOptimized/menuRecommendedItemsBot.gif"></td></tr></table> ';
		innerHTML += '<br>';

	//*********************************
	//***** DISPLAY FLOATING CART *****
	//*********************************	
	document.getElementById("shoppingCartDisplay").innerHTML = innerHTML;
	}

	
