/*  ajaxFinder.js
 *
 *  Javascript for use with the AjaxFinder widget including Ajax calls and 
 *  tracking usage for Hitbox.
/*--------------------------------------------------------------------------*/

function StringBuffer() { 
   this.buffer = []; 
}

StringBuffer.prototype.append = function append(string) { 
   this.buffer.push(string); 
   return this; 
}; 

StringBuffer.prototype.toString = function toString() { 
   return this.buffer.join(""); 
};

function processError(req){
    var tmp = document.getElementById("lookupVal").value;
	var html=new StringBuffer();
	html.append("Sorry, no product or service was found for the keywords you entered. This tool is strictly a product/service finder.<br/><br/>");
	html.append("<form name=\"finderSearch\" action=\"http://search.sybase.com/search/simple.do\">");
	html.append("<input type=\"hidden\" name=\"keyword\" value=\""+tmp+"\">");
	html.append("<b>Search for <span class=\"resultFinder\" onmouseover=\"this.style.cursor='pointer'\" onclick=\"document.finderSearch.submit();\"><u>'"+ tmp +"'</u></span> in all of Sybase.com</b>");
	html.append("</form>");
	$("resultCounts").style.display = "none";
	$("output").innerHTML = html.toString();
	_hbSet("c2",tmp);
	_hbSend();
}

function processXMLResponse(req)
{   
	var xmlDoc = req.responseXML;
	var results;
    try {
		results=xmlDoc.getElementsByTagName("result");
		if (results.length == 0) processError(req);
	} catch (err){
		processError(req);
		return;
	}
	var resultCounts=xmlDoc.getElementsByTagName("resultCount");
	var resultCount = resultCounts[0].firstChild.nodeValue;
	var paginationTags=xmlDoc.getElementsByTagName("pagination");
	var pagination = paginationTags[0].firstChild.nodeValue;
	var noResults = true;
	
	var nName;
	var nValue;
	var rName;
	var rDescription;
	var rUrl;
	var html=new StringBuffer();
	
	for (j=0;j<results.length;j++)
	{	
		for (k=0;k<results[j].childNodes.length;k++)
		{
		var finalElement = false; //final element to build url
		
			if (results[j].childNodes[k].nodeType != 1) continue;
			{
				nName = results[j].childNodes[k].nodeName;
				nValue = results[j].childNodes[k].firstChild.nodeValue;
				
				if (nName=="product") {
					rName=nValue;
				} else if (nName=="description") {
					rDescription=nValue;
				} else if (nName=="url") {
					rUrl=nValue;
					finalElement = true;
				} 
				
				if (finalElement) {
					html.append("<a href=\""+rUrl+"\" class='resultFinder' onclick=\"_hbLink('"+rName+"')\">"+rName+"</a>: "+rDescription+"<br/><br/>");
				    noResults = false;
				}
			} //end if
		} // end for result
	}

	if (noResults){
		processError(req);
		return;
	} else {
		$("resultCounts").style.display = "block";
		document.getElementById("resultCounts").innerHTML = pagination;
	}
	
	tmp = document.getElementById("lookupVal").value;
	_hbSet("search.keywords",tmp);
	_hbSet("search.results",resultCount);
	_hbSend();
	
	$("output").innerHTML = html.toString();
	$("count").innerHTML = resultCount;
	$("count").innerHTML = $("count").innerHTML;
} 

function lookup(args, pageNum)
{   
	styledPopupOpen();
	args = args.replace(/^\s+|\s+$/g, '') ;
	if (args.length >= 3)
	{
		var parms = 'keyword=' + args + '&pageNum=' + pageNum;
		var myAjax = new Ajax.Request(
			'/ajaxListener.jsp', 
			{
				method: 'get', 
				parameters: parms, 
				onComplete: processXMLResponse
			});

	} else {
		$("output").innerHTML = "Please enter at least 3 characters.";
		$("resultCounts").hide();
	}
}

function styledPopupClose() {
 $('styled_popup').style.display="none";
}
function styledPopupOpen() {
 $('styled_popup').style.display="block";
}

