function Trim(TheString)
{
	var len;
	len = TheString.length;
 	while((TheString.substring(0,1) == " ") || (TheString.substring(0,1) == "\r")
		|| (TheString.substring(0,1) == "\n")){ //trim left
 		TheString = TheString.substring(1, len);
  		len = TheString.length;
	}
 	while((TheString.substring(len-1, len) == " ") || (TheString.substring(len-1, len) == "\r")
			|| (TheString.substring(len-1, len) == "\n")){ //trim right
 		TheString = TheString.substring(0, len-1);
  		len = TheString.length;
 	}

 	return TheString;
}

function IsEmailValid(ElemName)
{
	var EmailOk  = true;

	var strFld = Trim(ElemName.value);
	if (strFld != "")
	{	
		var ss = strFld.split('@');
		var AtSym    = ElemName.value.indexOf('@');
		var Period   = ElemName.value.lastIndexOf('.');
		var Space    = ElemName.value.indexOf(' ');
		var Length   = ElemName.value.length - 1;	// Array is from 0 to length-1

		if (ss.length > 2 || (AtSym < 1) ||						// '@' cannot be in first position
				(Period <= AtSym + 1) ||		// Must be atleast one valid char btwn '@' and '.'
				(Period == Length ) ||			// Must be atleast one valid char after '.'
				(Space  != -1))					// No empty spaces permitted
		{
			EmailOk = false;
			alert('Please enter a valid e-mail address!');
			ElemName.focus();
		}
	}

	return EmailOk;
}

function IsNumber(fldNum)
{
	var strNumber = "+-0123456789."

	var strNum = Trim(fldNum.value);
	//alert (strNum);
	var i;
	for (i = 0; i < strNum.length; i++)
	{
		if (strNumber.indexOf(strNum.charAt(i)) < 0)
		{
			//alert('Please enter a valid number for ' + fldNum.name + '!');
			alert("Please enter a valid number.")
			fldNum.focus();
			return false;
		}
	}

	return true;
}

function IsValidNumber(fldNum, sMsg)
{
	var strNumber = "+-0123456789."

	var strNum = Trim(fldNum.value);
	//alert (strNum);
	var i;
	for (i = 0; i < strNum.length; i++)
	{
		if (strNumber.indexOf(strNum.charAt(i)) < 0)
		{
			//alert('Please enter a valid number for ' + fldNum.name + '!');
			alert("Please enter a valid number for " + sMsg + ".")
			fldNum.focus();
			return false;
		}
	}

	return true;
}

function IsValidTel(fldNum, sMsg)
{
	var strNumber = "( +-0123456789)"

	var strNum = Trim(fldNum.value);
	//alert (strNum);
	var i;
	for (i = 0; i < strNum.length; i++)
	{
		if (strNumber.indexOf(strNum.charAt(i)) < 0)
		{
			//alert('Please enter a valid number for ' + fldNum.name + '!');
			alert("Please enter a valid number for " + sMsg + ".")
			fldNum.focus();
			return false;
		}
	}

	return true;
}

function IsInteger(fldInt, sName, bMsg)
{
	if (IsInteger.arguments.length<3)
		bMsg = true;

	var strNum = Trim(fldInt.value);
	
	if (strNum != "")
	{
		var nTemp = parseInt(strNum);

		if (nTemp != strNum)
		{
			if (bMsg)
			{
				if (sName == "")
				{
					sName = fldInt.name;
				}

				alert('Please enter a valid integer for ' + sName + '!');
				fldInt.focus();
			}

			return false;
		}
	}

	return true;
}

function IsValidInteger(fldInt, sMsg)
{
	var strNum = Trim(fldInt.value);
	
	if (strNum != "")
	{
		var nTemp = parseInt(strNum);

		if (nTemp != strNum)
		{
			alert('Please enter a valid integer for ' + sMsg + '!');
			fldInt.focus();
			return false;
		}
	}

	return true;
}

