function IFactorDataMonitor(A){this.stormCenter=A;this.layersHandler=null;this.eventHistoryHandler=null;this.dataMonitorControl=new Object();this.nonDependentDataMonitorObjectsName=new Array();this.dataMonitorCustomsToProcess=new Object();this.dataMonitorFieldsToProcess=new Object();this.dataMonitorFieldsValue=new Object();this.dataMonitorVariables=new Object();this.dataMonitorVariablesNew=new Object();this.dataMonitorVariableMapping=new Object();this.dataMonitorVariableConversionFunction=new Object();this.layersChangedList=null;this.variablesChangedList=null;iFactor.DataMonitor=this;this.initialiseTimerDataMonitor()}IFactorDataMonitor.configDataMonitorDefinition=[];IFactorDataMonitor.operationMode="MAP_INTERACTION";IFactorDataMonitor.timerInterval=120;IFactorDataMonitor.autoFullMapRefreshIfDataChanged=false;IFactorDataMonitor.prototype.loadDataMonitorConfiguration=function(H,L){this.layersHandler=H;this.eventHistoryHandler=L;var B=new Array();var G;for(G=0;G<IFactorDataMonitor.configDataMonitorDefinition.length;G++){var F;var I=IFactorDataMonitor.configDataMonitorDefinition[G];var D=I.data_name;this.dataMonitorControl[D]=I;this.dataMonitorFieldsValue[D]=new Object();this.dataMonitorCustomsToProcess[D]=new Array();this.dataMonitorFieldsToProcess[D]=new Array();this.dataMonitorVariableMapping[D]=new Object();this.dataMonitorVariableConversionFunction[D]=new Object();if(I.layer_dependencies!=null){for(F=0;F<I.layer_dependencies.length;F++){var N,P;var K=I.layer_dependencies[F];if(K.condition_fields_change!=null){N=K.condition_fields_change;P=this.dataMonitorFieldsToProcess[D]}this.addAllToArrayIfNotRepeated(P,N)}}if(I.datamonitor_dependencies!=null){for(F=0;F<I.datamonitor_dependencies.length;F++){var A=I.datamonitor_dependencies[F];this.addAllToArrayIfNotRepeated(this.dataMonitorFieldsToProcess[D],A.condition_fields_change);var E=A.dependencies;this.addAllToArrayIfNotRepeated(B,E)}}if(I.variable_dependencies!=null){for(F=0;F<I.variable_dependencies.length;F++){var M=I.variable_dependencies[F];var O=M.field;if(O!=null){this.addToArrayIfNotRepeated(this.dataMonitorFieldsToProcess[D],O);this.dataMonitorVariableMapping[D][O]=M.variable;this.dataMonitorVariableConversionFunction[D][O]=M.conversion_function}else{var J=M.custom;if(J!=null){this.dataMonitorCustomsToProcess[D].push([J,M.variable])}}}}I.dependent_datasource=false}for(G=0;G<B.length;G++){var C=B[G];var I=this.dataMonitorControl[C];I.dependent_datasource=true}for(G=0;G<IFactorDataMonitor.configDataMonitorDefinition.length;G++){var I=IFactorDataMonitor.configDataMonitorDefinition[G];if(I.dependent_datasource==false){var D=I.data_name;this.nonDependentDataMonitorObjectsName.push(D)}}};IFactorDataMonitor.prototype.initialiseTimerDataMonitor=function(){this.timerId=null};IFactorDataMonitor.prototype.timerDataMonitorExpired=function(){this.updateDataMonitor()};IFactorDataMonitor.prototype.startTimerDataMonitor=function(){var B=function(){iFactor.DataMonitor.timerDataMonitorExpired()};var A=IFactorDataMonitor.timerInterval*1000;this.timerId=window.setInterval(B,A)};IFactorDataMonitor.prototype.cancelTimerDataMonitor=function(){var A=this.timerId;if(A!=null){window.clearInterval(A);this.timerId=null}};IFactorDataMonitor.prototype.addAllToArrayIfNotRepeated=function(C,B){if(B==null||C==null){return }var A;for(A=0;A<B.length;A++){var D=B[A];this.addToArrayIfNotRepeated(C,D)}};IFactorDataMonitor.prototype.addToArrayIfNotRepeated=function(B,D){if(B==null){return }var A;for(A=0;A<B.length;A++){var C=B[A];if(C==D){return }}B.push(D)};IFactorDataMonitor.prototype.updateDataMonitor=function(F,B){if(this.operationModeIsTimer()){this.cancelTimerDataMonitor()}if(F==null){F=false}if(B==null){B=false}this.layersChangedList=new Array();this.variablesChangedList=new Array();var E=this.nonDependentDataMonitorObjectsName;while(E!=null&&E.length>0){var A=new Array();var D;for(D=0;D<E.length;D++){var G=E[D];var C=this.dataMonitorControl[G];this.updateDataMonitorObjectName(C,A)}E=A}this.setNewDataMonitorVariables();this.layersHandler.setForceReloadLayers(this.layersChangedList,true);if(B){this.stormCenter.onMapPan()}else{if(!F&&this.layersChangedList.length!=0&&this.operationModeIsTimer()&&IFactorDataMonitor.autoFullMapRefreshIfDataChanged==true){this.stormCenter.onMapPan()}}if(this.operationModeIsTimer()){this.startTimerDataMonitor()}};IFactorDataMonitor.prototype.setNewDataMonitorVariables=function(){for(var A in this.dataMonitorVariables){if(this.dataMonitorVariablesNew[A]===undefined){this.dataMonitorVariablesNew[A]=this.dataMonitorVariables[A]}}this.dataMonitorVariables=this.dataMonitorVariablesNew;this.dataMonitorVariablesNew=new Object()};IFactorDataMonitor.prototype.updateDataMonitorObjectName=function(D,C){var B=D.data_name;var G=D.event_history;var H=D.data_source;var E=null;if(G!=null&&this.eventHistoryHandler!=null){E=this.getObjectWithInfoFromEventHistoryHandler(G)}if(E!=null){this.getInfoForDataMonitorObjectName("object",B,E,C)}else{if(H!=null){var A=this.getFullDataSourcePath(H);A=A+iFactor.common.uniqueRequestTag(true);A=A.fixUrlSeparator();var F=iFactor.common.createXMLRequest();F.open("GET",A,false);F.send(null);if((F.readyState==4)&&(F.status!=404)){E=F.responseXML;this.getInfoForDataMonitorObjectName("xml",B,E,C)}}}};IFactorDataMonitor.prototype.getFullDataSourcePath=function(D){if(iFactor.common.valueIsTypeOf(D,"String")){return D}var C=this.getFullDataSourceDirectory(D);var B=this.getFullDataSourceFileName(D);if(C==null&&B==null){return null}else{var A="";if(C!=null){A=C;if(C!="/"){A+="/"}}if(B!=null){A=A+B}return A}};IFactorDataMonitor.prototype.getFullDataSourceDirectory=function(G){if(iFactor.common.valueIsTypeOf(G,"String")){return this.breakFullPathInDirectoryAndName(G)[0]}var F=G.data_directory;if(F==null){return null}if(iFactor.common.valueIsTypeOf(F,"String")){return F}var A=null;for(var D=0;D<F.length;D++){var E=F[D];for(var C in E){var B=E[C];if(A==null){A=""}else{A+="/"}if(C=="path"){A+=B}else{if(C=="datamonitor_variable"){A+=this.dataMonitorVariablesNew[B]}}}}return A};IFactorDataMonitor.prototype.getFullDataSourceFileName=function(A){if(iFactor.common.valueIsTypeOf(A,"String")){return this.breakFullPathInDirectoryAndName(A)[1]}return A.file};IFactorDataMonitor.prototype.breakFullPathInDirectoryAndName=function(B){B=B.fixUrlSeparator();var A=B.lastIndexOf("/");if(A==-1||A==0||A==(B.length-1)){return[null,B]}return[B.substring(0,A),B.substring(A+1)]};IFactorDataMonitor.prototype.getObjectWithInfoFromEventHistoryHandler=function(B){var A=B.object_property;if(A==null){return null}if(this.eventHistoryHandler.selectedEventHistoryData==null){return null}return this.eventHistoryHandler.selectedEventHistoryData[A]};IFactorDataMonitor.prototype.getInfoForDataMonitorObjectName=function(Q,L,R,B){if(L==null){return }var T,S;var D;var O=this.dataMonitorFieldsToProcess[L];var U=new Object();for(T=0;T<O.length;T++){D=O[T];if(Q=="xml"){U[D]=this.getFieldValueFromXML(R,D)}else{if(Q=="object"){U[D]=this.getFieldValueFromObject(R,D)}}}var N=this.dataMonitorControl[L];if(N.layer_dependencies!=null){for(T=0;T<N.layer_dependencies.length;T++){var I=N.layer_dependencies[T];if(I.condition_fields_change!=null){for(S=0;S<I.condition_fields_change.length;S++){D=I.condition_fields_change[S];if(this.dataMonitorFieldsValue[L][D]!==U[D]){var F=I.layers;this.addAllToArrayIfNotRepeated(this.layersChangedList,F);break}}}}}if(N.datamonitor_dependencies!=null){for(T=0;T<N.datamonitor_dependencies.length;T++){var H=N.datamonitor_dependencies[T];if(H.condition_fields_change!=null){for(S=0;S<H.condition_fields_change.length;S++){D=H.condition_fields_change[S];if(this.dataMonitorFieldsValue[L][D]!==U[D]){var M=H.dependencies;this.addAllToArrayIfNotRepeated(B,M);break}}}}}for(var G in U){this.dataMonitorFieldsValue[L][G]=U[G];var A=this.dataMonitorVariableMapping[L][G];var C=this.dataMonitorVariables[A];var E=this.dataMonitorVariableConversionFunction[L][G];var K=U[G];var V=this.executeFunction(E,K);if(C!==V){this.dataMonitorVariablesNew[A]=V;this.addToArrayIfNotRepeated(this.variablesChangedList,A)}else{this.dataMonitorVariablesNew[A]=C}}for(T=0;T<this.dataMonitorCustomsToProcess[L].length;T++){var J=this.dataMonitorCustomsToProcess[L][T];var P=J[0];var W=J[1];var C=this.dataMonitorVariables[W];var V=this.executeCustomFunction(P,this.dataMonitorControl[L]);if(C!==V){this.dataMonitorVariablesNew[W]=V;this.addToArrayIfNotRepeated(this.variablesChangedList,W)}else{this.dataMonitorVariablesNew[A]=C}}};IFactorDataMonitor.prototype.getFieldValueFromXML=function(B,C){if(B==null||C==null){return null}var A=B.getElementsByTagName(C).item(0);if(A!=null){return iFactor.common.getXMLNodeValue(A)}else{return null}};IFactorDataMonitor.prototype.getFieldValueFromObject=function(A,B){if(A==null||B==null){return null}return A[B]};IFactorDataMonitor.prototype.executeFunction=function(A,B){if(A!=null&&A!=""){return this[A](B)}else{return B}};IFactorDataMonitor.prototype.executeCustomFunction=function(B,A){if(B!=null&&A!=null){return this[B](A)}else{return null}};IFactorDataMonitor.prototype.getVariableValue=function(A){return this.dataMonitorVariables[A]};IFactorDataMonitor.prototype.operationModeIsMapInteraction=function(){return(IFactorDataMonitor.operationMode=="MAP_INTERACTION")};IFactorDataMonitor.prototype.operationModeIsTimer=function(){return(IFactorDataMonitor.operationMode=="TIMER")};IFactorDataMonitor.prototype.StringToInteger=function(A){return parseInt(A)};IFactorDataMonitor.prototype.IntegerToString=function(A){return A.toString()};IFactorDataMonitor.prototype.StringToFloat=function(A){return parseFloat(A)};IFactorDataMonitor.prototype.FloatToString=function(A){return A.toString()};IFactorDataMonitor.prototype.StringToBoolean=function(A){A=A.replace(/^\s*/,"").replace(/\s*$/,"");if(A=="true"){return true}else{if(A=="false"||A=="null"||A==""||A=="NaN"){return false}else{if(parseFloat(A)>0){return true}else{return false}}}};IFactorDataMonitor.prototype.BooleanToString=function(A){return A.toString()};IFactorDataMonitor.prototype.customGetFullDataDirectory=function(A){if(A==null){return null}var C=A.data_source;if(C==null){return null}var B=this.getFullDataSourceDirectory(C)+"/"+this.dataMonitorFieldsValue[A.data_name]["directory"];if(B!=null){return B.fixUrlSeparator()}else{return null}};iFactor.DataMonitor=null;
