var observer = (function() {
	
	var aObservers = [];
	
	return {
		attach: function(eventType, mObserver, addtype) {
			if(!(mObserver instanceof Object)) return;
	        if(!aObservers[eventType]) aObservers[eventType] = [];	
	        addtype = addtype || 'end';
	        if (addtype == 'start') aObservers[eventType].unshift(mObserver);
	        else if (addtype == 'end') aObservers[eventType].push(mObserver);
		},
		detach: function() {
			if(aObservers[sEventType] && aObservers[sEventType].contains(mObserver)) aObservers[sEventType].remove(mObserver);
		},
		notify: function(eventType, ar) {
			if(!aObservers[eventType]) return;
	        for(var i = 0, aObserversElems = aObservers[eventType], iLength = aObserversElems.length; i < iLength; i++) {
	            if(aObserversElems[i] instanceof Function) aObserversElems[i](eventType, ar);
	        }
		}
	}
})();

