var timer,lastquery,domain,lastsiteID;
var catID = -1;
var result = 0;
var reverse = 0;
var query = "i'm looking for...";
var colTitles = ["Picture","Title","Bids","Bid","BIN","S&H","Total","End"];
var sortFuncs = [StrSort,StrSort,NumSort,NumSort,NumSort,NumSort,NumSort,NumSort,NumSort];
var colSortBy = [8,2,10,3,4,5,9,11,0];


function openpopup(siteID){
var popup=window.open("","","width=180,height=500,scrollbars=1,resizable=1")
popup.document.write('<html><body>')
for (i in suggestions[siteID][catID])
{	
	keyword = suggestions[siteID][catID][i];
	popup.document.write("<a onclick=\"window.opener.goSearch(\'"+keyword+"\')\">"+keyword+"</a><br>")
}
	
popup.document.write('</body></html');
popup.document.close();
}


function setCategory(chosenCatID)
{
	catID = chosenCatID;
	var chosensiteID = siteID.value; 
	if (catID == -1) {document.getElementById('catchoice').selectedIndex = 2;}
	else 
	{
		lastquery = '';
		goSearch();
	}
	//if (!suggestions[chosensiteID][catID]) {sendData(updateSuggestions,'GET','/k','s='+chosensiteID+'&c='+catID);}
}

function setCookie(cookie_name,value)
{
	//alert('set '+cookie_name+' cookie to '+value);
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+365);
	document.cookie=cookie_name+ "=" +escape(value)+";expires="+exdate.toGMTString()+";domain="+domain;
}

function getCookie(cookie_name)
{
	if (document.cookie.length>0)
	{
		c_start=document.cookie.indexOf(cookie_name + "=");
		if (c_start!=-1)
		{ 
			c_start=c_start + cookie_name.length+1;
			c_end=document.cookie.indexOf(";",c_start);
			if (c_end==-1) {c_end=document.cookie.length;}
			return unescape(document.cookie.substring(c_start,c_end))
		} 
	}
	return "";
}

function initSearch()
{
	anchor = unescape(document.location.hash.substr(1));
	if ((anchor.length > 2) && (anchor!=lastquery))
	{
		document.search_form.query.value=anchor;
		goSearch();
	}
}
function onLoad() 
{
	initSearch();
	setInterval(initSearch, 200);
	document.search_form.query.value = query;
	if ((getCookie('showImages') == 'true') || (getCookie('showImages') == '')) {document.search_form.pictures.checked = true;}
	if (getCookie('buyItNowOnly') == 'true') {document.search_form.buyItNowOnly.checked = true;}
}

function onPageShow()
{
	if (query != "i'm looking for...") //working around annoying firefox caching behaviour
	{
		document.search_form.query.value = query;
		document.location.hash = "#"+query; 
	}
	//alert('query='+query+' lastquery='+lastquery);
}

function clear_textbox(click)
{
	if (document.search_form.query.value == "i'm looking for..." || click)
	{
		document.search_form.query.value = "";
		document.getElementById("autosuggest").style.display = 'none';
		document.search_form.query.focus();
	}
}

function createHTTPObject(callback)
{
  var xmlhttp = false;

  /* Compilation conditionnelle d'IE */
  /*@cc_on
  @if (@_jscript_version >= 5)
     try
     {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     }
     catch (e)
     {
        try
        {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch (E)
        {
           xmlhttp = false;
        }
     }
  @else
     xmlhttp = false;
  @end @*/

  /* on essaie de cr?er l'objet si ce n'est pas d?j? fait */
  if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
  {
     try
     {
        xmlhttp = new XMLHttpRequest();
     }
     catch (e)
     {
        xmlhttp = false;
     }
  }

  if (xmlhttp)
  {
     /* on d?finit ce qui doit se passer quand la page r?pondra */
     xmlhttp.onreadystatechange=function()
     				{	
					if (xmlhttp.readyState == 4) /* 4 : "complete" */
					{
						if (xmlhttp.status == 200) /* 200 : HTTP code for OK */
						callback(xmlhttp);
						xmlhttp = null;
					}
				}
  }
  return xmlhttp;
}
/**
* Envoie des donn?es ? l'aide d'XmlHttpRequest?
* @param string methode d'envoi ['GET'|'POST']
* @param string url
* @param string donn?es ? envoyer sous la forme var1=value1&var2=value2...
*/
function sendData(callback, method, url, data)
{   
    var httpObject = createHTTPObject(callback)
    
    if(method == "GET")
    {
	    if(data == 'null')
	    {
		    httpObject.open("GET", url, true); //ouverture asynchrone
	    }
	    else
	    {
		    httpObject.open("GET", url+"?"+data, true);
	    }
	    httpObject.send(null);
    }
    else if(method == "POST")
    {
	    httpObject.open("POST", url, true); //ouverture asynchrone
	    httpObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	    httpObject.send(data);
    }
    return true;
}

