function isNumeric(text, bDecimalOK, bSilent) {
	var valid = true;

	for (i=0; i < text.length; i++) {
		if ((text.charAt(i) >= '0') && (text.charAt(i) <= '9')) {
			valid = true;
		} else if (bDecimalOK && (text.charAt(i) == '.')) {
			valid = true;
		} else if ((text.charAt(i) == '-') && (i==0)) {
			valid = true;
		} else {
			valid = false
		}

		if (!valid) {
			if (!bSilent) {alert("The value " + text + " is not numeric.");}
			return false;
		}
	}

	return true;
}

function formatMoney(value) {
	var str;
	var neg = (value < 0);
	value = Math.abs(Math.round(value * 100));
	if (value < 10) {
		str = "0.0" + value;
	} else if (value < 100) {
		str = "0." + value;
	} else {
		str = new String(value);
		str = str.substr(0, str.length-2) + "." + str.substr(str.length-2);
	}
	if (neg) str = "-"+str;
	return str;	
}

// equivalent to Java's DecimalFormat("0.00##");
function formatTwoFour(value) {
	var str;
    var newStr;
	var neg = (value < 0);
    str = new String(value);
    if (str.indexOf(".") >= 0) {
        newStr = str.substr(0, str.indexOf(".")+5);
        // trim last 2 digits if they are 0
        if (newStr.substr(newStr.length, 1) == "0") newStr.substring(0, newStr.length-1)
        if (newStr.substr(newStr.length, 1) == "0") newStr.substring(0, newStr.length-1)
    } else {
        newStr = str + ".00";
    }
	return newStr;	
}

function formatPhone(value) {
	var digitsOnly		= "";
	var formatted		= "";
	var containsText	= false;
	for (j=0; j<value.length; j++) {
		if ((value.substr(j,1)!="-") && isNumeric(value.substr(j,1),false,true)) {
			digitsOnly += value.substr(j,1);
		} else if ((value.substr(j,1)>='A' && value.substr(j,1)<='Z') || (value.substr(j,1)>='a' && value.substr(j,1)<='z')) {
			containsText = true;
			break;
		}
	}
	if (containsText) {
		formatted = value;
	} else if (digitsOnly.length == 7) {
		formatted = digitsOnly.substr(0,3) + "-" + digitsOnly.substr(3);
	} else if (digitsOnly.length == 10) {
		formatted = "(" + digitsOnly.substr(0,3) + ") " + digitsOnly.substr(3,3) + "-" + digitsOnly.substr(6);
	} else if (digitsOnly.length == 11) {
		formatted = digitsOnly.substr(0,1) + "-" + digitsOnly.substr(1,3) + "-" + digitsOnly.substr(4,3) + "-" + digitsOnly.substr(7);
	} else {
		formatted = value;
	}
	return formatted;
}

Date.prototype.toMMDDYYYY = function () {
	return isNaN (this) ? 'NaN' : [this.getMonth() > 8 ? this.getMonth() + 1 : '0' + (this.getMonth() + 1), this.getDate() > 9 ? this.getDate() : '0' + this.getDate(), this.getFullYear()].join('/')
}

function replaceString(sOriginal, sSubStr, sReplStr) {
    var nPos;
    var sResult = new String(sOriginal);
    
    nPos = sResult.indexOf(sSubStr, 0);
    while (nPos >= 0) {
        sResult = sResult.substring(0, nPos) + sReplStr + sResult.substring(nPos + sSubStr.length);
        nPos = sResult.indexOf(sSubStr, nPos + sReplStr.length);
    }
    return sResult;
}

function selectOption(list, value) {
	for (i = 0; i < list.options.length; i++) {
		if (list.options[i].value == value) {
			list.options[i].selected = true;
			i = list.options.length;
		}
	}
}
function getSelectedOption(list) {
	return list.options[list.selectedIndex];
}

function trim(str) {
	str = str.replace(/^[ ]+(.*)$/, '$1'); // Trims leading spaces
	str = str.replace(/^(.*)[ ]+$/, '$1'); // Trims trailing spaces
	return str;
}

String.prototype.startsWith = function(str) {
	return (this.match("^"+str)==str);
}

String.prototype.endsWith = function(str) {
	return (this.match(str+"$")==str);
}

