var RETVAL_NONE=0;var RETVAL_ORIGINAL=1;var RETVAL_BEFORE=2;var RETVAL_AFTER=3;function GenericEventInterceptor(g,e,f,b,c){this.handlerThis=g;this.fnOrigHandler=e;this.fnCallBefore=f;this.fnCallAfter=b;this.nRetValFlag=c?c:RETVAL_ORIGINAL;ASSERT("object"==typeof g,"arg 1 invalid: Object expected");ASSERT((null==e)||("function"==typeof e.apply)||("object"==typeof e),"arg 2 invalid: original function expected");ASSERT((null==f)||("function"==typeof f.apply),"arg 3 invalid: function expected");ASSERT((null==b)||("function"==typeof b.apply),"arg 4 invalid: function expected");var a=this;function d(i){var h=origRes=aftrRes=null;if((null!=a.fnCallBefore)&&("function"==typeof a.fnCallBefore.apply)){h=a.fnCallBefore.apply(a.handlerThis,[i])}if(null!=a.fnOrigHandler){if("function"==typeof a.fnOrigHandler.apply){origRes=a.fnOrigHandler.apply(a.handlerThis,[i])}else{origRes=a.fnOrigHandler([i])}}if((null!=a.fnCallAfter)&&("function"==typeof a.fnCallAfter.apply)){aftrRes=a.fnCallAfter.apply(a.handlerThis,[i])}switch(a.nRetValFlag){case RETVAL_NONE:return void (0);case RETVAL_BEFORE:return h;case RETVAL_ORIGINAL:return origRes?origRes:void (0);case RETVAL_AFTER:return aftrRes;default:ASSERT(false);return void (0)}}return d};