var EventHandler = new function()
{
    this.init = function()
    {
		// DEBUG.
		//alert('EventHandler init().');

		dojo.event.topic.subscribe("/ListClicks",EventHandler,captureTableClick);
		dojo.event.topic.subscribe("/SearchInput",EventHandler,captureSearchInput);
		dojo.event.topic.subscribe("/WindowClicks",EventHandler,crossFade);
		// dojo.event.topic.subscribe("dragEnd",EventHandler,dropHandler);
		dojo.event.topic.subscribe("/UserListAdd",EventHandler,listAddHandler);
		dojo.event.topic.subscribe("/MenuClicks",EventHandler,captureMenuClick);
		dojo.event.topic.subscribe("/DLogClicks",EventHandler,captureDLogClick);
		dojo.event.topic.subscribe("/WindowClosure",EventHandler,windowClosureHandler);
		dojo.event.topic.subscribe("/DataClicks",EventHandler,captureDataClick);
		dojo.event.topic.subscribe("/SearchWindowDisplayButton",EventHandler,captureSearchWindowDisplayClick);
    }

    function crossFade(message)
    {
		Animations.crossFade(message);
    }

    function windowClosureHandler(message)
    {
		var wind = message;
		var title = wind.title;
		var index = wind.index;
		var type_index = wind.type_index;
		var type = wind.type;
		WM.cleanupWindow(index,type);
    }

    function listAddHandler(message)
    {
		var items = message.items;
		var position = message.position;
		var referenceNode = message.refNode;
		var list = referenceNode.parentNode;
		if(position=="append")
			list = referenceNode;
		//alert(items + ":" + referenceNode.tagName + ":" + position + ":" + list);
		for(var i =0;i<items.length;i++)
		{
			MCP.listAdd(list,items[i]);
		}
		if(items.length == 1)	// Its a single window (if more, its from a result table)
		    WM.closeWindow(WM.activeWindow);
    }

    function dropHandler(message)
    {
		if(message.source.domNode.tagName == 'IMG')
		{
		    var dropped = message.source.domNode;
		    var newContainer = dropped.parentNode;	
		    if(newContainer.contents)
		    {
				if(MCP.in_array(newContainer.contents,dropped.title))
			    {
					alert('already in!');
			    }
			    else
			    {
			    	//dropped.title + ' -> ' + newContainer.title);
			    	MCP.listAdd(newContainer,dropped.title);
			    }
			    newContainer.removeChild(dropped);
			    WM.closeWindow(WM.activeWindow);
		    }
		}
		else if(message.target && message.source.domNode.dojoObject.tableType.substr(0,4) == "rslt")
		{
		    var a = message.source.domNode.dojoObject.getValue().split(",");
		    var type = message.source.domNode.dojoObject.tableType;
		    var type = 'data_' + type.substr(5,type.length);
		    var target = message.target.parentContainer ? message.target.parentContainer: message.target;
		    if(a[0] != '')
		    {
				for(var i=0;i<a.length;i++)
				{
				    var adding = type + '_' + a[i];
				    if(!MCP.in_array(target.contents,adding)) 
				    { MCP.listAdd(target,adding); }
				}
		    }
		}
    }

	//--------------------------------------------------------------------------------
	//----- Called after clicking the [Display] button. -----
    function captureSearchWindowDisplayClick(message)
    {
    	MCP.chooseWindow('rslt_' + message);
    }

    function captureDLogClick(message)
    {
    	MCP.chooseWindow('user_' + message);
    }

    function captureDataClick(message)
    {
		MCP.chooseWindow('data_' + message);
    }
   
    function captureSearchInput(message) 
    {
		text = message.content;
		var A_temp = text.split(":");
		var type=A_temp[0];
		var str =A_temp[1];

		/*
		dojo.io.bind(
			{url: 'AjaxDB.php?requestType=countResults&type=CONTIG&str=' + 
			dojo.byId('contigSelect_nameFilter').value,      
			load: MCP.contigResults,
			mimetype:'text/plain'});
		*/
    }

    function captureTableClick(message) 
    {
		obj = message.content;
		var arr = obj.tableType.split("_");
		
		if(arr[0] == "rslt")
		{
	//	    this.chooseWindow("data_" + arr[1] + '_' + obj.getValue());
		}
    }

    function captureMenuClick(message)
    {
		var evt = message.evt;
		var text = message.txt;
		if(text == 'Clicked')
		{
			Dialog.dialogue_CreateUserWindow.show();
			Dialog.dialogue_CreateUserWindow.inputbox.focus();
		}
		else if(text == 'Save')
		{
		    Dialog.dialogue_SaveWorkspace.show();
		    Dialog.dialogue_SaveWorkspace.textarea.fillme();
		}
		else if(text == 'Load')
		{
		    Dialog.dialogue_LoadWorkspace.show();
		}
		else if(text == "Order_Primer")
		{
		    var str = '';
		    for(var i=0;i<evt.contents.length;i++) { str += evt.contents[i] + ',';}
		    WM.openedWindow = window.open('fun_OrderPrimer.php','primerOrdering','width=640,height=480,resizable=yes');
		    this.runItStr = str;
		    this.runIt = function() {WM.openedWindow.init(this.runItStr)};
		    dojo.lang.setTimeout(this,"runIt",1000);
		}
    }
}
