function hasFileExtension(sFile, sExtension) {
	var pattern = new RegExp("^.+[\.](" + sExtension + "){1}$");
	return pattern.test(sFile);
}

function isNegativeInteger(sString) {
	return /^-\d+$/.test(sString);
}

function isPositiveInteger(sString) {
	return /^\d+$/.test(sString);
}

function isValidEmail(sEmail) {
	return /^([\w-]+(?:\.[\w-']+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(sEmail);
}

function isValidEmailList(sEmailList) {
	if ( sEmailList == "" )
		return false;

	var sList = sEmailList;

	while ( sList.indexOf(",") > 0 ) {
		sList = sList.replace(",", ";");
	}

	var lEmails = sList.split(";");

	for ( var i = 0 ; i < lEmails.length ; i ++ ){
		if ( !isValidEmail(trim(lEmails[i])) ) return false ;
	}

	return true;
}

function isValidPdf(sFile) {
	return /^.+[\.](pdf){1}$/i.test(sFile);
}

function isValidPostcode(sPostcode, sLocale) {
	if (sLocale == undefined)											// Default to validating UK postcodes.
		sLocale = "en_GB";

	switch (sLocale) {
		case "en_AU":
			return /^([0-9]){4}$/i.test(sPostcode);
			break;
		default:
			return /^([0-9A-Z]){2,4}[ ]{1}[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i.test(sPostcode);
			break;
	}
}

function isValidTelephone(sTelephone) {
	return /^(\+[\d-]{1,5})? ?(\(\d{1,3}\))? ?[0-9 -]{7,}$/.test(sTelephone);
}

function leftPad(pad_string, count, pad_char) {
	if (pad_string == undefined) pad_string = "";
	if (count == undefined) count = 1;
	if (pad_char == undefined) pad_char = "_";

	while (pad_string.length < count) {
		pad_string = pad_char.toString() + pad_string.toString();
	}

	return pad_string;
}

function lTrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}

function rTrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
