﻿var obj;		
var tipwidth='192px' 
var tipbgcolor='lightyellow' 
var disappeardelay=250  
var vertical_offset="0px" 
var horizontal_offset="0px" 
var ie4=document.all
var ns6=document.getElementById&&!document.all

/************  START  ******************************
*     functions for alignment of the smart box
***************************************************/
if (ie4||ns6)
    document.write('<div onmouseover="markMouseOverDiv()" onmouseout="markMouseOutDiv()" id="fixedtipdiv" style="position:absolute;visibility:hidden;border-bottom: 1px solid #333333;"><font id="fontInDiv"></font></div>')

function getposOffset(what, offsettype)
{
    var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
    var parentEl=what.offsetParent;
    while (parentEl!=null)
    {
        totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
        parentEl=parentEl.offsetParent;
    }
    return totaloffset;
}

function iecompattest()
{
    return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function clearbrowseredge(obj, whichedge)
{
    var dropmenuobj=document.getElementById("fixedtipdiv");
    var edgeoffset=(whichedge=="rightedge")? parseInt(horizontal_offset)*-1 : parseInt(vertical_offset)*-1
    if (whichedge=="rightedge")
    {
        var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
        dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
        if (windowedge-dropmenuobj.x < dropmenuobj.contentmeasure)
            edgeoffset=dropmenuobj.contentmeasure-obj.offsetWidth
    }
    else
    {
        var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
        dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
        if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure)
        edgeoffset=dropmenuobj.contentmeasure+obj.offsetHeight
    }
    return edgeoffset
}

/************   END   ******************************
*     functions for alignment of the smart box
***************************************************/


/************  START  ******************************
*     Web Services Functions
***************************************************/
	var objCall;
	var xmlDoc = null;
//	var xmlDoc = new ActiveXObject("MSXML2.DomDocument");
	var elementsInTable = 0;
	var disableBoxFrom = "";
    var LockSearch = false;
    moz=document.getElementById&&!document.all;
    function displaySearchResult(REQOBJECT, str)
    {
        //alert(str);
        var dropmenuobj=document.getElementById("fixedtipdiv");
        if(moz)
            dropmenuobj.x=getposOffset(REQOBJECT, "left") - 1;
        else
            dropmenuobj.x=getposOffset(REQOBJECT, "left") + 1;
        dropmenuobj.y=getposOffset(REQOBJECT, "top");
            
        dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(REQOBJECT, "rightedge")+"px";
        dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(REQOBJECT, "bottomedge")+ REQOBJECT.offsetHeight+"px";
        document.getElementById('fixedtipdiv').style.visibility = 'visible';
        //document.getElementById('fontInDiv').innerHTML = BuildTable(str); 
        BuildTable(str);
    }
