// JavaScript Document

// Set document root
var g_root = "/hr/trainingapp/";

function ajaxPaging(page, server, controller, action, div, sortid) {
	//slashdot url = 'http://' + server + "/" + controller + "/" + action + "?page=" + page + "&layout=table";
	url = g_root + controller + "/" + action + "?page=" + page + "&layout=table";
	if (sortid != "") url = url + "&sort=" + sortid;
	ColdFusion.navigate(url, div, ajaxNavSuccess);
	return false;
}

function ajaxSorting(page, server, controller, action, div, sortid, ascdesc) {
	//slashdot url = 'http://' + server + "/" + controller + "/" + action + "?page=" + page + "&layout=table&sort=" + sortid + "&ascdesc=" + ascdesc;
	url = g_root + controller + "/" + action + "?page=" + page + "&layout=table&sort=" + sortid + "&ascdesc=" + ascdesc;
	ColdFusion.navigate(url, div, ajaxNavSuccess);
	return false;
}

function selItem(id, value, parent_control) {
	//alert(id + "\n" + value + "\n" + parent_control);
	document.getElementById("v_" + parent_control).value = value;
	document.getElementById(parent_control).value = id;
	closeWin(parent_control);
}

function addWin(uuid, server, path, swidth, sheight, title, div, parentlayout, parentuuid) {
	//slashdot url = 'http://' + server + path + "?layout=editorpopup&layout_switch=" + parentlayout
	url = path + "?layout=editorpopup&layout_switch=" + parentlayout
		+ "&div=" + div
		+ "&parent_uuid=" + parentuuid
		+ "&uuid=" + uuid;
	try {
		ColdFusion.Window.create(uuid, title, '',
	        { height:sheight,width:swidth, modal:true,closable:false,
			draggable:true,resizable:true,center:true,initshow:true });
		ColdFusion.navigate(url, uuid);
	} catch (e) {
		alert("Error opening window.");
	}
	return false;
}

function delItemAjax(div, server, path, conf) {
	if (! confirm(conf)) {
		return false;
	}

	//slashdot url = 'http://' + server + path + "?layout=table" + "&page=" + getCurrentPage();
	url = path + "?layout=table" + "&page=" + getCurrentPage();
	try {
		ColdFusion.navigate(url, div, ajaxSubmitSuccessNoWindow);
	} catch (e) {
		alert("Error opening window.");
	}
	return false;
}

function selWin(uuid, server, path, swidth, sheight, title) {
	//slashdot url = 'http://' + server + path + "?layout=selector&uuid=" + uuid + "&parent_uuid=" + uuid;
	url = path + "?layout=selector&uuid=" + uuid + "&parent_uuid=" + uuid;
	try {
		ColdFusion.Window.create(uuid, title, '',
	        { height:sheight,width:swidth, modal:true,closable:false,
			draggable:false,resizable:false,center:true,initshow:true });
		ColdFusion.navigate(url, uuid, ajaxNavSuccess);
		
	   /* Alternate method for showing drop-down-like "div" element, instead of ColdFusion.Window */
/*		element = document.getElementById("v_" + uuid);
		element_button = document.getElementById("b_" + uuid);
		divdrop = document.getElementById("div_" + uuid);
		if (divdrop == null) {
			divdrop = document.createElement("div");
			divdrop.id = "div_" + uuid;
		}
		divdrop.style.border = "1px solid black";
		divdrop.style.position = "absolute";
		divdrop.style.width = (element.offsetWidth + element_button.offsetWidth - 2) + "px";
		divdrop.style.height = sheight;
		divdrop.style.top = (measureTop(element) + element.offsetHeight) + "px";
		divdrop.style.left = measureLeft(element) + "px";
		divdrop.style.visibility = "";
		divdrop.style.backgroundColor = "#ffffff";
		divdrop.style.zIndex = "999999";
		document.body.appendChild(divdrop);
		ColdFusion.navigate(url, "div_" + uuid);
*/    /* End alternate method */
	} catch (e) {
		alert("Error: " + e);
	}
	return false;
}