function prepForQS(sOriginal) {
    var nPos = 0;
    var sResult = new String();
	var character = '';

    while (nPos < sOriginal.length) {
		character = sOriginal.charAt(nPos);
		if (character == '\"') {sResult += "%22";}
		else if (character == '\'') {sResult += "%27";}
		else if (character == '&')	{sResult += "%26";}
		else						{sResult += character;}
		nPos++;
    }
    return sResult;
}
	
function getSelectedRadio(buttonGroup) {
	if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
		for (var i=0; i<buttonGroup.length; i++) {if (buttonGroup[i].checked) return i;}
	} else if (buttonGroup.checked) {
		return 0;
	}
	return -1;	// if we get to this point, no radio button is selected
}

function selectRadio(buttonGroup, value) {
	if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
		for (var i=0; i<buttonGroup.length; i++) {buttonGroup[i].checked = (buttonGroup[i].value==value);}
	} else if (buttonGroup) {
		buttonGroup.checked = true;
	}
}

function getMonthName(month, abbrev) {
	if (month == 0)		return (abbrev?"Jan":"January");
	if (month == 1)		return (abbrev?"Feb":"February");
	if (month == 2)		return (abbrev?"Mar":"March");
	if (month == 3)		return (abbrev?"Apr":"April");
	if (month == 4)		return (abbrev?"May":"May");
	if (month == 5)		return (abbrev?"Jun":"June");
	if (month == 6)		return (abbrev?"Jul":"July");
	if (month == 7)		return (abbrev?"Aug":"August");
	if (month == 8)		return (abbrev?"Sep":"September");
	if (month == 9)		return (abbrev?"Oct":"October");
	if (month == 10)	return (abbrev?"Nov":"November");
	if (month == 11)	return (abbrev?"Dec":"December");
	return "";
}

function optionsStates() {
	return "<option value='AL' selected>Alabama</option>" +
	"<option value='AK'>Alaska</option>" +
	"<option value='AZ'>Arizona</option>" +
	"<option value='AR'>Arkansas</option>" +
	"<option value='CA'>California</option>" +
	"<option value='CO'>Colorado</option>" +
	"<option value='CT'>Connecticut</option>" +
	"<option value='DE'>Delaware</option>" +
	"<option value='DC'>District of Columbia</option>" +
	"<option value='FL'>Florida</option>" +
	"<option value='GA'>Georgia</option>" +
	"<option value='HI'>Hawaii</option>" +
	"<option value='ID'>Idaho</option>" +
	"<option value='IL'>Illinois</option>" +
	"<option value='IN'>Indiana</option>" +
	"<option value='IA'>Iowa</option>" +
	"<option value='KS'>Kansas</option>" +
	"<option value='KY'>Kentucky</option>" +
	"<option value='LA'>Louisiana</option>" +
	"<option value='ME'>Maine</option>" +
	"<option value='MD'>Maryland</option>" +
	"<option value='MA'>Massachusetts</option>" +
	"<option value='MI'>Michigan</option>" +
	"<option value='MN'>Minnesota</option>" +
	"<option value='MS'>Mississippi</option>" +
	"<option value='MO'>Missouri</option>" +
	"<option value='MT'>Montana</option>" +
	"<option value='NE'>Nebraska</option>" +
	"<option value='NV'>Nevada</option>" +
	"<option value='NH'>New Hampshire</option>" +
	"<option value='NJ'>New Jersey</option>" +
	"<option value='NM'>New Mexico</option>" +
	"<option value='NY'>New York</option>" +
	"<option value='NC'>North Carolina</option>" +
	"<option value='ND'>North Dakota</option>" +
	"<option value='OH'>Ohio</option>" +
	"<option value='OK'>Oklahoma</option>" +
	"<option value='OR'>Oregon</option>" +
	"<option value='PA'>Pennsylvania</option>" +
	"<option value='RI'>Rhode Island</option>" +
	"<option value='SC'>South Carolina</option>" +
	"<option value='SD'>South Dakota</option>" +
	"<option value='TN'>Tennessee</option>" +
	"<option value='TX'>Texas</option>" +
	"<option value='UT'>Utah</option>" +
	"<option value='VA'>Virginia</option>" +
	"<option value='VT'>Vermont</option>" +
	"<option value='WA'>Washington</option>" +
	"<option value='WI'>Wisconsin</option>" +
	"<option value='WV'>West Virginia</option>" +
	"<option value='WY'>Wyoming</option>"
}

