var DNNC_ISOLDIE = false;
var DNNC_Control = {

	obj : null,

	init : function()
	{
		//DNN messes up the onload events so we have to check the DOM has loaded ourself, all these checks should do it
		if(typeof document != 'undefined' && typeof document.getElementsByTagName != 'undefined' && document.getElementById("dnnc_panel")!=null && typeof DNNC_Control != 'undefined' && DNNC_Control != null && document.getElementById('dnnc_panel_frame')!=null && document.getElementsByName("__VIEWSTATE").length > 0 && document.getElementsByName("__VIEWSTATE")[0].value != null)
 		{
			//clearTimeout(DNNC_INTERVAL);
  			var o = document.getElementById('dnnc_panel');
			o.onmousedown	= DNNC_Control.start;
			o.f = document.getElementById('dnnc_panel_frame');
			o.root = o;

			if (isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
			if (isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";

			o.minX	= 0;
			o.minY	= 0;
			o.maxX	= null;
			o.maxY	= null;

			o.root.onDNNC_ControlStart	= new Function();
			o.root.onDNNC_ControlEnd	= new Function();
			o.root.onDNNC_Control		= new Function();
			
			//Init State
			//document.write(document.cookie);			
			if(DNNC_Control.getCookie("dnnc_x")!=null && DNNC_Control.getCookie("dnnc_y")!=null)
			{				
				o.root.style["left"] = DNNC_Control.getCookie("dnnc_x");
				o.root.style["top"] = DNNC_Control.getCookie("dnnc_y");
				o.f.style["left"] = DNNC_Control.getCookie("dnnc_x");
				o.f.style["top"] = DNNC_Control.getCookie("dnnc_y");
			}

			DNNC_Control.resetTabs();

			switch(DNNC_Control.getCookie("dnnc_tab")) //designer modules tasks pages
			{
				case "designer":
					document.getElementById('dnnc_content_designer').style["display"] = "block";		
					document.getElementById('dnnc_tab_designer').className = "dnnc_active";	
					break;
				case "pages":
					document.getElementById('dnnc_content_pages').style["display"] = "block";		
					document.getElementById('dnnc_tab_pages').className = "dnnc_active";				
					DNNC_Control.pages();
					break;
				case "modules":
					document.getElementById('dnnc_content_modules').style["display"] = "block";		
					document.getElementById('dnnc_tab_modules').className = "dnnc_active";	
					break;
				default: //null or tasks
					document.getElementById('dnnc_content_tasks').style["display"] = "block";		
					document.getElementById('dnnc_tab_tasks').className = "dnnc_active";	
			}
				
			switch(DNNC_Control.getCookie("dnnc_panel")) //max min (must be after tabs as they reset this)
			{
				case "min":
					DNNC_Control.minimize();
					break;
				default:
					DNNC_Control.maximize();
			}			
				
			switch(DNNC_Control.getCookie("dnnc_position")) //move fix dock
			{
				case "fix":
					DNNC_Control.fix();
					break;
				default:
					DNNC_Control.move();
			}			
 		}
		else
		{
			//clearTimeout(DNNC_INTERVAL);
			DNNC_INTERVAL = setTimeout("DNNC_Control.init()",300);
		}
	},

	start : function(e)
	{
		var o = DNNC_Control.obj = this;
		e = DNNC_Control.fixE(e);

		var targ;
		if (e.target) targ = e.target;
		else if (e.srcElement) targ = e.srcElement;
		if (targ.nodeType == 3) // defeat Safari bug
			targ = targ.parentNode;
		
		if(targ.className!="dnnc_drag")
			return true;




		
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);

		o.root.onDNNC_ControlStart(x, y);

		o.lastMouseX	= e.clientX;
		o.lastMouseY	= e.clientY;

		if (o.minX != null)	o.minMouseX	= e.clientX - x + o.minX;
		if (o.maxX != null)	o.maxMouseX	= o.minMouseX + o.maxX - o.minX;
			
		if (o.minY != null)	o.minMouseY	= e.clientY - y + o.minY;
		if (o.maxY != null)	o.maxMouseY	= o.minMouseY + o.maxY - o.minY;


		document.onmousemove	= DNNC_Control.drag;
		document.onmouseup		= DNNC_Control.end;

		return false;
	},

	drag : function(e)
	{		

		e = DNNC_Control.fixE(e);
		var o = DNNC_Control.obj;

		var ey	= e.clientY;
		var ex	= e.clientX;
		var y = parseInt(o.root.style.top);
		var x = parseInt(o.root.style.left);

		var nx, ny;

		if (o.minX != null) ex = Math.max(ex, o.minMouseX);
		if (o.maxX != null) ex = Math.min(ex, o.maxMouseX);
		if (o.minY != null) ey = Math.max(ey, o.minMouseY);
		if (o.maxY != null) ey = Math.min(ey, o.maxMouseY);

		nx = x + ((ex - o.lastMouseX));
		ny = y + ((ey - o.lastMouseY));


		DNNC_Control.obj.root.style["left"] = nx + "px";
		DNNC_Control.obj.root.style["top"] = ny + "px";

		
		DNNC_Control.obj.f.style["left"] = nx  + "px";
		DNNC_Control.obj.f.style["top"] = ny + "px";

		DNNC_Control.obj.lastMouseX	= ex;
		DNNC_Control.obj.lastMouseY	= ey;

		DNNC_Control.obj.root.onDNNC_Control(nx, ny);
		return false;
	},

	end : function()
	{
		document.onmousemove = null;
		document.onmouseup   = null;
		DNNC_Control.setCookie("dnnc_x",DNNC_Control.obj.root.style["left"],"30");
		DNNC_Control.setCookie("dnnc_y",DNNC_Control.obj.root.style["top"],"30");	
		
		DNNC_Control.obj.root.onDNNC_ControlEnd(	parseInt(DNNC_Control.obj.root.style["left"]),	parseInt(DNNC_Control.obj.root.style["top"]));
		DNNC_Control.obj = null;
	},
	
	fixE : function(e)
	{
		if (typeof e == 'undefined') e = window.event;
		if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
		if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
		return e;
	},
	
	dock : function()
	{	
		document.getElementById('dnnc_panel').style["left"] = "0px";
		document.getElementById('dnnc_panel').style["top"] = "0px";
	
		document.getElementById('dnnc_panel_frame').style["left"] = "0px";
		document.getElementById('dnnc_panel_frame').style["top"] = "0px";
		
		DNNC_Control.setCookie("dnnc_x","0px","30");
		DNNC_Control.setCookie("dnnc_y","0px","30");			
	},
	
	maximize : function()
	{
		DNNC_Control.setCookie("dnnc_panel","max","30");
		
		document.getElementById('dnnc_panel').style["width"] = "750px";
		document.getElementById('dnnc_panel').style["height"] = "50px";

		
		document.getElementById('dnnc_panel_frame').style["width"] = "750px";
		document.getElementById('dnnc_panel_frame').style["height"] = "50px";
		
		document.getElementById('dnnc_panel').style["overflow"] = "visible";
		document.getElementById('dnnc_max').style["display"] = "none";
		document.getElementById('dnnc_min').style["display"] = "inline";
		
	},
	
	minimize : function()
	{
		DNNC_Control.setCookie("dnnc_panel","min","30");
		
		document.getElementById('dnnc_panel').style["width"] = "400px";
		document.getElementById('dnnc_panel').style["height"] = "20px";

		
		document.getElementById('dnnc_panel_frame').style["width"] = "400px";
		document.getElementById('dnnc_panel_frame').style["height"] = "20px";
		
		document.getElementById('dnnc_panel').style["overflow"] = "hidden";
		document.getElementById('dnnc_max').style["display"] = "inline";
		document.getElementById('dnnc_min').style["display"] = "none";
		
	},

	fix : function()
	{
		DNNC_Control.setCookie("dnnc_position","fix","30");	
		document.getElementById('dnnc_panel').style["position"] = "static";
		document.getElementById('dnnc_panel_frame').style["position"] = "static";

		document.getElementById('dnnc_panel').style["display"] = "block";
		document.getElementById('dnnc_panel_frame').style["display"] = "none";	//dont need frame
		
		document.getElementById('dnnc_dock').style["display"] = "none";
		document.getElementById('dnnc_fix').style["display"] = "none";
		document.getElementById('dnnc_move').style["display"] = "inline";
	},
	
	move : function()
	{
		DNNC_Control.setCookie("dnnc_position","move","30");
	
		if(DNNC_ISOLDIE)
		{
			document.getElementById('dnnc_panel').style["position"] = "absolute";
			document.getElementById('dnnc_panel_frame').style["position"] = "absolute";
		}
		else
		{
			document.getElementById('dnnc_panel').style["position"] = "fixed";
			document.getElementById('dnnc_panel_frame').style["position"] = "fixed";
		}
		document.getElementById('dnnc_dock').style["display"] = "inline";
		document.getElementById('dnnc_fix').style["display"] = "inline";
		document.getElementById('dnnc_move').style["display"] = "none";		
		
		document.getElementById('dnnc_panel').style["display"] = "block";
		document.getElementById('dnnc_panel_frame').style["display"] = "block";	
		
	},	

	resetTabs : function()
	{
		document.getElementById('dnnc_content_pages').style["display"] = "none";
		document.getElementById('dnnc_content_modules').style["display"] = "none";
		document.getElementById('dnnc_content_designer').style["display"] = "none";						
		document.getElementById('dnnc_content_tasks').style["display"] = "none";
		
		document.getElementById('dnnc_tab_pages').className = "";
		document.getElementById('dnnc_tab_modules').className = "";
		document.getElementById('dnnc_tab_designer').className = "";
		document.getElementById('dnnc_tab_tasks').className = "";	
	},
		
	tasks : function()
	{
		DNNC_Control.setCookie("dnnc_tab","tasks","30");
		
		DNNC_Control.maximize();
		DNNC_Control.resetTabs();
					
		document.getElementById('dnnc_content_tasks').style["display"] = "block";		
		document.getElementById('dnnc_tab_tasks').className = "dnnc_active";						
	},
	
	pages : function()
	{
		DNNC_Control.setCookie("dnnc_tab","pages","30");
		
		DNNC_Control.maximize();
		DNNC_Control.resetTabs();
					
		document.getElementById('dnnc_content_pages').style["display"] = "block";		
		document.getElementById('dnnc_tab_pages').className = "dnnc_active";						
	},
	
	modules : function()
	{
		DNNC_Control.setCookie("dnnc_tab","modules","30");
				
		DNNC_Control.maximize();
		DNNC_Control.resetTabs();
					
		document.getElementById('dnnc_content_modules').style["display"] = "block";		
		document.getElementById('dnnc_tab_modules').className = "dnnc_active";						
	},
	
	designer : function()
	{
		DNNC_Control.setCookie("dnnc_tab","designer","30");
		
		DNNC_Control.maximize();
		DNNC_Control.resetTabs();
					
		document.getElementById('dnnc_content_designer').style["display"] = "block";		
		document.getElementById('dnnc_tab_designer').className = "dnnc_active";						
	},


	setCookie : function (name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},

	getCookie : function (name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},

	deleteCookie : function (name) {
		createCookie(name,"",-1);
	},
	
	about : function (){
		alert("DNN Control Version " + DNNC_VERSION);
	}

};