// constants
var ie    = document.all;
var nn6   = document.getElementById&&!document.all;
var docEl = (
             typeof document.compatMode != "undefined" &&
             document.compatMode        != "BackCompat"
            )? "documentElement" : "body";

// properties
var x, y;
var dobj;
var mouse_X_Coord;
var mouse_Y_Coord;

// global
var containerMoveEnabled = false;


// init
	function init_mousemove() {
	    if(document.layers)
			document.captureEvents(Event.MOUSEMOVE);

	    document.onmousemove = dpl_mouse_pos;
	}


// handlers
	function movemouse(e) {
		if (containerMoveEnabled) {
			dobj.style.left = (nn6 ? tx + e.clientX - x : tx + event.clientX - x) + 'px';
			dobj.style.top  = (nn6 ? ty + e.clientY - y : ty + event.clientY - y) + 'px';

			document.getElementById('windowX').value = (nn6 ? tx + e.clientX - x : tx + event.clientX - x);
			document.getElementById('windowY').value = (nn6 ? ty + e.clientY - y : ty + event.clientY - y);

			return false;
		}
	}

	function selectmouse(e) {
		var fobj       = nn6 ? e.target : event.srcElement;
		var topelement = nn6 ? "HTML" : "BODY";

		while ((fobj.tagName != "HTML" && fobj.tagName != "BODY" ) && fobj.className != "titlebar") {
			fobj = nn6 ? fobj.parentNode : fobj.parentElement;
		}

		if (fobj.className == "titlebar") {
			containerMoveEnabled = true;

			dobj = document.getElementById('dynpg_calendar_container');

			tx = parseInt(dobj.style.left + 0);
			ty = parseInt(dobj.style.top + 0);

			x = nn6 ? e.clientX : event.clientX;
			y = nn6 ? e.clientY : event.clientY;

			document.onmousemove = movemouse;
			return false;
		}
	}

	function dpl_mouse_pos(e) {
	    var xPos    =  e? e.pageX : window.event.x;
	    var yPos    =  e? e.pageY : window.event.y;

	    if (document.all && !document.captureEvents) {
	        xPos    += document[docEl].scrollLeft;
	        yPos    += document[docEl].scrollTop;
	    }

	    if (document.layers)
			routeEvent(e);

		mouse_X_Coord = xPos;
		mouse_Y_Coord = yPos;

		return (new Array(xPos, yPos));
	}


// global functions
	/**
	 *
	 * @access public
	 * @return void
	 **/
	function switchMonth(id, next) {
		var html4El = document.getElementById('calendar_' + id);
		html4El.style.display = 'none';

		m  = (id + next) % 12;
		id = m == 0? 12: m;

		var html4El = document.getElementById('calendar_' + id);
		html4El.style.display = 'block';

		return false;
	}

	/**
	 *
	 * @access public
	 * @return void
	 **/
	function switchElement(id, style) {
		var html4El = document.getElementById(id);

		html4El.style.display = (html4El.style.display == style)? 'none': style;

		return false;
	}

	/**
	 *
	 * @access public
	 * @return void
	 **/
	function hideElement(id) {
		var html4El = document.getElementById(id);

		html4El.style.display = 'none';

		return false;
	}

	function moveElement(id) {
		var html4El = document.getElementById(id);

		html4El.style.display = 'block';

		html4El.style.left = mouse_X_Coord + 'px';
		html4El.style.top  = mouse_Y_Coord + 'px';

		document.getElementById('windowX').value = mouse_X_Coord;
		document.getElementById('windowY').value = mouse_Y_Coord;

		return false;
	}

	/**
	 *
	 * @access public
	 * @return void
	 **/
	function goto(href){
		window.location.href = href
			+ '&windowX='
			+ document.getElementById('windowX').value
			+ '&windowY='
			+ document.getElementById('windowY').value;

		return false;
	}


// init handlers
init_mousemove();

document.onmousedown = selectmouse;
document.onmouseup   = new Function("containerMoveEnabled = false; document.onmousemove = dpl_mouse_pos;");
