﻿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; z-index:100;"><font id="fontInDiv"></font></div>')

document.onkeydown = function ()
{
//alert( 'here' );
//    CaptureKey(event);
}

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 0;// edgeoffset
}

/************   END   ******************************
*     functions for alignment of the smart box
***************************************************/


/************  START  ******************************
*     Smart box functions
***************************************************/
	var objCall;
	var xmlDoc = null;
	var elementsInTable = 0;
	var disableBoxFrom = "";
    var LockSearch = false;
    moz=document.getElementById&&!document.all;
    function displaySearchResult(REQOBJECT, str)
    {
        var dropmenuobj=document.getElementById("fixedtipdiv");
        if(moz)
            dropmenuobj.x=getposOffset(REQOBJECT, "left") - 1;
        else
            dropmenuobj.x=getposOffset(REQOBJECT, "left");
        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';
        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('fixedtipdiv').style.visibility = 'visible'; 
        document.getElementById('fontInDiv').innerHTML = '';
		var AllElements = '<table id="ResultTable" cellpadding="1" cellspacing="1" bgcolor="#666666" style="border-left-width:0px; border-right-width:0px;font-family:Arial; font-size:12px; color:#444;" width="130">'
		var MenuElement;
		var City, StateID, PostalCode;
		var root = xmlDoc.getElementsByTagName('NewDataSet');
		var items = xmlDoc.getElementsByTagName('Table');
		var match = false;

        var locations;
        if(root[0] == null)
        {
        	showDdl();
	        locked = false;
	        ItemPointer = -1;
	        return;
        } 
        locations=root[0].getElementsByTagName("Table"); 
        
        for(i=0; i<locations.length; i++) 
		{	
            City = xmlDoc.getElementsByTagName('city')(i).text;
            PostalCode = xmlDoc.getElementsByTagName('postalcode')(i).text;
            StateID = xmlDoc.getElementsByTagName('stateid')(i).text;
            if(City == "<b>" + REQOBJECT.value + "</b>")
                match = true;
    	    //Type = xmlDoc.getElementsByTagName('Type')(i).text;
            MenuElement = '<tr bgcolor="#eeeeee"><td>';
			MenuElement +='<table width="100%" TableItems="0" StateId="'+StateID+'" PostalCode="'+PostalCode+'" id="Item_'+i+'" value="'+City+'" onmouseover="HighlightSelection('+i+')" onclick="ResultTable_onItemClick(this)" cellpadding="0px" cellspacing="0px">'; 
            MenuElement +='<tr><td style="font-size:11px">'+City+'</td></tr>';
            MenuElement +='</table></td></tr>'
		    AllElements = AllElements + MenuElement;
		}
		AllElements = AllElements + '</table>';
		//document.getElementById('span3').innerHTML = AllElements.length;
		elementsInTable = items.length;
        if(items.length > 10)
        {
         
		    document.getElementById('fontInDiv').innerHTML =  '<div style="z-index:1" id="divInside" style=" height: 120px; width: 147px; overflow: auto;">' + AllElements + '</div>';
		}
		else
		{
		    
		    document.getElementById('fontInDiv').innerHTML =  AllElements;
		}
		hideDdl(items.length);
		ItemPointer = -1;
//		document.getElementById('SearchType').value = '';
		if(items.length == 1)
		    HighlightSelection(0);
		if(match == true)
		    HighlightSelection(0);
		if(items.length == 0)
		    showDdl();

		    

        		    
    }
    function ProcessForFireFox(str)
    {
        //document.getElementById('fixedtipdiv').style.visibility = 'visible'; 
        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='130px'>";
		var MenuElement;
		var City, StateID, PostalCode;
		var match = false;

        for(i=0; i<array.length -1; i++) 
		{	
	        strItem = array[i].replace('<city>','').replace('</city>','#;').replace('<Table>','').replace('<id>','').replace('</id>','#;').replace('<state>','').replace('</state>','#;').replace('<postalcode>','').replace('</postalcode>','#;').replace('<stateid>','').replace('</stateid>','#;');
	        
            var item = strItem.split('#;');
            City = item[1].replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>').replace('&lt;','<').replace('&gt;','>');
            PostalCode = item[2];
    	    StateID = item[3];
            if(City.replace(/^\s+|\s+$/, '') == "<b>" + REQOBJECT.value + "</b>")
                match = true;
            MenuElement = "<tr bgcolor='#eeeeee'><td>";
			MenuElement +="<table width='100%' TableItems='0' StateId='"+StateID+"' PostalCode='"+PostalCode+"' id='Item_"+i+"' value='"+City+"' onmouseover='HighlightSelection("+i+")' onclick='ResultTable_onItemClick(this)' cellpadding='0px' cellspacing='0px'>"; 
            MenuElement +="<tr><td style='font-size:11px'>"+City+"</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: 120px; width: 147px'>" + AllElements + "</div>";
		else
		    document.getElementById('fontInDiv').innerHTML =  AllElements;
		ItemPointer = -1;
		if(array.length == 2)
		    HighlightSelection(0);
		if(match == true)
		    HighlightSelection(0);		    
    }
	

    var REQOBJECT = 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';
        showDdl();
    }
    function CreateSmartBox(obj, event)
    {
        if(obj.id == objParent + "LocaleUSFrom_txtCity")
            return;
        REQOBJECT = obj;
//        if(moz)
//            CaptureKey(event)
        keyPressCounter++;
       // document.getElementById('span1').innerHTML = keyPressCounter;
        if(obj.value.length == 0)
            hideSmartBox();
        else
        {
            //sendReqCounter = keyPressCounter;
            setTimeout('SendQuery('+keyPressCounter+')',400);
        }
    }

    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 WarmUp(url)
    {       // sends a call to the query page to initilze the page without a return.
          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.open('GET', url, 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)
    {
   // alert(objParent);
        var ddlState = null;
        if(document.getElementById('ddlState') != null)
            ddlState = document.getElementById('ddlState');
        if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'aleUSFrom_txtCity')
            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleUSFrom_ddlState');
        if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'ocaleUSTo_txtCity') 
            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleUSTo_ddlState');            
        if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'leStorage_txtCity') 
            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleStorage_ddlState');
        if (document.getElementById('ctl00_ContentPlaceHolder1_ctl00_ddlToState') != null)
            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_ddlToState');
            
            
            
