        var xmlhttp;
        var PopupId='';
        var InputId='';
        xmlhttp=null;
        if (window.XMLHttpRequest)
          {// code for all new browsers
            xmlhttp=new XMLHttpRequest();
          }
        else if (window.ActiveXObject)
          {// code for IE5 and IE6
             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
		    function managestatechange() {
		        if(xmlhttp.readyState == 4)
		        {
		            processReq(xmlhttp.responseText);
                }	
            }
            
          function sendAutocompleterRequest(start)
          {
            xmlhttp.abort();
            xmlhttp.onreadystatechange = managestatechange;
            xmlhttp.open("GET","/umbraco/DoZipcodeLookup.aspx?start="+start,true);
            xmlhttp.send(null);
          }
          
          function getAbsolutePos(el) {
	        var SL = 0, ST = 0;
	        var is_div = /^div$/i.test(el.tagName);
	        if (is_div && el.scrollLeft)
		        SL = el.scrollLeft;
	        if (is_div && el.scrollTop)
		        ST = el.scrollTop;
	        //	alert(ST);
	        var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
            if (el.offsetParent && el.offsetParent.id!='container') {
		        var tmp = this.getAbsolutePos(el.offsetParent);
		        r.x += tmp.x;
		        r.y += tmp.y;
	        }
	        return r;
        };

          
          function processReq(response)
          {
            var popup = document.getElementById(PopupId);
            if(response && response!='')
            {
                var pos = getAbsolutePos(document.getElementById(InputId));
                popup.options.length=0;
                var codes = response.split(';');
                var i=0;
                for(str in codes)
                {
                    if(codes[str]!='')
                    {
                        popup.options[i]=new Option(codes[str],'');
                    }
                    i++
                }
                popup.style.left=pos.x+'px';
                popup.style.top=(+pos.y+ (+23))+'px';
                popup.style.display='inline';
            }
            else
            {
             popup.style.display='none';
            }
          }
          
          function keyUp(e, popupId, inputId)
          {
            PopupId = popupId;
            InputId = inputId;

            var keynum;
            if(window.event) // IE
              {
              keynum = e.keyCode;
              }
            else if(e.which) // Netscape/Firefox/Opera
              {
              keynum = e.which;
              }
              if(keynum==40)
              {
                var popup = document.getElementById(PopupId);
                var input = document.getElementById(InputId);
                if(popup.style.display=='inline')
                {
                    popup.focus();
                    popup.selectedIndex=0;
                    input.value = popup.options[0].text;
                }
              }
              else if(keynum==27)
              {
                var popup = document.getElementById(PopupId);
                popup.style.display='none';
              }
              else
              {
                  var val = document.getElementById(InputId).value;
                  if(val.length>0 && keynum!=13)
                  {
                    sendAutocompleterRequest(val);
                    //fillPopUp(val);
                  }
              }
          }

          
          function popupChange(popupId, inputId)
          {
            var popup = document.getElementById(popupId);
            var input = document.getElementById(inputId);
            input.value=popup.options[popup.selectedIndex].innerHTML;
          }
          
          function documentClick()
          {
            try
            {
                var popup = document.getElementById(PopupId);
                if(popup.focused)
                {}
                else
                {
                    popup.style.display='none';
                }
            }
            catch(err){}
          }
          
          function popupUp(e, popupId, inputId)
          {
            PopupId = popupId;
            InputId = inputId;
            var popup = document.getElementById(PopupId);
            var input = document.getElementById(InputId);
            var keynum;
            if(window.event) // IE
              {
              keynum = e.keyCode;
              }
            else if(e.which) // Netscape/Firefox/Opera
              {
              keynum = e.which;
              }

            if(keynum==13)
            {
                popup.style.display='none';
                input.focus();
            }
            if(keynum == 27)
            {
                popup.style.display='none';
                input.focus();
            }
            if(keynum==8)
            {
                
                popup.style.display='none';
                input.focus();
                input.value = input.value.substring(0,input.value.length-1);
                sendAutocompleterRequest(input.value);
            }
         }
         
         function documentKeyUp(ev)
         {
            try
            {
                var popup = document.getElementById(PopupId);
                var keynum;
                if(window.event) // IE
                {
                    keynum = ev.keyCode;
                }
                else if(ev.which) // Netscape/Firefox/Opera
                {
                    keynum = ev.which;
                }
                if(keynum==27 && popup && popup.style.display=='inline')
                {
                    popup.style.display='none';
                }

            }
            catch(err){}
         }
         
         document.onkeyup = documentKeyUp;
         document.onclick = documentClick;
                   
//          function fillPopUp(startValue)
//          {
//            var dealers = filterDealers(startValue);
//            var zipCodes = filterPostCodes(startValue);
//            
//            var list = dealers.concat(zipCodes);
//           
//            var popup = document.getElementById(PopupId);
//            popup.options.length=0;
//            if(list && list.length>0)
//            {
//                var pos = getAbsolutePos(document.getElementById(InputId));
////                alert(pos.x + ' ' + pos.y);
//                popup.options.length=0;
//                
//                var i=0;
//                for(str in list)
//                {
//                    if(list[str]!='')
//                    {
//                        popup.options[i]=new Option(list[str],'');
//                    }
//                    i++
//                }
//                popup.style.left=pos.x+'px';
//                popup.style.top=(+pos.y+ (+23))+'px';
//                popup.style.display='inline';
//                popup.selectedIndex=0;
//            }
//          }
//          
//          function filterDealers(startValue)
//          {
//            var result = new Array();
//            var ddlDealers = document.getElementById('ma_company_id');
//            if(ddlDealers.options && ddlDealers.options.length>0)
//            {
//                var i = 0;
//                for(var key in ddlDealers.options)
//                {
//                    if(ddlDealers.options[key] && ddlDealers.options[key].attributes && typeof(ddlDealers.options[key].attributes['dealer_name'])!='undefined' && ddlDealers.options[key].attributes['dealer_name'].value.indexOf(startValue)==0)
//                    {
//                        result[i] = ddlDealers.options[key].attributes['dealer_name'].value;
//                        i++;
//                    }
//                }
//            }
//            return result;
//          }
//          
//          function filterPostCodes(startValue)
//          {
//            var result = new Array();
//            var ddlDealers = document.getElementById('ma_company_id');
//            if(ddlDealers.options && ddlDealers.options.length>0)
//            {
//                var i = 0;
//                for(var key in ddlDealers.options)
//                {
//                    if(ddlDealers.options[key] && ddlDealers.options[key].attributes && typeof(ddlDealers.options[key].attributes['zip'])!='undefined' && ddlDealers.options[key].attributes['zip'].value.indexOf(startValue)==0)
//                    {
//                        result[i] = ddlDealers.options[key].attributes['zip'].value;
//                        i++;
//                    }
//                }
//            }
//            return result;
//          }
