var names;
var nowIndex = 0;
var key;
var timeCount;
var autorow;
var lastkeyword = "";

function showSuggest()
{
	$("#suggestIframe,#autorow,#ptable").show();
}

function hideSuggest()
{
	$("#suggestIframe,#autorow,#ptable").hide();
}

function Suggest_getrowcount()
{
	var obj_trs = Suggest_get_trs();
	if(!obj_trs) return 0;
	return obj_trs.length;
}

document.onmouseup = function ()
{
	if(Suggest_getrowcount()) hideSuggest();
}

document.onkeydown = function (e)
{
	var keycode = ($.browser.msie) ? event.keyCode : e.which;
	var rowcount = Suggest_getrowcount();
	var bshown = ($("#menupopup").css("display") == "block");
	
	if(keycode == 9 && rowcount)
	{
		hideSuggest();
		return;
	}
	else if(keycode == 38 && rowcount && bshown)
	{
		nowIndex --;
		if(nowIndex < 0) nowIndex = 0;
	}
	else if(keycode == 40 && rowcount && bshown)
	{
		nowIndex ++;
		if(nowIndex >= rowcount) nowIndex = rowcount - 1;
	}
	else return;

	makeTableWhite();
	changeTableColor(nowIndex);
	fillText();
}

function Suggest_get_tr(nowIndex)
{
	var obj_trs = Suggest_get_trs();
	if(!obj_trs) return null;
	if(nowIndex < 0) nowIndex = 0;
	if(nowIndex >= obj_trs.length) nowIndex = obj_trs.length - 1;
	return obj_trs[nowIndex];
}

function Suggest_get_trs()
{
	names = document.getElementById("names");
	if(!names) return null;
	if($.browser.msie)
	{
		return names.rows;
	}
	else
	{
		if(!names.childNodes) return null;
		if(!names.childNodes.length) return null;
		return names.childNodes[0].childNodes;
	}
}

function Suggest_get_td(obj_tr)
{
	if($.browser.msie)
	{
		var arr_td = obj_tr.getElementsByTagName("td");
		return arr_td[0];
	}
	else return obj_tr.childNodes[0];
}

function Suggest_get_td_text(obj_td)
{
	return $(obj_td).text().replace("&amp;","&");
}

function fillText()
{
	var obj_tr = Suggest_get_tr(nowIndex);
	if(!obj_tr) return;
	var obj_td = Suggest_get_td(obj_tr);
	$("#keyword").val(Suggest_get_td_text(obj_td));
}

function changeTableColor(rowIndex)
{
	makeTableWhite();
	var obj_tr = Suggest_get_tr(nowIndex);
	if(!obj_tr) return;
	obj_tr.className = "sk_mouseOver";
	nowIndex = rowIndex;
}

function makeTableWhite()
{
	var obj_trs = Suggest_get_trs();
	if(!obj_trs) return;
	for(i=0;i<obj_trs.length;i++) obj_trs[i].className = "sk_initTr";
}

function validate(e)
{
	(e==null)?key=45:key=e.keyCode;
	timeCount=key;
	window.setTimeout("validate_request("+key+")",150);
}

function validate_request(e)
{
	if(key == timeCount)
	{
		if (key>=48 && key<=90 || key==8 || key==32|| key== 45 || key==46)
		{
			var kw = $("#keyword").val();
			if(kw && kw.length >= 2)
			{
				if(lastkeyword == kw) return;
				lastkeyword = kw;
				//cache it
				xmlobj = $("#keyword").data(lastkeyword);
				if(xmlobj) return parseMessages(xmlobj);

				$.get("/suggest.php",{kw:kw},function(xmlobj)
				{
					try {
						parseMessages(xmlobj);
					}
					catch(e){}
				},"xml");
			}
		}
	}
}