function closeWin(name) {
	try {
		try {
			document.getElementById(name + "_body").innerHTML = '';
		} catch (e) {}
		ColdFusion.Window.hide(name);
	} catch (e) {
		//alert("Error Closing Window: " + e);
	}
}
function closeDiv(name) {
	try {
		divdrop = document.getElementById("div_" + name);
		divdrop.innerHTML = '';
		divdrop.style.visibility = "hidden";
	} catch (e) {
		alert("Error Hiding DropDown: " + e);
	}
}

function regularSubmit(form_name) {
	form = document.forms[0];
	form.submit();
}

function ajaxSubmit(sForm, uuid, div, layoutswitch, parentuuid) {
	form = document.forms[sForm];
	action = form.action + "?layout=table&layout_switch=" + layoutswitch + "&parent_uuid=" + parentuuid + "&page=" + getCurrentPage();
	save_uuid = uuid;
	ColdFusion.navigate(action, div, ajaxSubmitSuccess, ajaxSubmitError, "POST", form.name);
	return false;
}
var save_uuid = "";
var error_win_uuid = "";
var message_div_uuid = "";
function ajaxSubmitSuccess(text) {
	// Show error window, if needed
	var bError = false;
	try {
		win = ColdFusion.Window.getWindowObject(error_win_uuid);
		if (! win.isVisible())
			closeWin(save_uuid);
		else
			bError = true;
	} catch (e) {
		closeWin(save_uuid);
	}
	
	if (! bError) {
		// Show flash, if needed
		try {
			div = document.getElementById(message_div_uuid);
			flsh = document.getElementById("flash");
			try { flsh2 = document.getElementById("flash2"); } catch (e) {}
			if (div != null && flsh != null)
				flsh.innerHTML = div.innerHTML;
			if (div != null && flsh2 != null)
				flsh2.innerHTML = div.innerHTML;
		} catch (e) { }
	
		// Attempt to set up IE 6 (or less) tables for row hover highlighting
		try { ieTables(); } catch (e) {}
	}
	
	// If in workshop editor, setup form controls
	navTabDefault('');
}
function ajaxSubmitSuccessNoWindow(text) {
	// Show flash, if needed
	try {
		div = document.getElementById(message_div_uuid);
		flsh = document.getElementById("flash");
		try { flsh2 = document.getElementById("flash2"); } catch (e) {}
		if (div != null && flsh != null)
			flsh.innerHTML = div.innerHTML;
		if (div != null && flsh2 != null)
			flsh2.innerHTML = div.innerHTML;
	} catch (e) { }

	// Attempt to set up IE 6 (or less) tables for row hover highlighting
	try { ieTables(); } catch (e) {}

	// If in workshop editor, setup form controls
	navTabDefault('');
}
function ajaxNavSuccess(text) {
	// Attempt to set up IE 6 (or less) tables for row hover highlighting
	try { ieTables(); } catch (e) {}
}
function ajaxSubmitError(code, msg) {
	alert("Error " + code + ": " + msg);
}
function ajaxRemErrorWindow(uuid) {
	try {
		win = ColdFusion.Window.getWindowObject(uuid);
		win.destroy(true);
	} catch (e) {
		alert("Error closing window: " + e);
	}
}

function getCurrentPage() {
	// save current page #
	cp_page = "1";
	try {
		cp_page = document.getElementById("current_page").innerHTML;
	} catch (e) {}
	return cp_page;
}
 /*************************************************
 * Measurement functions for positioning
 *   Example of determining position:
 *		oAnchor = document.getElementById(anchor_id);
 *		initX = measureLeft(oAnchor);
 *		initY = measureTop(oAnchor) + oAnchor.offsetHeight;
 *************************************************/
function measureLeft(oElement){
	var iLeft = oElement.offsetLeft;
	var oParent = oElement.offsetParent;
	while(oParent.nodeName != 'BODY' && oParent.nodeName != 'DIV'){
		iLeft += oParent.offsetLeft;
		oParent = oParent.offsetParent;
	}
	return iLeft;
}

function measureTop(oElement){
	var iTop = oElement.offsetTop;
	var oParent = oElement.offsetParent;
	while(oParent.nodeName != 'BODY' && oParent.nodeName != 'DIV'){
		iTop += oParent.offsetTop;
		oParent = oParent.offsetParent;
	}
	return iTop;
}

