var arrObjects = new Array();
var arrConstObjects = new Array();
var searchStr = "";
function gup(name) {
	var p = window.location.href;
	var t = p.split("#")[1];
	if (typeof(t) != "undefined" && t != "") {
		var params = t.split("&");
		for (var i=0; i<params.length; i++) {
			var pname = params[i].split("=")[0];
			var pvalue = params[i].split("=")[1];
			if (pname == name) return pvalue;
		}
	} else {
		return "";
	}
}
function gupd(name) {
	var res = null;
	var par = gup(name);
	if (name == "sortby") {
		res = par == "" ? 0 : parseInt(par);
	} else if (name == "sortdir") {
		res = par == "" ? true : par == "true" ? true : par == "false" ? false : par;
	} else if (name == "page") {
		res = par == "" ? 1 : parseInt(par);
	} else if (name == "numcols") {
		res = par == "" ? 3 : parseInt(par);
	} else if (name == "numrows") {
		res = par == "" ? 3 : parseInt(par);
	}
	return res;
}
function settings(sortby, sortdir, curpage, numcols, total) {
	this.sortby = sortby;		//0 - name, 1 - price || sprice
	this.sortdir = sortdir;		//true - asc, false - desc
	this.curpage = curpage;		//current page
	this.numcols = 4;		//3 - 3x3, 4 - 4x4, 5 - 5x5, 0 - view all
	this.numrows = 3;		//the same as numcols
	this.total = total;			//total products
}
function pObj(id, code, name, url, imgurl, price, sprice) {
	this.id = id;
	this.code = code;
	this.name = name;
	this.url = url;
	this.imgurl = imgurl;
	this.price = price.substr(1);		//remove $ sign
	this.sprice = sprice.substr(1);		//remove $ sign
}
function printProds(arr, sets) {
	var arrPages = new Array();
	var numCols = numRows = 0;

	//sorting
	if (sets.sortby == 0 && sets.sortdir == true) {				//name, asc
		arr = sortNameAsc(arr);
	} else if (sets.sortby == 0 && sets.sortdir == false) {		//name, desc
		arr = sortNameDesc(arr);
	} else if (sets.sortby == 1 && sets.sortdir == true) {		//price || sprice, asc
		arr = sortPriceAsc(arr);
	} else if (sets.sortby == 1 && sets.sortdir == false) {		//price || sprice, desc
		arr = sortPriceDesc(arr);
	}
	
	var html = "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">";
	
	if (sets.numcols == 0) {	//view all mode
		numCols = 4;
		numRows = Math.ceil(sets.total / numCols);
	} else {
		numCols = sets.numcols;
		numRows = sets.numrows;
	}
	arrPages = arrayChunk(arr, numCols*numRows);
	
	if (sets.curpage > 0) {
		var arrTemp = arrPages[sets.curpage-1];
		arrPages = new Array();
		arrPages[0] = arrTemp;
	}
	
	for (var j=0; j<arrPages.length; j++) {
		
		var arrRows = arrayChunk(arrPages[j], numCols);
		for (var k=0; k<arrRows.length; k++) {
	
			var arrRow = arrRows[k];

			html += "<tr valign=\"top\" align=\"center\">";
			for (var z=0; z<arrRow.length; z++) {
				html += "<td class=\"img\"><a href=\"" + arrRow[z].url + "\">";
				html += "<img border=\"0\" src=\"" + arrRow[z].imgurl + "\" /></a></td>";
			}
			html += "</tr>";
				
			html += "<tr valign=\"top\" align=\"center\">";
			for (z=0; z<arrRow.length; z++) {
				html += "<td class=\"name\">";
				html += "<a href=\"" + arrRow[z].url + "\">" + arrRow[z].name + "</a><br /><br />";
				
				if (arrRow[z].price != "0.00") {
					html += "<div class=\"price\">Price: $" + arrRow[z].price + "</div>";
				}
				if (arrRow[z].sprice != "0.00") {
					html += "<div class=\"sprice\">Sale Price: $" + arrRow[z].sprice + "</div>";
				}
				
				html += "</td>";
			}
			html += "</tr>";
				
		}

	}
	html += "</table>";
	return html;
}
function sortNameAsc(arr) {
	return arr.sort(
		function(a,b){
			if (a.name == b.name) return 0;
			var arrTemp = new Array();
			arrTemp.push(a.name);
			arrTemp.push(b.name);
			arrTemp = arrTemp.sort();
			if (a.name == arrTemp[0]) return -1;
			if (b.name == arrTemp[0]) return 1;
		}
	);
}
function sortNameDesc(arr) {
	return sortNameAsc(arr).reverse();
}
function sortPriceAsc(arr) {
	return arr.sort(
		function(a,b){
			var vara = (typeof(a.sprice) !== 'undefined' && a.sprice != null && a.sprice != "0.00") ? a.sprice : a.price;
			var varb = (typeof(b.sprice) !== 'undefined' && b.sprice != null && a.sprice != "0.00") ? b.sprice : b.price;
			return vara - varb;
		}
	);
}
function sortPriceDesc(arr) {
	return arr.sort(
		function(a,b){
			var vara = (typeof(a.sprice) !== 'undefined' && a.sprice != null && a.sprice != "0.00") ? a.sprice : a.price;
			var varb = (typeof(b.sprice) !== 'undefined' && b.sprice != null && a.sprice != "0.00") ? b.sprice : b.price;
			return varb - vara;
		}
	);
}
function arrayChunk(arr, count) {
	var c=0;
	var w=0;
	var arrRes = new Array();
	var arrTemp = new Array();
	for (var i=0; i<arr.length; i++) {
		arrTemp[w] = arr[i];
		w++;
		if ((i == (count*(c+1))-1) || ((i == arr.length-1) && arrTemp.length>0)) {
			arrRes[c] = arrTemp;
			arrTemp = new Array();
			c++;
			w=0;
		}
	}
	return arrRes;
}
function searchWithin(str) {
	arrObjects = arrConstObjects;
	
	searchStr = str;
	
	var arrTempObjects = new Array();
	
	str = str.toLowerCase();
	
	for (var i=0; i<arrObjects.length; i++) {
		if (arrObjects[i].name.toLowerCase().indexOf(str) != -1 || arrObjects[i].code.toLowerCase().indexOf(str) != -1 || arrObjects[i].price.toLowerCase().indexOf(str) != -1 || arrObjects[i].sprice.toLowerCase().indexOf(str) != -1) {
			arrTempObjects.push(arrObjects[i]);
		}
	}
	arrObjects = arrTempObjects;
	
	sets.curpage = 1;
	sets.total = arrObjects.length;

	rdp(sets);
}
function printHeaderFooter(sets) {

	var arrowName = "";
	if (sets.sortby == 0) {
		arrowName += "class=\"";
		arrowName += (sets.sortdir == true) ? "arrowup" : "arrowdown";
		arrowName += "\"";
	}
	var arrowPrice = "";
	if (sets.sortby == 1) {
		arrowPrice += "class=\"";
		arrowPrice += (sets.sortdir == true) ? "arrowup" : "arrowdown";
		arrowPrice += "\"";
	}

	var html = "";
	html += "<table cellspacing=\"2\" cellpadding=\"1\" border=\"0\" width=\"100%\">";
	html += "<tr>";
	html += "<td align=\"right\" class=\"pages\" style=\"padding-right:15px;\">" + printPages(sets) + "&nbsp;&nbsp;&nbsp;" + printLayout(sets) + "</td>";
	html += "</tr>";
	html += "</table>";
	return html;
}
function printLayout(sets) {
	var html = "";
	if (sets.numcols != 0) {
		html += "<a href=\"#" + setsToURL(sets, 1, 0, -1, -1) + "\" onclick=\"rdp(sets, 'l', 0)\">View all</a>";
	}
	return html;
}
function printShowingProds(sets) {
	var numCols = numRows = 0;
	if (sets.numcols == 0) {	//view all mode
		numCols = 3;
		numRows = Math.ceil(sets.total / numCols);
	} else {
		numCols = sets.numcols;
		numRows = sets.numrows;
	}
	var size = numCols * numRows;
	var html = "";
	html += sets.curpage * size - size + 1;
	html += "-";
	if ((sets.curpage * size) > sets.total) {
		html += sets.total;
	} else {
		html += sets.curpage * size;
	}
	return html;
}
function setsToURL(sets, page, cols, sort, sortdir) {
	var url = "";
	url += "sortby=";
	url += sort == -1 ? sets.sortby : sort;							//0 - name, 1 - price || sprice
	url += "&sortdir=";
	url += sortdir == -1 ? sets.sortdir : sortdir;					//true - asc, false - desc
	url += "&page=";
	url += page == -1 ? sets.curpage : page;						//current page
	url += "&numcols=";
	url += cols == -1 ? sets.numcols : cols;						//3 - 3x3, 4 - 4x4, 5 - 5x5, 0 - view all
	url += "&numrows=";
	url += cols == -1 ? sets.numrows : cols;						//the same as numcols
	return url;
}
function printPages(sets) {
	if (sets.numcols == 0) return "";	//view all mode
	if ((sets.numcols * sets.numrows) >= sets.total) return ""; //all items on the page
	
	var html = "";
	if (sets.curpage == 1) {
		html += "<img src=\"/lib/yhst-60801740631467/parrow-left.jpg\" /> | ";
	} else {
		html += "<a href=\"#" + setsToURL(sets, sets.curpage-1, -1, -1, -1) + "\" onclick=\"rdp(sets, 'p', " + (sets.curpage-1) + ")\"><img src=\"/lib/yhst-60801740631467/parrow-left.jpg\" /></a> | ";
	}
	
	var length = Math.ceil(sets.total / (sets.numcols * sets.numrows));
	for (var i=1; i<=length; i++) {
		if (sets.curpage == i) {
			html += i + " | ";
		} else {
			html += "<a href=\"#" + setsToURL(sets, i, -1, -1, -1) + "\" onclick=\"rdp(sets, 'p', " + i + ")\">" + i + "</a> | ";
		}
	}
	if (sets.curpage == length) {
		html += "<img src=\"/lib/yhst-60801740631467/parrow-right.jpg\" />";
	} else {
		html += "<a href=\"#" + setsToURL(sets, sets.curpage+1, -1, -1, -1) + "\" onclick=\"rdp(sets, 'p', " + (sets.curpage+1) + ")\"><img src=\"/lib/yhst-60801740631467/parrow-right.jpg\" /></a>";
	}
	return html;
}
function rdp(sets) {
	if (arrObjects.length == 0 && searchStr == "") return;
	
	if (arguments.length > 1) {
		switch (arguments[1]) {		//name of property
			case "p":		//pages
				sets.curpage = arguments[2];	//value of property
				break;
			case "l":		//layout
				sets.numcols = arguments[2];
				sets.numrows = arguments[2];
				sets.curpage = 1;
				break;
			case "s":		//sorting
				if (sets.sortby != arguments[2]) {
					sets.sortdir = true;		//asc - by default
					sets.curpage = 1;
				} else {
					sets.sortdir = arguments[3];	//direction
				}
				sets.sortby = arguments[2];
				break;
		}
	}
	
	var html = "<div class=\"kiheader\">" + printHeaderFooter(sets, 1);
	html += "</div><div class=\"kibody\">";
	if (arrObjects.length == 0 && searchStr != "") {
		html += "<div style=\"padding:20px;text-align:center;\">No items found.</div>";
	} else {
		html += printProds(arrObjects, sets);
	}
	html += "</div><div class=\"kifooter\">" + printHeaderFooter(sets, 2) + "</div>";
	document.getElementById("kipaging").innerHTML = html;
	return false;
}
