// IsEmpty (STRING Input)
function IsEmpty(Input)
{
   return ((Input == null) || (Input.length == 0));
}

// IsEmail (STRING Input [, BOOLEAN EmptyOK])
// 
// Email address must be of form a@b.c -- in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
function IsEmail (Input)
{
	var reEmail = /^.+\@.+\..+$/;

	if (IsEmpty(Input))
	{
		if (IsEmail.arguments.length == 1)
		{
			return false;
		}
		else
		{
			return (IsEmail.arguments[1] == true);
		};
	}
	else
	{
		return reEmail.test(Input)
	};
}

function IsNumeric(Input)
{
	return !isNaN(parseFloat(Input)) && isFinite(Input);
}


function CleanPhoneNo(Input)
{
	Input = Trim(Input);
	if (Input.charAt(0) == "+")
	{
		return "+" + Input.replace(/[^\d]/g, "");
	}
	else
	{
		return Input.replace(/[^\d]/g, "");
	};
}

function IsPhoneNo(Input)
{
	if (Input.charAt(0) == "+")
	{
		Input = Input.substring(1);
	};
	if (Input.match(/[^\d]/))
	{
		return false;
	};
	if ((Input.length < 9) || (Input.length > 15))
	{
		return false;
	};
	return true;
}


function CleanVATNo(Input)
{
	return Input.replace(/[^\d]/g, "");
}

function IsVATNo(Input)
{
	var strVAT;
	var lngVATPart1;
	var lngVATPart2;

	strVAT = Input.toString();
	lngVATPart1 = parseInt(Left(strVAT,7));
	lngVATPart2 = parseInt(Right(strVAT,2));
	//Return success, if modulo 97 is OK
	if ((97 - (parseFloat(lngVATPart1) % 97)) == lngVATPart2)
	{
		return true;
	}
	else
	{
		return false;
	};
}

function LTrim(Input)
{
	return Input.replace(/^\s+/, '');
}

function RTrim(Input)
{
	return Input.replace(/\s+$/, '');
}

function Trim(Input)
{
	return Input.replace(/^\s+|\s+$/g, '');
}

function Left(Input, NumOfChars)
{
	if (NumOfChars <= 0)
	{
	    return "";
	}
	else if (NumOfChars > String(Input).length)
	{
	    return Input;
	}
	else
	{
	    return String(Input).substring(0,NumOfChars);
	};
}

function Right(Input, NumOfChars)
{
	var intLength;
	if (NumOfChars <= 0)
	{
		return "";
	}
	else if (NumOfChars > String(Input).length)
	{
		return Input;
	}
	else
	{
		intLength = String(Input).length;
		return String(Input).substring(intLength, intLength - NumOfChars);
	};
}

function SCase(Input)
{
        return Input.toLowerCase().replace(/\b[a-z]/g, cnvrt);
        function cnvrt()
	{
            return arguments[0].toUpperCase();
        }
}

// Back2ForwardSlash(STRING Input)
//
// Replaces all back slashes with forward slashes
function Back2ForwardSlash(Input)
{
	return Input.replace(/\\/g, "/");
}

// Convert MS new lines CRLF
function CrLf2br(Input)
{
	return Input.replace(/\r\n/, "<br>");
}

// Convert non-MS newlines either CR or LF
function Return2br(Input)
{
        return Input.replace(/(\r\n|[\r\n])/g, "<br>");
}

function SortCombobox(objCombobox)
{
	var arrOptions = new Array();

	for (var i = 0; i < objCombobox.options.length; i++)
	{
		arrOptions[i] = new Array();
		arrOptions[i][0] = objCombobox.options[i].text;
		arrOptions[i][1] = objCombobox.options[i].value;
		arrOptions[i][2] = objCombobox.options[i].selected;
	};
	arrOptions.sort();
	for (var i = 0; i < objCombobox.options.length; i++)
	{
		objCombobox.options[i].text = arrOptions[i][0];
		objCombobox.options[i].value = arrOptions[i][1];
		objCombobox.options[i].selected = arrOptions[i][2];
	};
}

function ComboboxSelectOption(objCombobox, OptionIndex, HasValueOK)
{
	var blnSelected = false;

	if (IsEmpty(OptionIndex))
	{
		OptionIndex = 0;
	};
	if (IsEmpty(HasValueOK))
	{
		HasValueOK = false;
	};
	if (!(IsEmpty(objCombobox.value)) && !(HasValueOK))
	{
		return true;
	}
	else
	{
		if (OptionIndex <= (objCombobox.options.length - 1))
		{
			objCombobox.options[OptionIndex].selected = true;
			return true;
		}
		else
		{
			return false;
		};
	};
	
}

