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(){setTimeout(Map24._async_onLoad,1);}
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)});Map24.callMapTPOnLoad.counter=0;setTimeout(Map24.callMapTPOnLoad,1);if(Map24.OnLoadCallback instanceof Array ){Map24.OnLoadCallback[1].call(Map24.OnLoadCallback[0]);}
}
}
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.defer ="defer";script.src =url;script.type="text/javascript";script.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[ Map24.DEFAULT_APPKEY ];var default_appkey =appkey;if(params["AppKey"] ){appkey =Map24._AppKeyConfig[ params["AppKey"] ];if(!appkey ){appkey =new Map24.AppKeyConfig({Id:params["AppKey"]});if(default_appkey )for(var key in default_appkey )appkey[key] =default_appkey[key];appkey.Id =params["AppKey"];Map24._AppKeyConfig[ appkey.Id ] =appkey;}
}
if(typeof version=="string" )appkey.Version =version;if(typeof Map24._DebugLoadVersion=="string" )appkey.Version =Map24._DebugLoadVersion;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" )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;}
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 ="CJX88f6cc2bfc06a673c096e8977fd55X0t";var version ="2.3.1.4995";var ajax_base_url ="http://maptp.traffic.com/ajax";var webservices_base_url ="http://maptp.traffic.com/map24/webservices1.5";var maptp_host ="maptp.traffic.com";var xslt_base_uri ="ajax/";var appkey =null;if(default_appkey !=("$"+"{AJAX_DEFAULT_APPKEY}")){appkey =new Map24.AppKeyConfig({Id:default_appkey,Version:version,MapTpHost:maptp_host,AjaxBaseUrl:ajax_base_url,WebServicesBaseUrl:webservices_base_url,ImagesBaseUrl:webservices_base_url+"?action=demo&image=../../ajax/"+version+"/images/",XsltBaseUri:xslt_base_uri,XsltUri:xslt_base_uri +version +"/"
});if(webservices_base_url.match("^https:")){appkey.Protocol ="https";Map24.AppKeyConfig.prototype.Protocol ="https";}
Map24._AppKeyConfig[ appkey.Id ] =appkey;}
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(default_args!=null &&(default_args instanceof Object)){for(var key in default_args )this[key] =default_args[key];}
if(!this.Id )throw new Map24.Exception.InvalidArgument("Invalid creation of appkey, please use the static Map24.AppKeyConfig.get method!",this,"Map24.AppKeyConfig","constructor");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;Map24.AppKeyConfig.get =function(appkey,create ){if(appkey==null ){if(Map24.DEFAULT_APPKEY )return Map24._AppKeyConfig[ Map24.DEFAULT_APPKEY ];return null;}
if(Map24._AppKeyConfig[appkey] )return Map24._AppKeyConfig[appkey];if(create &&Map24.DEFAULT_APPKEY ){var default_config =Map24._AppKeyConfig[ Map24.DEFAULT_APPKEY ];if(default_config ){var new_cfg =new Map24.AppKeyConfig({Id:appkey});for(var key in default_config )new_cfg[key] =default_config[key];return new_cfg;}
}
return null;}
Map24.AppKeyConfig.create =function(appkey,version,base_url,maptp_host ){if(typeof appkey!="string" )throw new String("Invalid 'appkey' given to create method!");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!");if(base_url.charAt(base_url.length-1)!="/" )base_url+="/";return new Map24.AppKeyConfig({Id:appkey,AjaxBaseUrl:base_url,WebServicesBaseUrl:"http://"+maptp_host+"/map24/webservices1.5",MapTpHost:maptp_host,Protocol:"http",Version:version,XsltBaseUri:"ajax/",XsltUri:"ajax/"+version+"/",ImagesBaseUrl:base_url+"images/"
});}
Map24.AppKeyConfig.prototype.Id =null;Map24.AppKeyConfig.prototype.AjaxBaseUrl =null;Map24.AppKeyConfig.prototype.ImagesBaseUrl =null;Map24.AppKeyConfig.prototype.WebServicesBaseUrl =null;Map24.AppKeyConfig.prototype.MapTpHost =null;Map24.AppKeyConfig.prototype.RandomHosts =null;Map24.AppKeyConfig.prototype.Protocol ="http";Map24.AppKeyConfig.prototype.Version =null;Map24.AppKeyConfig.prototype.XsltBaseUri =null;Map24.AppKeyConfig.prototype.XsltUri =null;Map24.AppKeyConfig.prototype.fromSaltToPrefix =function(hostname,salt ){if(typeof salt=="number" )salt =""+salt;if(typeof salt!="string" )salt =Date.now()+"_"+Math.random();return (Map24.hex2dec(Map24.hash(salt ).substr(0,2))>>4);}
Map24.AppKeyConfig.prototype.getRandomHost =function(hostname,salt ){if(!(this.RandomHosts instanceof Array)||this.RandomHosts.length==0 )return hostname;if(typeof hostname!="string" )hostname =this.MapTpHost;for(var i=0;i <this.RandomHosts.length;i+=2 ){if(hostname.match(this.RandomHosts[i] )){var m =this.RandomHosts[i].exec(hostname );if(!(m instanceof Array)||(m.length <=0))return hostname;var key =this.RandomHosts[i+1].replace("${PREFIX}",this.fromSaltToPrefix(hostname,salt));for(var j=1;j <m.length;j++){key =key.replace("${1}",m[1].replace("$","$$"));}
return key;}
}
return hostname;}
Map24.AppKeyConfig.prototype.getRandomMapTpHost =function(salt ){if(!(this.RandomHosts instanceof Array)||this.RandomHosts.length==0 )return this.MapTpHost;return this.getRandomHost(this.MapTpHost,salt);};Map24.AppKeyConfig.prototype.getRandomWebServicesUrl =function(salt ){if(!(this.RandomHosts instanceof Array)||this.RandomHosts.length==0 )return this.WebServicesBaseUrl;var url =new Map24.Url(this.WebServicesBaseUrl );return this.WebServicesBaseUrl.replace(url.Host,this.getRandomHost(url.Host,salt));};Map24.AppKeyConfig.prototype.getRandomImageUrl =function(salt ){if(!(this.RandomHosts instanceof Array)||this.RandomHosts.length==0 )return this.ImagesBaseUrl;var url =new Map24.Url(this.ImagesBaseUrl );return this.ImagesBaseUrl.replace(url.Host,this.getRandomHost(url.Host,salt));};Map24.$init();