function goSearch(param)
{
	//alert('goSearch called with '+param+', siteID is '+siteID+', lastquery is '+lastquery);
	//window.clearTimeout(timer)
	var chosensiteID = siteID.value;
	if (typeof param != "undefined") {document.search_form.query.value = param;}
	query = document.search_form.query.value.replace(/^\s+/g, '').replace(/\s+$/g, '').replace(/(<|>)/g, '');
	if (!suggestions[chosensiteID]) {suggestions[chosensiteID] = [];}
	if (!suggestions[chosensiteID][catID]) {sendData(update,'GET','/k','s='+chosensiteID+'&c='+catID);}
	if ((query.length<3)||(query=="i'm looking for...")||(query==lastquery && chosensiteID==lastsiteID)) {return;}
	document.getElementById("autosuggest").style.display = 'none';
	window.location.href = "#"+query; 
	lastquery = query;
	lastsiteID = chosensiteID;
	lastSortedCol = 7;
	colToSort = 7;
        reverse = 0;
	infoDiv.innerHTML = '';
	tableDiv.innerHTML = '<img src="http://static.dealscout.com/bigrotation2.gif">';
	sendData(gotSearchResults,'GET','/s','q='+escape(query)+'&s='+chosensiteID+'&c='+catID);
	return false;
}

function update(xmlhttp)
{
	eval(xmlhttp.responseText);
	//document.getElementById('autosuggest').style.display='block';
}

function gotSearchResults(xmlhttp)
{
	result = eval(xmlhttp.responseText);
	if (document.search_form.mode[1].checked) RenderGallery(); else RenderTable();
	categoryDiv.innerHTML = result.categories;
}

function show(rownum)
{
	itemData = result.items[rownum];
	infoDiv.innerHTML = itemData[2]+' '+itemData[3]+' '+itemData[10]+' bids. Ends '+itemData[7]+'<br><p>';
}

function RenderGallery()
{
	document.search_form.pictures.disabled=true;
	document.search_form.buyItNowOnly.disabled=true;
	if (!result) {return}
	galleryStr = '<div class="gallery">'
		
	rowCount = result.items.length;
	colCount = 1;
	renderedCount = 0;
	if (rowCount>0)
	{
		for (r=0; r < rowCount; r++)
		{
			thisrow = result.items[r];
			if (thisrow[8]!='x')
			{
				itemURL = result.URLprefix + thisrow[0] + encodeURIComponent (thisrow[1])
				itemData = result.items[r] // onmouseover="show('+r+')"
				galleryStr += '<a href="'+itemURL+'" target="_blank"><img src="'+itemData[8]+'" title="'+itemData[2]+' '+itemData[3]+' '+itemData[10]+' bids. Ends '+itemData[7]+'"></a>';
				colCount = colCount + 1;
				renderedCount++;
			}
			//if (colCount == 20) {galleryStr = galleryStr+'<br>'; colCount = 1;}
		}
	}
	tableDiv.innerHTML = galleryStr+'</div>';
	resultMsg = "Showing "+renderedCount+" items with pictures, "+result.TotalItems+' total matches.';
	if ((catID == -1) && (rowCount < result.TotalItems)) {resultMsg += ' Select a category to narrow down results.'}	
	if ((catID != -1) && (rowCount < result.TotalItems)) {resultMsg += ' Use <a href="http://pages.ebay.com/help/find/search_commands.html" target="_blank">search commands</a> to improve results.';}
	if (!rowCount) {resultMsg = "No items found."}
        infoDiv.innerHTML = resultMsg
}

function showPreview(itemID)
{
	var previewRow = document.getElementById('r'+itemID);
	hidden = (previewRow.style.display == 'none');
	try {
		document.getElementById('i'+itemID).src = (hidden ? 'http://static.dealscout.com/magnify_minus.gif' : 'http://static.dealscout.com/magnify.gif'); 
		previewRow.style.display = (hidden ? 'table-row' : 'none');
            }
	catch(e) 
	    {
		previewRow.style.display = (hidden ? 'block' : 'none'); // IE does not support display: table-row
	    }
	sendData(update,'GET','/p','i='+itemID);
}