function IsFormComplete(frmThis)
{
	var x       = 0;
	var FormOk  = true;

	while ((x < frmThis.elements.length) && (FormOk))
	{
		if ((frmThis.elements[x].type.toUpperCase() == 'CHECKBOX') || (frmThis.elements[x].type.toUpperCase() == 'HIDDEN')
				|| (frmThis.elements[x].type.toUpperCase() == 'RESET') || (frmThis.elements[x].type.toUpperCase() == 'SUBMIT')
				 || (frmThis.elements[x].type.toUpperCase() == 'IMAGE'))
		{
			x ++;
			continue;
		}

		if (frmThis.elements[x].value == '')
		{
			alert('Please enter the ' + frmThis.elements[x].name + ' and try again.');
			frmThis.elements[x].focus();
			FormOk = false;
		}

		x ++;
	}

	return FormOk;
}

function ShowPopWnd(sPage, nWidth, nHeight, bShowMenuBar)
{
	if (ShowPopWnd.arguments.length<4)
		bShowMenuBar = false;

	var sTemp = "";
	if (bShowMenuBar)
		sTemp = ",menubar=yes";

	if ((nWidth == 0) || (nHeight == 0))
	{
		return window.open(sPage, "ShowWndDlg",
				"resizable=yes,toolbar=yes,status=yes,scrollbars=yes" + sTemp);
	}
	else
	{
		var nTop = (screen.height - nHeight) / 2;
		var nLeft = (screen.width - nWidth) / 2;

		return window.open(sPage, "ShowWndDlg",
				"top=" + nTop + ",left=" + nLeft + ",width=" + nWidth + ",height=" +
				nHeight + ",resizable=yes,toolbar=no,status=yes,scrollbars=yes" + sTemp);
	}
}

function moveNodeFromList(lstFrom, lstTo, bRemove)
{
	if (lstFrom.selectedIndex == 0)
	{
		alert("Please select an item first!");
		lstFrom.focus();
		return;
	}

	var nLen = lstTo.options.length;
	lstTo.options.length = nLen + 1;
	
	var nSel = lstFrom.selectedIndex;
	lstTo.options[nLen].value = lstFrom.options[nSel].value;
	lstTo.options[nLen].text = lstFrom.options[nSel].text;
	lstTo.selectedIndex = nLen;
	
	if (bRemove)
	{
		nLen = lstFrom.options.length;
		for (var i = nSel; i < nLen - 1; i++)
		{
			lstFrom.options[i].value = lstFrom.options[i + 1].value;
			lstFrom.options[i].text = lstFrom.options[i + 1].text;
		}
		lstFrom.options.length = nLen - 1;

		if ((nLen - 1) == nSel)
			lstFrom.selectedIndex = nSel - 1;
		else
			lstFrom.selectedIndex = nSel;
	}
}

function moveNodeAllFromList(lstFrom, lstTo, bRemove)
{
	var nLen = lstTo.options.length;
	lstTo.options.length += lstFrom.options.length - 1;

	for (var i = 1; i < lstFrom.options.length; i++)
	{
		lstTo.options[nLen + i - 1].value = lstFrom.options[i].value;
		lstTo.options[nLen + i - 1].text = lstFrom.options[i].text;
	}

	lstTo.selectedIndex = 0;

	if (bRemove)
	{
		lstFrom.options.length = 1;
		lstFrom.selectedIndex = 0;
	}
}

