var backlay = null;
var lytebox = null;
var stts = null;
var opacount = 0;
var append = false;

var PATH_JS = "js/";


function getPosition(e) {
    e = e || window.event;
    var cursor = {x:0, y:0};
    if (e.pageX || e.pageY) {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    } 
    else {
        cursor.x = e.clientX + 
            (document.documentElement.scrollLeft || 
            document.body.scrollLeft) - 
            document.documentElement.clientLeft;
        cursor.y = e.clientY + 
            (document.documentElement.scrollTop || 
            document.body.scrollTop) - 
            document.documentElement.clientTop;
    }
    return cursor;
}

function createLyteBox(boxid, htmldoc, ypos, path_remote, overlay_png, reference_element, offset_h, offset_v)
{
	if( ypos == null )
	{
		ypos = 10;
	}

	if( path_remote == null )
	{
		path_remote = "";
	}
	
	if( overlay_png == null )
	{
		overlay_png = "overlay.png";
	}
	
	var swidth = parseInt(document.body.scrollWidth);

	// Get or Create elements of lytebox and back layer.
	lytebox = $(boxid);
	if( !lytebox )	// if element doesn't exist
	{
		// create new element
		lytebox = document.body.appendChild(document.createElement("div"));
		lytebox.setAttribute ("id", boxid);
		append = true;
	}

//	if( backlay == null )
//	{
//		backlay = document.body.appendChild(document.createElement("div"));
//	}

	// set the back layer color and size
//	width = parseInt(document.body.scrollWidth);
//	height = parseInt(document.body.scrollHeight || document.documentElement.scrollHeight);
//	height2 = document.documentElement.clientHeight || document.body.clientHeight;
//	if( height < height2 )
//	{
//		height = height2;
//	}

	// set back layer image
//	if( navigator.appName.indexOf("Microsoft") != -1 )	// if IE
//	{
//		Element.setStyle(backlay,
//			{
//				"top": "0px",
//				"left": "0px",
//				"z-index": "50",
//				"display": "none",
//				"position": "absolute",
//				"width": width + "px",
//				"height": height + "px",
//				"filter": "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + path_remote + PATH_JS + overlay_png + "', sizingMethod='scale')"
//			}
//		);
//	}
//	else
//	{
//		Element.setStyle(backlay,
//			{
//				"top": "0px",
//				"left": "0px",
//				"z-index": "50",
//				"display": "none",
//				"position": "absolute",
//				"width": width + "px",
//				"height": height + "px",
//				"background": "transparent url(" + path_remote + PATH_JS + overlay_png + ") 0 0 repeat"
//			}
//		);
//	}

	// set the lytebox frame
	Element.setStyle(lytebox, {"position": "absolute", "z-index": "100"});
	if( append )
	{
		lytebox.innerHTML = htmldoc;
	}

	// show elements
//	Element.setStyle(backlay, {"display": "block"});
	Element.setStyle(lytebox, {"display": "block", "visibility": "visible"});


	if (reference_element == null)
	{
		leftpos = swidth / 2 - parseInt(Element.getWidth(lytebox)) / 2;
		Position.prepare();
		toppos = parseInt(Position.deltaY) + ypos;
	}
	else
	{
		pos = Position.cumulativeOffset(reference_element);
		toppos = pos[1] - offset_v;
		leftpos = pos[0] - offset_h;
		
//		alert(
//			'reference element id: ' + reference_element.id + 
//			'\npos[1]: ' + pos[1] + 
//			'\noffest_v: ' + offset_v + 
//			'\ntop: ' + toppos +
//			'\npos[0]: ' + pos[0] + 
//			'\noffest_h: ' + offset_h + 
//			'\nleft: ' + leftpos);
	}
	
	Element.setStyle(lytebox, {"top": toppos + "px", "left": leftpos + "px"});

//	setTimeout("fadeIn()", 40);
}

function fadeIn()
{
	if( opacount < 100 )
	{
		opacount += 10;
		if(lytebox.style.filter != null)		lytebox.style.filter = "alpha(opacity = " + opacount + ")";
		if(lytebox.style.opacity != null)		lytebox.style.opacity = parseFloat (opacount / 100);
		if(lytebox.style.MozOpacity != null)	lytebox.style.MozOpacity = parseFloat (opacount / 100);
		setTimeout("fadeIn()", 40);
	}
}

function updateLyteBox(htmldoc)
{
	if( htmldoc == "" )
	{
		alert("no data");
		return;
	}

	if( lytebox )
	{
		lytebox.innerHTML = htmldoc;

		leftpos = parseInt(document.body.scrollWidth) / 2 - parseInt(Element.getWidth(lytebox)) / 2;
		Position.prepare();
		toppos = parseInt(Position.deltaY) + 10;
		Element.setStyle(lytebox, {"top": toppos + "px", "left": leftpos + "px"});
	}
	else
	{
		createLyteBox(boxid, htmldoc);
	}
}

