//***************************************************************************************
function notNull(str) {
	if (str.length == 0 )
		return false
	else 
		return true
}
//***************************************************************************************
function notBlank(str) {
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) != " ")
			return true
	}
	return false
}
//***************************************************************************************
function isSize(str, size) {
	if (str.length == size) 
		return true
	else
		return false
}
//***************************************************************************************
function isDigits(str) {
	var i
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if (mychar < "0" || mychar > "9")
			return false
	}
	return true
}
//***************************************************************************************
function onKeyPress_Number()
{
	var charCode = (navigator.appName == "Netscape") ? event.which : event.keyCode

	if (charCode > 31 && (charCode <48 || charCode > 57)) 
		return false
	else
		return true
}	

//***************************************************************************************
function isNumber(str) {
	numdecs = 0
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if ((mychar >= "0" && mychar <= "9") || mychar == "." || mychar == ",") {
			if (mychar == ".")
				numdecs++
		}
		else 
			return false
	}
	if (numdecs > 1)
		return false	
return true
}
//***************************************************************************************
function isMoney(str) {

	var strDollar = ""
	
	for (i = 0; i < str.length; i++) {
		mychar = str.charAt(i)
		if ((mychar >= "0" && mychar <= "9") || mychar == ".") {
				strDollar = strDollar + str.charAt(i)
		}
	}

	//alert (strDollar + " int = " + parseFloat(strDollar))
	
	if (!(parseFloat(strDollar) >= 0.00 && parseFloat(strDollar) <= 25000000.00))
		return false
			
return true
}
//***************************************************************************************
function isAlphanumeric(string)
{
	
	string = trim(string);
	if (string.length > 0)
	{
		var i;
		var character;
		var length = string.length;
		for (i = 0; i < length; i++)
		{
			character = string.charAt(i).toUpperCase();
			if ((character >= "0" && character <="9") || (character >= "A" && character <= "Z")) {
			}
			else
				return false;
		}
		return true;
	}
	return false;
}
//***************************************************************************************
function isAlphanumericAndDash(string)
{
	
	string = trim(string);
	if (string.length > 0)
	{
		var i;
		var character;
		var length = string.length;
		for (i = 0; i < length; i++)
		{
			character = string.charAt(i).toUpperCase()
				
			if ((character >= "0" && character <="9") || (character >= "A" && character <= "Z") || (character == "-" )) {
			}
			else
				return false;
		}
		return true;
	}
	return false;
}

