
var results = new Array();

var viewStart = 0;
var viewEnd = 0;

var currentPage = 1;
var viewChanged = false;
var allDone = false;

var noImage = new Image();
noImage.src = "/img/rstr/noimage.jpg";

var viewCapacity = 30;
var maxItemLength = 70;
var maxSrcLength = 25;
var pagemode = "list";

function getItemUrl() {
	var d = new Date();
	var t = d.getTime();
	
	url = "http://www.roosster.com/nr/items/items.php?";
	for(var i = 0;i < paramOrder.length; i++) {
		var param = paramOrder[i];
		if(params[param] != null && params[param] != "") url += param+"="+escape(params[param])+"&";
	}
	url += "zz="+t;
	return url;
}

function getPageImages() {
	for(i = viewStart; (i < viewStart+viewCapacity) && (i < results.length); i++) {
		checkImage(results[i]);
	}
}

function checkImage(item) {
	if(item['pic'] && item['pic'][0] && (typeof(item['pic'][0]) == 'string')) {
		//alert('getting image '+item['pic'][0]);
		if(item['pic'][0] == '/img/rstr/noimage.jpg') {
			//alert('setting to noimage');
			item['pic'] = noImage;
		} else 
			item['pic'] = createImage(item['pic'][0], item['pic'][2], item['pic'][1]);
	}
	
	var maxWidth = 75;
	var maxHeight = 75;
	
	resizeImage(item['pic'], maxWidth, maxHeight);
}

function processItems(id, text) {
	
	//alert(text);
	var temp = eval('('+text+')');
	if(text == null || text == "" || temp.length < viewCapacity) 
		allDone = true;
	else
		allDone = false;
	/*
	for(var i = 0; i < temp.length; i++) {
		temp[i]['pic'] = createImage(temp[i]['pic'][0], temp[i]['pic'][2], temp[i]['pic'][1]);
	}
	*/
	if(temp) results = results.concat(temp);
		
	updateItemView(viewStart);
}


function resetRow(counter) {
	var framediv = getObject("frame"+counter);
	if(framediv) framediv.style.visibility = 'hidden';
}

function showRow(counter) {
	var framediv = getObject("frame"+counter);
	if(framediv) framediv.style.visibility = 'visible';
}

function populateItem(item, counter) {
			var dlinkdiv = getObject("dlink"+counter);
			var itemlink = dlinkdiv ? dlinkdiv.href : '';
			
			if(itemlink != "http://www.roosster.com"+item['uri']) {
				var itemtitle = quoteit(item['title']);
				
				var framediv = getObject("frame"+counter);
				if(framediv && (framediv.style.visibility != 'visible')) {
					framediv.style.visibility = 'visible';
				}
				checkImage(item);
				var imgtag = getObject("imgtag"+counter);
				if(imgtag) {
					imgtag.height = item['pic'].height;
					imgtag.width = item['pic'].width;
					imgtag.src = item['pic'].src;
					imgtag.alt = itemtitle;
					imgtag.title = itemtitle;
				}
				
				//alertstr += item['pic'].src+" "+item['pic'].width+" "+item['pic'].height+"\n";
				
				var rowdescdiv = getObject("rowdesc"+counter);
				if(rowdescdiv) {
					rowdescdiv.title = itemtitle;
				}
				
				if(dlinkdiv) {
					dlinkdiv.innerHTML = trimString(item['title'], maxItemLength);
				}
				
				var rowprcdiv = getObject("rowprc"+counter);
				if(rowprcdiv) {
					if(item['price'] && item['price'] != "0") 
						rowprcdiv.innerHTML = "$"+Math.round(item['price']);
					else
						rowprcdiv.innerHTML = "&nbsp;";
				}
				
				var rowdiscdiv = getObject("rowdisc"+counter);
				if(rowdiscdiv) {
					if(item['discount'] && item['discount'] != "0") 
						rowdiscdiv.innerHTML = Math.round(item['discount'])+"% off";
					else
						rowdiscdiv.innerHTML = "";
				}
				
				var rowcmpdiv = getObject("cmp"+counter);
				if(rowcmpdiv) {
					rowcmpdiv.href = getPriceCompareUrl(item['title']);				
				}
				
				var ilinkdiv = getObject("ilink"+counter);
				if(ilinkdiv) {
					ilinkdiv.href = item['uri'];
				}
				
				var dlinkdiv = getObject("dlink"+counter);
				if(dlinkdiv) {
					dlinkdiv.href = item['uri'];
				}
				
				var datediv = getObject("date"+counter);
				if(datediv) {
					datediv.innerHTML = gET(item['date']);
				}
				
				var sourcediv = getObject("source"+counter);
				if(sourcediv) {
					sourcediv.innerHTML = trimString(channels[item['channelid']][0], maxSrcLength);
				}
			}
}

