//201207mckenzier 
//Sexy AJAX

var minChars = 4;
var maxList = 23;
var resultBox = "qs";

function cleanSearch(el)
{
el.value = el.value.replace(/\$/g,"");
el.value = el.value.replace(/\%/g,"");
el.value = el.value.replace(/\'/g,"");
el.value = el.value.replace(/\"/g,"");
el.value = el.value.replace(/\£/g,"");
el.value = el.value.replace(/\$/g,"");
}

function ajaxStart(el)
{ 
    //cleanSearch(el);
    //Get the element, either through the param or through window.event
    el = (el) ? el : ((window.event) ? window.event : "");
    var searchBox=el.srcElement;
    var searchterm=el.srcElement.value;
    if (searchterm.length >= minChars ) {

    //Create the AJAX request
    var xhr; 
    try {  xhr = new ActiveXObject('Msxml2.XMLHTTP');   }
    catch (e) 
    {
        try {   xhr = new ActiveXObject('Microsoft.XMLHTTP');    }
        catch (e2) 
        {
          try {  xhr = new XMLHttpRequest();     }
          catch (e3) {  xhr = false;   }
        }
     }
  
    xhr.onreadystatechange  = function()
    { 
         if(xhr.readyState  == 4)
         {
		var pos = XYByName(searchBox);
		document.getElementById(resultBox).style.posLeft=pos[0];
		document.getElementById(resultBox).style.posTop=pos[1] + 17; //Below the text box
              	if(xhr.status  == 200) {
                	var doc = xhr.responseXML;
			var resulthtml = "";
			var element = doc.getElementsByTagName('val');
			if (element.length==0) {
				document.getElementById(resultBox).innerHTML="No results!";
				document.getElementById(resultBox).style.display="block";
				document.getElementById(resultBox).style.height="auto";
			} else {  
				for (var x=0; x < element.length; x++) {
					resulthtml+="<a href='#' onClick='setSearch(this);' name='" + element[x].firstChild.data + "' title='" + element[x].firstChild.data + "'><b>"
					+ String(element[x].firstChild.data).substring(0,searchterm.length)
					+ "</b>"
					+ String(element[x].firstChild.data).substring(searchterm.length,element[x].firstChild.data.length)
					+ "</a><br/>";
				}
				if (element.length<23) {
					if (element.length==1) { if (element[0].firstChild.data.length > 23) {document.getElementById(resultBox).style.height="40px"; }}
					else {
						var h = (40 + (element.length-1)*13) + "px";
						document.getElementById(resultBox).style.height=h;
					}
				} else {
					if (element.length>=23) { document.getElementById(resultBox).style.height="300px"; } else {document.getElementById(resultBox).style.height="auto";}
					if (element.length==100) { resulthtml+="(...)"; }
				}
				document.getElementById(resultBox).innerHTML=resulthtml;
				document.getElementById(resultBox).style.display="block";
			}
		} else {
			document.getElementById(resultBox).innerHTML="Error: " + xhr.status;document.getElementById(resultBox).style.display="block";
		}
         }

    }; 
   xhr.open("GET", "/support/search.asp?table=tblorg&column=orgconame&id=orgid&q=" + urlencode(searchterm),  true); 
   xhr.send(null); } else {document.getElementById(resultBox).style.display="none";document.getElementById(resultBox).innerHTML="";}
} 

function setSearch(el) { document.getElementsByName("QS_3_1400")[0].value=el.name; document.getElementsByName("QS_3_1400_GO")[0].click(); document.getElementById(resultBox).style.display="none";document.getElementById(resultBox).innerHTML="";}

function urlencode(str) {
//Ruthlessly ripped from http://www.phpbuilder.com/board/showthread.php?t=10318476
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function addHandler(el) { el.onkeyup=ajaxStart;}

function XYByName(obj){//240907 get X,Y co-ord of object
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}