function initPaging() {
	currentPage		= 1;
	setLimit			= 24;	//This is the number of items in the pagination
	limit					= setLimit;
	maxPageItems	= 6;	//This is the maximum number of pages
	headerId			= 'pagingHeader';
	srcContainer	= 'wrapper';
	displayView		= 'gridView';
	sortMethod		= 'sortName';
	rawDisplayList		= buildDisplayList(srcContainer);
	displayList		= rawDisplayList;
	viewToggle		= 'Down';

	for(var i = 0; i < displayList.length; i++) {
		displayList[i]['displayData'] = buildItemDisplay(displayList[i], displayView);
	}
	updateDisplay(currentPage);
}
function updateDisplay(curPage) {
	currentPage  = curPage;
	populateHeaderControls(headerId, limit, currentPage, displayList, sortMethod, viewToggle);
	removeSrcItems(srcContainer);
	for(var i = 0; i < displayList.length; i++) {
		displayList[i]['displayData'] = buildItemDisplay(displayList[i], displayView);
	}
	showDisplayList(displayList, srcContainer, currentPage, limit);
	setAllReviews();
}
function buildDisplayList(srcContainer) {
	var displayList = [];
	var items = document.getElementById(srcContainer).childNodes;
	for(var i = 0; i < items.length; i++) {
		if(items[i].nodeType == 1) {
			displayList.push(getItemData(items[i].getAttribute('id')));
		}
	}
	return displayList;
}
function buildItemDisplay(itemData, displayView) {
	switch(displayView) {
		case 'listView':
			var displayData  = '<dl class="viewModeList">';
		break;
		case 'gridView':
			var displayData  = '<dl class="viewModeGrid">';
		default:
		break;
	}
	displayData +=	'<dd class="itemImage"><a id="'+itemData['url']+'" href="'+itemData['url']+'.html"><img src="'+itemData['image']+'" /></a></dd>';
	if(typeof(itemData['new']) != 'undefined') {
		displayData +=	'<dd class="itemIcon">'+itemData['new']+'</dd>';
	} else {
		displayData +=	'<dd class="itemIcon">&nbsp;</dd>';
	}
	displayData +=	'<dd class="itemTitle"><a href="'+itemData['url']+'.html">'+itemData['name']+'</a></dd>';
	if (itemData['sale-price']) {
		displayData +=	'<dd class="salesPrice">Sale: '+ itemData['sale-price']+'</dd>';
	} else {
		displayData +=	'<dd class="itemPrice">Price: '+ itemData['reg-price']+'</dd>';
	}
	displayData +=	'<dd class="itemAbstract">'+itemData['abstract']+'</dd>';
	displayData += '<dd class="itemReview" rel="'+itemData['url']+'">'+itemData['pr-review']+'</dd>';

	displayData +=	'</dl>';


	return displayData;
}
function sortDisplayList(sortValue, displayList) {
	if(sortValue != sortMethod) {
		sortMethod = sortValue;
		switch(sortMethod) {
			case'sortPrice':
				displayList.sort(comparePrice);
			break;
			case'sortName':
				displayList.sort(compareName);
			break;
			case'sortBestSeller':
				displayList.sort(compareBestSeller);
			break;
		}
		viewToggle = 'Down';
	} else {
		displayList.reverse();
		if(viewToggle == 'Up') {
			viewToggle = 'Down';
		} else {
			viewToggle = 'Up';
		}
	}
	updateDisplay(currentPage);
	return displayList;
}
function comparePrice(a,b) {
	return a.price - b.price;
}
function compareBestSeller(a,b) {
	if(a.bestseller == null) { a.bestseller = 0;}
	if(b.bestseller == null) { b.bestseller = 0;}
	return b.bestseller - a.bestseller;
}
function compareName(a,b) {
	var nameA = a.name.toLowerCase();
	var nameB = b.name.toLowerCase();
	if(nameA < nameB){ return -1; }
	if(nameA > nameB){ return 1; }
	return 0;
}
function showDisplayList(displayList, srcContainer, currentPage, limit) {
	var srcContainer = document.getElementById(srcContainer);
	for(var i = ((currentPage - 1) * limit); i < (limit * currentPage); i++) {
		if(i < displayList.length) {
			//Preloader.add(displayList[i].image);
			sortedListItem = document.createElement('div');
			sortedListText = document.createTextNode(displayList[i].nodeValue);
			sortedListItem.innerHTML = displayList[i]['displayData'];
			srcContainer.appendChild(sortedListItem);
		}
	}
	//Preloader.onFinish(initXpress);
	//Preloader.load();
}
function getItemData(elementId){
	if(document.getElementById(elementId)) {
		var base = document.getElementById(elementId).getElementsByTagName('span');
	} else {
		var base = document.createElement("span");
	}
	var itemData = new Object();
	for(var i = 0; i < base.length; i++) {
		if(base[i].getAttribute('title') != null) {
			itemData[base[i].getAttribute('id')] = base[i].getAttribute('title');
		}
	}
	return itemData;
}
function clearElement(parentId, elementId) {
	if(document.getElementById(elementId) != null) {
		document.getElementById(parentId).removeChild(document.getElementById(elementId));
	}
}
function populateHeaderControls(headerId, limit, currentPage, displayList, sortMethod, viewToggle) {
	//clearElement('navViewList', 'viewList');
	$('.navViewList').empty();
	$('.navViewList').append('<ul class="viewList headerList">');

	//var viewList = document.createElement('ul');
	//	viewList.id        = 'viewList';
	//	viewList.className = 'headerList';
	//document.getElementById('navViewList').appendChild(viewList);
	$('.viewList.headerList').append('<a href="javascript://" id="viewAllItems" onclick="setView(\'viewAllItems\')">View All</a>');
	/*viewListItem = document.createElement('a');
	viewListItem.href = 'javascript://';
	viewListItem.id = 'viewAllItems';
	viewListItem.setAttribute('onclick', 'setView("viewAllItems")');
	viewListItem.innerHTML = 'View All';
	viewList.appendChild(viewListItem);*/
	$('.navPageLinks').empty();
	$('.navPageCount').empty();
	//clearElement('navPageLinks', 'pageList');
	//clearElement('navPageCount', 'pageInfo');
	if(Math.floor(displayList.length / limit) == 0){
		var totalPages = 1;
	}
	else {
		var totalPages = Math.ceil(displayList.length / limit);
	}
	var firstPage = Math.floor(currentPage - (maxPageItems / 2));
	var lastPage = (firstPage + maxPageItems -1);
	if(firstPage <= 0){
		firstPage = 1;
		lastPage  = maxPageItems;
	}
	if(lastPage > totalPages){
		lastPage  = totalPages;
		firstPage = (lastPage - maxPageItems) + 1;
		if(firstPage <= 0) {
			firstPage = 1;
		}
	}
	$('.navPageLinks').append('<ul class="pageList headerList">');
		/*var pageList         = document.createElement('ul');
			pageList.id        = 'pageList';
			pageList.className = 'headerList';
		document.getElementById('navPageLinks').appendChild(pageList);*/

		/*pageListItem         = document.createElement('li');
		pageList.appendChild(pageListItem);
		pageListItem            = document.createElement('li');
		pageList.appendChild(pageListItem);*/
		for(var i = firstPage; i <= lastPage; i++) {
			if(i == currentPage) {
				li = $('<li>');
				li.addClass('pageCurrent');
				li.css("color","#2e8d08");
				li.text(i);
				/*pageListItem           = document.createElement('li');
				pageListItem.className = 'pageCurrent';
				pageListItem.appendChild(document.createTextNode(i));*/
			} else {
				li = $('<li>');
				li.addClass('pageCurrent');
				li.html('<a href="javascript://" onclick="setPage('+i+')">' + i + '</a>');
				/*pageListLink            = document.createElement('a');
				pageListLink.href       = 'javascript:;';
				pageListLink['onclick'] = new Function( 'setPage(' + i + ' )' );
				pageListLink.appendChild(document.createTextNode(i));
				pageListItem = document.createElement('li');
				pageListItem.className  = 'pageLink';
				pageListItem.appendChild(pageListLink);*/
			}
			$('.pageList.headerList').append(li);
			//pageList.appendChild(pageListItem);
		}
	/*pageListItem            = document.createElement('li');
	pageList.appendChild(pageListItem);
	pageListItem            = document.createElement('li');
	pageList.appendChild(pageListItem);*/
	//clearElement('navSortList', 'sortList');
	$('.navSortList').empty();
	$('.navSortList').append('<ul class="sortList headerList">');
	/*var sortList           = document.createElement('ul');
	sortList.id        = 'sortList';
	sortList.className = 'headerList';
	document.getElementById('navSortList').appendChild(sortList);*/
	var listArray = [];
	listArray.push(['sortPrice','Price']);
	listArray.push(['sortName','Name']);
	listArray.push(['sortBestSeller','Best Seller']);

	$('.sortList.headerList').append('<li>Sort By:</li>');
	/*sortListText = document.createElement('li');
	sortListText.innerHTML = "Sort By:";
	sortList.appendChild(sortListText);*/
	for(i = 0; i < listArray.length; i++) {

		/*sortListLink               = document.createElement('a');
		sortListLink.href          = 'javascript:;';
		sortListLink.id            = listArray[i][0];
		sortListLink['onclick']    = new Function( 'setSort("' + listArray[i][0] + '")' );*/
		/*if(listArray[i][0] == sortMethod) {
			sortListLink.className = 'sortSelected' + viewToggle;
		}*/
		//sortListLink.appendChild(document.createTextNode(listArray[i][1]));
		/*sortListItem            = document.createElement('li');
		sortListItem.appendChild(sortListLink);*/
		//sortList.appendChild(sortListItem);
		$('.sortList.headerList').append('<li><a href="javascript://" onclick="setSort(\'' + listArray[i][0] + '\')">' + listArray[i][1] + '</a></li>');
	}
}
function setPage(page) {
	updateDisplay(page);
}
function setSort(sortValue) {
	sortDisplayList(sortValue, displayList);
}
function setView(viewMode) {
	if(viewMode == 'viewAllItems') {
		limit        = displayList.length;
		currentPage  = 1;
	} else {
		limit       = setLimit;
		displayView = viewMode;
	}
	updateDisplay(currentPage);
}
function removeSrcItems(srcContainer) {
	var srcContainer = document.getElementById(srcContainer);
	if (srcContainer.hasChildNodes()) {
		while ( srcContainer.childNodes.length >= 1 ) {
			srcContainer.removeChild( srcContainer.firstChild );
		}
	}
}
function buildFilterList(option) {
	var filterList = new Array();
	$('.' + option + '-filter').each(function()	{
																								var opts = $(this).attr('title').split(",");
																								for (thing in opts) {
																									if($.inArray(opts[thing], filterList) == -1) {
																										filterList.push(opts[thing]);
																									}
																								}
																							});
	return filterList.sort();
}
function addFilterSelect(list, id, option) {
	var filter = $("<select id='"+id+"'>");
	filter.append("<option>All "+option+"</option>");
	for(x in list) {
		filter.append("<option>"+list[x]+"</option>");
	}
	filter.bind("change", filterItems);
	$("#navPageFilters").append(filter);
}
function filterItems(evt) {
	var filterColor, filterSize;
	var allColor = ((filterColor = $("#color").val()) == "All Colors");
	var allSize = ((filterSize = $("#size").val()) == "All Sizes");
	displayList = new Array();
	for(x in rawDisplayList) {
		var matchColor, matchSize;
		if(allColor) {
			matchColor = true;
		} else {
			if(rawDisplayList[x].hasOwnProperty('color'))
				matchColor = (rawDisplayList[x]['color'].indexOf(filterColor) != -1);
			else
				matchColor = false;
		}
		if(allSize) {
			matchSize = true;
		} else {
			if(rawDisplayList[x].hasOwnProperty('size'))
				matchSize = (rawDisplayList[x]['size'].indexOf(filterSize) != -1);
			else
				matchSize = false;
		}
		if(matchColor && matchSize)
			displayList.push(rawDisplayList[x]);
	}
	updateDisplay(1);
}
function setPowerReviews(itemID) {
	if(typeof itemID != "undefined") {
		var str = "";
		document.write = function(text) { str += text; };
		var pr_snippet_min_reviews=0;
		POWERREVIEWS.display.snippet(document, { pr_page_id : itemID });
		$('.itemReview[rel="'+itemID+'"] .pr_snippet_product').append(str);
	}
}
function setAllReviews() {
	$('.itemReview').each(function(i,e) {
		var id = $(e).attr('rel');
		setPowerReviews(id);
	});
}
