// @version 2.2	23-03-07
//	23-03-07 Added trim, LTrim and RTrim

// Removes leading whitespaces
function LTrim( value ) {

	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");

}

// Removes ending whitespaces
function RTrim( value ) {

	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");

}

// Removes leading and ending whitespaces
function trim( value ) {

	return LTrim(RTrim(value));

}

// Make the XMLHttpRequest object
var http = createRequestObject();

function createRequestObject()
{
	// PURPOSE: Creates AJAX interface object

	var req;

	if(window.XMLHttpRequest)
	{
		// Firefox, Safari, Opera...
		req = new XMLHttpRequest();
	}
	else if(window.ActiveXObject)
	{
		// Internet Explorer 5+
		req = new ActiveXObject('MSXML2.XMLHTTP.3.0');//ActiveXObject("Microsoft.XMLHTTP");
	}
	else
		xDT.alert('An AJAX capable browser is required to operate this site');

	return req;
}

function encodeForm(formName)
{
	// PURPOSE: Creates PHP POST data from supplied FORM element

	form = document.getElementById(formName);
	formData = sPrefix = "";
	if(form != null)
	{
		// run through form elements creating PHP parameters
		for(iElement=0; iElement < form.elements.length; iElement++)
		{
			if(form.elements[iElement].tagName == "FIELDSET")
			{
				sPrefix=form.elements[iElement].id + '~';
				continue;
			}
			if((form.elements[iElement].type == "radio" || form.elements[iElement].type == "checkbox") && !form.elements[iElement].checked)
				continue;

			if(form.elements[iElement].value == form.elements[iElement].getAttribute("default"))
				continue;

			if(form.elements[iElement].name == "")
				continue;

			if(formData.length > 0)
				formData += "&";

			formData += sPrefix + form.elements[iElement].name + "=" + form.elements[iElement].value;
		}
	}
	// returns 'formCtrlID1=value&formCtrlID2=value' style data where formCtrlID is form element name
	return formData;
}

function toggleView(sId,sCmd)
{
	if(sCmd == null)
		sCmd = 'block';
	el = document.getElementById(sId);
	if(el != null)
		el.style.display =  el.style.display == 'none'?sCmd:'none';
}

function showElement(sId,sStyle)
{
	if(sStyle == null)
		sStyle = 'block';
	el = document.getElementById(sId);
	if(el != null)
		el.style.display = sStyle;
}

function hideElement(sId)
{
	el = document.getElementById(sId);
	if(el != null)
		el.style.display = 'none';
}

function toggleName(sId, sName1, sName2)
{
	nState = 0;
	el = document.getElementById(sId);
	if(el != null)
	{
		nState = el.value == sName1;
		el.value = el.value == sName1?sName2:sName1;

	}
	return nState;
}

function changeElement(sId, sText)
{
	eEl = document.getElementById(sId);
	if(eEl != null)
		eEl.innerHTML = sText;
}

function removeElement(sId)
{
	eEl = document.getElementById(sId);
	if(eEl != null)
		eEl.innerHTML = "";
}

function getElementValue(sId)
{
	sValue = "";

	eEl = document.getElementById(sId);
	if(eEl != null)
		sValue = eEl.value;

	return sValue;
}

function setElementValue(sId, sText)
{
	eEl = document.getElementById(sId);
	if(eEl != null)
		eEl.value = sText;
}

function updateBtns(sFormName, sBtnName)
{
	form = document.getElementById(sFormName);
	if(form != null)
	{
		if(form.tagName == "SUBFORM")
			form = document.getElementById(form.getAttribute("parentForm"));

		if(form == null)
			alert("parent form not found");

		bEnable = true;
		for(iE=0;iE<form.elements.length;iE++)
		{
			if(form.elements[iE].onchange == null)
				continue;

			sField = form.elements[iE].name.replace(/ed/, "");

			// check field has a value
			bEnable &= form.elements[iE].value.length > 0;
			if(!bEnable)
				break;
		}
		ctrl = document.getElementById(sBtnName);
		if(ctrl != null)
			ctrl.disabled = bEnable?"":"disabled";

		ctrl = document.getElementById("formHint");
		if(ctrl != null)
		{
			if(!bEnable)
			{
				sField = sField.replace(/_/, " ");
				ctrl.innerHTML = "<hr>" + sField + " is required.";
			}
			else
				ctrl.innerHTML = "";
		}
	}
}

function updateDateField(sFieldName)
{
    eDayCtrl = document.getElementById(sFieldName + "Day");
    eMonthCtrl = document.getElementById(sFieldName + "Month");
    eYearCtrl = document.getElementById(sFieldName + "Year");
    eDateCtrl = document.getElementById(sFieldName);
    if(eDateCtrl == null || eDayCtrl == null || eMonthCtrl == null || eYearCtrl == null)
		return;

    nDay = eDayCtrl.value;
    nMonth = eMonthCtrl.value;
    nYear = eYearCtrl.value;

    eDateCtrl.value = nYear + "-" + nMonth + "-" + nDay;
}

function login(sFormName)
{
	// PURPOSE: Sends request via AJAX to login

	// encode data from form
	formData = encodeForm(sFormName);

	// create AJAX request and send
	http.open("POST", "index.php", true);
	http.onreadystatechange = processLogin;
	http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http.send(formData);
}

function processLogin()
{
	if(http.readyState == 4 && http.status == 200)
	{
		if(http.responseText != null)
		{
			if(http.responseText == "Authorised")
			{
				window.location = "index";
				return;
			}
			eMsg = document.getElementById("error_msg");
			if(eMsg != null)
				eMsg.innerHTML = http.responseText;
			else
				alert(eMsg);
		}
	}
}
