function hide(id)
{
	try {
    dojo.byId(id).style.overflow = 'hidden';
    dojo.animateProperty(
	{
        node: id,
        duration: 500,
        properties:
		{
			height: {start: dojo.contentBox(id).h, end: 0},
                        margin: {end: 0},
                        marginBottom: {end: 0},
                        padding: {start: 10, end: 0},
                        paddingLeft: {end: 10 },
                        paddingRight: {end: 10 },
                        borderWidth: {start: 1, end: 0}
                },
                onEnd: function(){
                        dojo.query('#' + id).orphan();
                        if(dojo.query('.information_message').length == 0){
                                dojo.animateProperty({
                                        node: dojo.query('#information_messages')[0],
                                        duration: 500,
                                        properties: {
                                                padding: {start: 5, end: 0}
                                        },
                                        onEnd: function(){
                                                dojo.query('#information_messages').orphan();
                                        }
                                }).play();
                        }
                }
        }).play(); 
	}catch(e){
   
}
}

//this is an id for the creation of floating panes - do not touch it!
var floatid = 0;

dojo.require("dojox.layout.FloatingPane");
dojo.require("dijit.form.Button");
dojo.require("dojo.parser");
dojo.require("dijit.form.FilteringSelect");
dojo.require("dijit.TitlePane");

function makeFloatingPane(title, content, width, height, top, left, script)
{
    width = Math.round(width);
    height = Math.round(height);
	top = Math.round(top);
	left = Math.round(left);
	
	content = unescape(content);
	content = html_entity_decode(content);	
	script = unescape(script);
	script = html_entity_decode(script);	
	setTimeout("makeFloatingPaneCaller('"+title+"', '"+escape(content)+"', '"+width+"', '"+height+"', '"+top+"', '"+left+"', '"+escape(script)+"')", 100); 
}

var popupz = 1000;

function makeFloatingPaneCaller(title, content, width, height, top, left, script)
{
	content = unescape(content);
	//do we need to do this again?
	//content = html_entity_decode(content);	
	
	dojo.create("div", 
				{dojoType: "dojox.layout.FloatingPane",
				 id: "dFloatingPane"+floatid, 
				 title: title,
				 resizable: "true",
				 dockable: "false",
				 style: "position:absolute;top:"+top+"px;left:"+left+"px;width:"+width+"px;height:"+height+"px;visibility:hidden;z-index:"+popupz+";",
				 innerHTML: content
				}, 
			"thebody");
	
	popupz++;
	dojo.parser.parse();
	dijit.byId('dFloatingPane'+floatid).show();
	eval(unescape(script));
	floatid++;
}


function useWYSIWYG() {	
		tinyMCE.init({
			mode : "textareas",
			theme : "advanced",
			plugins : "autolink,lists,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

			theme_advanced_buttons1 : "newdocument,pasteword,|,undo,redo,|,search,replace,|,removeformat,visualaid,cleanup,|,fullscreen,preview",
			theme_advanced_buttons2 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,fontselect,fontsizeselect,|,forecolor,backcolor",
			theme_advanced_buttons3 : "bullist,numlist,|,outdent,indent,|,link,unlink,anchor,image,charmap,media,hr,|,sub,sup",
			theme_advanced_buttons4 : "tablecontrols",
			theme_advanced_toolbar_location : "top",
			theme_advanced_toolbar_align : "left",
			theme_advanced_statusbar_location : "bottom",
			theme_advanced_resizing : true,

			skin : "o2k7",
			skin_variant : "silver",
		
			convert_urls : false
		});
	}

//these need to be updated to reflect the middle of the window
var middleTOP = 100;
var middleLEFT = 100;

function html_entity_decode(str) 
{
        var ta = document.createElement("textarea");
        ta.innerHTML=str.replace(/</g,"&lt;").replace(/>/g,"&gt;");
        toReturn = ta.value;
        ta = null;
        return toReturn
}

