
var DEBUG;var DEVELOP;var log;var onCatchEx;var userAgent;var browserWindow;var jsLoader;var cssLoader;var mapPattern;var webConf;var urlParam;var help;var projLoader;var waiter;var msgBox;var inputBox;var confirmBox;var mapManager;var tabManager;var mapWindowManager;var glovalDivManager;var uiObjManager;var intervalTimerManager;var resMan;var uiEnable;var keyBoardListener;var functionProvider;var PATH_PREFIX="";var simpleStopWatch;var projInitConfigObj=new Object();projInitConfigObj.jsFileList=new Array();projInitConfigObj.jsFileListLazy=new Array();projInitConfigObj.resList=new Array();projInitConfigObj.cssFileList=new Array();projInitConfigObj.constObjList=new Array();function main_load(){if(!isLoadInitParams()){alert("初期化パラメータのロードに失敗しました");return;}
projInitConfig(projInitConfigObj);webConf=textParamsToObj(WEBCONFIG_STRING);urlParam=textParamsToObj(URLPARAMS_STRING);if(webConf==undefined){alert("WebConfig情報のロードに失敗しました");return;}
if(CACHESERVER_ROOT_URL==undefined　||CACHESERVER_ROOT_URL==null){alert("WebConfigのキャッシュサーバ設定が正しくありません");return;}
if(urlParam==undefined){alert("URLパラメータ情報のロードに失敗しました");return;}
if(urlParam.debug!=undefined){DEBUG=urlParam.debug;}else{DEBUG=false;}
if(urlParam.develop!=undefined){DEVELOP=urlParam.develop;}else{DEVELOP=false;}
log=new Log();if(DEBUG){log.on();if(urlParam.initsw){log.setStopWatchMode(true);}}else if(urlParam.initsw){simpleStopWatch=new SimpleStopWatch();simpleStopWatch.init();simpleStopWatch.start("main_load");}
if(log){log.write("main_load() webConf",WEBCONFIG_STRING);log.write("main_load() webConf_CacheServer.Root.Url",CACHESERVER_ROOT_URL);log.write("main_load() urlParam",URLPARAMS_STRING);}
userAgent=new UserAgent();browserWindow=new BrowserWindow();var objLoadingDiv=document.getElementById("LOADING");objLoadingDiv.style.display="block";setOpacity(objLoadingDiv,50);jsLoader=new JSLoader();proj_load();}
function clearFlgStarted(){log.write("main#main_unload","flgStarted="+getCookie("flgStarted"));if(projLoader&&projLoader.isProjLoading()){removeCookie("flgStarted");}else{return;}}
function main_beforeUnload(){clearFlgStarted();main_unloadCommon();}
function main_unload(){if(!userAgent.isIE()){clearFlgStarted();main_unloadCommon();}}
function main_unloadCommon(){if(typeof(onBeforeUnload)=="function"){onBeforeUnload();}
goodByeServer();disposeCommon();disposeDefault();if(typeof(disposeProj)=="function"){disposeProj();}
if(DEBUG){alert("Dispose Finished");}
if(log){log.closeLogWindow();}}
function disposeCommon(){try{if(waiter!=undefined){waiter.dispose();}
if(msgBox!=undefined){msgBox.dispose();}
if(inputBox!=undefined){inputBox.dispose();}
if(confirmBox!=undefined){confirmBox.dispose();}
document.body.oncontextmenu=null;}catch(e){}}
function disposeDefault(){if(DEBUG||DEVELOP){excuteDisposeDefault();}else{try{excuteDisposeDefault();}catch(e){}}
function excuteDisposeDefault(){if(mapManager!=undefined){mapManager.dispose();}
if(uiObjManager!=undefined){uiObjManager.dispose();}
if(tabManager!=undefined){tabManager.dispose();}}}
function goodByeServer(){function HttpRequestCallBack(){this.onSucceed=function(objCom){}
this.onFailed=function(objEx){}}
var server="aspx/goodBye.ashx";var param;var resultTagName="Root";if(typeof(XmlToObj)=="function"){new XmlToObj(server,param,resultTagName,new HttpRequestCallBack()).sendRequest();if(log){log.write("goodBye server","");}}}
function isLoadInitParams(){var bool=true;if(typeof(ISLOADINITPARAMS)=='boolean'){if(!ISLOADINITPARAMS){bool=false;}}else{bool=false;}
return bool;}
function proj_load(){if(log){log.write("proj_load()","start");}
setLoadingMessage("0%");projLoader=new ProjLoadingController();execLoadJS(projLoader);}
function ProjLoadingController(){var projLoadingMsg="";var isPrepareServer=false;var isJSFirstLoading=false;var isPrepareMap=false;var isLoadEnableInfo=false;var isProjLoading=false;var isFinishFirstRender=false;var isUILoading=false;var isLazyProjLoadingStarted=false;var lazyProjLoadingTimer;var isOnFinishProjLoadingAndFirstRender=false;this.getLoadingInfo=function(){var ret="";return ret;}
this.isProjLoading=function(){return isProjLoading;}
this.isFinishFirstRender=function(){return isFinishFirstRender;}
this.isLazyProjLoadingStarted=function(){return isLazyProjLoadingStarted;}
this.onLoadingComplete=function(){if(!isProjLoading){document.getElementById("LOADING").style.display="none";isProjLoading=true;sendBuildCheckMessage();this.checkStatus();}}
this.onFinishFirstRender=function(){if(!isFinishFirstRender){if(!DEBUG&&urlParam.initsw){simpleStopWatch.lap("レンダー：終了");}
if(!isLazyProjLoadingStarted){clearTimeout(lazyProjLoadingTimer);log.write("main#onFinishFirstRender()","lazyProjLoading start..");if(!DEBUG&&urlParam.initsw){simpleStopWatch.lap("遅延ロード：開始");}
setTimeout(lazyProjLoading,10);}
if(isUILoading&&!isOnFinishProjLoadingAndFirstRender&&typeof(onFinishProjLoadingAndFirstRender)=="function"){isOnFinishProjLoadingAndFirstRender=true;setTimeout(onFinishProjLoadingAndFirstRender,10);}
isFinishFirstRender=true;}}
this.onFinishPrepareServer=function(bool,msg){isPrepareServer=bool;if(!bool){if(DEVELOP!="check"){}
sendBuildCheckMessage();}
projLoadingMsg+=msg;this.checkStatus();}
this.onFinishJSFirstLoading=function(bool){isJSFirstLoading=bool;if(!bool){sendBuildCheckMessage();}
this.checkStatus();}
this.onFinishPrepareMap=function(bool){isPrepareMap=bool;if(!bool){if(DEVELOP!="check"){}
sendBuildCheckMessage();}
this.checkStatus();}
this.onFinishLoadEnableInfo=function(bool){isLoadEnableInfo=bool;if(!bool){if(DEVELOP!="check"){}
sendBuildCheckMessage();}
this.checkStatus();}
var flg1=false;var flg2=false;var flg3=false;var flg4=false;this.checkStatus=function(){if(isJSFirstLoading){if(!flg1){setLoadingMessage("30%");flg1=true;if(log){log.write("ProjLoadingController()","1:start");}
log.write("main#ProjLoadingController#checkStatus()","flgStarted="+getCookie("flgStarted"));if(getCookie("flgStarted")=="true"){window.open("Errors/MultiplexStartingError.htm","_self");return;}
if(userAgent.isIE()){window.onbeforeunload=main_beforeUnload;}
prepareServer(this);var cssFileListArray=new Array();cssFileListArray.push({key:"cssFileListCommon"});var margedCssFileList=margeCssFileList(cssFileListArray);cssLoader=new CSSLoader();cssLoader.loadCSSFileList(margedCssFileList,true);glovalDivManager=new GlovalDivManager();if(glovalDivConfigObj){glovalDivManager.addBodyDivByConfigObj(glovalDivConfigObj);}
for(var j=0;j<projInitConfigObj.constObjList.length;j++){margeConstObj(constObj,eval(projInitConfigObj.constObjList[j].key));}
var cssFileListArray=projInitConfigObj.cssFileList;if(cssFileListArray&&cssFileListArray.length>0){var margedCssFileList=margeCssFileList(cssFileListArray);cssLoader.loadCSSFileList(margedCssFileList,false);}
var resListArray=projInitConfigObj.resList;resListArray.push({key:"resListCommon"});var margedResList=margeResList(resListArray);resMan=new ResourceManager();resMan.loadResourceList(margedResList,"ja");initFont();document.body.oncontextmenu=doNothing;initLayout();waiter=new Waiter();msgBox=new MsgBox();inputBox=new InputBox();confirmBox=new ConfirmBox();prepareMap(this);functionProvider=FunctionProvider();var fpc=functionProvider.fCommon;fpc.waiter=waiter;fpc.msgBox=msgBox;fpc.inputBox=inputBox;fpc.confirmBox=confirmBox;}}
if(isJSFirstLoading&&isPrepareServer){if(!flg2){setLoadingMessage("50%");flg2=true;if(log){log.write("ProjLoadingController()","2:start");}
function DummyHelp(){this.show=function(){}
this.showFix=function(){}
this.hide=function(){}}
help=new DummyHelp();uiEnable=new UIEnableInfo(this);uiEnable.loadEnableInfo();}}
if(isJSFirstLoading&&isPrepareServer&&isPrepareMap){if(!flg3){setLoadingMessage("70%");flg3=true;if(log){log.write("ProjLoadingController()","3:start");}
initComponent();}}
if(isJSFirstLoading&&isPrepareServer&&isPrepareMap&&isLoadEnableInfo){if(!flg4){setLoadingMessage("80%");flg4=true;if(log){log.write("ProjLoadingController()","4:start");}
lazyProjLoadingTimer=setTimeout(lazyProjLoadingByTimeout,7000);if(projLoadingMsg!=undefined&&projLoadingMsg!=""){var objAM=new AttentionMessage();objAM.setTimer(15);var tempMsg="";var msgArray=projLoadingMsg.split("\\n");for(var j=0;j<msgArray.length;j++){tempMsg+=msgArray[j];if(j!=msgArray.length-1){tempMsg+="\n";}}
objAM.show(tempMsg);}}}}
function lazyProjLoadingByTimeout(){if(!DEBUG&&urlParam.initsw){simpleStopWatch.lap("遅延ロード:待機タイムアウト");}
lazyProjLoading();}
function lazyProjLoading(){if(isLazyProjLoadingStarted)return;log.write("main#lazyProjLoading()","start..");isLazyProjLoadingStarted=true;clearTimeout(lazyProjLoadingTimer);execLoadJSLazy(onLoadJSLazy);new KeyBoardListenerCommon();intervalTimerManager=new IntervalTimerManager();intervalTimerManager.addIntervalFunction("resetBrowserScrollPosition",resetBrowserScrollPosition,3);var skAbandonInt=constObj.SessionKeeper.confirmAbandonInterval;if(skAbandonInt==undefined||skAbandonInt==null){skAbandonInt=0;}
if(skAbandonInt>0){intervalTimerManager.addIntervalFunction("sessionKeeper",new StateKeeper((skAbandonInt*1000)).sendHeartBeat,constObj.SessionKeeper.heartBeatInterval);}else{intervalTimerManager.addIntervalFunction("sessionKeeper",new StateKeeperNoInteractive().sendHeartBeat,constObj.SessionKeeper.heartBeatInterval);}
intervalTimerManager.startManageInterval();}
function onLoadJSLazy(bool){if(!bool)return;initComponentLazy();document.cookie="flgStarted=true";if(typeof(onFinishProjLoading)=="function"){onFinishProjLoading();}
if(typeof(onFinishProjLoadingAndFirstRender)=="function"&&!isOnFinishProjLoadingAndFirstRender&&isFinishFirstRender){isOnFinishProjLoadingAndFirstRender=true;setTimeout(onFinishProjLoadingAndFirstRender,10);}
setTimeout(setDoNothingForBody,0);isUILoading=true;if(!DEBUG&&urlParam.initsw){simpleStopWatch.lap("遅延ロード：終了");}
if(DEBUG&&urlParam.initsw){log.setStopWatchMode(false);}}}
function execLoadJS(plc){var jsList=projInitConfigObj.jsFileList;function loadJSFileList(){function JSLoaderCallBack(){this.onLoadJSFile=function(isComplete,failureJSFilePath){if(isComplete){var margedJSFileList=margeJSFileList(jsList);loadJSByJSFileList(margedJSFileList);}else{alert("JavaScriptファイルのロード時、タイムアウトしました\n"+failureJSFilePath);}}}
jsLoader.loadJSFileList(jsList,new JSLoaderCallBack());}
function loadJSByJSFileList(margedJSFileList){function JSLoaderCallBack(){this.onLoadJSFile=function(isComplete,failureJSFilePath){if(!isComplete){alert("JavaScriptファイルのロード時、タイムアウトしました\n"+failureJSFilePath);}
plc.onFinishJSFirstLoading(isComplete);}}
jsLoader.loadJSFileList(margedJSFileList,new JSLoaderCallBack());}
loadJSFileList();}
function execLoadJSLazy(cboFunc){var jsList=projInitConfigObj.jsFileListLazy;function loadJSFileList(){function JSLoaderCallBack(){this.onLoadJSFile=function(isComplete,failureJSFilePath){if(isComplete){var margedJSFileList=margeJSFileList(jsList);loadJSByJSFileList(margedJSFileList);}else{alert("JavaScriptファイルのロード時、タイムアウトしました\n"+failureJSFilePath);}}}
jsLoader.loadJSFileList(jsList,new JSLoaderCallBack());}
function loadJSByJSFileList(margedJSFileList){function JSLoaderCallBack(){this.onLoadJSFile=function(isComplete,failureJSFilePath){if(!isComplete){alert("JavaScriptファイルのロード時、タイムアウトしました\n"+failureJSFilePath);}
cboFunc(isComplete);}}
jsLoader.loadJSFileList(margedJSFileList,new JSLoaderCallBack());}
loadJSFileList();}
function prepareMap(cbo){function MapPatternCallBack(){this.callback=function(){var mpid=mapPattern.getMapPatternIdFirst();function checkExStr(exstr){var extAry=exstr.split(",");var ext_X1=parseInt(extAry[0]);var ext_Y1=parseInt(extAry[1]);var ext_X2=parseInt(extAry[2]);var ext_Y2=parseInt(extAry[3]);if(isNaN(ext_X1)||isNaN(ext_Y1)||isNaN(ext_X2)||isNaN(ext_Y2)){return false;}else{return true;}}
var limitExStr=webConf.LIMITEXTENT;if(!checkExStr(limitExStr)){alert("WebConfigのLIMITEXTENT指定が正しくありません");return;}
var centerExStr=webConf.CENTEREXTENT;if(!checkExStr(centerExStr)){alert("WebConfigのCENTEREXTENT指定が正しくありません");return;}
if(urlParam.ext!=undefined){if(checkExStr(urlParam.ext)){centerExStr=urlParam.ext;}}
var centerExArray=centerExStr.split(",");var EX_X1=parseInt(centerExArray[0]);var EX_Y1=parseInt(centerExArray[1]);var EX_X2=parseInt(centerExArray[2]);var EX_Y2=parseInt(centerExArray[3]);var cpx=(EX_X2-EX_X1)/2+EX_X1;var cpy=(EX_Y2-EX_Y1)/2+EX_Y1;var prmCenter=getCookie("center");if(urlParam.center!=undefined){prmCenter=urlParam.center;}
if(prmCenter!=undefined){var centerArray=prmCenter.toString().split(",");if(centerArray.length==2){var tmpx=parseInt(centerArray[0]);var tmpy=parseInt(centerArray[1]);if(!isNaN(tmpx))
cpx=tmpx;if(!isNaN(tmpy))
cpy=tmpy;}}
var mpts=null;var prmScaleId=getCookie("scaleId");if(urlParam.scaleId!=undefined){prmScaleId=urlParam.scaleId;}
if(prmScaleId!=undefined){if(typeof(mapPattern.getTilesizeById)=="undefined")alert("mappattern.js duke最新要");mpts=mapPattern.getTilesizeById(prmScaleId);}
if(!mpts){mpts=getSuitableTileSizeByMapPattern(EX_X1,EX_Y1,EX_X2,EX_Y2,browserWindow.getWidth(),browserWindow.getHeight(),mpid,true);}
if(log){log.write("suitableTileSize",mpts);}
if(!mpts){msgBox.show("スケールの設定が正しくありません");return;}
mapManager=new MapManager();mapWindowManager=new MapWindowManager(layoutController.getLayoutManager("centerBorder").getLayoutContainer("center").getContentElm());mapWindowManager.addMap0Window(mpid,mpts,cpx,cpy);mapManager.setSelectedMapAssembly("map0");log.write("prepareMap","end..");cbo.onFinishPrepareMap(true);}}
log.write("prepareMap","start..");new MapPattern(new MapPatternCallBack());}
function prepareServer(cbo){function HttpRequestCallBack(){this.onSucceed=function(objCom){var flg=false;var msg="";if("result"in objCom){if(objCom.result.toLowerCase()=="true"){flg=true;if(objCom["Message"]){msg=objCom["Message"].innerText;}}}
if(log){if(flg){log.write("prepareServer","prepare complete");}else{log.write("prepareServer","prepare failure");}}
cbo.onFinishPrepareServer(flg,msg);}
this.onFailed=function(objEx){onFailedAttentionCommon(objEx,"prepareServer#HttpRequestCallBack()");cbo.onFinishPrepareServer(false);}}
var getParam="";if(URLPARAMS_STRING!=""){var sprittedStr=URLPARAMS_STRING.split(";");for(var i=0;i<sprittedStr.length;i++){if(sprittedStr[i]!=""){if(i!=0){getParam+="&";}
getParam+=sprittedStr[i];}}}
var server="prepare.ashx?"+getParam;var param;var resultTagName="Root";new XmlToObj(server,param,resultTagName,new HttpRequestCallBack(),false).sendRequest();if(log){log.write("prepareServer","start");}}
function sendBuildCheckMessage(){if(DEVELOP=="check"){var server="checkClient.ashx?";var url=server+projLoader.getLoadingInfo();window.open(url,'_self');}}
function setLoadingMessage(msg){if(log){log.write("","--------------"+msg+"--------------");}
var objLoadingMessage=document.getElementById("LOADING_MESSAGE");if(objLoadingMessage!=null){objLoadingMessage.innerHTML=msg;}}
function margeJSFileList(jsFileList_defineJSList){var ret=new Array();for(var i=0;i<jsFileList_defineJSList.length;i++){var jsflFuncStr=jsFileList_defineJSList[i].key;if(typeof(eval(jsflFuncStr))=="function"){ret=ret.concat(eval(jsflFuncStr+"()"));}}
return ret;}
function margeResList(resList){var ret=new Array();for(var i=0;i<resList.length;i++){var resFuncStr=resList[i].key;if(typeof(eval(resFuncStr))=="function"){ret=ret.concat(eval(resFuncStr+"()"));}}
return ret;}
function margeCssFileList(cssFileList){var ret=new Array();for(var i=0;i<cssFileList.length;i++){var resFuncStr=cssFileList[i].key;if(typeof(eval(resFuncStr))=="function"){ret=ret.concat(eval(resFuncStr+"()"));}}
return ret;}
function margeConstObj(sourceObj,addObj){for(var i in addObj){sourceObj[i]=addObj[i];}}
function SimpleStopWatch(){var startDate;var objSwTextArea;this.init=function(){objSwTextArea=document.createElement("textarea");objSwTextArea.style.position="absolute";objSwTextArea.style.left="5";objSwTextArea.style.top="2";objSwTextArea.style.width="300";objSwTextArea.style.height="50";objSwTextArea.style.zIndex="100000000";document.body.appendChild(objSwTextArea);}
this.start=function(msg){if(msg&&objSwTextArea){objSwTextArea.value="start:"+msg+unescape("%0D%0A")+objSwTextArea.value;}
startDate=new Date();}
this.lap=function(msg){var endDate=new Date();var diff=endDate.getTime()-startDate.getTime();if(objSwTextArea){objSwTextArea.value=diff+":"+msg+unescape("%0D%0A")+objSwTextArea.value;}}}