//*****************************************************************************************************
//*****************************************************************************************************

    function BuildTable(str)
    {  		
		if (window.ActiveXObject)
        {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async=false;
            xmlDoc.loadXML(str);
            ProcessXML();
        }
    // code for Mozilla, etc.
        else if (document.implementation && document.implementation.createDocument)
        {
            ProcessForFireFox(str);
        }	
        MouseOverDiv = false;
	}
	function ProcessXML()
    {
        document.getElementById('fontInDiv').innerHTML = '';
		var AllElements = '<table id="ResultTable" cellpadding="1px" cellspacing="1px" bgcolor="#666666" style="border-left-width:0px; border-right-width:0px;font-family:Arial; font-size:12px; color:#444444" width="192px">'
		var MenuElement;
		var Search, Type;
		var root = xmlDoc.getElementsByTagName('NewDataSet');
		var items = xmlDoc.getElementsByTagName('Table');
		var match = false;

        var locations=root[0].getElementsByTagName("Table"); 
        for(i=0; i<locations.length; i++) 
		{	
            Search = xmlDoc.getElementsByTagName('Search')(i).text;
            if(Search == "<b>" + REQOBJECT.value + "</b>")
                match = true;
    	    Type = xmlDoc.getElementsByTagName('Type')(i).text;
            MenuElement = '<tr bgcolor="#eeeeee"><td>';
			MenuElement +='<table width="100%" TableItems="0" id="Item_'+i+'" value="'+Search+'" ItemType="'+Type+'" onmouseover="HighlightSelection('+i+')" onclick="ResultTable_onItemClick(this)" cellpadding="0px" cellspacing="0px">'; 
            MenuElement +='<tr><td style="font-size:11px">'+Search+'</td></tr>';
            MenuElement +='</table></td></tr>'
		    AllElements = AllElements + MenuElement;
		}
		AllElements = AllElements + '</table>';
		elementsInTable = items.length;
        if(items.length > 10)
		    document.getElementById('fontInDiv').innerHTML =  '<div id="divInside" style="OVERFLOW:auto  ; HEIGHT: 171px; width: 209">' + AllElements + '</div>';
		else
		    document.getElementById('fontInDiv').innerHTML =  AllElements;
		ItemPointer = -1;
		document.getElementById('SearchType').value = '';
		if(items.length == 1)
		    HighlightSelection(0);
		if(match == true)
		    HighlightSelection(0);
    }
    function ProcessForFireFox(str)
    {
        str = str.replace('<NewDataSet>','').replace('</NewDataSet>','');
        var array = str.split("</Table>");
        document.getElementById('fontInDiv').innerHTML = '';
		var AllElements = "<table id='ResultTable' cellpadding='1px' cellspacing='1px' bgcolor='#666666' style='border-left-width:0px; border-right-width:0px;font-family:Arial; font-size:12px; color:#444444' width='192px'>";
		var MenuElement;
		var Search, Type;
		var match = false;

        for(i=0; i<array.length -1; i++) 
		{	
	        strItem = array[i].replace('<Search>','').replace('</Search>','#;').replace('<Type>','').replace('</Type>','#;').replace('<Table>','');
            var item = strItem.split('#;');
            Search = item[0].replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>');
            if(Search.replace(/^\s+|\s+$/, '') == "<b>" + REQOBJECT.value + "</b>")
                match = true;
    	    Type = item[1];
            MenuElement = "<tr bgcolor='#eeeeee'><td>";
			MenuElement +="<table width='100%' TableItems='0' id='Item_"+i+"' value='"+Search+"' ItemType='"+Type+"' onmouseover='HighlightSelection("+i+")' onclick='ResultTable_onItemClick(this)' cellpadding='0px' cellspacing='0px'>"; 
            MenuElement +="<tr><td style='font-size:11px'>"+Search+"</td></tr>";
            MenuElement +="</table></td></tr>";
		    AllElements = AllElements + MenuElement;
		}
		AllElements = AllElements + "</table>";
		elementsInTable = array.length;
        if(array.length > 10)
            document.getElementById('fontInDiv').innerHTML =  "<div id='divInside' style='OVERFLOW:auto  ; HEIGHT: 171px; width: 211'>" + AllElements + "</div>";
		else
		    document.getElementById('fontInDiv').innerHTML =  AllElements;
		ItemPointer = -1;
		document.getElementById('SearchType').value = '';
		if(array.length == 2)
		    HighlightSelection(0);
		if(match == true)
		    HighlightSelection(0);		    
    }
	
/************  END  ******************************
*     Web Services Functions
***************************************************/	

/************  START  ******************************
*     Smart box functions
***************************************************/
var REQOBJECT = null;
//    var WS_FUNCTION = null;
var locked = false;
var lockedByObj = null;
var previousValue = '';
var counter = 0;
var keyPressCounter = 0;
var sendReqCounter = 0;
var LastSearch = '';

var timer = 0;
function hideSmartBox()
{
    document.getElementById('fixedtipdiv').style.visibility = 'hidden';
}
function CreateSmartBox(obj, event)
{
    //tipwidth = '250px';
    REQOBJECT = obj;
    if(moz)
        CaptureKey(event)
    keyPressCounter++;
    if(obj.value.length == 0)
        hideSmartBox();
    else
    {
        sendReqCounter = keyPressCounter;
        setTimeout('SendQuery('+keyPressCounter+')',400);
    }
}
function CreateSmartBox1(obj, event)
{
    if(!moz)
        CreateSmartBox(obj, event);
}
var http_request = false;

function GetSearchResults(url, parameters) 
{
  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/xml');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }
  http_request.onreadystatechange = onreturnFromGetSearchResults;
  http_request.open('GET', url + parameters, true);
  http_request.send(null);
}

