framework.eventmodel={_eventId:1,addElementEvent:function(a,d,c){if(!framework.util.isType(a,framework.DataType.STRING)){return framework.Status.INVALID_ELEMENT_TYPE;}var b=document.getElementById(a);if(framework.util.isUndefinedOrNull(b)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}else{return framework.eventmodel.addEvent(b,d,c);
}},addEvent:function(b,d,c){if(framework.util.isUndefinedOrNull(b)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}if(!framework.util.isType(d,framework.DataType.STRING)){return framework.Status.INVALID_ELEMENT_TYPE;}if(!framework.util.isType(c,framework.DataType.FUNCTION)){return framework.Status.EVENT_HANDLER_NOT_A_FUNCTION;
}if(!framework.eventmodel._isEventTypeSupported(d)){return framework.Status.UNSUPPORTED_EVENT_TYPE;}if(!c.uniqueEventId){c.uniqueEventId=framework.eventmodel._eventId+=1;}if(framework.eventmodel._isEventHandlerRegistered(b,d,c)){return framework.Status.DUPLICATE_EVENT_HANDLER;}if(!b.events){b.events={};
}var a=b.events[d];if(!a){a=b.events[d]={};if(!b.addEventListener&&b["on"+d]){a[0]=b["on"+d];}}a[c.uniqueEventId]=c;if(b.addEventListener){b.addEventListener(d,framework.eventmodel._handleEvent,false);}else{b["on"+d]=framework.eventmodel._handleEvent;}return framework.Status.SUCCESS;},removeElementEvent:function(a,d,c){if(!framework.util.isType(a,framework.DataType.STRING)){return framework.Status.INVALID_ELEMENT_TYPE;
}var b=document.getElementById(a);if(framework.util.isUndefinedOrNull(b)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}else{return framework.eventmodel.removeEvent(b,d,c);}},removeEvent:function(a,c,b){if(framework.util.isUndefinedOrNull(a)){return framework.Status.ELEMENT_DOES_NOT_EXIST;}if(!framework.util.isType(c,framework.DataType.STRING)){return framework.Status.INVALID_ELEMENT_TYPE;
}if(!framework.util.isType(b,framework.DataType.FUNCTION)){return framework.Status.EVENT_HANDLER_NOT_A_FUNCTION;}if(!framework.eventmodel._isEventTypeSupported(c)){return framework.Status.UNSUPPORTED_EVENT_TYPE;}else{if(framework.eventmodel._isEventHandlerRegistered(a,c,b)){delete a.events[c][b.uniqueEventId];
}else{return framework.Status.EVENT_HANDLER_NOT_FOUND;}}return framework.Status.SUCCESS;},getEventTarget:function(a){if(framework.util.isUndefinedOrNull(a)){return null;}if(!framework.util.isType(a,framework.DataType.OBJECT)){return null;}var b=a.target||a.srcElement;if(b.nodeType==3){b=b.parentNode;
}return b;},_handleEvent:function(d){var c=true;d=d||framework.eventmodel._fixEvent(((this.ownerDocument||this.document||this).parentWindow||window).event);var b=this.events[d.type];for(var a in b){this.handleThisEvent=b[a];if(this.handleThisEvent(d)===false){c=false;}}return c;},_fixEvent:function(a){a.preventDefault=function(){this.returnValue=false;
};a.stopPropagation=function(){this.cancelBubble=true;};return a;},_isEventHandlerRegistered:function(a,c,b){if(a.events&&a.events[c]){if(!framework.util.isUndefinedOrNull(a.events[c][b.uniqueEventId])){return true;}}return false;},_isEventTypeSupported:function(b){var c=false;for(var a in framework.EventType){if(framework.EventType[a]==b){c=true;
break;}}return c;},loaded:true};