//insert <br> when it find chr(10) and chr(13)
function insertBR(str) {
	var sNewText = "";
	for (var ct = 0; ct < str.length; ct++) {
		var c = str.charAt(ct);
		if (c == '\n') sNewText = sNewText + "<br>";
		else sNewText = sNewText + c;
	}
	return sNewText;
} //insertBR(str)


//replace white space with nothing
function stripString(sText) {
	var sNewText = sText.toString().replace(/\s/g, '');
	return sNewText;
} //stripString(sText)


//replace invalid characters in string
function stringReplace(sText) {
	var sNewText = sText.toString().replace(/\"/g,"&quot;");
	sNewText = sText.toString().replace(/\'/g, "&rsquo;");
	return sNewText;
} //stringReplace(sText)


//pass in a value and return true if blank or contains only spaces
function isBlank(str) {
	if ((str == null) || (str == ""))
		return true;
	else
		for (var i = 0; i < str.length; i++) {
			var c = str.charAt(i);
			if ((c != ' ') && (c != '\n'))
				return false;
		}
	return true;
}


//verify email address format
function isEmail(strIn) {
	var emailExp = /^[a-z][a-z_0-9\.\-]+@[a-z_0-9\.\-]+\.[a-z]{2,4}$/i;
	return emailExp.test(strIn);
} //isEmail(strIn)


//verify string contains letter only
function hasSpace(strIn) {
	var space = /[\s]/g;
	return space.test(strIn);
} //hasSpace(strIn)


//verify that the value only contains number digits
function isNum(fvalue) {
	var anum = /^\d+$/;
	return anum.test(fvalue);
}



//verify that the value is number only
function isNumber(fvalue) {
	return isNum(fvalue);
} //isNumber(fvalue)



//verify that the value contains letter, numeral or underscore
function hasChar(strIn) {
	var charExp = /\w/;
	return charExp.test(strIn);
}


//Original:  Cyanide_7 (leo7278@hotmail.com)
//Web Site:  http://www7.ewebcity.com/cyanide7
//The JavaScript Source!! http://javascript.internet.com
//pass in a value and it will format it with dollar sign and cents
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
		num = "0";
	cents = Math.floor((num*100+0.5)%100); 
	num = Math.floor(num).toString();
	if(cents < 10)
		cents = "0" + cents; 
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
		num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3)); 
	return ('$' + num + '.' + cents); 
}


//pass in a value and it will format it with a coma
function formatNumber(num) {
	num = num.toString().replace(/\$|\,/g,'');
	for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
		num = num.substring(0, num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));
	return num;
}


//take user to a new URL
function leapTo (newURL) {
   if (  (newURL != "")  &&  (newURL != null)  )
      window.location=new_url;
   else
      alert("\nYou must make a selection.");
}


//pass in the field object and it will format phone number
function phoneMask(phoneNum) {
	phoneNum = phoneNum.toString().replace(/\(|\)|\-/g,'');
	if ((phoneNum.length != 10) || (isNum(phoneNum))) {
		alert("\nPhone number \"" + phoneNum + "\" does not seems correct.\nPlease enter a 10 digits phone number.");
		return phoneNum;
	} else {
		var phone = "(" + phoneNum.substring(0,3) + ")" + phoneNum.substring(3,6) + "-" + phoneNum.substring(6);
		return phone;
	}
}


//change color to the link on mouse over
function changeColor(sColor) {
	src = event.toElement;
	if (src.tagName == "A") {
		src.oldcol = src.style.color;
		src.style.color = sColor; 
	}
}


//change color back to its original color when mouse move out
function changeBack() {
	src=event.fromElement;
	if (src.tagName == "A") {
		src.style.color = src.oldcol;
	}
}



//evaluate checkbox/radio button for selection
//if found at least one checked then return true else false
//	o	=== checkbox/radio button object on a form 
function evalOptionChecked(o) {
	var bOut = false;
	if (!o)
		bOut = false;
	else
		if (!o.length) {
			if (o.checked)
				bOut = true;
		} else
			for (var iIdx = 0; iIdx < o.length; iIdx++)
				if (o[iIdx].checked)
					bOut = true;
	return bOut;
} //evalOptionChecked(o)




//evaluate select option (multiple|Single)
//if found at least one selected then return true else false
//	o			=== select object on a form
//	sNegChar	=== character string that evaluate the function to false
//	iMultMaxCnt	===	maximum option count for multiple select option
function evalOptionSelected(o, sNegChar, iMultMaxCnt) {
	var bOut = false;
	var sNgChr = (sNegChar? sNegChar : '');
	var iCnt = 0;
	if (!o)
		bOut = false;
	else
		var iMaxCnt = (iMultMaxCnt? iMultMaxCnt : o.length);
		if (o.type == "select-multiple") {
			if (o.selectedIndex != -1) {
				for (var idx = 0; idx < o.options.length; idx++)
					if ((o.options[idx].value == sNgChr) && (o.options[idx].selected))
						return false;
					else
						if (o.options[idx].selected)
							iCnt = iCnt + 1;
			}
			if ((iCnt <= iMaxCnt) && (iCnt != 0))
				bOut = true; 
		} else
			if (o.type == "select-one")
				if ((o.selectedIndex != -1) && (o.options[o.selectedIndex].value != sNgChr))
					bOut = true;
	return bOut;
} //evalOptionSelected(o, sNegChar, iMultMaxCnt)



//count characters in a string
//	iMaxLen		===	string maximum length
//	oInputField	===	text area object
//	oMeterField	===	text box field that display character remaining
function countStringLength(iMaxLen, oInputField, oMeterField) {
	var txtString = oInputField.value;
	var strLength = txtString.length;
	if (strLength > iMaxLen) {
		alert("Maximum length reached. Please limit text to " + iMaxLen + " characters.");
	}
	oMeterField.value = iMaxLen - txtString.length;
	oInputField.focus();
} //countStringLength(iMaxLen, oInputField, oMeterField)



//count return key in a string
function getReturnKeyCount(data) {
	var i = 0;
	var returnKey = 0;
	var dataLength = data.length;
	while (i < dataLength - 2) {
		if (data.charAt(i++) == "\r") {
			returnKey++;
		}
	}
	return (returnKey);
} //getReturnKeyCount(data)