function RenderTable()
{	
	document.search_form.pictures.disabled=false;
	document.search_form.buyItNowOnly.disabled=false;
	if (!result) {return}

	var sortIndicator = '<span>' + (reverse ? '&lt;&lt;' : '&gt;&gt;')+'</span>';
	var showImages = document.search_form.pictures.checked;
	var buyItNowOnly = document.search_form.buyItNowOnly.checked;
	var rowCount = result.items.length;
	var renderedCount = 0
	var oddRow = 1
	var tableStr = ''
	
	if (rowCount>0)
	{
		tableStr += '<table cellspacing="0"><thead><tr>';
		for (c=0; c < 8; c++)
		{	
			if (!showImages && c==0) {continue;}
			tableStr += "<TH ID='c"+c+"' title='Click to sort' onclick='sortByCol("+c+")'"+ ">" + colTitles[c]+' '+((colToSort == c) ? sortIndicator+'</TH>' : '</TH>');
		}
		tableStr = tableStr+'</tr></thead>';
		for (r=0; r < rowCount; r++)
		{
			thisrow = result.items[r]
			itemURL = result.URLprefix + thisrow[0] + encodeURIComponent (thisrow[1])
			if ((thisrow[4] != '-') || !buyItNowOnly)
			{	
				oddRow = !oddRow
				tableStr += (oddRow ? '<tr class="odd result">' : '<tr class="result">')
				if (showImages)
				{
					if (thisrow[8]=='s') {imgURL='http://thumbs.ebay.com/pict/'+thisrow[0]+'.jpg'}
					else
					{if (thisrow[8]=='x') {imgURL='http://pics.ebaystatic.com/aw/pics/icon/iconPic_20x20.gif'}
					else
					{imgURL = thisrow[8];}}
					tableStr += '<td class="picture"><a href="'+itemURL+'"><img src="'+imgURL+'"></a>';
				}
				//tableStr += '<td class="title"><a href="'+itemURL+'" target="_blank">'+thisrow[2]+'</a></td></td><td>'+thisrow[10]+'</td><td>'+thisrow[3]+'</td><td>'+thisrow[4]+'</td><td>'+thisrow[5]+'</td><td class="total">'+thisrow[6]+'</td><td>'+thisrow[7]+'</td></tr>'
				tableStr += '<td class="title"><div class="title-link"><a href="'+itemURL+'" target="_blank">'+thisrow[2]+'</a></div><div class="preview-link"><a onclick="showPreview('+thisrow[0]+')"><img src="http://static.dealscout.com/magnify.gif" id="i'+thisrow[0]+'"> preview</a></div></td></td><td>'+thisrow[10]+'</td><td>'+thisrow[3]+'</td><td>'+thisrow[4]+'</td><td>'+thisrow[5]+'</td><td class="total">'+thisrow[6]+'</td><td>'+thisrow[7]+'</td></tr>'
				tableStr += (oddRow ? '<tr class="odd"' : '<tr')+' style="display: none;" id="r'+thisrow[0]+'"><td class="preview" colspan="'+ (showImages ? 8 : 7)+'"><a href="'+itemURL+'" target="_blank"><div id="p'+thisrow[0]+'"><img src="http://static.dealscout.com/bigrotation2.gif"></div></a></td></tr>'
				renderedCount++
			}
		}
		tableStr += "</table>"
	}
	
	resultMsg = "Showing "
	if (buyItNowOnly) {resultMsg += renderedCount+" of "}
	resultMsg = resultMsg+rowCount+" items"; if (rowCount < result.TotalItems) {resultMsg += ' ending soonest, '+result.TotalItems+' total matches. ';}
	if ((catID == -1) && (rowCount < result.TotalItems)) {resultMsg += 'Select a category to narrow down results.'}	
	if ((catID != -1) && (rowCount < result.TotalItems)) {resultMsg += 'Use <a href="http://pages.ebay.com/help/find/search_commands.html" target="_blank">search commands</a> to improve results.';}
	if (!rowCount) {resultMsg = "No items found."}
        infoDiv.innerHTML = resultMsg
	tableDiv.innerHTML = tableStr
}

function NumSort(a,b)
{	
	aVal = a[dataSortCol]
	bVal = b[dataSortCol]
	if (aVal=='-') {aVal=999999999}
	if (bVal=='-') {bVal=999999999}
	if (aVal=='?') {aVal=-1}
	if (bVal=='?') {bVal=-1}
	return aVal-bVal;
}

function StrSort(a,b)
{
	aVal=a[dataSortCol].toLowerCase();
	bVal=b[dataSortCol].toLowerCase();
	if (aVal<bVal) return -1;
	if (aVal>bVal) return 1;
	return 0;
}

function sortByCol(col)
{       
	colToSort=col;
	if (colToSort==lastSortedCol)	{result.items=result.items.reverse(); reverse = !reverse;}
	else	{dataSortCol = colSortBy[col]; result.items=result.items.sort(sortFuncs[col]); reverse = 0;}
	lastSortedCol=col;
	RenderTable();
}
