
var MapbenderEvent=function(){this.register=function(aFunction,scope){var mpbnFunction=new MapbenderFunction(aFunction,scope);functionArray.push(mpbnFunction);};this.unregister=function(aFunction){for(var i=0,len=functionArray.length;i<len;i++){if(functionArray[i].getFunction()===aFunction){for(var j=i+1;j<len;j++){functionArray[j-1]=functionArray[j];}
delete functionArray[len-1];len=len-1;}}
functionArray.length=len;};this.isRegistered=function(aFunction){for(var i=0,len=functionArray.length;i<len;i++){if(functionArray[i].getFunction()===aFunction){return true;}}
return false;};this.trigger=function(properties,booleanOperator){if(!(functionArray.length>0)){return true;}
if(typeof(properties)!="object"){if(typeof(booleanOperator)=="undefined"){booleanOperator=properties;properties=undefined;}
else{}}
if(typeof(booleanOperator)=="string"){if(booleanOperator!="AND"&&booleanOperator!="OR"){}}
else if(typeof(booleanOperator)!="undefined"){}
var result;switch(booleanOperator){case"AND":result=true;break;case"OR":result=false;break;case"CAT":result="";break;default:result=true;break;}
if(log){var e=new Mb_notice("functions (after sort): "+functionArray.join(","));}
for(var i=0;i<functionArray.length;i++){switch(booleanOperator){case"AND":result=result&&functionArray[i].execute(properties);break;case"OR":result=result||functionArray[i].execute(properties);break;case"CAT":result+=functionArray[i].execute(properties);break;default:result=functionArray[i].execute(properties);break;}}
return result;};this.getProperties=function(){return propertiesObj;};var functionArray=[];var propertiesObj;var log=false;};var MapbenderFunction=function(aFunction,aScope){this.getFunction=function(){return func;};this.execute=function(argumentObj){if(typeof(func)=="function"||typeof(func)=="object"){if(scope){return func.call(scope,argumentObj);}
return func(argumentObj);}
else{var argumentNames=[];var argumentValues=[];for(var i in argumentObj){if(typeof(argumentObj[i])=="number"||typeof(argumentObj[i])=="boolean"){argumentNames.push(i);argumentValues.push(argumentObj[i]);}
else if(typeof(argumentObj[i])=="string"){argumentNames.push(i);argumentValues.push("'"+argumentObj[i]+"'");}}
var str="";str+="(function ("+argumentNames.join(", ")+") {";str+="return "+aFunction;str+="}";str+="("+argumentValues.join(", ")+"));";var returnValue=eval(str);return returnValue;}};var func=aFunction;var scope=aScope;};
var currentWmcExtensionData={};var restoredWmcExtensionData={};var mb_WfsReadSubFunctions=[];var mb_WfsWriteSubFunctions=[];var mb_l10nFunctions=[];var eventAfterMapRequest=new MapbenderEvent();var eventAfterMapImagesReady=new MapbenderEvent();var eventBeforeMapRequest=new MapbenderEvent();var eventBeforeFeatureInfo=new MapbenderEvent();var eventAfterLoadWMS=new MapbenderEvent();var eventInit=new MapbenderEvent();var eventBeforeInit=new MapbenderEvent();var eventAfterInit=new MapbenderEvent();var eventInitMap=new MapbenderEvent();eventInit.register(function(){$lm=$("#loading_mapbender");$cm=$("#complete_mapbender");$lm.empty();$cm.show();});var eventLocalize=new MapbenderEvent();var eventAfterMapObjectConstruction=new MapbenderEvent();var eventResizeMap=new MapbenderEvent();function mb_registerInitFunctions(stringFunction){eventInit.register(stringFunction);}
function mb_registerPreFunctions(stringFunction){eventBeforeMapRequest.register(stringFunction);}
function mb_registerFeatureInfoPreFunctions(stringFunction){eventBeforeFeatureInfo.register(stringFunction);}
function mb_registerSubFunctions(stringFunction){eventAfterMapRequest.register(stringFunction);}
function mb_registerMapObjectSubFunctions(stringFunction){eventAfterMapObjectConstruction.register(stringFunction);}
function mb_registerloadWmsSubFunctions(stringFunction){eventAfterLoadWMS.register(stringFunction);}
function mb_registerWfsReadSubFunctions(stringFunction){mb_WfsReadSubFunctions[mb_WfsReadSubFunctions.length]=stringFunction;}
function mb_registerWfsWriteSubFunctions(stringFunction){mb_WfsWriteSubFunctions[mb_WfsWriteSubFunctions.length]=stringFunction;}
function mb_registerL10nFunctions(stringFunction){eventLocalize.register(stringFunction)}
var mb_PanSubElements=[];function mb_registerPanSubElement(elName){var ind=mb_PanSubElements.length;mb_PanSubElements[ind]=elName;}
var mb_vendorSpecific=[];function mb_registerVendorSpecific(stringFunction){mb_vendorSpecific[mb_vendorSpecific.length]=stringFunction;}
function init(){eventInitMap.trigger();eventBeforeInit.trigger();eventInit.trigger();eventAfterInit.trigger();}
function writeTag(frameName,elName,tagSource){if(frameName&&frameName!==""){window.frames[frameName].document.getElementById(elName).innerHTML=tagSource;}
else if(!frameName||frameName===""){document.getElementById(elName).innerHTML=tagSource;}}
