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 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 ((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!' & AtSym);
		ElemName.focus();
	}



	return EmailOk;
}

function IsPercentValid(ElemName)
{
	
	if (Trim(ElemName.value) == "")
	{
		alert('Please enter a Discount for the reseller!');
		ElemName.focus();
		return false;
	}

	var AtSym = ElemName.value.indexOf('%');
	var Space = ElemName.value.indexOf(' ');
	var Length = ElemName.value.length - 1;

	if ((AtSym == 0) ||						// '%' cannot be in first position
			(AtSym == -1) ||				// No % is found
			(Space  != -1))					// No empty spaces permitted
	{		
		alert('Please enter a valid Discount for the resellerfg!');
		ElemName.focus();
		return false;
	}
	
	var s, ss;
	var s = ElemName.value
	ss = s.substring(0, Length);

	var strNumber = "0123456789."	
	var i;
	for (i = 0; i < ss.length; i++)
	{
		if (strNumber.indexOf(ss.charAt(i)) < 0)
		{
			alert('Please enter valid Discount for the reseller!');
			ElemName.focus();
			return false;
		}
	}

	return true;
}

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 + '!');
			fldNum.focus();
			return false;
		}
	}

	return true;
}

function IsInteger(fldInt, sName)
{
	var strNum = Trim(fldInt.value);
	
	if (strNum != "")
	{
		var nTemp = parseInt(strNum);

		if (nTemp != strNum)
		{
			if (sName == "")
			{
				sName = fldInt.name;
			}

			alert('Please enter a valid integer for ' + fldInt.name + '!');
			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)
{
	var nTop = (screen.height - nHeight) / 2;
	var nLeft = (screen.width - nWidth) / 2;

	var dlgWnd = window.open(sPage, "ShowWndDlg",
			"top=" + nTop + ",left=" + nLeft + ",width=" + nWidth + ",height=" +
			nHeight + ",resizable=yes,toolbar=no,status=yes,scrollbars=yes");
}

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 isValidDate(dateStr) {
	if (dateStr != "")
	{
		var matchArray;

		if (g_sDateFormat == "mm/dd/yyyy" || g_sDateFormat == "dd/mm/yyyy")
		{
			matchArray = dateStr.split("/");
		}
		else if (g_sDateFormat == "yyyy-mm-dd")
		{
			matchArray = dateStr.split("-");
		}

		if (matchArray == null || matchArray.length != 3) {
			alert("Please input a valid date format: " + g_sDateFormat);
			return false;
		}

		var month, day, year;

		if (g_sDateFormat == "mm/dd/yyyy")
		{
			month = matchArray[0];
			day = matchArray[1];
			year = matchArray[2];
		}
		else if (g_sDateFormat == "dd/mm/yyyy")
		{
			month = matchArray[1];
			day = matchArray[0];
			year = matchArray[2];
		}
		else if (g_sDateFormat == "yyyy-mm-dd")
		{
			month = matchArray[1];
			day = matchArray[2];
			year = matchArray[0];
		}

		if (month < 1 || month > 12) { // check month range
			alert("Month must be between 1 and 12.");
			return false;
		}
		if (day < 1 || day > 31) {
			alert("Day must be between 1 and 31.");
			return false;
		}
		if ((month==4 || month==6 || month==9 || month==11) && day==31) {
			alert("Month "+month+" doesn't have 31 days!")
			return false
		}
		if (month == 2) { // check for february 29th
			var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
			if (day>29 || (day==29 && !isleap)) {
				alert("February " + year + " doesn't have " + day + " days!");
				return false;
		   }
		}
	}

	return true;  // date is valid
}

function checkFld(fldThis, sName)
{
	if (Trim(fldThis.value) == "")
	{
		if (sName == "")
		{
			sName = fldThis.name;
		}

		alert("Please input " + sName + " first!");
		if (fldThis.type.toLowerCase() != "hidden")
			fldThis.focus();

		return false;
	}

	return true;
}

function checkPwd(frmThis, nMinLen)
{
	if (Trim(frmThis.pwd.value) == "")
	{
		alert("Password can not 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;
}
