// Software by Typepal Intl
// Worldwide address lookup, search and rapid addressing.
//
//   This software may only be used within Typepal web services deployment. Copy, reprint and any other use forbidden.
//   (c) 2003-2010 by Typepal Intl, all right reserved.
//
//  web: www.typepal.com

var hostName="http://ec2-79-125-5-0.eu-west-1.compute.amazonaws.com/TypePal15/";
var urlService=hostName + 'TypePalServer'

document.write('<link rel="stylesheet" href="' + hostName + 'App_themes/rapid.css"/>'); 
document.write('<script type="text/javascript" charset="iso-8859-1" src="' + hostName + 'js/base.js"><\/script>'); 

var townKey=["",""];
var streetKey=["",""];
var zipKey=["",""];
var admKey=["",""];
var villageKey=["",""];
var countryCover=["",""];
var townCover=["",""];
var rangedSelect=["",""];

var countrySigle=[document.createElement("input"),document.createElement("input")];


var sessionRequestCount=0;
if (typeof(sessionLimit) == "undefined")
    var sessionLimit=0;

if (typeof(initCountrySigle) == "undefined")
    var initCountrySigle='';

if (typeof(initCountryDes) == "undefined")
    var initCountryDes=initCountrySigle;

if (typeof(typepalKey) == "undefined")
    var typepalKey='demomode';

if (typeof(townResultNum) == "undefined")
    var townResultNum=30;

if (typeof(streetResultNum) == "undefined")
    var streetResultNum=40;

if (typeof(zipResultNum) == "undefined")
    var zipResultNum=30;

if (typeof(formatCountry) == "undefined")
    var formatCountry=1;

if (typeof(autoselectTown) == "undefined")
    var autoselectTown=true;

if (typeof(autoCloseListOnAutoSelectTown) == "undefined")
    var autoCloseListOnAutoSelectTown=true;

if (formatCountry>2)
    formatCountry=1;
    
if (typeof(formatAdm) == "undefined")
    var formatAdm=1;
if (formatAdm>2)
    formatAdm=1;

if (typeof(typeAdm) == "undefined")
    var typeAdm=1;
if (typeAdm>2)
    typeAdm=1;

document.write('<script type="text/javascript" src="' + hostName + 'js/JSONScriptRequest.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/suggest_town.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/suggest_street.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/suggest_country.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/suggest_zip.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/suggest_adm.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/suggest_hn.js"><\/script>'); 
document.write('<script type="text/javascript" src="' + hostName + 'js/gb/suggest_postcode_gb.js"><\/script>'); 

var oldInitRapidAddressing = null;

if  (window.onload!= null)
    oldInitRapidAddressing=window.onload;

window.onload=init;

