function chainHandler(o,strHook,args){var astr="";for(var a=0;a<args.length;a++){astr+="args["+a+"]";if(a!=(args.length-1))astr+=", ";}var bSuccess=true;var valReturn;for(var i=0;i<o[strHook+"Chain"].length;i++){eval("valReturn = o[strHook + \"Chain\"][i]("+astr+");");if(!valReturn){bSuccess=false;}}if(bSuccess){return valReturn;}else{return false;}}function insertHandler(obj,strHook,newHandler){if(!newHandler.prototype){var strNewHandler=newHandler;newHandler=new Function(strNewHandler);newHandler.obj=obj;}if(!obj[strHook]){obj[strHook]=newHandler;}else{if(!obj[strHook+"Chain"]){var fnTemp=obj[strHook];obj[strHook]=new Function("return chainHandler(this, \""+strHook.toString()+"\", arguments)");obj[strHook+"Chain"]=new Array();obj[strHook+"Chain"][0]=fnTemp;}obj[strHook+"Chain"][obj[strHook+"Chain"].length]=newHandler;}}function removeHandler(obj,strHook,newHandler){if(!newHandler.prototype){var strNewHandler=newHandler;newHandler=new Function(strNewHandler);newHandler.obj=obj;}newHandler=newHandler.toString();if(!obj[strHook]){}else{if(!obj[strHook+"Chain"]){if(obj[strHook].toString()==newHandler){obj[strHook]=null;}}else{var aNew=new Array();for(var i=0;i<obj[strHook+"Chain"].length;i++){if(obj[strHook+"Chain"][i].toString()!=newHandler){aNew[aNew.length]=obj[strHook+"Chain"][i];}}obj[strHook+"Chain"]=aNew;}}}