
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 = 6;
var subItemViewCapacity = 5;
var maxGroupTitleLength = 80;
var maxSubItemTitleLength = 40;
var maxChannelTitleLength = 20;

var subItemScrollPosition = new Array();

function getGroupUrl() {
	var d = new Date();
	var t = d.getTime();
	
	url = "http://www.roosster.com/nr/items/groups.php?";
	for(var param in params) {
		if(params[param] != null && params[param] != "") url += param+"="+escape(params[param])+"&";
	}
	url += "zz="+t;

	//alert(url);
	return url;
}

function checkImage(img) {
	var maxWidth = 75;
	var maxHeight = 75;
	
	resizeImage(img, maxWidth, maxHeight);
}

function processGroups(id, text) {

	if(text == null || text == "") 
		allDone = true;
	else
		allDone = false;
	
	var temp = eval('('+text+')');
	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 setSubItems(itemcount, divcount, start) {
	var item = results[itemcount];
	var max = (start + subItemViewCapacity) > item['subitems'].length ? item['subitems'].length : (start + subItemViewCapacity);
	var html = '';
	for(var i = start; i < max; i++) {
		if(item['subitems'][i]['title'] && item['subitems'][i]['link'] && item['subitems'][i]['channel']) {
			html += '<a href="'+item['subitems'][i]['link']+'" target="deallink" title="'+quoteit(item['subitems'][i]['title']+' ['+channels[item['subitems'][i]['channel']][0]+']')+'">'+trimString(item['subitems'][i]['title'], maxSubItemTitleLength)+'</a> <span class="graytext">'+trimString(channels[item['subitems'][i]['channel']][0], maxChannelTitleLength)+'</span><br/>';
		}
	}
	
	getObject("rowsubdesc"+divcount).innerHTML = html;
	getObject("rowsubdescscrolldown"+divcount).style.visibility = (max >= item['subitems'].length) ? "hidden" : "visible";
	getObject("rowsubdescscrollup"+divcount).style.visibility = (start == 0) ? "hidden" : "visible";
	
	getObject("rowsubdescscrolldownlink"+divcount).href = "javascript:subItemScrollDown("+itemcount+","+divcount+")";
	getObject("rowsubdescscrolluplink"+divcount).href = "javascript:subItemScrollUp("+itemcount+","+divcount+")";
	
	subItemScrollPosition[divcount] = start;
}


function resetRow(counter) {
	getObject("frame"+counter).style.visibility = 'hidden';
}

function updateItemView(start) {
	// ignore update request if the view is already complete
	
	if(!(!viewChanged && (viewStart == start) && (viewEnd - viewStart + 1 >= viewCapacity))) {
	
		var max = start+viewCapacity > results.length ? results.length : start+viewCapacity;
		
		var counter = 0;
		for(var i = start; i < max; i++, counter++) {
			var item = results[i];
			
			if(getObject("ilink"+counter).href != "http://www.roosster.com"+item['uri']) {
				var framediv = getObject("frame"+counter);
				
				if(framediv.style.visibility != 'visible') {
					framediv.style.visibility = 'visible';
				}
				//alert(getObject("ilink"+counter).href+" : "+item['uri']);
				checkImage(item['pic']);
				var imgtag = getObject("imgtag"+counter);
				imgtag.height = item['pic'].height;
				imgtag.width = item['pic'].width;
				imgtag.src = item['pic'].src;
				imgtag.alt = quoteit(item['title']+' ['+item['numitems']+' total]');
				imgtag.title = imgtag.alt;
				
				var rowdescdiv = getObject("rowdesc"+counter);
				getObject("dlink"+counter).innerHTML = trimString(item['title'], maxGroupTitleLength)+'<br/><span class="groupcount">'+item['numitems']+' total</span>';
				rowdescdiv.title = imgtag.alt;
				setSubItems(i,counter,0);
				if(item['price'] && item['price'] != "0") 
					getObject("rowprc"+counter).innerHTML = "$"+Math.round(item['price']);
				else
					getObject("rowprc"+counter).innerHTML = "";
				if(item['discount'] && item['discount'] != "0") 
					getObject("rowdisc"+counter).innerHTML = Math.round(item['discount'])+"% off";
				else
					getObject("rowdisc"+counter).innerHTML = "";
				getObject("cmp"+counter).href = getPriceCompareUrl(item['title']);
				getObject("dlink"+counter).href = item['uri'];
				getObject("ilink"+counter).href = item['uri'];
				getObject("date"+counter).innerHTML = gET(item['date']);
				getObject("source"+counter).innerHTML = channels[item['channelid']][0];
			}
		}
		
		for(var j = counter; j < viewCapacity; j++) {
			resetRow(j);
		}
		
		//alert(viewStart+" "+start+" "+results.length);
		
		viewStart = start;
		viewEnd = i-1;
		
		viewChanged = false;

		if((!allDone) && (viewEnd - viewStart + 1 < viewCapacity) && (numOutstandingRequests > 0))
		 			showLoadingStatus("loading");
		
		if((!allDone) && (results.length - viewStart < viewCapacity*5)) getGroups(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(id+" "+error);
}

function getGroups(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, getGroupUrl(), null, processGroups, itemError, loading, show);
}

function next() {
	subItemScrollPosition = new Array();
	updateItemView(viewStart+viewCapacity >= results.length ? viewStart : viewStart+viewCapacity);
//	frames['google_ads_frame'].location.reload();
}

function prev() {
	subItemScrollPosition = new Array();
	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();
	getGroups(1, true, true);
	var title = getPageTitle();
	var rss = getRssUrl();
	var current = getCurrentUrl();
	setRssUrl(current, rss, title);
	document.title = title;
}

function clearParams() {
	params['p'] = 1;
	params['s'] = 'spd';
	params['r'] = 0;
}

function sortGroups() {
	var select = getObject('sort');
	
	params['s'] = select.options[select.selectedIndex].value;
	newView();
}

function recentGroups() {
	var select = getObject('recent');
	
	params['r'] = select.options[select.selectedIndex].value;
	newView();
}

function initOnLoad() {
	getObject('searchForm').onsubmit = srch;
	getObject('searchButtonLink').href = 'javascript:srch()';
		
	newView();
	
	setHref('LeftNavLink',"javascript:prev()");
	setHref('RightNavLink',"javascript:next()");	

	setHref('LeftNavLinkBottom',"javascript:prev()");
	setHref('RightNavLinkBottom',"javascript:next()");	
}

function subItemScrollUp(itemcount, divcount) {
	var current = subItemScrollPosition[divcount] ? subItemScrollPosition[divcount] : 0;
	if(current > 0) setSubItems(itemcount, divcount, current-1);
}
	
function subItemScrollDown(itemcount, divcount) {
	var current = subItemScrollPosition[divcount] ? subItemScrollPosition[divcount] : 0;
	if(current < results[itemcount]['subitems'].length) setSubItems(itemcount, divcount, current+1);
}

function getRssUrl() {
	url = "http://www.roosster.com/nr/gf/s/spd/";
	/*
	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/g/";
	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 setRssUrl(current, rss, title) {
	getObject("chickletlink").href = '/nr/sub?l='+escape(rss)+'&h='+escape(title)+'&z='+escape(current);
}

function getPageTitle() {
	return "Roosster Hot Deal Search - hottest deals from across the web";
}

function srch() {
	getObject("loading").style.visibility = 'visible';
	document.searchForm.submit();
	return false;
}
	

addEvent(window, 'load', initOnLoad);