//        if(document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleUSFrom_ddlState') != null)
//            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleUSFrom_ddlState');
//        if(document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleUSTo_ddlState') != null)
//            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleUSTo_ddlState');            
//        if(document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleStorage_ddlState') != null) 
//            ddlState = document.getElementById('ctl00_ContentPlaceHolder1_ctl00_LocaleStorage_ddlState');
        if((ReqIndex == keyPressCounter) && (!LockSearch) && (REQOBJECT.value.length > 1))
        {
            counter++;
            //document.getElementById('span2').innerHTML = ReqIndex;
            if(ddlState == null)
                GetSearchResults(appPath+'SmartBox/QueryPage.aspx', '?Search=' + REQOBJECT.value + '&State=0'); //+ '&time=' + Date()
            else
                GetSearchResults(appPath+'SmartBox/QueryPage.aspx', '?Search=' + REQOBJECT.value + '&State=' + ddlState.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=4; i<newStrval.length; i++)
	            REQOBJECT.value += newStrval[i];
	        PostalCode = Item.getAttribute("PostalCode");
	        StateID = Item.getAttribute("StateID");
	        City = REQOBJECT.value;
	       // alert(REQOBJECT.value);
	    }
	    else
	    {
	        REQOBJECT.value = Item.value.replace("<b>","").replace("</b>","").replace("<b>","").replace("</b>","").replace("<b>","").replace("</b>","");
	        PostalCode = Item.getAttribute("PostalCode");
	        StateID = Item.getAttribute("StateID");
	        City = Item.innerText;
	    }
	    document.getElementById("fixedtipdiv").style.visibility = 'hidden';
	    showDdl();
	    locked = false;
	    ItemPointer = -1;
	    var array = City.split(",");
	    City = array[0];
	    SendZipToParent(PostalCode, StateID, City);
	        event.returnValue = false;
	    event.cancel = true;
	    //document.theQuickForm.submit(); 
	}

	function HighlightSelection(ItemID) 
	{	    
		var x = document.getElementsByTagName('Table');
//	    alert( 'hi' );
		for(var i=0;i<x.length;i++)
		{
			if(x[i].getAttribute('TableItems'))
            {
				if(x[i].id == 'Item_' + ItemID)
				{
//			    alert( i );
//				alert( 'here' );
					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';
	        showDdl(); 
//	        if (ItemPointer > 0)
//	            ResultTable_onItemClick(document.getElementById('Item_'+Math.abs(ItemPointer)));
	        elementsInTable = 0;
	        ItemPointer = 0;
	    }
	    else
	    {
	        if((REQOBJECT != null) && (elementsInTable > 0))
	            try
	            {
	                REQOBJECT.focus();
	            }
	            catch(err)
	            {
	            }
	    }
	}
	var MouseOverDiv = false;
	function markMouseOverDiv()
	{
	    MouseOverDiv = true;
	}
	function markMouseOutDiv()
	{
	    MouseOverDiv = false;
	}
	
	function CaptureKey(event)
	{
	   // document.getElementById('span3').innerHTML = "";
	    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)
	        {
	            try
	            {
	                REQOBJECT.focus();
	                event.returnValue = false;
	                event.cancel = true;
	                LockSearch = true;
	             }
	             catch(err){}
	        }
	        elementsInTable = 0;
	    }
	    else if(event.keyCode == 27)
	    {
	        document.getElementById('fixedtipdiv').style.visibility = 'hidden';
	        showDdl();
	        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
	    {
	        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
***************************************************/

var x = document.getElementById("fixedtipdiv");


function hideDdl(ItemsCounter)
{
    if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'ionalFrom_txtCity')
    {
        ddlArray = ddlArray_From;
        ddlPos = ddlPos_From;
    }     
    if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'ationalTo_txtCity')
    {
        ddlArray = ddlArray_To;
        ddlPos = ddlPos_To;
    }     
    if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'aleUSFrom_txtCity')
    {
        ddlArray = ddlArray_From;
        ddlPos = ddlPos_From;
    } 
    if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'ocaleUSTo_txtCity') 
    {
        ddlArray = ddlArray_To;
        ddlPos = ddlPos_To;    
    }
    if(REQOBJECT.id.substring(REQOBJECT.id.length-17,REQOBJECT.id.length) == 'leStorage_txtCity')
    {
        ddlArray = ddlArray_Storage;
        ddlPos = ddlPos_Storage;    
    }
    for(i=0; i<ddlArray.length; i++)
    {
        if(document.getElementById(ddlArray[i]) != null)
        {
            if(ItemsCounter > ddlPos[i])
                document.getElementById(ddlArray[i]).style.display = "none";
            else
                document.getElementById(ddlArray[i]).style.display = "block";
        }
    }

