function validate_frm() {
	var msgs = [], ctl = null;
	var frm = document.getElementById( 'loan' );

	if (frm !== null) {
		var inps = frm.getElementsByTagName( 'input' );
		
		for (var i = 0; i < inps.length; i++) {
			inps[i].value = inps[i].value.replace( /[^0-9\.]/g, '' );
			//sum += 0 + parseFloat( inps[i].value );
		}
	}


	return msgs;
}

function gpc( element ) {
	var coords = { x:0, y:0 };
	while (element) {
		coords.x += element.offsetLeft;
		coords.y += element.offsetTop;
		element = element.offsetParent;
	}
	return coords;
}

function format_currency( val ) {
	var str = '', i = 0, n = -4;

	val = parseFloat( 0+val );

	if (val.toFixed !== undefined) {
		val = val.toFixed( 2 ).toString();
	}

	for (i = val.length-1; i > -1; i--) {
		if (n++ == 2) {
			str = ','+str;
			n = 0;
		}
		str = val.charAt( i )+str;
	}

	return '$'+str;
}

function format_percent( val ) {
	val = parseFloat( 0+val );

	if (val.toFixed !== undefined) {
		val = val.toFixed( 3 );
	}

	return val.toString()+'%';
}

function setup_help_events( frm ) {
	var ctls = frm.getElementsByTagName( 'img' );

	function omor( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		var hlp = document.getElementById( 'hlp_loan' );

		if (hlp.getAttribute( 'vli' )) {
			document.getElementById( hlp.getAttribute( 'vli' ).toString() ).style.display = 'none';
		}

		var li = document.getElementById( 'hlp'+obj.id.substr( 3 ) );
		li.style.display = 'block';

		var p = gpc( obj );
		//alert( p.x+' '+p.y );
		hlp.style.left = (p.x-163)+'px';
		hlp.style.top = (p.y+21)+'px';

		hlp.setAttribute( 'vli', li.id );
		hlp.style.display = 'block';
	}

	function omot( evt ) {
		var hlp = document.getElementById( 'hlp_loan' );

		if (hlp.getAttribute( 'vli' )) {
			document.getElementById( hlp.getAttribute( 'vli' ) ).style.display = 'none';
			hlp.removeAttribute( 'vli' );
		}
		hlp.style.display = 'none';
	}

	for (var i = 0; i < ctls.length; i++) {
		ctls[i].onmouseover = omor;
		ctls[i].onmouseout = omot;
	}
}

function setup_form_submit( frm ) {
	frm.onsubmit = function( evt ) {
		var msgs = validate_frm();
		var str = '';

		if (msgs.length !== 0) {

			for (var i = 0; i < msgs.length; i++) {
				str += (i+1)+'. '+msgs[i]+'\n';
			}

			alert( str );
			return false;
		}

		return true;
	};
}

function setup_txt_amt() {
	var inp = document.getElementById( 'amt' );
	inp.onfocus = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		obj.value = obj.value.replace( /[^0-9\.]/g, '' );
		obj.focus();
		obj.select();
	};
	inp.onblur = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		obj.value = format_currency( obj.value );
	};

	inp.value = format_currency( 10000 );
}

function setup_txt_int() {
	var inp = document.getElementById( 'int' );
	inp.onfocus = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		obj.value = obj.value.replace( /[^0-9\.]/g, '' );
		obj.focus();
		obj.select();
	};
	inp.onblur = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		obj.value = format_percent( obj.value );
	};

	inp.value = format_percent( 12.0 );
}

function setup_txt_pmt() {
	var inp = document.getElementById( 'pmt' );
	inp.onfocus = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		obj.value = obj.value.replace( /[^0-9\.]/g, '' );
		obj.focus();
		obj.select();
	};
	inp.onblur = function( evt ) {
		var obj = (window.event ? window.event.srcElement : evt.target);
		obj.value = format_currency( obj.value );
	};

	inp.value = format_currency( 250 );
}

function setup_frm() {
	var frm = document.getElementById( 'loan' );

	if (frm !== null) {
		setup_form_submit( frm );
		setup_help_events( frm );

		setup_txt_amt();
		setup_txt_int();
		setup_txt_pmt();
	}
}

function pop_values() {
	var frm = document.getElementById( 'loan' );

	if (frm !== null) {
		var inp = null;

		if (arguments.callee.vals !== undefined) {
			inp = document.getElementById( 'amt' );
			inp.value = format_currency( arguments.callee.vals.amt );

			inp = document.getElementById( 'int' );
			inp.value = format_percent( arguments.callee.vals.int );

			inp = document.getElementById( 'pmt' );
			inp.value = format_currency( arguments.callee.vals.pmt );
		}
	}
}
