
<!--
//********************************************************
//* Created for Orion Systems by Scott A. Caldwell
//* 2005-09-14
//* excel.js
//* core functions to support excel-like page behavior
//********************************************************
//********************************************************
//* formatdollar
//* 	formats a string into dollars and cents
//*		of only dollars depending on whether
//*		whdol is true or false
//********************************************************
var whdol = false;
function formatdollar(s) {
	if (s == '') {
		s='0.00';
	} else {
		if (s == 0) {
			s='0.00';
		} else {
			t=s.toString();
			k=t.indexOf('.',0);
			if (k == -1) {
				s=t+'.00';
			} else {
				x=t.length;
				y=k+3;
				if (x < y) {
					s=t;
					for (k=x; k < y; k++) {
						s += '0';
					}
				} else {
					s=t.substring(0,y);
				}
			}
		}
	}
	if (whdol == true) {
		k=s.length-3;
		t=s.substring(0,k);
		s=t;
	}
	return s;
}
//********************************************************
//* formatpct
//* 	formats a string into percentage
//********************************************************
function formatpct(s,n) {
	var dz = '';
	var zs = '00000000000000000000';
	if (n>0)
		dz='.'+zs.substring(0,n);

	if (s == '') {
		s='0'+dz.toString();
	} else {
		if (s == 0) {
			s='0'+dz.toString();
		} else {
			t=s.toString();
			k=t.indexOf('.',0);
			if (k == -1) {
				s=t+dz.toString();
			} else {
				x=t.length;
				y=k+n+1;
				t+=zs;
				s=t.substring(0,y);
			}
		}
	}
	return s;
}
//********************************************************
//* gensum
//* 	returns the sum of a list of numbers
//*		the first parameter passed (i) is the count
//*		of the numbers in the list
//********************************************************
function gensum(i,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17) {
	var k,x,y,s,t;
	s=0;
	for (k=1; k <= i; k++) {
		eval('x=s'+k+';');
		y=(x == '') ? 0 : parseFloat(x);
		s += y;
	}
	s = formatdollar(s);
	return s;
}
//********************************************************
//* gendiff
//* 	returns the cumulative difference of a list of
//*		numbers, the first parameter passed (i) is the count
//*		of the numbers in the list.
//*		the first number number is the base and each
//*		number after that in the list is subtracted
//*		from the running difference.
//********************************************************
function gendiff(i,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17) {
	var k,x,y,s,t;
	s=0;
	for (k=1; k <= i; k++) {
		eval('x=s'+k+';');
		y=(x == '') ? 0 : parseFloat(x);
		if (k==1)
			s+=y;
		else
			s -= y;
	}
	s = formatdollar(s);
	return s;
}
//********************************************************
//* xsum
//* 	returns the sum of cells excel style
//********************************************************
function xsum(f,r) {
	var nbrs='0123456789';
	var col='';
	var k=0;
	var first=-1;
	var last=-1;
	var i,v,c;
	for (i=0;i<r.length;i++) {
		if (col=='') {
			if (nbrs.indexOf(r.charAt(i),0) != -1) {
				col=r.substring(0,i);
				k=i;
			}
		} else {
			if (r.charAt(i) == ':') {
				first=parseInt(r.substring(k,i));
				k=i+1
				i=r.length;
				last=parseInt(r.substring(k,i));
				break;
			}
		}
	}
	var t=0.00;
	for (i=first;i<=last;i++) {
		eval('c=f.'+col+i);
		if (c.value != '') {
			v=parseFloat(c.value);
			if (!isNaN(v))
				t += v;
		}
	}
	s = formatdollar(t);
	return s;
}
//********************************************************
//* isInRange
//* 	returns true if the cell address is in the range
//********************************************************
function isInRange(c,r) {
	var nbrs='0123456789';
	var col='';
	var k=0;
	var first=-1;
	var last=-1;
	var i,v,c;
	for (i=0;i<r.length;i++) {
		if (col=='') {
			if (nbrs.indexOf(r.charAt(i),0) != -1) {
				col=r.substring(0,i);
				k=i;
			}
		} else {
			if (r.charAt(i) == ':') {
				first=parseInt(r.substring(k,i));
				k=i+1
				i=r.length;
				last=parseInt(r.substring(k,i));
				break;
			}
		}
	}
	var s=c.name;
	var k=s.substring((col.length),(s.length+1));
	if ((s.substring(0,col.length) == col) && (k>=first) && (k<=last))
		return true;
	else
		return false;
}
//********************************************************
//* genratio
//* 	returns the ratio of s1/s2
//*		rounded to n digits
//********************************************************
function genratio(s1,s2,n) {
	var p,x,y,r,s;
	s=0;
	x=parseFloat(s1.value);
	y=parseFloat(s2.value);
	if (isNaN(x) || isNaN(y)) {
		r=0;
	} else {
		if (y==0) {
			r=0;
		} else {
			p=Math.pow(10,n);
			r=x*100/y*p;
			r=Math.round(r)/p;
		}
	}
	s = formatpct(r,n);
	return s;
}
//********************************************************
//* genprod
//* 	returns the product of s1*s2
//*		rounded to n digits
//********************************************************
function genprod(s1,s2,n) {
	var p,x,y,r,s;
	s=0;
	x=parseFloat(s1.value);
	y=parseFloat(s2.value);
	if (isNaN(x) || isNaN(y)) {
		r=0;
	} else {
		if (y==0) {
			r=0;
		} else {
			r=x*y*100/n;
			r=Math.round(r)/100;
		}
	}
	s = formatdollar(r);
	return s;
}
//********************************************************
//* reformat
//* 	if the element (c) passed exists,
//*		the cell is reformatted to accommodate a change
//*		in the whdol setting to display whole dollars
//********************************************************
function reformat(c) {
	if (c == undefined) return;
	c.value = formatdollar(c.value);
}
//-->
