<!--

	/**
	 * CopyRight 2004-2010 Scott MacNeill. All rights reserved
	 *
	 * Terms:
	 * You may use this library for no charge. Though you may NOT distribute it.
	 * You may modify this library for use in your application only.
	 * All information above this statement including this statement must remain un-altered.
	 * Any question or modification request can be sent to macneill.scott@gmail.com
	 * http://www.legionware.com/
	 */


	/**
	 * ==> This is the javascript corefunctions library
	 */


	/** Remove specified drawn window global variable */
	var remove = new Array();

	/** Don't remove this window. */
	var save = '';

	/** Keep reference to layers that are showing via auto */
	var auto_show_layers = '';

	/** Keep reference to layers that are hidden via auto */
	var auto_hide_layers = '';


	/**
	 * Change layers. Pass a list of layers to switch on or off, delimeted by "|"
	 */
	function swap_layers (show_layer, hide_layer, obj_model) {

		/** Check for any auto show requests */
		if (show_layer == 'auto') {

			/** If hide_layer not listed in auto_hide_layers. */
			if (auto_hide_layers.indexOf(hide_layer) == '-1') {

				/** Save a reference layer we are hiding so we can auto show when called again */
				auto_hide_layers += hide_layer + '|';

				/** Reset show_layer to null */
				show_layer = '';

			/** If hide_layer is listed in auto_hide_layers. */
			} else {

				/** Set layer to show as layer listed in hide_layer */
				show_layer = hide_layer;

				/** Remove saved layer reference that we are about to show */
				auto_hide_layers = auto_hide_layers.split(hide_layer + '|').join('');

				/** Reset hide_layer to null */
				hide_layer = '';

			}

		/** Check for any auto hide requests */
		} else if (hide_layer == 'auto') {

			/** If show_layer not listed in auto_show_layers. */
			if (auto_show_layers.indexOf(show_layer) == '-1') {

				/** Save a reference layer we are showing so we can auto hide when called again */
				auto_show_layers += show_layer + '|';

				/** Reset hide_layer to null */
				hide_layer = '';

			/** If show_layer is listed in auto_show_layers. */
			} else {

				/** Set layer to hide as layer listed in show_layer */
				hide_layer = show_layer;

				/** Remove saved layer reference that we are about to hide */
				auto_show_layers = auto_show_layers.split(show_layer + '|').join('');

				/** Reset show_layer to null */
				show_layer = '';

			}

		}

		if (show_layer == '' || hide_layer == '') looper = (show_layer == '') ? new Array('hide_layer') : new Array('show_layer');
		else looper = new Array('hide_layer', 'show_layer');

		show_layer = show_layer.split('|');
		hide_layer = hide_layer.split('|');

		for (i in looper) {

			for (x in eval(looper[i])) document.getElementById(eval(looper[i] + '[' + x + ']')).style.display = (looper[i].indexOf('show') == -1) ? 'none' : obj_model;

		}

	}


	/**
	 * Launch pop-up window
	 */
	function window_open (uri, winname, wid, hi, opts) {

		wid = (wid) ? wid : 640;
		hi = (hi) ? hi : 480;

		window.open(uri, winname, 'width=' + wid + ',height=' + hi + opts);

	}


	/**
	 * Set cursor position
	 */
	function set_focus (elem) {

	   document.getElementById(elem).focus();

	}


	/**
	 * Draw an error window if php session contains error
	 */
	function alert_error (err_message) {

	  	content = '<a href="javascript:void(0);" onclick="un_draw_layer(\'error\', true, true, \'remove\', event);"><div class="close_alert"><span class="hide">Close</span></div></a><h3>The following error has ocurred:</h3><div class="error_message">' + err_message + '</div>';

	  	draw_layer('center', '', 'error', true, content);

	}


	/**
	 * Draw an alert window if php session contains alert
	 */
	function alert_alert (alrt_message) {

	  	content = '<a href="javascript:void(0);" onclick="un_draw_layer(\'alert\', true, false, \'remove\', event);"><div class="close_alert"><span class="hide">Close</span></div></a><h3>Alert:</h3><div class="alert_message">' + alrt_message + '</div>';

	  	draw_layer('center', '', 'alert', false, content);

	}


	/**
	 * Grey out page
	 */
	function dim_page () {

		/** Instantiate Date object */
		now = new Date();
		tstamp = now.getTime().toString();

		dimmer = document.createElement('div');

		dimmer.style.top = '0px';
		dimmer.style.left = '0px';
		dimmer.style.width = '100%';
		dimmer.style.height = '100%';
		dimmer.style.background = '#000';

		(typeof dimmer.style.opacity != 'undefined') ? dimmer.style.opacity = '0.6' : dimmer.style.filter = 'alpha(opacity=60)';

		dimmer.style.zIndex = tstamp.substr(tstamp.length * 10 - 10);
		dimmer.style.position = 'fixed';
		dimmer.id = 'dimmer';

		//(document.body.firstChild) ? document.body.insertBefore(dimmer, document.body.firstChild) : document.body.appendChild(dimmer);
		document.body.appendChild(dimmer);

	}


	/**
	 * Remove page dimmer
	 */
	function un_dim_page () {

		if ( ! document.getElementById('dimmer')) return false;

		pnode = document.getElementById('dimmer').parentNode;

		pnode.removeChild(document.getElementById('dimmer'));

	}


	/**
	 * Show an existing element that is hidden
	 */
	function show_element (elem, pos_x, pos_y, event) {

		sTop = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;

		elem = document.getElementById(elem);

		elem.style.display = 'block';

		elem.style.position = 'absolute';

		elem.className = 'show_element';

		if (pos_x == 'left') pos_x = event.clientX - elem.offsetWidth;

		else if (pos_x == 'center') pos_x = event.clientX - elem.offsetWidth / 2;

		else pos_x = event.clientX + 10;

		if (pos_y == 'top') pos_y = event.clientY - elem.offsetHeight + 20;

		else if (pos_y == 'center') pos_y = event.clientY - elem.offsetHeight / 2;

		else pos_y = event.clientY - 20;

		elem.style.left = pos_x + 'px';
		elem.style.top = (pos_y + sTop) + 'px';

	}


	/**
	 * This function is deprecated and only exists for backwards compatability.
	 * Please remove this function from your code and use "draw_layer()" instead
	 */
	function draw_window (wid, heiht, placement, classname, elem_id, disable_win, content, event) {

		draw_layer(placement, classname, elem_id, disable_win, content, event);

	}


	/**
	 * Draw new layer and populate with content.
	 */
	function draw_layer (placement, classname, elem_id, disable_win, content, event) {

		var x;
		var y;
		var mtop;
		var mleft;

		/** Instantiate Date object */
		now = new Date();
		tstamp = now.getTime().toString();

		new_win = document.createElement('div');
		new_win.id = elem_id;
		new_win.className = classname;
		new_win.style.position = 'fixed';
		new_win.style.zIndex = tstamp.substr(tstamp.length * 10);
		new_win.innerHTML = content;

		/** Disable window if set */
		if (disable_win) dim_page();

		/** Attach new layer to document */
		document.body.appendChild(new_win);

		/** Get size from class. [0]:width, [1]:height */
		if (new_win.currentStyle && (new_win.currentStyle['width'] != 'auto' && new_win.currentStyle['height'] != 'auto')) size = new Array(new_win.currentStyle['width'], new_win.currentStyle['height']);

		/** Get size from element properties. [0]:width, [1]:height */
		else if (new_win.offsetWidth && new_win.offsetWidth != '') size = new Array(new_win.offsetWidth, new_win.offsetHeight);

		/** Get size from computed styles. [0]:width, [1]:height */
		else size = new Array(document.defaultView.getComputedStyle(new_win, null).getPropertyValue('width'), document.defaultView.getComputedStyle(new_win, null).getPropertyValue('height'));

		/** Remove all non-integer values */
		if (isNaN(size[0])) size[0] = Number(size[0].substr(0, size[0].length - 2));
		if (isNaN(size[1])) size[1] = Number(size[1].substr(0, size[1].length - 2));

		switch (placement) {

			case 'center' :

				x = '50%';
				y = '50%';

				/* Set margin for layers with non-auto dimensions */
				if ( ! isNaN(size[0]) && ! isNaN(size[1])) {

					mleft = '-' + size[0] / 2 + 'px';
					mtop = '-' + size[1] / 2 + 'px';

				}

				break;

			case 'mouse' :

				/** CAN WE FIND A UNIVERSAL PROPERTY?		<== */
				sTop = (document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;

				x = (document.documentElement.offsetWidth < event.clientX + size[0] + 30) ? (event.clientX - size[0] + 5) + 'px' : (event.clientX + 5) + 'px';
				y = (event.clientY + 5 + sTop) + 'px';

				break;

			default :

				/** placement will be set via assigned class */

		}

		if (x) {

			new_win.style.left = x;
			new_win.style.top = y;

		}

		if (mtop) {

			new_win.style.marginTop = mtop;
			new_win.style.marginLeft = mleft;

		}

		return true;

	}


	/**
	 * This function is deprecated and succeeded by "un_draw_layer()".
	 * Please remove this function from your code and use "un_draw_layer()" instead
	 */
	function un_draw_window (elem_id, now, enable_win, removal, event) {

		un_draw_layer (elem_id, now, enable_win, removal, event);

	}


	/**
	 * Schedule the Removal / Hiding of a window that has been previously drawn using "draw_layer" / "show_window" function above
	 */
	function un_draw_layer (elem_id, now, enable_win, removal, event) {

		/* Make sure Element we are removing exists */
	  	if ( ! document.getElementById(elem_id)) return false;

	  	elem = document.getElementById(elem_id);

	  	if (removal == 'hide') {

			Y = (document.documentElement.scrollTop) ? event.clientY + document.documentElement.scrollTop : event.clientY + document.body.scrollTop;

	  		/** don't remove element if we are still over it */
			if ((event.clientX < (elem.offsetLeft + elem.offsetWidth) && event.clientX > elem.offsetLeft - 1) && (Y < (elem.offsetTop + elem.offsetHeight) && Y > elem.offsetTop - 1)) return false;

		}

		/** Don't set timeout if now is true */
		if (now) {

			if (removal == 'hide') document.getElementById(elem_id).style.display = 'none';

			else document.body.removeChild(document.getElementById(elem_id));

			/** Remove page dimmer if set */
			if (enable_win) un_dim_page();

			return true;

		}

		remove.push(elem_id);

		if (removal == 'hide') setTimeout("hideWin()", 250);

		else setTimeout("removeWin()", 250);

	}


	/**
	 * Remove the window that was scheduled for removal using "un_draw_layer"
	 */
	function removeWin () {

		win = remove.shift();

		document.body.removeChild(document.getElementById(win));

	}


	/**
	 * Hide the element that was scheduled for hiding using "un_draw_layer"
	 */
	function hideWin () {

		win = remove.shift();

		document.getElementById(win).style.display = 'none';

	}


	/**
	 * Cancel the removal of a scheduled window closure scheduled bu un_draw_layer
	 */
	function keep_window (elem_id) {

		save = elem_id;

	}


// -->