function parseMessages(xmlobj)
{
	var products = xmlobj.getElementsByTagName("suggestkeywords")[0];
	var tableLength = products.childNodes.length>10?10:products.childNodes.length;
	var newtable = document.createElement("table");
	for (loop=0;loop<tableLength;loop++){
		var product = products.childNodes[loop];
		var productname = product.getElementsByTagName("kw")[0];
		var productnumber = product.getElementsByTagName("vol")[0];
		appendProduct(newtable,productname.childNodes[0].nodeValue, productnumber.childNodes[0].nodeValue,loop);
	}
	$("#names").html($(newtable).html());
	$("#suggestIframe").height(tableLength * 14 + 2);
	showSuggest();

	nowIndex = -1;
	var rowcount = Suggest_getrowcount();
	if(rowcount > 0) makeTableWhite();
	else if(rowcount < 1) hideSuggest();
	
	try{
		var querykeyword = xmlobj.getElementsByTagName("querykeyword")[0].childNodes[0].nodeValue;
		$("#keyword").data(querykeyword,xmlobj);
	}
	catch($e){}
}

function appendProduct(newtable,fnameId,fnumberId,loopNo)
{
	var nameCell;
	var nameCellRight;
	var nameRow;
	if ($.browser.msie) {
		nameRow = newtable.insertRow(newtable.rows.length);
		nameCell = nameRow.insertCell(0);
	}else{
		nameRow = document.createElement("tr");
		nameCell = document.createElement("td");
		nameRow.appendChild(nameCell);
		newtable.appendChild(nameRow);
	}
	
	nameRow.className = "sk_initTr";
	nameRow.setAttribute("border", "0");
	nameRow.setAttribute("rowNumber",loopNo);
	nameRow.setAttribute("goHref", "http://www.couponsnapshot.com.au/front/dosearch.php?keyword=" + encodeURIComponent(fnameId));	// seo process
	nameRow.setAttribute("onmousedown", "nameRow_onmousedown(this)");
	nameRow.setAttribute("onmousemove", "nameRow_onmouseover(this)");
	nameRow.setAttribute("onmouseout", "nameRow_onmouseout(this)");
	
	nameCell.setAttribute("border", "0");
	nameCell.setAttribute("align", "left");
	
	var linkElement = document.createElement("span");
	//linkElement.setAttribute("href","#");
	linkElement.setAttribute("class","sk_font_span");

	linkElement.appendChild(document.createTextNode(fnameId));
	nameCell.appendChild(linkElement);
}

function nameRow_onmouseover(obj)
{
	var rowNumber = $(obj).attr("rowNumber");
	changeTableColor(rowNumber);
}

function nameRow_onmouseout(obj)
{
	$(obj).removeClass();
	$(obj).addClass("sk_initTr");
}

function nameRow_onmousedown(obj)
{
	nowIndex = $(obj).attr("rowNumber");
	fillText();	
	//only for mousedown
	window.location.href = $(obj).attr("goHref");
}

function get_autorow_window_html()
{
	var suggest_ff_top = 180;
	var suggest_ff_left = 0;
	var suggest_ie_top = 170;
	var suggest_ie_left = 484;
	var suggest_width = ($.browser.msie) ? 371 : 371;

	var strcssfont = "cursor:pointer; text-decoration:none; font-weight:normal; font-family:Verdana,arial,helvetica,sans-serif; font-size:12px;"
	var htmlmenupopup = "";
	htmlmenupopup += "<style>";
	htmlmenupopup += ".sk_mouseOver{background: #f9fdff; color: #000; cursor:pointer;}";
	htmlmenupopup += ".sk_initTr{background: #5cb6ee;color: #fff; cursor:pointer;}";
	htmlmenupopup += ".sk_initTr .sk_font_span{" + strcssfont + "padding-left:6px; line-height:18px; color: #fff;}";
	htmlmenupopup += ".sk_mouseOver .sk_font_span{" + strcssfont + "padding-left:6px; line-height:18px; color: #282828;}";
	htmlmenupopup += "</style>";

	htmlmenupopup += '<div id="menupopup">' + 
			'<table id="ptable" width="' + suggest_width + '" border="0" cellpadding="0" cellspacing="1" style="display:none">' + 
			'<tr><th scope="row">' + 
			'<table id="names" width="100%" border="0" cellpadding="0" cellspacing="0"></table>' + 
			'</th></tr>' + 
			'</table>' + 
			'<iframe style="display:none; top:0px; left:0px; width:' + suggest_width + 'px; position: absolute; z-index:1000; " src="about:blank" frameBorder=0 scrolling=no id="suggestbg"></iframe>' +
			'</div>';
	return htmlmenupopup;
}