//returns the width, height, x and y scroll positions
function getWindowPosition()
{
  var myWidth = 800;
  var myHeight = 600;
  var scrOfX = 0;
  var scrOfY = 0;
  
  if( typeof( window.innerWidth ) == 'number' )
  {
      myWidth = window.innerWidth;
      myHeight = window.innerHeight;
  }
  else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
  {
      myWidth = document.documentElement.clientWidth;
      myHeight = document.documentElement.clientHeight;
  } 
  else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
  {
      myWidth = document.body.clientWidth;
      myHeight = document.body.clientHeight;
  }
  
  if( typeof( window.pageYOffset ) == 'number' )
  {
      scrOfY = window.pageYOffset;
      scrOfX = window.pageXOffset;
  } 
  else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
  {
      scrOfY = document.body.scrollTop;
      scrOfX = document.body.scrollLeft;
  } 
  else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
  {
      scrOfY = document.documentElement.scrollTop;
      scrOfX = document.documentElement.scrollLeft;
  }
  
  return [ myWidth, myHeight, scrOfX, scrOfY ];
}

//get middle point of screen
function getMiddlePoint()
{
	var dims = getWindowPosition();
	var x = (dims[0] / 2) + dims[2];
	var y = (dims[1] / 2) + dims[3];
	x = Math.round(x);
	y = Math.round(y);
	return [ x, y ];
}

//do dojo data get
function dojoGet(targetID, targetURL) 
{
    var targetNode = dojo.byId(targetID);

    var xhrArgs =
	{
        url: targetURL,
        handleAs: "text",
        load: function(data)
		{
			targetNode.innerHTML = data;
			dojo.parser.parse();
        },
        error: function(error)
		{
            popupErrorMessage("An unexpected error occurred: " + error);
        }
    }

    var deferred = dojo.xhrGet(xhrArgs);
}


//set to loading
function setElementLoading(id)
{
	dojo.byId(id).innerHTML = '<img src="http://www.mildert.co.uk/internal/template/img/tundra/loading.gif">';
}

function deleteRow(tableID, rowNumber)
{
    try
	{
        var table = document.getElementById(tableID);
        var rowCount = table.rows.length;
 
        for(var i=0; i<rowCount; i++)
		{
            var row = table.rows[i];
            
			if(rowNumber == i)
			{
				table.deleteRow(i);
			}
		}
    }
	catch(e)
	{
        alert(e);
    }
}

function doAjaxTableRowAdd(targetURL, tableID, tableRow)
{
	var xhrArgs =
	{
		url: targetURL,
		handleAs: "json",
		load: function(data)
		{
			if(data.status == "success")
			{
				addRow(tableID, tableRow);
			}
			else
			{
				popupErrorMessage(data.message);
			}
			
			eval(data.script);
		},
		error: function(error)
		{
			popupErrorMessage("An unexpected error occurred: " + error);
		}
	}

	var deferred = dojo.xhrGet(xhrArgs);
}

//for simple operations that require only one hit to the external site
function doBinaryAjaxRequest(targetURL)
{
	var xhrArgs =
	{
		url: targetURL,
		handleAs: "json",
		load: function(data)
		{			
			if(data.status == "success")
			{
				popupSuccessMessage(data.message);
			}
			else
			{
				popupErrorMessage(data.message);
			}
			
			eval(data.script);
		},
		error: function(error)
		{
			popupErrorMessage("An unexpected error occurred: " + error);
		}
	}

	var deferred = dojo.xhrGet(xhrArgs);
}

function doAjaxTableRowRemoval(targetURL, tableID, tableRow)
{
	var xhrArgs =
	{
		url: targetURL,
		handleAs: "json",
		load: function(data)
		{
			if(data.status == "success")
			{
				deleteRow(tableID, tableRow);
			}
			else
			{
				popupErrorMessage(data.message);
			}
			
			eval(data.script);
		},
		error: function(error)
		{
			popupErrorMessage("An unexpected error occurred: " + error);
		}
	}

	var deferred = dojo.xhrGet(xhrArgs);
}

function popupMessage(message, title, style)
{
	makeFloatingPaneCaller(title, '<div class="'+style+'">'+message+'</div>', '400', '160', getMiddlePoint()[1]-(160/2), getMiddlePoint()[0]-(400/2), '')
}

function popupErrorMessage(message)
{
	popupMessage(message, 'An error has occured.', 'error');
}

function popupSuccessMessage(message)
{
	popupMessage(message, 'The operation completed successfully', 'success');
}

function popupNoticeMessage(message)
{
	popupMessage(message, 'Notice:', 'notice');
}

function addRow(tableID, rows) 
{
	rows = eval(rows);
    var table = document.getElementById(tableID);
 
    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);
 
    for(var a=0; a<rows.length; a++)
	{
		var cell = row.insertCell(a);
        cell.innerHTML = rows[a];
	}
}