function init()
{     
    var structElemIO={
		objCountryInput: null,
		objCountry: null,
		objAdm: null,
		objZip: null,
		objTownSrch: null,
		objTownOut: null,
		objLocality: null,
                objStreetSrch: null,
                objStreetOut: null,
                objStreetAdd: null,
                objLargeMailUsr: null,
                objPostalBox: null,
                objHN: null
            };

    // definition mandatory items
    try
    {
        structElemIO.objCountryInput=document.getElementById(elemCountry);

        if (formatCountry != 2)
            structElemIO.objCountry=document.getElementById(elemCountry);
        else
            structElemIO.objCountry=countrySigle[0];
            
        if (structElemIO.objCountryInput == null)
        {
            alert ("textBox Country not found!");
            return;
        }
    
        structElemIO.objAdm=document.getElementById(elemAdm);
        if (structElemIO.objAdm == null)
        {
            alert ("TextBox adm not found!");
            return;
        }
    
        structElemIO.objZip=document.getElementById(elemZip);
        if (structElemIO.objZip == null)
        {
            alert ("TextBox postalCode not found!");
            return;
        }
    
        structElemIO.objTownSrch=document.getElementById(elemTownSrch);
        if (structElemIO.objTownSrch == null)
        {
            alert ("TextBox search town not found!");
            return;
        }
        
        structElemIO.objTownOut=document.getElementById(elemTownOut);
        if (structElemIO.objTownOut == null)
        {
            alert ("TextBox out town not found!");
            return;
        }
        
        structElemIO.objStreetSrch=document.getElementById(elemAddressIn);
        if (structElemIO.objStreetSrch == null)
        {
            alert ("TextBox search street not found!");
            return;
        }
        structElemIO.objHN=document.getElementById(elemHN);
        if (structElemIO.objHN == null)
        {
            alert ("TextBox house number not found!");
            return;
        }
        
    }
    catch(ex)
    {
        alert (ex.message);
        return;
    }
    
    // definition optional items
    try
    {structElemIO.objLocality=document.getElementById(elemLocality);}
    catch(ex)
    {;}
    try
    {structElemIO.objStreetOut=document.getElementById(elemStreetOut);}
    catch(ex)
    {;}
    try
    {structElemIO.objStreetAdd=document.getElementById(elemStreetAdd);}
    catch(ex)
    {;}
    try
    {structElemIO.objLargeMailUsr=document.getElementById(elemLargeMailUser);}
    catch(ex)
    {;}
    try
    {structElemIO.objPostalBox=document.getElementById(elemPostalBox);}
    catch(ex)
    {;}
     
    try
    {
        if (formatCountry!=0)
        {
            // country events  
            if (document.addEventListener)
            {
                structElemIO.objCountryInput.addEventListener("blur",function(event){srcBoxCountry.Suggest.manage_blur(event);},false);
                structElemIO.objCountryInput.addEventListener("keydown",function(event){srcBoxCountry.Suggest.move_list(event);},false);
                structElemIO.objCountryInput.addEventListener("keyup",function(event){srcBoxCountry.Suggest.find_suggest(structElemIO,event,0);},false);
            }
            else
            {
                structElemIO.objCountryInput.attachEvent("onblur",function(event){srcBoxCountry.Suggest.manage_blur(event);});
                structElemIO.objCountryInput.attachEvent("onkeydown",function(event){srcBoxCountry.Suggest.move_list(event);},false);
                structElemIO.objCountryInput.attachEvent("onkeyup",function(event){srcBoxCountry.Suggest.find_suggest(structElemIO,event,0);},false);
            }
            structElemIO.objCountryInput.autocomplete="off";
        }
        //  combobox/listbox only clear on onchange event (directly) with adm listbox
        else 
        {
             if (document.addEventListener)
                document.getElementById(elemCountry).addEventListener("change",function(event){srcBoxCountry.Suggest.changeCombo(structElemIO,0);},false);
             else
                document.getElementById(elemCountry).attachEvent("onchange",function(event){srcBoxCountry.Suggest.changeCombo(structElemIO,0);});
        }      
        
        if (document.addEventListener)
        {
            structElemIO.objAdm.addEventListener("blur",function(event){srcBoxAdm.Suggest.manage_blur(event);},false);
            structElemIO.objAdm.addEventListener("keydown",function(event){srcBoxAdm.Suggest.move_list(event);},false);
            if (typeAdm==2)
                structElemIO.objAdm.addEventListener("change",function(event){srcBoxAdm.Suggest.clickSelect(event);},false);
            else
                structElemIO.objAdm.addEventListener("keyup",function(event){srcBoxAdm.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        else
        {
            structElemIO.objAdm.attachEvent("onblur",function(event){srcBoxAdm.Suggest.manage_blur(event);});
            structElemIO.objAdm.attachEvent("onkeydown",function(event){srcBoxAdm.Suggest.move_list(event);},false);
            if (typeAdm==2)
                structElemIO.objAdm.attachEvent("onchange",function(event){srcBoxAdm.Suggest.clickSelect(event);},false);
            else
                structElemIO.objAdm.attachEvent("onkeyup",function(event){srcBoxAdm.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        structElemIO.objAdm.autocomplete="off";
    
        // zip events 
        if (document.addEventListener)
        {
            structElemIO.objZip.addEventListener("blur",function(event){srcBoxZip.Suggest.manage_blur(event);},false);
            structElemIO.objZip.addEventListener("blur",function(event){srcBoxZipGB.Suggest.manage_blur(event);},false);
            structElemIO.objZip.addEventListener("keydown",function(event){srcBoxZip.Suggest.move_list(event);},false);
            structElemIO.objZip.addEventListener("keydown",function(event){srcBoxZipGB.Suggest.move_list(event);},false);
            structElemIO.objZip.addEventListener("keyup",function(event){srcBoxZip.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        else
        {
            structElemIO.objZip.attachEvent("onblur",function(event){srcBoxZip.Suggest.manage_blur(event);});
            structElemIO.objZip.attachEvent("onblur",function(event){srcBoxZipGB.Suggest.manage_blur(event);});
            structElemIO.objZip.attachEvent("onkeydown",function(event){srcBoxZip.Suggest.move_list(event);},false);
            structElemIO.objZip.attachEvent("onkeydown",function(event){srcBoxZipGB.Suggest.move_list(event);},false);
            structElemIO.objZip.attachEvent("onkeyup",function(event){srcBoxZip.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        structElemIO.objZip.autocomplete="off";
        
        // townSearch events
        if (document.addEventListener)
        {
            structElemIO.objTownSrch.addEventListener("blur",function(event){srcBoxTown.Suggest.manage_blur(event);},false);
            structElemIO.objTownSrch.addEventListener("keydown",function(event){srcBoxTown.Suggest.move_list(event);},false);
            structElemIO.objTownSrch.addEventListener("keyup",function(event){srcBoxTown.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        else
        {
            structElemIO.objTownSrch.attachEvent("onblur",function(event){srcBoxTown.Suggest.manage_blur(event);});
            structElemIO.objTownSrch.attachEvent("onkeydown",function(event){srcBoxTown.Suggest.move_list(event);},false);
            structElemIO.objTownSrch.attachEvent("onkeyup",function(event){srcBoxTown.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        structElemIO.objTownSrch.autocomplete="off";
        
        if (document.addEventListener)
        {
            structElemIO.objStreetSrch.addEventListener("blur",function(event){srcBoxStreet.Suggest.manage_blur(event);},false);
            structElemIO.objStreetSrch.addEventListener("keydown",function(event){srcBoxStreet.Suggest.move_list(event);},false);
            structElemIO.objStreetSrch.addEventListener("keyup",function(event){srcBoxStreet.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        else
        {
            structElemIO.objStreetSrch.attachEvent("onblur",function(event){srcBoxStreet.Suggest.manage_blur(event);});
            structElemIO.objStreetSrch.attachEvent("onkeydown",function(event){srcBoxStreet.Suggest.move_list(event);},false);
            structElemIO.objStreetSrch.attachEvent("onkeyup",function(event){srcBoxStreet.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        structElemIO.objStreetSrch.autocomplete="off";   
        
        if (document.addEventListener)
        {
            structElemIO.objHN.addEventListener("blur",function(event){srcBoxHN.Suggest.manage_blur(event);},false);
            structElemIO.objHN.addEventListener("keydown",function(event){srcBoxHN.Suggest.move_list(event);},false);
            structElemIO.objHN.addEventListener("keyup",function(event){srcBoxHN.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        else
        {
            structElemIO.objHN.attachEvent("onblur",function(event){srcBoxHN.Suggest.manage_blur(event);});
            structElemIO.objHN.attachEvent("onkeydown",function(event){srcBoxHN.Suggest.move_list(event);},false);
            structElemIO.objHN.attachEvent("onkeyup",function(event){srcBoxHN.Suggest.find_suggest(structElemIO,event,0);},false);
        }
        structElemIO.objHN.autocomplete="off";   
    }
    catch(ex)
    {
        alert (ex.message);
        return;
    }
    
    // address 1
    var structElemIO1={
                objCountryInput: null,
		objCountry: null,
		objAdm: null,
		objZip: null,
		objTownSrch: null,
		objTownOut: null,
		objLocality: null,
                objStreetSrch: null,
                objStreetOut: null,
                objStreetAdd: null,
                objLargeMailUsr: null,
                objPostalBox: null
            };

    // definition mandatory items struct 1
    try
    {
        if (formatCountry != 2)
            structElemIO1.objCountry=document.getElementById(elemCountry1);
        else
            structElemIO1.objCountry=countrySigle[1];
        
        structElemIO1.objAdm=document.getElementById(elemAdm1);
        structElemIO1.objZip=document.getElementById(elemZip1);
        structElemIO1.objTownSrch=document.getElementById(elemTownSrch1);
        structElemIO1.objTownOut=document.getElementById(elemTownOut1);
        structElemIO1.objStreetSrch=document.getElementById(elemAddressIn1);
    }
    catch(ex)
    {;}
    
     // definition optional items
     try
    {structElemIO1.objLocality=document.getElementById(elemLocality1);}
    catch(ex)
    {;}
    try
    {structElemIO1.objStreetOut=document.getElementById(elemStreetOut1);}
    catch(ex)
    {;}
    try
    {structElemIO1.objStreetAdd=document.getElementById(elemStreetAdd1);}
    catch(ex)
    {;}
    try
    {structElemIO1.objLargeMailUsr=document.getElementById(elemLargeMailUser1);}
    catch(ex)
    {;}
    try
    {structElemIO1.objPostalBox=document.getElementById(elemPostalBox1);}
    catch(ex)
    {;}
    try
    {structElemIO1.objHN=document.getElementById(elemHN1);}
    catch(ex)
    {;}
   
    if (structElemIO1.objCountryInput!=null)
    {
        if (formatCountry!=0)
        {
              // country events  
            if (document.addEventListener)
            {
                structElemIO1.objCountryInput.addEventListener("blur",function(event){srcBoxCountry.Suggest.manage_blur(event);},false);
                structElemIO1.objCountryInput.addEventListener("keydown",function(event){srcBoxCountry.Suggest.move_list(event);},false);
                structElemIO1.objCountryInput.addEventListener("keyup",function(event){srcBoxCountry.Suggest.find_suggest(structElemIO1,event,1);},false);
            }
            else
            {
                structElemIO1.objCountryInput.attachEvent("onblur",function(event){srcBoxCountry.Suggest.manage_blur(event);});
                structElemIO1.objCountryInput.attachEvent("onkeydown",function(event){srcBoxCountry.Suggest.move_list(event);},false);
                structElemIO1.objCountryInput.attachEvent("onkeyup",function(event){srcBoxCountry.Suggest.find_suggest(structElemIO1,event,1);},false);
            }
            structElemIO1.objCountryInput.autocomplete="off";
        }
        else 
        {
             if (document.addEventListener)
                document.getElementById(elemCountry1).addEventListener("change",function(event){srcBoxCountry.Suggest.changeCombo(structElemIO1,1);},false);
             else
                document.getElementById(elemCountry1).attachEvent("onchange",function(event){srcBoxCountry.Suggest.changeCombo(structElemIO1,1);});
        }   
    }
    
    if (structElemIO1.objAdm!=null)
    {   
        if (document.addEventListener)
        {
            structElemIO1.objAdm.addEventListener("blur",function(event){srcBoxAdm.Suggest.manage_blur(event);},false);
            structElemIO1.objAdm.addEventListener("keydown",function(event){srcBoxAdm.Suggest.move_list(event);},false);
            if (typeAdm==2)
                structElemIO1.objAdm.addEventListener("change",function(event){srcBoxAdm.Suggest.clickSelect(event);},false);
            else
                structElemIO1.objAdm.addEventListener("keyup",function(event){srcBoxAdm.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        else
        {
            structElemIO1.objAdm.attachEvent("onblur",function(event){srcBoxAdm.Suggest.manage_blur(event);});
            structElemIO1.objAdm.attachEvent("onkeydown",function(event){srcBoxAdm.Suggest.move_list(event);},false);
            if (typeAdm==2)
                structElemIO1.objAdm.attachEvent("onchange",function(event){srcBoxAdm.Suggest.clickSelect(event);},false);
            else
                structElemIO1.objAdm.attachEvent("onkeyup",function(event){srcBoxAdm.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        structElemIO1.objAdm.autocomplete="off";
    }

    if (structElemIO1.objZip!=null)
    {   
        // country events  
        if (document.addEventListener)
        {
            structElemIO1.objZip.addEventListener("blur",function(event){srcBoxZip.Suggest.manage_blur(event);},false);
            structElemIO1.objZip.addEventListener("keydown",function(event){srcBoxZip.Suggest.move_list(event);},false);
            structElemIO1.objZip.addEventListener("keyup",function(event){srcBoxZip.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        else
        {
            structElemIO1.objZip.attachEvent("onblur",function(event){srcBoxZip.Suggest.manage_blur(event);});
            structElemIO1.objZip.attachEvent("onkeydown",function(event){srcBoxZip.Suggest.move_list(event);},false);
            structElemIO1.objZip.attachEvent("onkeyup",function(event){srcBoxZip.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        structElemIO1.objZip.autocomplete="off";
    }    

    if (structElemIO1.objTownSrch!=null) 
    {   
        // country events  
        if (document.addEventListener)
        {
            structElemIO1.objTownSrch.addEventListener("blur",function(event){srcBoxTown.Suggest.manage_blur(event);},false);
            structElemIO1.objTownSrch.addEventListener("keydown",function(event){srcBoxTown.Suggest.move_list(event);},false);
            structElemIO1.objTownSrch.addEventListener("keyup",function(event){srcBoxTown.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        else
        {
            structElemIO1.objTownSrch.attachEvent("onblur",function(event){srcBoxTown.Suggest.manage_blur(event);});
            structElemIO1.objTownSrch.attachEvent("onkeydown",function(event){srcBoxTown.Suggest.move_list(event);},false);
            structElemIO1.objTownSrch.attachEvent("onkeyup",function(event){srcBoxTown.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        structElemIO1.objTownSrch.autocomplete="off";
    }
        
    if (structElemIO1.objStreetSrch!=null) 
    {                
        // country events  
        if (document.addEventListener)
        {
            structElemIO1.objStreetSrch.addEventListener("blur",function(event){srcBoxStreet.Suggest.manage_blur(event);},false);
            structElemIO1.objStreetSrch.addEventListener("keydown",function(event){srcBoxStreet.Suggest.move_list(event);},false);
            structElemIO1.objStreetSrch.addEventListener("keyup",function(event){srcBoxStreet.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        else
        {
            structElemIO1.objStreetSrch.attachEvent("onblur",function(event){srcBoxStreet.Suggest.manage_blur(event);});
            structElemIO1.objStreetSrch.attachEvent("onkeydown",function(event){srcBoxStreet.Suggest.move_list(event);},false);
            structElemIO1.objStreetSrch.attachEvent("onkeyup",function(event){srcBoxStreet.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        structElemIO1.objStreetSrch.autocomplete="off";
        
        if (document.addEventListener)
        {
            structElemIO1.objHN.addEventListener("blur",function(event){srcBoxHN.Suggest.manage_blur(event);},false);
            structElemIO1.objHN.addEventListener("keydown",function(event){srcBoxHN.Suggest.move_list(event);},false);
            structElemIO1.objHN.addEventListener("keyup",function(event){srcBoxHN.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        else
        {
            structElemIO1.objHN.attachEvent("onblur",function(event){srcBoxHN.Suggest.manage_blur(event);});
            structElemIO1.objHN.attachEvent("onkeydown",function(event){srcBoxHN.Suggest.move_list(event);},false);
            structElemIO1.objHN.attachEvent("onkeyup",function(event){srcBoxHN.Suggest.find_suggest(structElemIO1,event,1);},false);
        }
        structElemIO.objHN.autocomplete="off";   
    }

    if (initCountrySigle!="")
    {
        srcBoxCountry.Suggest.initvalue(structElemIO,0);
        srcBoxCountry.Suggest.initvalue(structElemIO1,1);
    }

    if (structElemIO.objTownSrch.value!="")
        srcBoxTown.Suggest.initvalue(structElemIO,0);

    if (structElemIO1.objTownSrch!=null) 
    {
        if (structElemIO1.objTownSrch.value!="")
            srcBoxTown.Suggest.initvalue(structElemIO1,1);
    }
 if (oldInitRapidAddressing!=null)
         oldInitRapidAddressing();

}



    

