/**
 * doijs package
 * 
 * @author donna iwan setiawan
 * @version 0.1 
 * copyright - (c) 2007 - 2008 donna iwan setiawan
 * license - GPL version 3 or any later version <http://www.gnu.org/licenses/gpl-3.0.txt>
 */
doi.message=new function(){var _length=0;var _queue={};var _index=0;this.data={};this.catchMessage=function(message,func,data){var fnd={func:func,my:data};return registerMessage(message,fnd);};function executeMessage(message,info){if(_queue[message]){for(var m in _queue[message]){var msg=_queue[message][m];if(doi.dom.isObject(info)){doi.message.data=info;}if(msg.my){doi.message.data.my=msg.my;}if(doi.dom.isFunction(msg.func)){msg.func(doi.message.data,msg.my);}else{eval('if(window.'+msg.func+'){'+msg.func+'(doi.message.data,doi.message.data.my);}');}doi.message.data={};}}};function findMessageFunctionIndex(message,func){var queue=_queue[message];for(var index in queue){if(queue[index].func==func){return index;}}return-1;};function registerMessage(message,fnd){if(_queue[message]){var index=findMessageFunctionIndex(message,fnd.func);if(index >-1){return index;}else{var index='msg'+_index;_index++;_queue[message][index]=fnd;return index;}}else{var index='msg'+_index;_index++;_queue[message]={};_queue[message][index]=fnd;return index;}};this.removeMessage=function(message,index){if(_queue[message]){delete _queue[message][index];}};this.throwMessage=function(message,info){if(!doi.dom.isObject(info)){info={};}executeMessage(message,info);};this.fire=function(message,info){this.throwMessage(message,info);};};
