/*
 * NumberFormat 1.0.3 - Modified by Connextra with interactive.js added
 * http://www.mredkj.com
 */
function getSelectValue(selectBoxName) {
	var s = MM_findObj(selectBoxName);
	if (s==null) return 1;
	var res =1;
	if (s[0].nodeName  == "INPUT"){
		res = getRadioValue(s);
	}
	else {
		res = s[s.selectedIndex].value;
	}
	return res;
}

function getSelectId(selectBoxName) {
	var s = MM_findObj(selectBoxName);
	if (s==null) return "";
	var res = "";
	if (s[0].nodeName  == "INPUT"){
		res = getRadioId(s);
	}
	else {
		res = s[s.selectedIndex].id;
	}
	return res;
}

function getRadioValue(elements) {
	if (elements){
		for (i = 0; i < elements.length; i++){
			if (elements[i].checked) {
				return elements[i].value;
			}
		}
	}
	return 1;
}

function getRadioId(elements) {
	if (elements){
		for (i = 0; i < elements.length; i++){
			if (elements[i].checked) {
				return elements[i].id;
			}
		}
	}
	return "";
}


function clickCheckbox(checkbox){
	var elements = MM_findObj(checkbox.name);
	if (elements){
		for (i = 0; i < elements.length; i++){
			if (elements[i] == checkbox) continue;
			elements[i].checked = false;
		}
	}
	calculate();  
}



function formatNumber(aNumber) {
	return new NumberFormat(aNumber).toFormatted();
}

function formatNumberWhole(aNumber) {
	aNumberFormat = new NumberFormat(aNumber);
	aNumberFormat.setPlaces(0);
	return aNumberFormat.toFormatted();
}
 
function NumberFormat(num) {
	this.myNum;
	this.myOrigNum;
	this.myPutCommas;
	this.myDecimalPlaces;

	this.setNumber = NF_SetNumber;
	this.toUnformatted = NF_ToUnformatted;
	this.setCommas = NF_SetCommas;
	this.setPlaces = NF_SetPlaces;
	this.toFormatted = NF_ToFormatted;
	this.getOriginal = NF_GetOriginal;

	this._getRounded = NF_GetRounded;
	this._preserveZeros = NF_PreserveZeros;
	this._justNumber = NF_JustNumber;

	// defaults
	this.setNumber(num);
	this.setCommas(true);
	this.setPlaces(2);
}

function NF_SetNumber(num) {
	this.myOrigNum = num;
	this.myNum = this._justNumber(num);
}

function NF_ToUnformatted() {
	return (this.myNum);
}

function NF_GetOriginal() {
	return (this.myOrigNum);
}

function NF_SetCommas(isC) {
	this.myPutCommas = isC;
}

function NF_SetPlaces(p) {
	this.myDecimalPlaces = p;
}

function NF_ToFormatted() {
	var pos;
	var nNum = this._getRounded(this.myNum);
	var nStr = this._preserveZeros(Math.abs(nNum));

	if (this.myPutCommas) {
		pos = nStr.indexOf('.');
		if (pos == -1) {
			pos = nStr.length;
		}
		while (pos > 0) {
			pos -= 3;
			if (pos <= 0) break;
			nStr = nStr.substring(0,pos) + ',' + nStr.substring(pos, nStr.length);
		}
	}
	
	nStr = (nNum < 0) ? '-' + nStr : nStr;
	return (nStr);
}

function NF_GetRounded(val) {
	var factor = 1;

	for (var i=0; i<this.myDecimalPlaces; i++) {
		factor *= 10;
	}
	
	val *= factor;
	val = Math.round(val);
	val /= factor;

	return (val);
}

function NF_PreserveZeros(val) {
	val = val + '';
	if (this.myDecimalPlaces <= 0) return val;
	
	var decimalPos = val.indexOf('.');
	if (decimalPos == -1) {
		val += '.';
		for (var i=0; i<this.myDecimalPlaces; i++) {
			val += '0';
		}
	}
	else {
		var actualDecimals = (val.length - 1) - decimalPos;
		var difference = this.myDecimalPlaces - actualDecimals;
		for (var i=0; i<difference; i++) {
			val += '0';
		}
	}
	
	return val;
}

function NF_JustNumber(val) {
	val = (val==null) ? 0 : val;

	if (isNaN(val))	{
		var newVal = parseFloat(val.replace(/[^\d\.\-]/g, ''));
		return (isNaN(newVal) ? 0 : newVal); 
	}
	else if (!isFinite(val)) {
		return 0;
  	}
	
	return val;
}