function optionsProvinces() {
	return "<option value='AB'>Alberta</option>" +
	"<option value='BC'>British Columbia</option>" +
	"<option value='MB'>Manitoba</option>" +
	"<option value='NB'>New Brunswick</option>" +
	"<option value='NF'>Newfoundland</option>" +
	"<option value='NT'>Northwest Territory</option>" +
	"<option value='NS'>Nova Scotia</option>" +
	"<option value='NU'>Nunavut Territory</option>" +
	"<option value='ON'>Ontario</option>" +
	"<option value='PE'>Prince Edward Island</option>" +
	"<option value='QC'>Quebec</option>" +
	"<option value='SK'>Saskatchewan</option>" +
	"<option value='YT'>Yukon Territory</option>"
}

function optionsCountries() {
	return "<option value='Andorra'>Andorra</option>" +
	"<option value='Anguilla'>Anguilla</option>" +
	"<option value='Antigua And Barbudas'>Antigua And Barbudas</option>" +
	"<option value='Argentina'>Argentina</option>" +
	"<option value='Armenia'>Armenia</option>" +
	"<option value='Aruba'>Aruba</option>" +
	"<option value='Australia'>Australia</option>" +
	"<option value='Austria'>Austria</option>" +
	"<option value='Azerbaijan'>Azerbaijan</option>" +
	"<option value='Bahamas'>Bahamas</option>" +
	"<option value='Bangladesh'>Bangladesh</option>" +
	"<option value='Barbados'>Barbados</option>" +
	"<option value='Belarus'>Belarus</option>" +
	"<option value='Belgium'>Belgium</option>" +
	"<option value='Belize'>Belize</option>" +
	"<option value='Bermuda'>Bermuda</option>" +
	"<option value='Bhutan'>Bhutan</option>" +
	"<option value='Bonaire'>Bonaire</option>" +
	"<option value='Bosnia-Herzegovina'>Bosnia-Herzegovina</option>" +
	"<option value='Botswana'>Botswana</option>" +
	"<option value='Brazil'>Brazil</option>" +
	"<option value='British Virgin Is'>British Virgin Is</option>" +
	"<option value='Brunei'>Brunei</option>" +
	"<option value='Bulgaria'>Bulgaria</option>" +
	"<option value='Burkina Faso'>Burkina Faso</option>" +
	"<option value='Burundi'>Burundi</option>" +
	"<option value='Cameroon'>Cameroon</option>" +
	"<option value='Canada'>Canada</option>" +
	"<option value='Canary Islands'>Canary Islands</option>" +
	"<option value='Cape Verde'>Cape Verde</option>" +
	"<option value='Cayman Islands'>Cayman Islands</option>" +
	"<option value='Central African Republic'>Central African Republic</option>" +
	"<option value='Chad'>Chad</option>" +
	"<option value='Channel Islands'>Channel Islands</option>" +
	"<option value='Chile'>Chile</option>" +
	"<option value='China'>China</option>" +
	"<option value='Comoros'>Comoros</option>" +
	"<option value='Congo'>Congo</option>" +
	"<option value='Cook Islands'>Cook Islands</option>" +
	"<option value='Costa Rica'>Costa Rica</option>" +
	"<option value='Cote D Ivoire'>Cote D Ivoire</option>" +
	"<option value='Croatia'>Croatia</option>" +
	"<option value='Curacao'>Curacao</option>" +
	"<option value='Cyprus'>Cyprus</option>" +
	"<option value='Czech Republic'>Czech Republic</option>" +
	"<option value='Denmark'>Denmark</option>" +
	"<option value='Djibouti'>Djibouti</option>" +
	"<option value='Dominica'>Dominica</option>" +
	"<option value='Dominican Republic'>Dominican Republic</option>" +
	"<option value='Ecuador'>Ecuador</option>" +
	"<option value='Egypt'>Egypt</option>" +
	"<option value='El Salvador'>El Salvador</option>" +
	"<option value='Estonia'>Estonia</option>" +
	"<option value='Ethiopia'>Ethiopia</option>" +
	"<option value='Falkland Islands'>Falkland Islands</option>" +
	"<option value='Faroe Islands'>Faroe Islands</option>" +
	"<option value='Fiji'>Fiji</option>" +
	"<option value='Finland'>Finland</option>" +
	"<option value='France'>France</option>" +
	"<option value='French Guiana'>French Guiana</option>" +
	"<option value='French Polynesia'>French Polynesia</option>" +
	"<option value='Gabon'>Gabon</option>" +
	"<option value='Gambia'>Gambia</option>" +
	"<option value='Georgia'>Georgia</option>" +
	"<option value='Germany'>Germany</option>" +
	"<option value='Gibraltar'>Gibraltar</option>" +
	"<option value='Greece'>Greece</option>" +
	"<option value='Greenland'>Greenland</option>" +
	"<option value='Grenada'>Grenada</option>" +
	"<option value='Guadeloupe'>Guadeloupe</option>" +
	"<option value='Guatemala'>Guatemala</option>" +
	"<option value='Guinea'>Guinea</option>" +
	"<option value='Guinea-Bissau'>Guinea-Bissau</option>" +
	"<option value='Guyana'>Guyana</option>" +
	"<option value='Honduras'>Honduras</option>" +
	"<option value='Hong Kong'>Hong Kong</option>" +
	"<option value='Hungary'>Hungary</option>" +
	"<option value='Iceland'>Iceland</option>" +
	"<option value='India'>India</option>" +
	"<option value='Ireland'>Ireland</option>" +
	"<option value='Israel'>Israel</option>" +
	"<option value='Italy'>Italy</option>" +
	"<option value='Jamaica'>Jamaica</option>" +
	"<option value='Japan'>Japan</option>" +
	"<option value='Jordan'>Jordan</option>" +
	"<option value='Kazakhstan'>Kazakhstan</option>" +
	"<option value='Kenya'>Kenya</option>" +
	"<option value='Kuwait'>Kuwait</option>" +
	"<option value='Kyrgyzstan'>Kyrgyzstan</option>" +
	"<option value='Laos'>Laos</option>" +
	"<option value='Latvia'>Latvia</option>" +
	"<option value='Lesotho'>Lesotho</option>" +
	"<option value='Liberia'>Liberia</option>" +
	"<option value='Liechtenstein'>Liechtenstein</option>" +
	"<option value='Lithuania'>Lithuania</option>" +
	"<option value='Luxembourg'>Luxembourg</option>" +
	"<option value='Macau'>Macau</option>" +
	"<option value='Macedonia'>Macedonia</option>" +
	"<option value='Madagascar'>Madagascar</option>" +
	"<option value='Malawi'>Malawi</option>" +
	"<option value='Malaysia'>Malaysia</option>" +
	"<option value='Mali'>Mali</option>" +
	"<option value='Malta'>Malta</option>" +
	"<option value='Martinique'>Martinique</option>" +
	"<option value='Mauritania'>Mauritania</option>" +
	"<option value='Mauritius'>Mauritius</option>" +
	"<option value='Mexico'>Mexico</option>" +
	"<option value='Micronesia'>Micronesia</option>" +
	"<option value='Moldova'>Moldova</option>" +
	"<option value='Monaco'>Monaco</option>" +
	"<option value='Montenegro'>Montenegro</option>" +
	"<option value='Montserrat'>Montserrat</option>" +
	"<option value='Morocco'>Morocco</option>" +
	"<option value='Mozambique'>Mozambique</option>" +
	"<option value='Myanmar'>Myanmar</option>" +
	"<option value='Namibia'>Namibia</option>" +
	"<option value='Nauru'>Nauru</option>" +
	"<option value='Nepal'>Nepal</option>" +
	"<option value='Netherlands'>Netherlands</option>" +
	"<option value='New Zealand'>New Zealand</option>" +
	"<option value='Nicaragua'>Nicaragua</option>" +
	"<option value='Niger'>Niger</option>" +
	"<option value='Northern Ireland'>Northern Ireland</option>" +
	"<option value='Norway'>Norway</option>" +
	"<option value='Oman'>Oman</option>" +
	"<option value='Panama'>Panama</option>" +
	"<option value='Papua New Guinea'>Papua New Guinea</option>" +
	"<option value='Paraguay'>Paraguay</option>" +
	"<option value='Peru'>Peru</option>" +
	"<option value='Philippines'>Philippines</option>" +
	"<option value='Pitcairn Island'>Pitcairn Island</option>" +
	"<option value='Poland'>Poland</option>" +
	"<option value='Portugal'>Portugal</option>" +
	"<option value='Qatar'>Qatar</option>" +
	"<option value='Reunion'>Reunion</option>" +
	"<option value='Rwanda'>Rwanda</option>" +
	"<option value='Russia'>Russia</option>" +
	"<option value='Saba'>Saba</option>" +
	"<option value='San Marino'>San Marino</option>" +
	"<option value='Saudi Arabia'>Saudi Arabia</option>" +
	"<option value='Senegal'>Senegal</option>" +
	"<option value='Serbia'>Serbia</option>" +
	"<option value='Seychelles'>Seychelles</option>" +
	"<option value='Sierra Leone'>Sierra Leone</option>" +
	"<option value='Singapore'>Singapore</option>" +
	"<option value='Slovakia'>Slovakia</option>" +
	"<option value='Slovenia'>Slovenia</option>" +
	"<option value='Soa Tome And Principe'>Soa Tome And Principe</option>" +
	"<option value='Solomon Islands'>Solomon Islands</option>" +
	"<option value='Somalia'>Somalia</option>" +
	"<option value='South Africa'>South Africa</option>" +
	"<option value='South Korea'>South Korea</option>" +
	"<option value='Spain'>Spain</option>" +
	"<option value='Sri Lanka'>Sri Lanka</option>" +
	"<option value='St Barthelemy'>St Barthelemy</option>" +
	"<option value='St Helena'>St Helena</option>" +
	"<option value='St Kitts And Nevis'>St Kitts And Nevis</option>" +
	"<option value='Saint Lucia'>Saint Lucia</option>" +
	"<option value='St Maarten/St Martin'>St Maarten/St Martin</option>" +
	"<option value='St Pierre And Miquelon'>St Pierre And Miquelon</option>" +
	"<option value='St Vincent'>St Vincent</option>" +
	"<option value='Suriname'>Suriname</option>" +
	"<option value='Swaziland'>Swaziland</option>" +
	"<option value='Sweden'>Sweden</option>" +
	"<option value='Switzerland'>Switzerland</option>" +
	"<option value='Syria'>Syria</option>" +
	"<option value='Taiwan'>Taiwan</option>" +
	"<option value='Tajikistan'>Tajikistan</option>" +
	"<option value='Tanzania'>Tanzania</option>" +
	"<option value='Thailand'>Thailand</option>" +
	"<option value='Togo'>Togo</option>" +
	"<option value='Tonga'>Tonga</option>" +
	"<option value='Trinidad And Tobago'>Trinidad And Tobago</option>" +
	"<option value='Tunisia'>Tunisia</option>" +
	"<option value='Turkey'>Turkey</option>" +
	"<option value='Turkmenistan'>Turkmenistan</option>" +
	"<option value='Turks & Caicos Islands'>Turks & Caicos Islands</option>" +
	"<option value='Uganda'>Uganda</option>" +
	"<option value='Ukraine'>Ukraine</option>" +
	"<option value='United Arab Emirates'>United Arab Emirates</option>" +
	"<option value='United Kingdom'>United Kingdom</option>" +
	"<option value='Uruguay'>Uruguay</option>" +
	"<option value='Uzbekistan'>Uzbekistan</option>" +
	"<option value='Vanuatu'>Vanuatu</option>" +
	"<option value='Vatican City'>Vatican City</option>" +
	"<option value='Venezuela'>Venezuela</option>" +
	"<option value='Vietnam'>Vietnam</option>" +
	"<option value='Western Sahara'>Western Sahara</option>" +
	"<option value='Western Samoa'>Western Samoa</option>" +
	"<option value='Yemen'>Yemen</option>" +
	"<option value='Zambia'>Zambia</option>" +
	"<option value='Zimbabwe'>Zimbabwe</option>"
}

document.getElementsByClassName = function getElementsByClassName(searchClass,node,tag) {
   var classElements = new Array();
   if ( node == null )
     node = document;
   if ( tag == null )
     tag = '*';
   var els = node.getElementsByTagName(tag);
   var elsLen = els.length;
   var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
   for (i = 0, j = 0; i < elsLen; i++) {
     if ( pattern.test(els[i].className) ) {
       classElements[j] = els[i];
       j++;
     }
   }
   return classElements;
 }
