var oProd = new Array();

	function inst(id, name,  price, linkinfo, cartid, params, keyword, manuf) {
	this.id = id;
	this.name = name;
	this.price = price;
	this.linkinfo = linkinfo;
	this.cartid = cartid;
	this.params = params;
		
	this.keyword = keyword;
	this.manuf =  manuf; 
}

	
function addProductIndex(no, language, category, platform) {
	oProd[no].language = language;
	oProd[no].category = category;
	oProd[no].platform = platform;
}
	




function init_products()
{
	
		for(var i = 0; i < oProd.length; i++ ) {
			addProductIndex(i, oPrNdx[i].language, oPrNdx[i].category, oPrNdx[i].platform);
		}
        objProduct = [];
		objProduct = oProd;

		objCart = oCart;
		sortBrowseList(sortField, sortOrder);
}


function getBuyLink(productId) {
		var cartId = objProduct[productId].cartid;
		if (cartId == -1) return "undefined"; 
		var obj = objProduct[productId].params;
		var dummy = new Array();
		for (var i=0; i < obj.length; i++) {
			dummy[i] = obj[i];
			if (obj[i] == "") dummy[i] = objCart[cartId].values[i]; 

			if (obj[i] == "$") dummy[i] = escape (replaceStr(objProduct[productId].price,",", ""));
			if (obj[i] == "#") dummy[i] = escape (objProduct[productId].name);

		}	
		

		if ( objCart[cartId].url.indexOf ("aitsafe") != -1 ) {
		
			var paramStr = "?cat=" + categoryNames[curCategory] + "&plat=" + platformNames[curPlatform] + "&lang=" + languageNames[curLanguage];
			var escapedParams = escape(paramStr);
			dummy[3] = dummy[3] + escapedParams;
		}	
		var result = objCart[cartId].url + createQueryStr(cartId, dummy);
		return result;
	}
	

	function outlist(arg, filterType) {
		var result = "";
		var strValue = "";
		var dic = getFilterDic(filterType);
		for (var j = 0; j < arg.length; j++) {
			if (j > 0) result = result + ", ";
			if (matchesFilter(filterType, dic[arg[j]])) {
				strValue = '<span class="green">' + dic[arg[j]] + '</span>';
			}
			else {
				strValue = dic[arg[j]];
			}
			result = result + strValue;
		}
		return result;
	}				
	
	
	









function sortNumAsc(arg1, arg2) {
	a = parseFloat(arg1);
	b = parseFloat(arg2);
	if (a < b) return -1;
	if (a == b) return 0;
	if (a > b) return 1;
}

function sortCriteria(arg1, arg2) {
	a = arg1;
	b = arg2;
	if (sortMode == modNumeric) {
		a = parseFloat(arg1);
		b = parseFloat(arg2);
	}
	resLess = -1;
	resGreater = 1;
	if (sortOrder == ordDescending) {
		resLess = 1;
		resGreater = -1;
	}
	if (a < b) return resLess;
	if (a == b) return 0;
	if (a > b) return resGreater;
}


function sortBrowseList(field, order) {
		if (field == 0) {
			
			initSortedList();
			
			return;
		}
		
		
		var keyfield = browseField[field-1].name.toLowerCase();
		
		sortMode = browseField[field-1].sortmode;
		sortOrder = order;
		
		for (var i = 0; i < objProduct.length; i++) {
			if (sortMode != modMultiASCII) {
				sortedProducts[i] = objProduct[i][keyfield] + "#" + i; 
			}
			else {
				
				sortedProducts[i] = objProduct[i][keyfield].sort()[0] + "#" + i; 
			}	
		}	
		
		sortedProducts.sort(sortCriteria); 
	
		
		for (var i = 0; i < objProduct.length; i++) {
			pos = sortedProducts[i].lastIndexOf('#');
			sortedProducts[i] = parseInt(sortedProducts[i].substr(pos+1)); 
		}	
	}


function outBrowseHeadings() {
	for (var i = 0; i < browseField.length; i++) { 
		outBrowseHeading(i + 1);
		
		if (i < browseField.length - 1) o('<td background="' + imagePrefix + 'inventory_top2.gif"><img src="' + imagePrefix + 'spacer.gif" width="2" height="23" /></td>');
	}
}
	

