/**
 * formsafety functions to detect if user has moved off
 * a modified input form
 * @author		Wez Furlong		<wez@thebrainroom.com>
 * @copyright	(c)2000-2004 Worlddo Pty Ltd		<http://worlddo.com>
 * $Id: formsafety.js,v 1.3.4.1.2.2 2004/03/19 10:46:16 Owner Exp $
 */

var formsafe = false;
function formsafety_page_unload()
{
	changed_count = 0;
	for (i = 0; i < document.forms.length; i++)
	{

		form = document.forms[i];
		if (form.haschanged == 1)
			changed_count ++;
	}
	if (formsafe == true && changed_count > 0)
		return L_FORMSAFETY_YOU_HAVE_NOT_YET_CONFIRMED_YOUR_CHANGES;
}
window.onbeforeunload = formsafety_page_unload;
function formsafety_changed(formname)
{
	document.forms[formname].haschanged = 1;
}
function formsafety_elem_changed(formelem)
{
	formelem.form.haschanged = 1;
	/* re-calc autocalc fields */
	for (i = 0; i < formelem.form.elements.length; i++) {
		var elem = formelem.form.elements[i];

		if (elem.is_calc) {
			eval(elem.calc_func + "()");
		}
	}

}
function formsafety_elem_notchanged(formelem)
{
	formelem.form.haschanged = 0;
}

var formsafety_popup_object = null;

function formsafety_alert(elem, msg)
{

	if (formsafety_popup_object == null) {
		if (window.navigator.appName == "Microsoft Internet Explorer" && document.all) {
			r = /MSIE (\d+)\.(\d+)/;
			m = r.exec(window.navigator.appVersion);
			if ((m[1] == 5 && m[2] >= 5) || (m[1] > 5)) {
				formsafety_popup_object = window.createPopup();
				doc = formsafety_popup_object.document;
				body = doc.body;

				for (i = 0; i < document.styleSheets.length; i++) {
					if (document.styleSheets[i].href) {
						doc.createStyleSheet(document.styleSheets[i].href);
					}
				}
			}
		}
	}

	if (formsafety_popup_object == null)
		alert(msg);
	else {
		if (formsafety_popup_object.isOpen)
			formsafety_popup_object.hide();

		doc = formsafety_popup_object.document;
		body = doc.body;

		/* determine absolute coords of the form element */
		o = elem;
		xpos = 0;
		ypos = 0;
		while (o != document.body) {
			ypos += o.offsetTop;
			xpos += o.offsetLeft;

			o = o.offsetParent;
		}
		body.innerHTML = "";
		snd = doc.createElement('bgsound');
		snd.src = '/shared/beep.wav';

		div = doc.createElement('div');
		div.id = 'odiv';
		div.className = 'tip';
		div.innerText = msg;

		body.insertBefore(div);
		body.insertBefore(snd);

		/* show it first (invisible) so that the div layout is calculated */
		formsafety_popup_object.show(0, 0, 0, 0, elem);

		/* now we can size the popup correctly */
		w = div.offsetWidth;
		h = div.offsetHeight;

		formsafety_popup_object.show(0, -h, w, h, elem);

	}
}

function formsafety_validate(formelem, format)
{
	if (formelem.is_valid || formelem.value.length == 0)	{
		return true;
	}

	var valid = true;

	if (format == "currency")	{

		var value = formelem.value.replace(/,/g,"");
		value = value.toLowerCase();

		if (value.substr(1).search(/[\+\-\*\/]/g) != -1)	{
			var firstchar = value.charAt(0);
			if (firstchar >= 'a' && firstchar <= 'z')
				value = "error";
			else
				value = eval(value);
		}

		var numval = parseFloat(value);

		if (isNaN(numval) || Math.abs(numval) > 1.0e+10)	{
			formsafety_alert(formelem, L_FORMSAFETY_INVALID_CURRENCY_NUMBER);
			valid = false;
		}
		else	{
			valid = true;
			formelem.value = numval;
		}
	}
	else if (format == "integer")	{
		var numval = parseInt(formelem.value);

		if (isNaN(numval))	{
			formsafety_alert(formelem, L_FORMSAFETY_INVALID_INTEGER_NUMBER);
			valid = false;
		}
		else	{
			valid = true;
			formelem.value = numval;
		}
	}

	if (!valid)	{
		formelem.focus();
		formelem.select();
	}
	formelem.is_valid = valid;
	return valid;
}

function formsafety_get_comboval(elem)
{
	return elem.options[elem.selectedIndex].value;
}
