/*
 * Author : Simon Haddon simon@sibern.com.au
 * Written: 27/08/2007
 * Version: $Id$
 * 
 * Description :
 * 	Provides functions to load header files
 * 
 * Credits:
 *   Code compression.
 *   http://alex.dojotoolkit.org/shrinksafe/
 * 
 */
 
/**********************************************************************************/
/* Included scripts and css for mui user interface controls (top)
 */
function muiLoadControllerFiles(urlPath, compress)
{
	var compressName = "";
	if (compress) compressName = ".compressed";
	if (!urlPath) urlPath = "mui/include/";
	if (urlPath.charAt(urlPath.length - 1) != "/") urlPath += "/";
	
	muiIncludeHeader.Once("javascript",urlPath+"muiUtils"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiWindows"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiControls"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"subCommon.js");
	muiIncludeHeader.Once("css",       urlPath+"subModal.css");
	muiIncludeHeader.Once("javascript",urlPath+"subModal"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"wz_tooltip"+compressName+".js");
}

/**********************************************************************************/
/* Included scripts and css for mui map controls. In iframe
 */
function muiLoadMapControllerFiles(urlPath, compress)
{
	var compressName = "";
	if (compress) compressName = ".compressed";
	if (!urlPath) urlPath = "mui/include";
	if (urlPath.charAt(urlPath.length - 1) != "/") urlPath += "/";

	muiIncludeHeader.Once("javascript",urlPath+"wz_jsgraphics"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"subCommon.js");
	muiIncludeHeader.Once("css",       urlPath+"subModal.css");
	muiIncludeHeader.Once("javascript",urlPath+"subModal"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"excanvas"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiUtils"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiCoords"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiGraphics"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiMapControls"+compressName+".js");
}

function muiLoadPrintFiles(urlPath, compress)
{
	var compressName = "";
	if (compress) compressName = ".compressed";
	if (!urlPath) urlPath = "mui/include";
	if (urlPath.charAt(urlPath.length - 1) != "/") urlPath += "/";

	muiIncludeHeader.Once("javascript",urlPath+"wz_jsgraphics"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"excanvas"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiUtils"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiGraphics"+compressName+".js");
	muiIncludeHeader.Once("javascript",urlPath+"muiMapControls"+compressName+".js");
}


/**********************************************************************************/
var muiIncludeHeader = function () 
{
  var muiIncludeHeader = function (srcType, srcFileName) 
  {
    var reg = null;
    for (var i = 0; reg = muiIncludeHeader.registry[i]; i++) 
    {
      if (reg == srcFileName) 
        return false;
    }
    
    var head   = document.getElementsByTagName('head')[0];
    var script = null;

    if (srcType.toLowerCase() == "css")
    {
    	script = document.createElement("link");
	    script.setAttribute('rel', 'stylesheet');
	    script.setAttribute('type', 'text/css');
	    script.setAttribute('href', srcFileName.match(/^\//) ? srcFileName : muiIncludeHeader.base + srcFileName);
    } 
    else if (srcType.toLowerCase() == "javascript")
		{     
    	script = document.createElement("script");
	    script.setAttribute('language', 'javascript');
	    script.setAttribute('type', 'text/javascript');
	    script.setAttribute('src', srcFileName.match(/^\//) ? srcFileName : muiIncludeHeader.base + srcFileName);
		}
		else
			return false;
      
    head.appendChild(script);
    return script;
  };
  
  muiIncludeHeader.registry = [];
  
  muiIncludeHeader.Once = function (srcType, srcFileName) 
  {
    var script = muiIncludeHeader(srcType, srcFileName);
    muiIncludeHeader.registry[muiIncludeHeader.registry.length] = srcFileName;
    return script;
  };
  
  var base = document.getElementsByTagName("base")[0];
  muiIncludeHeader.base = base ? base.href : "";

  return muiIncludeHeader;
}();

/**********************************************************************************/
/* Event handling */
var muiEvents = new Array();
function muiEventHandler(e)
{
	var e_out;
	var ie_var = "srcElement";
	var moz_var = "target";
	var ok = false;

	try 
	{ 
		e[moz_var] ? e_out = e[moz_var]["id"] : e_out = e[ie_var]["id"];
		ok = e_out && e && muiEvents; // Check that all the bits exist
		if (!e) e = window.event; // For IE

		//alert(e.toString());

		switch(e.type)
		{
			case "mousemove":
					muiEvents[e_out].mouseMove(e);
				break;
			case "mouseup":
				muiEvents[e_out].mouseUp(e);
				break;
			case "mousedown":
				muiEvents[e_out].mouseDown(e);
				break;
			case  "mouseout":
				muiEvents[e_out].mouseOut(e);
				break;
			case  "mouseover":
				muiEvents[e_out].mouseOver(e);
				break;
			case  "DOMMouseScroll":
			case  "mousewheel":
				muiEvents[e_out].mouseWheel(e);
				break;
			default:
				//	alert('type = '+e.type+'\nid = '+e_out);
		}
	
	} 
	catch (ed) 
	{
		//muiEvents[e_out].mouseMoveActive = false;
		//alert('Error in mouse handle:'+ed.toString());
		// Do nothing much.  Don't use this unless you are game
		// alert('Unable to discover mouse event ['+e.type+'] on ['+e_out+']');		
	}
}
/**********************************************************************************/
