
function Lookup(){var me=this;me.singleton=new Object();me.items=new Object();me.listeners=new Object();me.setSingleton=function(key,theValue){me.singleton[key]=theValue;if(!me.items[key]){me.items[key]=new Array();}
else{if(me.items.length>1){me.items[key].splice(1,me.items.length-1);}}};me.addListener=function(key,listener){if(me.listeners[key]==undefined){me.listeners[key]=new Array();}
if(!me.items[key]){me.items[key]=new Array();}
var arr=me.listeners[key];arr[arr.length]=listener;};me.getValue=function(key){return me.items[key];}
me.removeListener=function(key,listener){var arr=me.listeners[key];if(arr!=undefined){var foundIndex;for(var i=arr.length-1;i>=0;--i){var nextListeners=arr[i];if(nextListeners==listener){foundIndex=i;}}
if(foundIndex!=null){arr.splice(foundIndex,1);}}};this.addValue=function(key,value){var values=this.items[key];if(!values){values=new Array();this.items[key]=values;}
if(this.singleton[key]){values[0]=value;}
else{values[values.length]=value;}
this.notifyListeners(key);};me.removeValue=function(key,value){var values=me.items[key];if(values){var foundIndex;for(var i=values.length-1;i>=0;--i){var nextValue=values[i];if(nextValue==value){foundIndex=i;}}
if(foundIndex!=null){values.splice(foundIndex,1);}
me.notifyListeners(key);}};me.getValues=function(key){var values=me.items[key];if(me.singleton[key]){if(values.length>0){return values[0];}
else{return null;}}
else{return values;}};me.notifyListeners=function(key){var values=me.items[key];var keyListeners=me.listeners[key];if(keyListeners!=undefined){for(var i=keyListeners.length-1;i>=0;--i){var nextListeners=keyListeners[i];if(nextListeners!=undefined){if(me.singleton[key]){if(values.length>0){nextListeners(values[0]);}
else{nextListeners(null);}}
else{nextListeners(values);}}}}};};function addLookup(object){object.lookup=new Lookup();}
var GlobalLookup=new Lookup();