function validate_frm() {
	var msgs = [], ctl = null, sum = 0;
	var frm = document.getElementById( 'budget' );

	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 );
		}
	}
	
	if (sum == 0) {
		msgs.push( 'Nothing to calculate, please input some data!' );
	}
				
	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 setup_frm() {
	var frm = document.getElementById( 'budget' );

	if (frm != null) {
		frm.onsubmit = function( evt ) {
			var msgs = validate_frm(), 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;
		}
		
		var ctls = frm.getElementsByTagName( 'img' );
		
		for (var i = 0; i < ctls.length; i++) {
			ctls[i].onmouseover = function( evt ) {
				var obj = (window.event ? window.event.srcElement : evt.target);
				var hlp = document.getElementById( 'hlp_budget' );
				
				if (hlp.getAttribute( 'vli' )) {
					document.getElementById( hlp.getAttribute( 'vli' ) ).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-272)+'px';
				hlp.style.top = (p.y+21)+'px';
				
				hlp.setAttribute( 'vli', li.id );
				hlp.style.display = 'block';
			}
			ctls[i].onmouseout = function( evt ) {
				var hlp = document.getElementById( 'hlp_budget' );
				
				if (hlp.getAttribute( 'vli' )) {
					document.getElementById( hlp.getAttribute( 'vli' ) ).style.display = 'none';
					hlp.removeAttribute( 'vli' )
				}
				hlp.style.display = 'none';
			}
		}
		
		var inps = frm.getElementsByTagName( 'input' );
		
		for (var i = 0; i < inps.length; i++) {
			inps[i].onfocus = function( evt ) {
				var obj = (window.event ? window.event.srcElement : evt.target);
				obj.value = obj.value.replace( /[^0-9\.]/g, '' );
				obj.focus();
				obj.select();
			}
			inps[i].onblur = function( evt ) {
				var obj = (window.event ? window.event.srcElement : evt.target);
				obj.value = format_currency( obj.value );
			}
			inps[i].value = '$0.00';
		}
	}
}

function pop_values() {
	var frm = document.getElementById( 'budget' );

	if (frm != null) {	
		var arr, n = 0, i = 0, inps = frm.getElementsByTagName( 'input' );
		
		if (arguments.callee.db !== undefined) {
			for (i = 0; i < arguments.callee.db.length; i++) {
				inps[n++].value = format_currency( arguments.callee.db[i] );
			}
		}
		
		if (arguments.callee.cr !== undefined) {
			for (i = 0; i < arguments.callee.cr.length; i++) {
				inps[n++].value = format_currency( arguments.callee.cr[i] );
			}
		}
	}
}