﻿var iframeShim = document.createElement("iframe");

var divCompletion;
var txtBox;
var ieVer = getIEVersionNumber();
var iIndex = 0;
var iDirection = 'down';

iframeShim.style.position = 'absolute';
iframeShim.style.zIndex = 998;
iframeShim.style.display = "none";


function getCompletion(txtBoxId,serviceName,completionDiv,e)
 {
      var KeyID = (window.event) ? event.keyCode : e.keyCode;
      
      var iItem = document.getElementById('lnk_' + iIndex);
      
      
      switch(KeyID)
       {
          case 40:  //down
            if(iItem != null)
            {
                if(iDirection == 'up')
                {
                 iIndex ++;
                 iItem = document.getElementById('lnk_' + iIndex);
                }
                
                iDirection = 'down';
                if(iIndex>0) 
                     document.getElementById('lnk_' + (iIndex-1)).style.backgroundColor ='#ffffff';
                     
                iItem.style.backgroundColor ='#ffff99';
                iIndex ++;
                
            }
            break;  
                
          case 38: //up
           if(iItem != null)
            {
                if(iDirection == 'down')
                {
                 iIndex --;
                 iItem = document.getElementById('lnk_' + iIndex);
                }
                
                iDirection = 'up';
                
                iItem.style.backgroundColor ='#ffffff';
                iIndex --;
            
                if(iIndex<0)
                    iIndex = 0;
                
                document.getElementById('lnk_' + iIndex).style.backgroundColor ='#ffff99';
            }
            break; 
           
           case 13: //enter
            selectVal(iIndex-1);
            break;
            
           default:
             divCompletion = document.getElementById(completionDiv);
      
              if(txtBox == null)
              {
                document.body.appendChild(iframeShim);
              }
              
              txtBox = document.getElementById(txtBoxId); 
              var Prefix = txtBox.value;
              
              if(Prefix != '')
              {
                 iIndex = 0;
                 switch(serviceName)
                 {
                    case 'city':
                        var postData = 's=GetCitiesList&p=' + Prefix + '&c=5';
                    
                        callService(postData,'CallbackComplition(xhr.responseText)');
                        break;
                    case 'place':
                         var postData = 's=GetPlacesList&p=' + Prefix + '&c=5';
                    
                        callService(postData,'CallbackComplition(xhr.responseText)');
                        break;
                 }
              }
              else
              {
                 iframeShim.style.display = 'none';
                 divCompletion.style.display = 'none';
              }
            
            break;
       }
     
}

function CallbackComplition(PlacesList)
{         
    var pArray = String(PlacesList).split(',');
    var PlacesLinks = '';
    
    var PrefixLen = txtBox.value.length;

    for(var i =0;i<pArray.length;i++)
    {
        var p = '<B>' + txtBox.value + '</B>' + pArray[i].substring(PrefixLen);
        PlacesLinks += '<a id="lnk_' + i + '" href="#" onclick="return(selectVal(' + i + '));" >' + p + '</a>';
    }
    
    divCompletion.innerHTML = PlacesLinks;
    
   /* if(GetBrowserType() != 'IE')
        var x = getPositionLeft(txtBox);
    else
    {
       if(ieVer < 7) 
        var x = getPositionLeft(txtBox);
       else
       var x = getPositionLeft(txtBox);
    }
        
    var y = getPositionTop(txtBox)+ 22;
    */
    
    if(PlacesList == "")
    {
        iframeShim.style.display = 'none';
        divCompletion.style.display = 'none';
        return;
    }
    //divCompletion.style.top = y + 'px';
    //divCompletion.style.left = x + 'px';
    //divCompletion.style.width = txtBox.offsetWidth + 'px';
    divCompletion.style.display = 'block';
    
   // iframeShim.style.width = divCompletion.offsetWidth + 'px';
   /// iframeShim.style.height = divCompletion.offsetHeight + 'px';
  //  iframeShim.style.top = divCompletion.style.top;
 //   iframeShim.style.left = divCompletion.style.left;
 //   iframeShim.style.display = "block";
}

function selectVal(num)
{
    var p = document.getElementById('lnk_' + num).innerHTML;
    p = p.replace('<B>','');
    p = p.replace('</B>','');
    p = p.replace('<b>','');
    p = p.replace('</b>','');
    
    txtBox.value = p;
    txtBox.select();
    
    iframeShim.style.display = 'none';
    divCompletion.style.display = 'none';
    
    return false;
}
       
if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();