function updateItemView(start) {
	// ignore update request if the view is already complete
	getPageImages();
	
	if(!(!viewChanged && (viewStart == start) && (viewEnd - viewStart + 1 >= viewCapacity))) {
		var max = start+viewCapacity > results.length ? results.length : start+viewCapacity;
		
		var counter = 0;
		var alertstr = '';
		for(var i = start; i < max; i++, counter++) {
			var item = results[i];
			populateItem(item, counter);
		}
		
		//alert(alertstr);
		
		for(var j = counter; j < viewCapacity; j++) {
			resetRow(j);
		}
		
		viewStart = start;
		viewEnd = i-1;
		
		viewChanged = false;
		
		//alert("results length: "+results.length+"/  viewStart: "+viewStart+"/   viewCapacity:"+viewCapacity+"/  currentPage:"+currentPage);
		
		if((!allDone) && (viewEnd - viewStart + 1 < viewCapacity) && (numOutstandingRequests > 0))
			showLoadingStatus("loading");
		
		if((!allDone) && (results.length - viewStart < viewCapacity*5)) getItems(currentPage+1, true, false);
	}
	
	setVisibility('RightNavLink',(viewStart + viewCapacity >= results.length) ? 'hidden' : 'visible');	
	setVisibility('LeftNavLink',(viewStart == 0) ? 'hidden' : 'visible');	
	
	setVisibility('RightNavLinkBottom',(viewStart + viewCapacity >= results.length) ? 'hidden' : 'visible');	
	setVisibility('LeftNavLinkBottom',(viewStart == 0) ? 'hidden' : 'visible');	
}

function itemError(id, error) {
	alert("Error retrieving data :"+id+": http code "+error);
}

function getItems(page, force, notify) {
	if(page == currentPage && !force) return;
	
	params['p'] = page;
	currentPage = page;
	var loading = "loading";
	var show = false;
	if(notify) show = true;
	
	sendXMLRequest(1, getItemUrl(), null, processItems, itemError, loading, show);
}

function next() {
	updateItemView(viewStart+viewCapacity >= results.length ? viewStart : viewStart+viewCapacity);
//	frames['google_ads_frame'].location.reload();
}

function prev() {
	updateItemView(viewStart-viewCapacity > 0 ? viewStart-viewCapacity : 0);
//	frames['google_ads_frame'].location.reload();
}

function newView() {
	allDone = false;
	params['p'] = 1;
	viewStart = 0;
	viewChanged = true;
	results = new Array();
	getItems(1, true, true);
	var title = getPageTitle();
	var rss = getRssUrl();
	var current = getCurrentUrl();
	setRssUrl(current, rss, title);
	document.title = title;
}

function setRssUrl(current, rss, title) {
	getObject("chickletlink").href = '/nr/sub?l='+escape(rss)+'&h='+escape(title)+'&z='+escape(current);
}

function clearParams() {
	params['q'] = '';
	params['c'] = '';
	params['t'] = 1;
	params['p'] = 1;
	params['s'] = '';
	params['o'] = '';
}

function searchItems() {
	clearParams();
	params['q'] = getObject('q').value;
	newView();
}

function filterItems() {
	var select = getObject('filter');
	
	params['c'] = select.options[select.selectedIndex].value;
	newView();
}