//    if(document.getElementById(objParent +  'ddlMovingSize') != null)
//        document.getElementById(objParent +  'ddlMovingSize').style.display = "none";
//    if(document.getElementById(objParent +  'LocaleUSTo_ddlState') != null)
//        document.getElementById(objParent +  'LocaleUSTo_ddlState').style.display = "none";
//    
//    if(document.getElementById(objParent +  'MovingInfo_ddlMovingSize') != null)
//    {
//        if(ItemsCounter > 4)
//            document.getElementById(objParent +  'MovingInfo_ddlMovingSize').style.display = "none";
//        else
//            document.getElementById(objParent +  'MovingInfo_ddlMovingSize').style.display = "block";
//    }  
}
function showDdl()
{

    try
    {
        for(i=0; i<ddlArray.length; i++)
        {
            if(document.getElementById(ddlArray[i]) != null)
            {
                document.getElementById(ddlArray[i]).style.display = "block";
            }
        }
    }
    catch(error){}
//    try
//    {
//        if(document.getElementById(objParent +  'ddlMovingSize') != null)
//            document.getElementById(objParent +  'ddlMovingSize').style.display = "block";
//        if(document.getElementById(objParent +  'LocaleUSTo_ddlState') != null)
//            document.getElementById(objParent +  'LocaleUSTo_ddlState').style.display = "block";
//        if(document.getElementById(objParent +  'MovingInfo_ddlMovingSize') != null)
//            document.getElementById(objParent +  'MovingInfo_ddlMovingSize').style.display = "block";
//    }
//    catch(error){}
}