//***************************************************************************************
function isAlphanumeric_Domain(string)
{
	string = trim(string);
	if (string.length > 0)
	{
		var i;
		var character;
		var length = string.length;

		for (i = 0; i < length; i++)
		{
			character = string.charAt(i)
				
			if ((character >= "0" && character <="9") || (character >= "A" && character <= "Z") || (character >= "a" && character <= "z") || (character == "-" ) || (character == "." ) || (character == "_" )) {
			}
			else
				return false;
		}
		return true;
	}
	return false;
}
//***************************************************************************************
function isInRange(str, num1, num2) {
	var i = parseInt(str)
	return((i >= num1) && (i <= num2))

}
//***************************************************************************************
function isEmail(str) {
	if ((str == "" || str.indexOf('@', 0) == -1) || str.indexOf('.') == -1)
		return false
	else
		return true
}
//***************************************************************************************
function isUrl(str) {
	if ((str == "" || str.indexOf("http://") == -1) || str.indexOf(".") == -1)
    	return false
	else
		return true
}
//***************************************************************************************
function isPassword(str) {

	if (containsSpaces(str)) {
		return false;
	}
	if (!isAlphanumeric(str)) {
		return false;
	}
   
	if (str.length < 6) {
		return false;
	}
	
	return true

}
//***************************************************************************************
function isMatch(str1, str2) {

	if (trim(str1) != trim(str2))
		return false
	else	
		return true

}
//***************************************************************************************
function stripNonDigits(str) {
	var i
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (isDigits(mychar)) 
			newstring += mychar
	}
	return newstring
}
//***************************************************************************************
function stripNonDigitsDec(str) {
	var i
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (isDigits(mychar) || mychar == ".") 
			newstring += mychar
	}
	return newstring
}
//***************************************************************************************
function stripChars(str, chars) {
	var i
	var newstring = ""
	for (i = 0;  i < str.length; i++) {
		mychar = str.charAt(i)
		if (chars.indexOf(mychar) == -1)
			newstring += mychar
	}
	return newstring
}
//***************************************************************************************
function validateSelectBox(myfield, s) {
	if (myfield.length > 0 && myfield.selectedIndex > 0 ) 
		return true
	else {
		myfield.focus()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateListBox(myfield, s) {
	if (myfield.length > 0 && myfield.selectedIndex >= 0 ) 
		return true
	else {
		myfield.focus()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateString(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateJpg(myfield, s) {
	var strTemp
	
	strTemp = myfield.value
	strTemp = strTemp.toUpperCase()

	if (strTemp.length != 0) {
		if (strTemp.indexOf(".JPG")> 0){
			return true
		}
		else {
			myfield.focus()
			myfield.select()			
			alert(s)
			return false
		}
	}
	else {
		return true
	}
}

//***************************************************************************************
function validateExt(myfield, ext, s) {
	var strTemp
	
	var aryExt = ext.split(";")
	var strExt = "";
	var blnFound = false;
	
	strTemp = myfield.value
	strTemp = strTemp.toUpperCase()
	
	if (strTemp.length != 0) {
		
		for (var i=0; i < aryExt.length; i++) {
		
			strExt = aryExt[i];
			
			if (strTemp.indexOf(strExt.toUpperCase()) > 0){
				blnFound = true;
				break;
			}
		}
	}
	else {
		blnfound = true;
	}

	if (blnFound == false) {
		myfield.focus()
		myfield.select()			
		alert(s)
		return false
	}
	else {
		return true	
	}
		
}
//***************************************************************************************

function validateZip(myfield) {
var valid = "0123456789-"
var hyphencount = 0
var field = myfield.value
var blnErr = false
var strErrMsg = ""



if (field.length!=5 && field.length!=10) {
	strErrMsg = "Please enter your 5 digit or 5 digit+4 zip code."			
	blnErr = true
}
else{
	for (var i=0; i < field.length; i++) {
		temp = "" + field.substring(i, i+1)
		
		if (temp == "-") hyphencount++
		
		if (valid.indexOf(temp) == "-1") {
			strErrMsg = "Invalid characters in your zip code.  Please try again."
			blnErr = true
			break
		}

		if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-")) {
			strErrMsg = "The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again."
			blnErr = true
			break
		}
	}
}


if (blnErr){
	myfield.focus()
	myfield.select()			
	alert(strErrMsg)
	return false
}
else
	return true

}
//***************************************************************************************
function validateGif(myfield, s) {
	var strTemp
	
	strTemp = myfield.value
	strTemp = strTemp.toUpperCase()

	if (strTemp.length != 0) {
		if (strTemp.indexOf(".GIF")> 0){
			return true
		}
		else {
			myfield.focus()
			myfield.select()			
			alert(s)
			return false
		}
	}
	else {
		return true
	}
}
//***************************************************************************************
function validateFileExtn(myfield, s,strExtn) {
	var strTemp
	var strExtnAry = new Array()
	var strNewExtn = ""
	var i = 1
	
	strTemp = myfield.value
	strTemp = strTemp.toUpperCase()
	
	if (strTemp.length == 0) return true
	

	//parse the array of extension to be verified
	for(i=1;i<= strExtn.length;i++)
	{
		if (strExtn.charAt(i) != ","){
			strNewExtn = strNewExtn + strExtn.charAt(i)
		}
		else {
			
			strExtnAry[i] = new Array(strNewExtn.toUpperCase())
			strNewExtn = ""
		}
	}
	
	if (strExtn.length > 0 ){
			
			strExtnAry[i] = new Array(strNewExtn.toUpperCase())
			strNewExtn = ""

	}
		
	
	//Loop thru array checking file for proper extensions
	for(i=1;i<=strExtnAry.length;i++)
	{	
		if (strTemp.indexOf(strExtnAry[i])> 0){
			return true
		}
	}

	myfield.focus()
	myfield.select()			
	alert(s)
	return false

}
//***************************************************************************************
function validateNumber(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isNumber(myfield.value)
		&& isMoney(myfield.value)
		) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateDigits(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isDigits(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateEmail(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isEmail(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateUrl(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isUrl(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateYear(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isDigits(myfield.value) && isInRange(myfield.value, 1700, 2050)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateListingID(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isDigits(myfield.value) && myfield.value.length == 8) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
// date field validation (called by other validation functions that specify minYear/maxYear)
function validateDate(gField) {
	var inputStr = gField.value

	// convert hyphen delimiters to slashes
	while (inputStr.indexOf("-") != -1) {
		inputStr = replaceString(inputStr,"-","/")
	}
	var delim1 = inputStr.indexOf("/")
	var delim2 = inputStr.lastIndexOf("/")
	if (delim1 != -1 && delim1 == delim2) {
		// there is only one delimiter in the string
		alert("The date entered is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy.  (If the month or date data is not available, enter \'01\' in the appropriate location.)")
		gField.focus()
		gField.select()
		return false
	}
	if (delim1 != -1) {
		// there are delimiters; extract component values
		var mm = parseInt(inputStr.substring(0,delim1),10)
		var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10)
		var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10)
	} else {
		// there are no delimiters; extract component values
		var mm = parseInt(inputStr.substring(0,2),10)
		var dd = parseInt(inputStr.substring(2,4),10)
		var yyyy = parseInt(inputStr.substring(4,inputStr.length),10)
	}
	if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
		// there is a non-numeric character in one of the component values
		alert("The date entered is not in an acceptable format.\n\nYou can enter dates in the following formats: mmddyyyy, mm/dd/yyyy, or mm-dd-yyyy.")
		gField.focus()
		gField.select()
		return false
	}
	if (mm < 1 || mm > 12) {
		// month value is not 1 thru 12
		alert("Months must be entered between the range of 01 (January) and 12 (December).")
		gField.focus()
		gField.select()
		return false
	}
	if (dd < 1 || dd > 31) {
		// date value is not 1 thru 31
		alert("Days must be entered between the range of 01 and a maximum of 31 (depending on the month and year).")
		gField.focus()
		gField.select()
		return false
	}
	
	// passed as parameters from other validation functions
	if (yyyy < 100) {
		// entered value is two digits, which we allow for 1930-2029
		if (yyyy >= 30) {
			yyyy += 1900
		} else {
			yyyy += 2000
		}
	}

	if (yyyy < 1900 || yyyy > 2100) {
		// date value is not 1 thru 31
		alert("You may only enter a year between 1900 and 2100.")
		gField.focus()
		gField.select()
		return false
	}	

	if (!checkMonthLength(mm,dd)) {
		gField.focus()
		gField.select()
		return false
	}
	if (mm == 2) {
		if (!checkLeapMonth(mm,dd,yyyy)) {
			gField.focus()
			gField.select()
			return false
		}
	}
	// put the Informix-friendly format back into the field
	gField.value = mm + "/" + dd + "/" + yyyy
	return true
}
//***************************************************************************************
// validates for a date returning true or false
function isDate(dtDate) {
	var inputStr = dtDate
	// convert hyphen delimiters to slashes
	while (inputStr.indexOf("-") != -1) {
		inputStr = replaceString(inputStr,"-","/")
	}
	var delim1 = inputStr.indexOf("/")
	var delim2 = inputStr.lastIndexOf("/")
	if (delim1 != -1 && delim1 == delim2) {
		return false
	}
	if (delim1 != -1) {
		// there are delimiters; extract component values
		var mm = parseInt(inputStr.substring(0,delim1),10)
		var dd = parseInt(inputStr.substring(delim1 + 1,delim2),10)
		var yyyy = parseInt(inputStr.substring(delim2 + 1, inputStr.length),10)
	} else {
		// there are no delimiters; extract component values
		var mm = parseInt(inputStr.substring(0,2),10)
		var dd = parseInt(inputStr.substring(2,4),10)
		var yyyy = parseInt(inputStr.substring(4,inputStr.length),10)
	}
	if (isNaN(mm) || isNaN(dd) || isNaN(yyyy)) {
		// there is a non-numeric character in one of the component values
		return false
	}
	if (mm < 1 || mm > 12) {
		// month value is not 1 thru 12
		return false
	}
	if (dd < 1 || dd > 31) {
		// date value is not 1 thru 31
		return false
	}
	
	// passed as parameters from other validation functions
	if (yyyy < 100) {
		// entered value is two digits, which we allow for 1930-2029
		if (yyyy >= 30) {
			yyyy += 1900
		} else {
			yyyy += 2000
		}
	}

	if (!checkMonthLength(mm,dd)) {
		return false
	}
	if (mm == 2) {
		if (!checkLeapMonth(mm,dd,yyyy)) {
			return false
		}
	}
	return true
}
//***************************************************************************************
function validateDateRange(myfield,myfield2,type, s) {
	var dtDate1 = new Date(myfield.value)
	var dtDate2 = new Date(myfield2.value)

//alert (" type = " + type + "date = " + myfield.value + "date 2 = " + myfield2.value + " d1 = " + dtDate1.getTime() + " d2 = " + dtDate2.getTime())
	
	switch(parseInt(type)){
		// equal too
		case 0:
			if (dtDate1.getTime() == dtDate2.getTime()) 
				return true
			
			break

		// greater or equal too
		case 1:
			if (dtDate1.getTime() >= dtDate2.getTime()) 
				return true
			
			break
		// less than equal too
		case 2:
			if (dtDate1.getTime() <= dtDate2.getTime()) 
				return true
			break	
		// greater too
		case 3:
			if (dtDate1.getTime() > dtDate2.getTime()) 
				return true
			break
		// less too
		case 4:
			if (dtDate1.getTime() < dtDate2.getTime()) 
				return true
			break
		default:
			alert("invalid type passed to validateDateRange")
			return false
	}

	//failed test
	myfield.focus()
	myfield.select()
	alert(s)
	return false

}

//***************************************************************************************
function validateRange(myfield,myfield2,type, s) {
	var strVal1 = myfield.value
	var strVal2 = myfield2.value
	
	switch(parseInt(type)){
		// equal too
		case 0:
			if (strVal1 == strVal2) 
				return true
			
			break

		// greater or equal too
		case 1:
			if (strVal1 >= strVal2) 
				return true
			
			break
		// less than equal too
		case 2:
			if (strVal1 <= strVal2) 
				return true
			break	
		// greater too
		case 3:
			if (strVal1 > strVal2) 
				return true
			break
		// less too
		case 4:
			if (strVal1 < strVal2) 
				return true
			break
		default:
			alert("invalid type passed to validateRange")
			return false
	}

	//failed test
	myfield.focus()
	myfield.select()
	alert(s)
	return false

}
//***************************************************************************************
function validateTimes(myfield,myfield2,type, s) {
	var int1
	var int2
	 
	if (myfield.selectedIndex > 0)
		int1 = myfield.selectedIndex
	else 
		int1 = 0
		
	if (myfield2.selectedIndex > 0)
		int2 = myfield2.selectedIndex
	else 
		int2 = 0		
		
	var str1 = myfield[int1].value
	var str2 = myfield2[int2].value


	
	dt1 = Date.parse('1/1/1 ' + str1)
	dt2 = Date.parse('1/1/1 ' + str2)

	switch(parseInt(type)){
		// equal too
		case 0:
			strCond = "dt1 == dt2";
			break;
		// greater or equal too
		case 1:
			strCond = "dt1 >= dt2";
			break;
		// less than equal too
		case 2:
			strCond = "dt1 <= dt2";
			break;	
		// greater too
		case 3:
			strCond = "dt1 > dt2";
			break;
		// less too
		case 4:
			strCond = "dt1 < dt2";
			break;
		default:
			alert("invalid type passed to validateTimes")
			return false
	}
	
	if(eval(strCond)) {
		return true;
	} else {
		alert(s);
		return false;
	}

}

//***************************************************************************************
function validatePassword(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && isPassword(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function validateMatch(myfield1, myfield2, s) {
	
	//alert(myfield1.value + "   " +  myfield2.value)
	
	if (isMatch(myfield1.value, myfield2.value)) 
		return true
	else {
		myfield2.focus()
		myfield2.select()
		alert(s)
		return false
	}
}
//***************************************************************************************
function fileNamesMatch(myfield1, myfield2, s) {
	
	if (isMatch(myfield1.value.toUpperCase(), myfield2.value.toUpperCase())) 
	{
		myfield2.focus()
		myfield2.select()
		alert(s)
		return true
	}	
	else
		return false
}

//*************************************************************************************
// check the entered month for too high a value
function checkMonthLength(mm,dd) {
	var months = new Array("","January","February","March","April","May","June","July","August","September","October","November","December")
	if ((mm == 4 || mm == 6 || mm == 9 || mm == 11) && dd > 30) {
		alert(months[mm] + " has only 30 days.")
		return false
	} else if (dd > 31) {
		alert(months[mm] + " has only 31 days.")
		return false
	}
	return true
}
//************************************************************************************
// check the entered February date for too high a value 
function checkLeapMonth(mm,dd,yyyy) {
	if (yyyy % 4 > 0 && dd > 28) {
		alert("February of " + yyyy + " has only 28 days.")
		return false
	} else if (dd > 29) {
		alert("February of " + yyyy + " has only 29 days.")
		return false
	}
	return true
}

//*************************************************************************************
// replace searchString with replaceString
function replaceString(mainStr,searchStr,replaceStr) {
	var front = getFront(mainStr,searchStr)
	var end = getEnd(mainStr,searchStr)
	
	if (front != null && end != null) {
		return front + replaceStr + end
	}
	return null
}
//*************************************************************************************
// replace searchString with replaceString if not fnd return orginal string
function replaceString2(mainStr,searchStr,replaceStr) {
	var front = getFront(mainStr,searchStr)
	var end = getEnd(mainStr,searchStr)
	
	if (front != null && end != null) {
		return front + replaceStr + end
	}
	
	//not fnd return orginal string
	return mainStr
}

//*************************************************************************************
// extract front part of string prior to searchString
function getFront(mainStr,searchStr){
	foundOffset = mainStr.indexOf(searchStr)
	if (foundOffset == -1) {
		return null
	}
	return mainStr.substring(0,foundOffset)
}
//***************************************************************************************
// extract back end of string after searchString
function getEnd(mainStr,searchStr) {
	foundOffset = mainStr.indexOf(searchStr)
	if (foundOffset == -1) {
		return null
	}
	return mainStr.substring(foundOffset+searchStr.length,mainStr.length)
}
//***************************************************************************************
function startUpload(form) {
	winstyle="height=200,width=400,status=no,toolbar=no,menubar=no,location=no";
		
	// This will popup the progress window
	window.open("progress1.asp","progress",winstyle);
	form.submit();
}
//***************************************************************************************
function containsSpaces(string)
{
	if (string.length > 0)
	{
		var i;
		var character;
		var length = string.length;
		for (i = 0; i < length; i++)
		{
			character = string.charAt(i).toUpperCase();
			if (character == " ")
			{
				return true;
			}
		}
		return false;
	}
	return false;
}
//***************************************************************************************
function trim(string)
{
/*	var i = string.indexOf(" ");
	var l = string.length
	while ((i > -1) && (i < 1))
	{
		string = string.substring(i+1, l);
		i = string.indexOf(" ");
		l = string.length
	}
	i = string.lastIndexOf(" ");
	l = string.length
	while ((i > -1) && (i > l-2))
	{
		string = string.substring(0, i-1);
		i = string.lastIndexOf(" ");
		l = string.length;
	}
*/	
	//Trim the leading spaces
	while(''+string.charAt(0)==' ')
		string=string.substring(1,string.length);
	//Trim the Trailing spaces
	while(''+string.charAt(string.length-1)==' ')
		string=string.substring(0,string.length-1);	
	
	
	return string
}
//***********************************************************************************
function validateLength(gField,len,s)
{ 
	var str
		
	str = gField.value
	
	if (str.length != len){
		alert(s)
		gField.focus()
		gField.select()
		return false
	}
	else
		return true
}
//***********************************************************************************
function validateMaxLength(gField,len,s)
{ 
	var str
	
	str = gField.value
 
 	if (str.length > len){
		alert(s)
		gField.focus()
		gField.select()
		return false
	}
	else
		return true
}
//***********************************************************************************
function validateStringNoSpaces(myfield, s) {
	if (notNull(myfield.value)&& notBlank(myfield.value) && !containsSpaces(myfield.value))
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***********************************************************************************
function validateAlphaNumeric(myfield, s) {
	if (isAlphanumeric(myfield.value))
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}

//***********************************************************************************
function validatePhone(myfield,s,len) {
	if (validateStringNoSpaces(myfield,s+ " can not contain spaces.")
		 && validateLength(myfield,len, s + " must contain " + len + " characters.")
		 && validateAlphaNumeric(myfield,s + " must contain only numbers and letters.")
		 )
		return true
	else
		return false
}
//***********************************************************************************
function validateDomain(myfield,s) {
	if (!containsSpaces(myfield.value) && notNull(myfield.value)&& notBlank(myfield.value) && isAlphanumericAndDash(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}
//***********************************************************************************
function validateDomain2(myfield,s) {
	if (!containsSpaces(myfield.value) && notNull(myfield.value)&& notBlank(myfield.value) && isAlphanumeric_Domain(myfield.value)) 
		return true
	else {
		myfield.focus()
		myfield.select()
		alert(s)
		return false
	}
}

//***********************************************************************************
function formatCurrency(anynum) {
   //-- Returns passed number as string in $xxx,xxx.xx format.
   anynum=eval(anynum)
   workNum=Math.abs((Math.round(anynum*100)/100));workStr=""+workNum
   if (workStr.indexOf(".")==-1){workStr+=".00"}
   dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
   pStr=workStr.substr(workStr.indexOf("."))
   while (pStr.length<3){pStr+="0"}

   //--- Adds comma in thousands place.
   if (dNum>=1000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
   }

   //-- Adds comma in millions place.
   if (dNum>=1000000) {
      dLen=dStr.length
      dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
   }
   retval = dStr + pStr 
   //-- Put numbers in parentheses if negative.
   if (anynum<0) {retval="("+retval+")"}
   return "$"+retval
}