function checkFld(fldThis, sName, bMsg, nMinLen, nMaxLen)
{
	if (checkFld.arguments.length<3)
		bMsg = true;

	if (checkFld.arguments.length<4)
		nMinLen = 0;

	if (checkFld.arguments.length<5)
		nMaxLen = 0;

	if (fldThis)
	{
		var sTemp = Trim(fldThis.value);
		if (sTemp == "")
		{
			if (bMsg)
			{
				if (sName == "")
				{
					sName = fldThis.name;
				}

				alert("Please input " + sName + " first!");
				if (fldThis.type.toLowerCase() != "hidden")
					fldThis.focus();
			}

			return false;
		}

		if (nMinLen > 0)
		{
			if (sTemp.length < nMinLen)
			{
				if (bMsg)
				{
					alert("The length of " + sName + " can not less than " + nMinLen + "!");
					if (fldThis.type.toLowerCase() != "hidden")
						fldThis.focus();
				}

				return false;
			}
		}

		if (nMaxLen > 0)
		{
			if (sTemp.length > nMaxLen)
			{
				if (bMsg)
				{
					alert("The length of " + sName + " can not bigger than " + nMaxLen + "!");
					if (fldThis.type.toLowerCase() != "hidden")
						fldThis.focus();
				}

				return false;
			}
		}
	}

	return true;
}

function checkListFld(fldThis, sName, bMsg)
{
	if (checkListFld.arguments.length<3)
		bMsg = true;

	if (fldThis)
	{
		if (fldThis.selectedIndex == 0)
		{
			if (bMsg)
			{
				if (sName == "")
				{
					sName = fldThis.name;
				}

				alert("Please select " + sName + " first!");
				fldThis.focus();
			}

			return false;
		}
	}

	return true;
}

function checkPwd(frmThis, nMinLen)
{
	if (Trim(frmThis.pwd.value) == "")
	{
		alert("Password cannot be set empty!");
		if (frmThis.pwd.type.toLowerCase() != "hidden")
			frmThis.pwd.focus();
		return false;
	}

	if (Trim(frmThis.repwd.value) == "")
	{
		alert("Please re-confirm your password!");
		if (frmThis.repwd.type.toLowerCase() != "hidden")
			frmThis.repwd.focus();
		return false;
	}

	if (Trim(frmThis.pwd.value) != Trim(frmThis.repwd.value))
	{
		alert("Please input password correctly!")

		if (frmThis.pwd.type.toLowerCase() != "hidden")
			frmThis.pwd.focus();
		return false;
	}

	if ((nMinLen > 0) && (Trim(frmThis.pwd.value).length < nMinLen))
	{
		alert("Please input password min length > " + nMinLen + "!")

		if (frmThis.pwd.type.toLowerCase() != "hidden")
			frmThis.pwd.focus();
		return false;
	}

	return true;
}

/********************************************************************************
Copyright (C) 1999 Thomas Brattli
This script is made by and copyrighted to Thomas Brattli at www.bratta.com
Visit for more great scripts. This may be used freely as long as this msg is intact!
I will also appriciate any links you could give me.
********************************************************************************/
//Default browsercheck, added to all scripts!
function checkBrowser(){
	this.ver=navigator.appVersion
	this.dom=document.getElementById?1:0
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;
	this.ie4=(document.all && !this.dom)?1:0;
	this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie5 || this.ie4 || this.ns4 || this.ns5)
	return this
}
bw=new checkBrowser()
//With nested layers for netscape, this function hides the layer if it's visible and visa versa
function showHide(div,nest){
	obj=bw.dom?document.getElementById(div).style:bw.ie4?document.all[div].style:bw.ns4?nest?document[nest].document[div]:document[div]:0; 
	if(obj.visibility=='visible' || obj.visibility=='show') obj.visibility='hidden'
	else obj.visibility='visible'
}
//Shows the div
function show(div,nest){
	obj=bw.dom?document.getElementById(div).style:bw.ie4?document.all[div].style:bw.ns4?nest?document[nest].document[div]:document[div]:0; 
	obj.visibility='visible'
}
//Hides the div
function hide(div,nest){
	obj=bw.dom?document.getElementById(div).style:bw.ie4?document.all[div].style:bw.ns4?nest?document[nest].document[div]:document[div]:0; 
	obj.visibility='hidden'
}

function toggle(div) {
  obj=bw.dom?document.getElementById(div).style:bw.ie4?document.all[div].style:bw.ns4?nest?document[nest].document[div]:document[div]:0;

  if (obj.display == "block") {
     obj.display = "none";
  } else {
     obj.display = "block";
  }
}