function onreturnFromGetSearchResults() 
{
    if (http_request.readyState == 4) 
    {
        if (http_request.status == 200) 
        {
            var htmlPos, str;            
            htmlPos = http_request.responseText.indexOf('<html>');
            str = http_request.responseText.substr(0,htmlPos);
            displaySearchResult(REQOBJECT, str);
        } 
    }
}
function SendQuery(ReqIndex)
{
    if((ReqIndex == keyPressCounter) && (!LockSearch) && (document.getElementById('QckSrchTxt').value.length > 1))
    {
        counter++;
        GetSearchResults('/SmartBox/QueryPage.aspx', '?Search=' + document.getElementById('QckSrchTxt').value ); //+ '&time=' + Date()
    }
}
var ItemPointer = -1;

	function ResultTable_onItemClick(Item)
	{	
	    REQOBJECT.value = "";
	    REQOBJECT.focus();
	    if(moz)
	    {
	        strval = Item.getAttribute("value").replace("<b>","").replace("</b>","").replace("<b>","").replace("</b>","").replace("<b>","").replace("</b>","");
	        var newStrval = new String(strval);
	        for(i=8; i<newStrval.length; i++)
	            REQOBJECT.value += newStrval[i];
	    }
	    else
	        REQOBJECT.value = Item.value.replace("<b>","").replace("</b>","").replace("<b>","").replace("</b>","").replace("<b>","").replace("</b>","");
	    document.getElementById("fixedtipdiv").style.visibility = 'hidden';
	    document.getElementById("SearchType").value = Item.getAttribute("ItemType");
	    locked = false;
	    ItemPointer = -1;
	    document.theQuickForm.submit(); 
	}

	function HighlightSelection(ItemID) 
	{	    
		var x = document.getElementsByTagName('Table');
		for(var i=0;i<x.length;i++)
		{
			if(x[i].getAttribute('TableItems'))
			{
				if(x[i].id == 'Item_' + ItemID)
				{
					x[i].style.background  = '#444444';
					x[i].style.color = '#eeeeee';
					x[i].style.cursor = 'pointer';					
					ItemPointer = ItemID;
				}
				else
				{
					x[i].style.background  = '#eeeeee';			
					x[i].style.color = '#444444';
				}
			}
		}
	}
	function SmartBoxOnBlurEvent()
	{
	    if((elementsInTable > 0) && (MouseOverDiv == false))
	    {	        
	        document.getElementById('fixedtipdiv').style.visibility = 'hidden';  
//	        if (ItemPointer > 0)
//	            ResultTable_onItemClick(document.getElementById('Item_'+Math.abs(ItemPointer)));
	        elementsInTable = 0;
	        ItemPointer = 0;
	    }
	    else
	    {
	        if(REQOBJECT != null)
	            REQOBJECT.focus();
	    }
	}
	var MouseOverDiv = false;
	function markMouseOverDiv()
	{
	    MouseOverDiv = true;
	}
	function markMouseOutDiv()
	{
	    MouseOverDiv = false;
	}
	
	function CaptureKey(event)
	{
	    origEvent = event;
	    if (!moz)
            event = window.event;
	    if(((event.keyCode == 9) || (event.keyCode == 13)) && (elementsInTable > 0))
	    {
	        if(ItemPointer > -1)
	            ResultTable_onItemClick(document.getElementById('Item_'+Math.abs(ItemPointer)));
	        if(event.keyCode == 9)
	        {
	            REQOBJECT.focus();
	            event.returnValue = false;
	            event.cancel = true;
	        }
	        elementsInTable = 0;
	    }
	    else if(event.keyCode == 27)
	    {
	        document.getElementById('fixedtipdiv').style.visibility = 'hidden';
	        event.returnValue = false;
	        event.cancel = true;
	        elementsInTable = 0;
	        LockSearch = true;
	    }
	    else if((elementsInTable > 0) && ((event.keyCode == 39)||(event.keyCode == 37)||(event.keyCode == 16)||(event.keyCode == 17)||(event.keyCode == 18)))
	        LockSearch = true;
	    else if((elementsInTable > 0) && ((event.keyCode == 40)||(event.keyCode == 38)))
	    {
	        LockSearch = true;
	        KeyUp(event);   
	    }
//	    else if((event.keyCode == 8) && (elementsInTable > 0))
//	    {
//	        if(REQOBJECT.value.length < 3)
//	        {
//	            document.getElementById('fixedtipdiv').style.visibility = 'hidden';
//	            elementsInTable = 0;
//	        }
//	        else
	            //CreateSmartBox(REQOBJECT, origEvent);
//	            LockSearch = false;
//	    }
	    else
	        LockSearch = false;
	}
	
	function KeyUp(event)
	{   var scrollRatio;
	    var scrollPos = 0;
	    if(event.keyCode == 38)
	    {
	        if(ItemPointer == 0)    
	            return
	        HighlightSelection(Math.abs(ItemPointer) - Math.abs(1)); 
	    }
	    if(event.keyCode == 40)
	    {
	        if(ItemPointer == document.getElementById('ResultTable').rows.length-1)
	            return;
	        HighlightSelection(ItemPointer + Math.abs(1));
	    }
	    if(document.getElementById("divInside"))
	    {
	    	scrollRatio = document.getElementById('divInside').scrollHeight / document.getElementById('ResultTable').rows.length;
            scrollPos = (ItemPointer * scrollRatio) - ItemPointer * (150 / document.getElementById('ResultTable').rows.length);
	        document.getElementById('divInside').scrollTop = scrollPos;
	    }
	}
	
/************  END  ******************************
*     Smart box functions
***************************************************/

