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

function logDebug(debugString){
   var logDiv = $("debugLog");
   logDiv.innerHTML = logDiv.innerHTML + "<br/>" + debugString;
}

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 gotoSimpleSearch() {
    var tmp = document.getElementById("lookupVal").value;
    document.location = "http://search.sybase.com/search/simple.do?keyword=" + tmp;
}

function processError(req){
    var tmp = document.getElementById("lookupVal").value;
    $("resultCounts").style.display = "none";

    $("output").innerHTML = "";
    $("keywordValue").innerHTML = tmp;
    $("noResults").style.display = "block";

	_hbSet("c2",tmp);
	_hbSend();
}

function processXMLResponse(req)
{   
	var xmlDoc = req.responseXML;
	var results;
    try {
		results=xmlDoc.getElementsByTagName("result");
		if (results.length == 0) {
            processError(req);
            return;
        }
	} 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;
	$("noResults").style.display = "none";
	$("output").innerHTML = html.toString();
	$("count").innerHTML = resultCount;
	$("count").innerHTML = $("count").innerHTML;
	
	_hbSet("search.keywords",tmp);
	_hbSet("search.results",resultCount);
	_hbSend();
} 

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

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

function styledPopupClose() {
 $('styled_popup').style.display="none";
 $('styled_shim').style.display="none";
}
function styledPopupOpen() {
	$('styled_popup').style.top = $('colorBar').offsetTop + $('colorBar').offsetHeight + 'px';
	var colorBarLeft = getLeftPosition($('colorBar'));
	$('styled_popup').style.display="block";
	$('styled_popup').style.visibility ="hidden";
	var leftPosition = $('colorBar').offsetWidth - $('styled_popup').offsetWidth;
	$('styled_popup').style.left = colorBarLeft + leftPosition + 'px';
	$('styled_popup').style.visibility ="visible";
	if($('styled_shim') != null) {
		$('styled_shim').style.width = $('styled_popup').offsetWidth+'px';
		$('styled_shim').style.height = $('styled_popup').offsetHeight+'px';
		$('styled_shim').style.top = $('styled_popup').offsetTop+'px';
		$('styled_shim').style.left = $('styled_popup').offsetLeft+'px';
		$('styled_shim').style.display = "block";
	}
}