function deleteLyteBox()
{
	// delete element from document
	if( backlay )
	{
		document.body.removeChild(backlay);
		backlay = null;
	}
	if( lytebox )
	{
		if( stts )
		{
			lytebox.removeChild(stts);
			stts = null;
		}
		if( append )
		{
			document.body.removeChild(lytebox);
			lytebox = null;
			append = false;
		}
		else
		{
//			Element.setStyle(lytebox, {"y": "-1000px", "height": "1px", "margin-top": "-1000px"});
//			Element.setStyle(lytebox, {"display": "none"});
			Element.setStyle(lytebox, {"visibility": "hidden"});
		}
	}
}

function showLyteBoxStatus(htmldoc)
{
	if( lytebox )
	{
		if( stts )
		{
			stts.innerHTML = htmldoc;
		}
		else
		{
			stts = lytebox.appendChild(document.createElement ("div"));
			Element.setStyle(stts, {"position": "absolute", "border": 0, "background-color": "#900"});
			stts.innerHTML = htmldoc;
		}
	}
}

function hideLyteBoxStatus()
{
	if( lytebox && stts )
	{
		lytebox.removeChild(stts);
		stts = null;
	}
}



var last_ajax_url = null;
var last_box_type = "";

function displayMessage(messageType, locations, message) {
	if (locations == null) {
		locations = new Array("");
	}
	for (k=0; k<locations.length; k++) {
		id = messageType + "_message";
		if ( (locations[k] != "") && (locations[k] != null) ) {
			id += "_" + locations[k];
		}
		$(id).innerHTML = message;
		//alert(id + " : " + message);
	}
}

function setModified(formType) {
	if (!modified[formType]) {
		modified[formType] = true;
		displayMessage(formType, messageLocations[formType], messages[formType]["modified"])
	}
}

function resetModified(formType) {
	modified[formType] = false;
}

function resetEnabled(formType) {
	enabled[formType] = initialEnable[formType];
}

function loadTableBox(ajax_url, box_type, urlTail)
{
	if (urlTail==undefined || urlTail==null) {
		urlTail = "";
	}
	last_ajax_url = ajax_url;
	last_box_type = box_type;
	last_screen = ajax_url;
	displayMessage("main", null, "Loading data, please wait ... "); // (" + box_type  + urlTail")");
	var url = last_ajax_url + '/ajax' + last_box_type + urlTail;
	new Ajax.Updater(
		'main_box',
		url,
		{
			method: 'get',
			asynchronous: false,
			evalScripts: true,
			onComplete: updateTable
		}
	);
	// FIXME - XH: generalize colors, styles, and make multiple links take on active color
	for (var k = 0; k < boxNames.length; k++) {
		obj = $(boxNames[k] + "link");
		if (obj!=undefined) {
			if (boxNames[k]==box_type) {
				obj.style.color = "#ea6309";
			}
			else {
				obj.style.color = "#0066ff";
			}
		}
	}
}

function updateTable(responseHttpObj)
{
	if (last_box_type != "") {
		for (k=0; k<boxFormTypes[last_box_type].length; k++) {
			resetModified(boxFormTypes[last_box_type][k]);
			resetEnabled(boxFormTypes[last_box_type][k]);
		}
	}
	displayMessage("main", null, "&nbsp;");
}

function clearTable()
{
	if (last_box_type != "") {
		for (k=0; k<boxFormTypes[last_box_type].length; k++) {
			resetModified(boxFormTypes[last_box_type][k]);
		}
	}
	$("main_box").innerHTML = "&nbsp;";
}

function submitForm(form_type)
{
	displayMessage(form_type, messageLocations[form_type], messages[form_type]["submit"]);
	//alert(last_ajax_url + '/ajaxsave' + form_type);
	new Ajax.Updater(
		'main_box',
		last_ajax_url + '/ajaxsave' + form_type,
		{
			method: 'post',
			parameters: Form.serialize(form_type + '_form'),
			onComplete: updateTable
		}
	);
}

/*
var newdaypart_enabled = false;

function enableForm(formType) {
	if (!enabled[formType]) {
		for (k=0; k<$(formType + "_form").elements.length; k++) {
			var element = $(formType + "_form").elements[k];
			element.disabled=false;
		}
		enabled[formType] = true;
		displayMessage(formType, messageLocations[formType], messages[formType]["enabled"])
	}
}

function disableForm(formType) {
	if (enabled[formType]) {
		for (k=0; k<$(formType + "_form").elements.length; k++) {
			var element = $(formType + "_form").elements[k];
			element.disabled=true;
		}
	}
	enabled[formType] = false;
	displayMessage(formType, messageLocations[formType], messages[formType]["disabled"]);
}
*/