function outBrowseHeading(field) {
	var mode = browseField[field-1].sortmode;
	var keyfield = browseField[field-1].name;
		
	o('<td background="' + imagePrefix + 'inventory_top.gif" class="browseHeading" align="center">' + keyfield + ' ');
	if (mode != modDisabled) {
		imgAscending = "up";
		imgDescending = "up";
		
		if (sortField == field) { 
			if (sortOrder == ordAscending) imgAscending = "down";
			if (sortOrder == ordDescending) imgDescending = "down";
		}	
		o('<a href="javascript:changeSortOrder(ordAscending,' + field + ')"><img src="' + imagePrefix + 'sort_asc_' + imgAscending + '.gif" width="13" height="11" alt="ascending" border="0" /></a><a href="javascript:changeSortOrder(ordDescending,' + field + ')"><img src="' + imagePrefix + 'sort_des_' + imgDescending + '.gif" width="13" height="11" alt="descending" border="0" /></a>');
	}
	o('</td>')
}



	
	
	



function searchInventoryEx() {
		foundProducts = [];
		var count = 0;
		for(i = 0; i < sortedProducts.length; i++) {
			var productId = sortedProducts[i];
			var countValidFilters = 0;
			for(j = 0; j < oFilters.length; j++) {
				var prodFilter = new Array();
				prodFilter = getFilterByName(oFilters[j].name, productId);
				
				if (curFilters[j] == 0 || findInArray(curFilters[j], prodFilter)) {
					countValidFilters++;
				}
			}
			if (countValidFilters == oFilters.length) {
				foundProducts[count++] = productId; 
			}
		}
	}
	
function getFilterByName(filterName, id)
{

	switch(filterName) {
		case "category":
			return objProduct[id].category;
		case "platform":
			return objProduct[id].platform;
		case "language":
			return objProduct[id].language;
		case "keyword":
			return objProduct[id].keyword;
		case "manufacturer":
			return objProduct[id].manuf;
	}
	return null;
}		
	
function getFilterDic(filterName)
{
	for(var i = 0; i < oFilters.length; i++) {
		if(oFilters[i].name == filterName ) {
			return oFilters[i].dic;
		}
	}
	return null;	
}		







function outSearchInfo() {
		var startItem = itemsPerPage * (curItemsPage - 1);
		var firstStr = eval(startItem + 1) + ' - ' + eval(Math.min(startItem + itemsPerPage, foundProducts.length)) + ' of ';
		if (foundProducts.length == 0) firstStr = "Sorry, your search returned ";
		o('<p class="results">' + firstStr + foundProducts.length + ' item(s)</p>');
	}
	
		function outPageBar() {
		
		var totalPages = highBound(foundProducts.length, itemsPerPage);


		if (totalPages == 0) return;

		var pageNumber = 0;
		o('<p class="results">Page ' + curItemsPage + ' of ' + totalPages + ' : ');
		
		if (curItemsPage > 10) {
			
			o('<a href="javascript:showPage(' + eval(lowBound(curItemsPage, 10)*10 - 10 + 1) + ')">[Prev 10]</a>');
		}
		
		if (curItemsPage > 1) {
			o('<a href="javascript:showPage(' + eval(curItemsPage-1) + ')">[Prev]</a>');
		}
		var startPage = lowBound(curItemsPage, 10)*10;
		var endPage = Math.min(highBound(curItemsPage, 10)*10, totalPages);
		
		for (var i = startPage; i < endPage; i++) { 
			pageNumber = i+1;
			if (pageNumber != curItemsPage) {
				o('<a href="javascript:showPage(' + pageNumber + ')">[' + pageNumber + ']</a> '); 
			}
			else { 
				o(' ' + pageNumber + ' ');
			}	
		}	
		
		if ((totalPages > 1) && (curItemsPage < totalPages)) {
			o('<a href="javascript:showPage(' + eval(curItemsPage+1) + ')">[Next]</a>');
		}
		
		if (curItemsPage + 10 < totalPages) {
			
			o('<a href="javascript:showPage(' + eval(Math.min(highBound(curItemsPage, 10)*10 + 1, totalPages)) + ')">[Next 10]</a>');
		}
		o('</p>');
	}	

