
var frm = document.calculator;

// ----------------------------------------------------------------------------

function changePage(pageNumber) {

	document.calculator.page.value = pageNumber;
	document.calculator.submit();

}

function restart() {

	document.location = document.location;

}

// ----------------------------------------------------------------------------
function selectBox(frmE, selectText) {

	var i;
	var selectIndex = 0;

	for(var i=0;i<document.calculator[frmE].length;i++) {
		if(document.calculator[frmE].options[i].value == selectText) { selectIndex = i;}
	}

	return selectIndex;
}

// ----------------------------------------------------------------------------
function radioButtons(frmE, selectText) {

	var i;
	var selectIndex = 0;
	var frmElement = document.calculator[frmE];

	for(var i=0;i<frmElement.length;i++) {
		if(frmElement[i].value == selectText) { selectIndex = i;}
	}

	frmElement[selectIndex].checked = true;
}

// ----------------------------------------------------------------------------
function evalnumber(element) {

	var en = evalnum(element.value);

	if(element.max != "") {
		if(en > element.max) { 
			en = element.max;
			alert ("The maximum is " + element.max + ".");
			element.focus ();
		}
	}

	if(element.min != "") {
		if(en < element.min) { 
			en = element.min;
			alert ("The minimum is " + element.min + ".");
			element.focus ();
		}
	}
	element.value = en;

}

// ----------------------------------------------------------------------------
function evalmoney(element) {

	var en = evalnum(element.value);

	if(element.max != "") {
		if(en > element.max) { 
			en = element.max;
			alert ("The maximum is " + element.max + ".");
			element.focus ();
		}
	}

	if(element.min != "") {
		if(en < element.min) { 
			en = element.min;
			alert ("The minimum is " + element.min + ".");
			element.focus ();
		}
	}

	if(element.format == '#') { 
		element.value = evalpoundonly(en);
	} else {
		element.value = evalpound(en);
	}

}

// ----------------------------------------------------------------------------
function evaldate(element) {

	if(element.value == '' && element.optional == 'true') { return; }

	if(verify_date(element.value)) {

		var en = formatdate(verify_date(element.value));

		if(element.min != "") {
			if(en < element.min) { 
				en = element.min;
				alert ("The earliest date is " + unformatdate(element.min) + ".");
			}
		}

		if(element.max != "") {
			if(en > element.max) { 
				en = element.max;
				alert ("The latest date is " + unformatdate(element.max) + "."); 
			}
		}

		en = unformatdate(en);
		element.value = verify_date(en);
		return true;
	}
	else { 
		alert("Please enter a valid date");
		element.select();
		element.focus();
		return false;
	}

	

}


// ----------------------------------------------------------------------------
function evalnum(numstr) {

	var i,c,neg;
	var ret="";
	var p=false;

	neg = 1;
	if (numstr.indexOf("-") >=0) { neg = -1; }

	for (i=numstr.length-1; i>=0; i--) {
		c=numstr.charAt(i);

		if (c == ".") {
			if (p == false) p=true;
			else c="";
		}

		if ((c < "0" || c > "9") && c != ".") c="";

		ret = c + ret;
	}

	if (ret=="" || ret=="NaN") ret="0";
	return parseFloat(ret*neg);

}



// ----------------------------------------------------------------------------
function evalpound(num) {

	var i,l,d,n;
	var nums;
	var ret;

	nums = String(Math.round(num*100));
	n = ((num < 0)? 1:0);

	while (nums.length <3) nums = "0" + nums;

	l = nums.length-3;
	ret = "." + nums.charAt(l+1) + nums.charAt(l+2);

	d=0;
	for (i=l; i>=0; i--) {
		ret = nums.charAt(i) + ret;
		d++;
		if (d==3 && i>n) {
			ret="," + ret;
			d=0;
		}
	}

	ret = "\u00a3" + ret;
	return ret;

}


// ----------------------------------------------------------------------------
function evalpoundonly(num) {

	var i,l,d;
	var nums;
	var ret='';

	nums = String(Math.round(num*100));

	while (nums.length <3) nums = "0" + nums;

	l = nums.length-3;
	//ret = "." + nums.charAt(l+1) + nums.charAt(l+2);

	d=0;
	for (i=l; i>=0; i--) {
		ret = nums.charAt(i) + ret;
		d++;
		if (d==3 && i>0) {
			ret="," + ret;
			d=0;
		}
	}

	ret = "\u00a3" + ret;
	return ret;

}

// ----------------------------------------------------------------------------
// converts a string to a decimal integer

function toInt(str) {

	var ret=0;
	var state=1;

	// clean string
	str = String(str);
	str = str.replace(/\u00a3| |,/g, "");

	// find negative values
	if (str.charAt(0) == "-") {
		state = -1;
		str = str.replace(/-/g, "");
	}

	// if numeric
	if (!isNaN(str)) {

		// remove leading zeros
		while (str.length>1 && str.charAt(0)=="0") {
			str = str.substr(1, str.length-1);
		}

		// find integer and convert to correct state
		ret = parseInt(str) * state;
	}

	return ret;
}