function sortItems() {
	var select = getObject('sort');
	
	params['s'] = select.options[select.selectedIndex].value;
	newView();
}

function orderItems() {
	var select = getObject('order');
	
	params['o'] = select.options[select.selectedIndex].value;
	newView();
}

function findFrame(row) {
	while(row && (row.id.substring(0,5) != 'frame')) row = row.parentNode;
	
	return row;
}

function highlightRow(event) {
	var row = findFrame(getEventTarget(getEvent(event)));
	
	if(row && (row.id.substring(0,5) == 'frame')) {
		row.className = 'gridrowFrameHighlight';
		var num = parseInt(row.id.substring(5,row.id.length));
		//alert(num);
		if(viewStart+num < results.length) {
			var item = results[viewStart+num];
			populateItem(item,'itdt');
			var framediv = getObject('frameitdt');
			if(framediv) {
				var maxMargin = viewCapacity*20 - 250;
				var margin = Math.min(maxMargin, num*20 - 80);
				margin = Math.max(0, margin);
				framediv.style.marginTop = margin+"px";
			}
			showRow('itdt');
		}
	}
}

function unlightRow(event) {
	var row = findFrame(getEventTarget(getEvent(event)));
	
	if(row && (row.id.substring(0,5) == 'frame')) row.className = 'gridrowFrame';
	resetRow('itdt');
}

function initOnLoad() {	
	newView();
	
	setHref('LeftNavLink',"javascript:prev()");
	setHref('RightNavLink',"javascript:next()");	
	
	setHref('LeftNavLinkBottom',"javascript:prev()");
	setHref('RightNavLinkBottom',"javascript:next()");	
	
	getObject('searchForm').action = "javascript:searchItems()";
	getObject('searchButtonLink').href = "javascript:searchItems()";

	var select = getObject('view');
	pagemode = select ? select.options[select.selectedIndex].value : 'list';
	
	if(pagemode == 'list') {
		var framediv;
		var counter = 0;
		
		while((counter < viewCapacity) && (framediv = getObject('frame'+counter))) {
			addEvent(framediv,'mouseover',highlightRow, true);
			addEvent(framediv,'mouseout',unlightRow, true);
			counter++;
		}
	}
}

function getRssUrl() {
	url = "http://www.roosster.com/nr/f/";
	for(var i = 0;i < paramOrder.length; i++) {
		var param = paramOrder[i];
		if(params[param] != null && params[param] != "") url += param+"/"+escape(params[param])+"/";
	}
	url += 'rss.xml';
	
	return url;
}

function getCurrentUrl() {
	url = "http://www.roosster.com/nr/i/";
	for(var i = 0;i < paramOrder.length; i++) {
		var param = paramOrder[i];
		if(params[param] != null && params[param] != "") url += param+"/"+escape(params[param])+"/";
	}
	
	return url;
}


function getChannelTitleFromCode(code) {
	var title = '';
	
	for(var channelid in channels) {
		if(channels[channelid][2] == code) return channels[channelid][0];
	}
	
	return title;
}

function getPageTitle() {
	var title = 'Roosster Hot Deal Search - hot ';
	if(params['t'] == 1) title += 'deals';
	if(params['t'] == 2) title += 'news';
	if(params['t'] == 4) title += 'coupons';
	
	if(params['c']) title += ' from '+getChannelTitleFromCode(params['c']);
	if(params['q']) title += ' on '+params['q'];
	
	return title;
}

function reloadPage() {
	showLoadingStatus("loading");
	var now = new Date();
	document.location.href = document.location.href+"?time="+now.getTime();
}

function changePageMode() {
	var select = getObject('view');
	
	var newmode = select.options[select.selectedIndex].value;
	if(pagemode != newmode) {
		pagemode = newmode;

		var forever = new Date("December 31, 2023");
		DeleteCookie('pagemode','/');
		SetCookie('pagemode',pagemode,forever,'/');
		reloadPage();
	}
}

addEvent(window, 'load', initOnLoad);
