if(!(window["Map24"] instanceof Function)){window["Map24"] =function(){};Map24.BOOTTIME =(new Date()).getTime();Map24.VERSION ="2.3.1";Map24.DISABLE_WORDBOOK =false;Map24._AppKeyConfig ={};Map24.DEFAULT_APPKEY =null;Map24.SPACER_URL =null;Map24.LIB_PACKAGES =[];Map24.OnLoadCallback =null;Map24.loadFailed =function(msg ){};Map24.forName ={};Map24._DebugLoading =false;Map24._DebugLoadingApiStop =false;Map24._DebugLoadVersion =null;Map24._DebugLoadingApiRecall =null;Map24.onLoad =function(){if(Map24.OnLoadCallback )setTimeout(Map24._async_onLoad,1);else
Map24._async_onLoad();}
Map24.CURRENT_LIB_LOADING =null;Map24.LIB_TIMES =[];Map24._async_onLoad =function(){if(Map24.CURRENT_LIB_LOADING ){var lib=Map24.CURRENT_LIB_LOADING;lib.Time=(new Date()).getTime()-lib.Start;Map24.LIB_TIMES[Map24.LIB_TIMES.length]=lib;Map24.CURRENT_LIB_LOADING =null;}
var item =Map24.LIB_PACKAGES.shift();if(item ){Map24.CURRENT_LIB_LOADING={Url:item.Url,Start:(new Date()).getTime()};Map24._include(item.Url );}else {Map24.PACKAGES_LOADED=(new Date()).getTime();Map24.preClassCreation();Map24.Xsd.Type.createClasses();Map24.Soap.Message.createClasses();Map24.postClassCreation();Map24.PACKAGES_BUILD=(new Date()).getTime();for(var i=0;i <Map24.LIB_TIMES.length;i++){Map24.log({type:"apiLoadTime",time:Map24.LIB_TIMES[i].Time,msg:Map24.LIB_TIMES[i].Url});}
Map24.log({type:"apiParseTime",time:(Map24.END_API_PARSING-Map24.START_API_PARSING)});Map24.log({type:"apiClassBuildTime",time:(Map24.PACKAGES_BUILD-Map24.PACKAGES_LOADED)});Map24.log({type:"apiTotalLoadTime",time:(Map24.PACKAGES_BUILD-Map24.BOOTTIME)});if(Map24.OnLoadCallback instanceof Array ){Map24.OnLoadCallback[1].call(Map24.OnLoadCallback[0]);}else
{Map24.callMapTPOnLoad.counter=0;Map24.callMapTPOnLoad();}
}
}
Map24.callMapTPOnLoad =function(){if(window["MapTPOnLoad"] instanceof Function ){return window.MapTPOnLoad();}
var me =arguments.callee;me.counter++;if(me.counter <20 ){setTimeout(me,5);}else
if(me.counter <60 ){setTimeout(me,10);}else
if(me.counter <180 ){setTimeout(me,25);}else
if(me.counter <480 ){setTimeout(me,100);}else
if(me.counter <600 ){setTimeout(me,1000);}
}
Map24.LOG ={};Map24._Includes =[];Map24._async_include =function(){var url =Map24._Includes.shift();if(!url )return;var script =document.createElement('script');script.setAttribute("defer","defer");script.setAttribute("src",url);script.setAttribute("type","text/javascript");script.setAttribute("charset","utf-8");var opera =false;try {document.getElementsByTagName('HEAD')[0].appendChild(script);}catch(e){opera =true;}
if(opera ){document.appendChild(script);}
}
Map24._include =function(url ){Map24._Includes[Map24._Includes.length] =url;setTimeout(Map24._async_include,1);}
Map24.loadApi =function(lib_packages,callback,version,params ){Map24._ApiLoadStart =new Date().getTime();if(Map24._DebugLoadingApiStop ){Map24._DebugLoadingApiRecall =[lib_packages,callback,version,params];return;}
if(typeof lib_packages=="string" )lib_packages =[lib_packages];if(!(lib_packages instanceof Array))throw "Map24.loadApi: Invalid 'lib_packages' parameter, should be of type string or array!";if(!(params instanceof Object))params ={};if(typeof callback=="function" )callback =[window,callback];if(!(callback instanceof Array)&&typeof callback[1]!="function" )throw "Map24.loadApi: Invalid 'callback' supplied!";Map24.OnLoadCallback =callback;var appkey=Map24.AppKeyConfig.forId();var default_appkey=appkey;if(params["AppKey"] ){appkey=Map24.AppKeyConfig.forId(params["AppKey"]);if(default_appkey ){for(var key in default_appkey ){appkey[key] =default_appkey[key];}
}
}
var modified_version=false;if(typeof version=="string" ){appkey.Version=version;modified_version=true;}
if(typeof Map24._DebugLoadVersion=="string" ){appkey.Version =Map24._DebugLoadVersion;modified_version=true;}
var no_service_mode=null;var obfuscate=true;var gzip=true;var no_test_lib=false;if(params instanceof Object ){if(typeof params["gzip"]=="boolean" )gzip =params.gzip;if(typeof params["obfuscate"]=="boolean" )obfuscate =params.obfuscate;if(typeof params["NOSERVICELOAD"]=="boolean" &&params.NOSERVICELOAD )no_service_mode =true;if(typeof params["NOTESTLIB"]=="boolean" &&params.NOTESTLIB )no_test_lib =true;if(typeof params["BASE_URL"]=="string" ){modified_version=true;appkey.AjaxBaseUrl =params.BASE_URL;}
if(typeof params["WEBSERVICES_BASE_URL"]=="string" )appkey.WebServicesBaseUrl =params.WEBSERVICES_BASE_URL;if(typeof params["MAPTP_HOST"]=="string" )appkey.MapTpHost =params.MAPTP_HOST;if(typeof params["XSLT_BASE_URL"]=="string" )appkey.XsltUri =params.XSLT_BASE_URL;if(typeof params["IMAGES_BASE_URL"]=="string" )appkey.ImagesBaseUrl =params.IMAGES_BASE_URL;if(typeof params["PROTOCOL"]=="string" )appkey.Protocol =params.PROTOCOL;}
if(modified_version ){appkey.XsltUri="ajax/"+appkey.Version+"/";if(appkey.AjaxBaseUrl.charAt(appkey.AjaxBaseUrl.length-1)!="/" )appkey.ImagesBaseUrl=appkey.WebServicesBaseUrl+"?action=demo&image=../../ajax/"+appkey.Version+"/images/";else
appkey.ImagesBaseUrl=appkey.AjaxBaseUrl+"images/";}
try {if(navigator.userAgent.match(new RegExp("MSIE"))){var ie_rexp =new RegExp("MSIE ([0-9])\\.([0-9])([0-9]{0,1})");var ie_res =ie_rexp.exec(navigator.userAgent );if((ie_res instanceof Array)&&(ie_res.length>=2)){if(ie_res[1]<6 )gzip =false;else
if(ie_res[1]==6 ){ie_rexp =new RegExp("(SV1)");ie_res =ie_rexp.exec(navigator.userAgent );if(!(ie_res instanceof Array)||(ie_res.length<2)||(ie_res[1]!="SV1")){gzip =false;}}
}
}
}catch(e){}
if(!appkey.WebServicesBaseUrl )appkey.WebServicesBaseUrl =appkey.Protocol +"://" +appkey.MapTpHost+"/map24/webservices1.5";if(!appkey.ImagesBaseUrl ){if(appkey.AjaxBaseUrl.charAt(appkey.AjaxBaseUrl.length-1)=="/" ){appkey.ImagesBaseUrl =appkey.AjaxBaseUrl+"images/";}else {appkey.ImagesBaseUrl =appkey.WebServicesBaseUrl+"?action=demo&image=../../ajax/"+appkey.Version+"/images/";}
}
if(!appkey.XsltBaseUri )appkey.XsltBaseUri ="ajax/";if(!appkey.XsltUri )appkey.XsltUri =appkey.XsltBaseUri+appkey.Version+"/";if(params["AppKey"] )Map24.setDefaultAppKey(appkey);if(!no_test_lib )try {var doc_url =decodeURIComponent(top.document.URL);var patch_lib_regexp =new RegExp("(.*?)map24:test_lib=([0-9._ystrue]*)","i");var lib_patch =patch_lib_regexp.exec(doc_url );if((lib_patch instanceof Array)&&(lib_patch.length >=2)&&(typeof lib_patch[2]=="string")&&(lib_patch[2].length>=1)){lib_packages.unshift("test_lib" );}
}catch(e){}
var lib_url =null;var service_load =null;var lib_url_regex =new RegExp("^[a-z0-9]+://","i");for(var i=0;i<lib_packages.length;i++){lib_url =lib_packages[i];if(typeof lib_url !="string")throw "Map24.loadApi: Invalid 'lib_packages' parameter!";if(lib_url.match(lib_url_regex)){}else
{if(no_service_mode==null ){if(appkey.AjaxBaseUrl.charAt(appkey.AjaxBaseUrl.length -1 )=="/" )service_load =false;else
service_load =true;}else
service_load =!no_service_mode;if(service_load ){lib_url =appkey.AjaxBaseUrl+"?action=ajax_load_part"+"&v="+appkey.Version+"&name="+lib_packages[i]+"&gzip="+(gzip?"1":"0")+"&obfuscate="+(obfuscate?"1":"0");}else
{lib_url =appkey.AjaxBaseUrl+"api/"+lib_packages[i]+(obfuscate?"_obfuscated":"")+".js";}
}
Map24.LIB_PACKAGES[Map24.LIB_PACKAGES.length++] ={Url:lib_url };}
Map24.onLoad();}
Map24.setDefaultAppKey =function(appkey ){if(!(appkey instanceof Map24.AppKeyConfig))throw "Invalid application key supplied, no instance of Map24.AppKeyConfig!";Map24.VERSION =appkey.Version;Map24.DEFAULT_APPKEY =appkey.Id;Map24.MAPTP_HOST =appkey.MapTpHost;Map24.BASE_URL =appkey.AjaxBaseUrl;Map24.WEBSERVICES_BASE_URL =appkey.WebServicesBaseUrl;Map24.IMAGES_BASE_URL =appkey.ImagesBaseUrl;Map24.SPACER_URL =Map24.IMAGES_BASE_URL +"core_api/space.gif";Map24.XSLT_BASE_URL =appkey.XsltUri;}
}
Map24.$init =function(){var default_appkey="CJX2b227e1ef3fc2c0e596eb29921a0aX47";var version="2.3.1.5790";var ajax_base_url="http://maptp42.map24.com/ajax";var webservices_base_url="http://maptp42.map24.com/lbsp/webservices1.5";var maptp_host="maptp42.map24.com";var xslt_base_uri="ajax/";var appkey=null;if(default_appkey!=("$"+"{AJAX_DEFAULT_APPKEY}")){appkey=Map24.AppKeyConfig.forId(default_appkey);appkey.Version=version;appkey.MapTpHost=maptp_host;appkey.AjaxBaseUrl=ajax_base_url;appkey.WebServicesBaseUrl=webservices_base_url;appkey.ImagesBaseUrl=webservices_base_url+"?action=demo&image=../../ajax/"+version+"/images/";appkey.XsltBaseUri=xslt_base_uri;appkey.XsltUri=xslt_base_uri+version+"/";if(webservices_base_url.match("^https:")){appkey.Protocol ="https";Map24.AppKeyConfig.prototype.Protocol ="https";}
}
if(appkey &&!Map24.DEFAULT_APPKEY )Map24.setDefaultAppKey(appkey );if(appkey &&!Map24._DebugLoading ){var doc_url =null;var version =null;try {doc_url =decodeURIComponent(top.document.URL);var patch_version_regexp =new RegExp("(.*?)map24:version=([a-z0-9._]*)","i");var ver_patch =patch_version_regexp.exec(doc_url );if((ver_patch instanceof Array)&&(ver_patch.length >=2)&&(typeof ver_patch[2]=="string")&&(ver_patch[2].length>=3)){version =ver_patch[2];}
}catch(e){}
if(version!=null ){Map24._DebugLoading =true;Map24._DebugLoadingApiStop =true;Map24._DebugLoadVersion =version;Map24._include(appkey.AjaxBaseUrl+"?appkey="+appkey+"&v="+version );}
}else if(Map24._DebugLoading ){Map24._DebugLoadingApiStop =false;if(Map24._DebugLoadingApiRecall!=null ){var args =Map24._DebugLoadingApiRecall;Map24._DebugLoadingApiRecall =null;Map24.loadApi(args[0],args[1],args[2],args[3] );}
}
};Map24.AppKeyConfig =function(default_args ){if(typeof default_args=="boolean" &&default_args==false )return;if(typeof default_args!="string" )throw new Map24.Exception.InvalidArgument("Invalid creation of appkey, please use the static Map24.AppKeyConfig.forId method!",this,"Map24.AppKeyConfig","constructor");this.Id=default_args;Map24._AppKeyConfig[this.Id]=this;}
Map24.AppKeyConfig.prototype ={};Map24.AppKeyConfig.prototype.Super ={};Map24.AppKeyConfig.prototype.constructor =Map24.AppKeyConfig;Map24.AppKeyConfig.prototype.Class ="AppKeyConfig";Map24.AppKeyConfig.prototype.Package ="Map24";Map24.AppKeyConfig.prototype.ClassId ="Map24.AppKeyConfig";Map24.forName["Map24.AppKeyConfig"] =Map24.AppKeyConfig;if(!Map24["_AppKeyConfig"] instanceof Object )Map24._AppKeyConfig={};Map24.AppKeyConfig.exists =function(appkey ){return (Map24._AppKeyConfig[appkey] instanceof Map24.AppKeyConfig);}
Map24.AppKeyConfig.forId =function(appkey,create ){if(appkey==null ){for(var key in Map24._AppKeyConfig )return Map24._AppKeyConfig[key];return null;}
if(typeof appkey!="string" ||appkey.length==0 )throw new String("Invalid appkey given to 'Map24.AppKeyConfig.forId'!");if(Map24._AppKeyConfig[appkey] )return Map24._AppKeyConfig[appkey];var default_config=null;for(var key in Map24._AppKeyConfig ){default_config=Map24._AppKeyConfig[key];break;}
return new Map24.AppKeyConfig(appkey);}
Map24.AppKeyConfig.prototype.init =function(base_url,version,maptp_host ){if(typeof version!="string" )throw new String("Invalid 'version' given to create method!");if(typeof base_url!="string" )throw new String("Invalid 'base_url' given to create method!");if(typeof maptp_host!="string" )throw new String("Invalid 'maptp_host' given to create method!");this.AjaxBaseUrl=base_url;if(base_url.indexOf("https")==0 ){this.Protocol="https";this.WebServicesBaseUrl="https://"+maptp_host+"/map24/webservices1.5";}else {this.Protocol="http";this.WebServicesBaseUrl="http://"+maptp_host+"/map24/webservices1.5";}
this.MapTpHost=maptp_host;this.Version=version;this.XsltBaseUri="ajax/";this.XsltUri="ajax/"+version+"/";if(base_url.charAt(base_url.length-1)!="/" ){this.ImagesBaseUrl=this.WebServicesBaseUrl+"?action=demo&image=../../ajax/"+this.Version+"/images/";}else
this.ImagesBaseUrl=this.AjaxBaseUrl+"images/";this.BaseMapTileProvider=this.WebServicesBaseUrl+"?cgi=Map24MGI&appkey=${APPKEY}&prop:ProjectionStyle=mercator&quadkey=${QUADKEY}&prop:tile=1&prop:vmpp=${VMPP}";this.TransparentTileProvider=this.WebServicesBaseUrl+"?cgi=Map24MGI&appkey=${APPKEY}&prop:ProjectionStyle=mercator&prop:tile=1&prop:TransparentAreas=true&quadkey=${QUADKEY}&prop:vmpp=${VMPP}";this.SatelliteTileProvider="http://"+this.MapTpHost+":8080/map24/images?appkey=${APPKEY}&l=${LAYERSTACK}&v=1&quadkey=${QUADKEY}&prop:vmpp=${VMPP}";this.LayerStack="g4,wms";}
Map24.AppKeyConfig.prototype.Id=null;Map24.AppKeyConfig.prototype.Protect=false;Map24.AppKeyConfig.prototype.AjaxBaseUrl="ajax/";Map24.AppKeyConfig.prototype.ImagesBaseUrl=null;Map24.AppKeyConfig.prototype.WebServicesBaseUrl=null;Map24.AppKeyConfig.prototype.MapTpHost=null;Map24.AppKeyConfig.prototype.Protocol="http";Map24.AppKeyConfig.prototype.Version=null;Map24.AppKeyConfig.prototype.XsltBaseUri=null;Map24.AppKeyConfig.prototype.XsltUri=null;Map24.AppKeyConfig.prototype.BaseMapTileProvider=null;Map24.AppKeyConfig.prototype.TransparentTileProvider=null;Map24.AppKeyConfig.prototype.SatelliteTileProvider=null;Map24.AppKeyConfig.prototype.TrafficTileProvider=null;Map24.AppKeyConfig.prototype.LayerStack=null;Map24.AppKeyConfig.prototype.replaceSubDomain =function(url,salt ){if(typeof salt=="number" )return url.replace("${SUBDOMAIN}",salt);if(typeof salt=="string" )salt=Map24.hash(salt);else
salt=Map24.hash(url);salt=Map24.hex2dec(salt.charAt(0));return url.replace("${SUBDOMAIN}",salt);}
Map24.AppKeyConfig.prototype.getRandomWebServicesUrl =function(salt ){return this.replaceSubDomain(this.WebServicesBaseUrl,salt);}
Map24.AppKeyConfig.prototype.getRandomImageUrl=function(salt ){return this.replaceSubDomain(this.ImagesBaseUrl,salt);}
Map24.$init();
