Page = Class.create();
Page.instance = null;
Page.getInstance = function()
{
	return Page.instance;
}

Page.require = function(libraryName, absolute)
{
	if(absolute===true)
	{
		document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');
	}
	else
	{
		$A(document.getElementsByTagName("script")).findAll( function(s) {
		  return (s.src && s.src.match(/page\.js(\?.*)?$/))
		}).each( function(s)
		{
			var path = s.src.replace(/page\.js(\?.*)?$/,'');

			document.write('<script type="text/javascript" src="'+path+libraryName+'"><\/script>');
		});
	}
};

Page.prototype = {

	action: null,

	initialize: function(action, options)
	{
		Page.instance = this;
		this.action = action;
		this.setOptions(options);
		window.onload = this.onload.bind(this);
		//Event.observe(document, 'dom:loaded', this.onload.bind(this));
	},

	setOptions: function(options)
	{
		this.options = Object.extend({
			urlBase: null
		}, options || { });
	},
	
	getOption: function(opt)
	{
		return $H(this.options).get(opt);
	},

	onload: function(){}
}




doublezero = function(num)
{
	if(num < 10 ){
		return '0'+num.toString();
	}
	return num;
}


Number.prototype.numberFormat = function(decimalCount, decimalSeparator, thousandSeparator)
{
	return number_format(this, decimalCount, decimalSeparator, thousandSeparator);
}

String.prototype.numberFormat = function(decimalCount, decimalSeparator, thousandSeparator)
{
	return number_format(this, decimalCount, decimalSeparator, thousandSeparator);
}

number_format = function(number, decimalCount, decimalSeparator, thousandSeparator)
{
	if(isNaN(parseInt(number))) return null;

	decimalCount = (!isNaN(parseInt(decimalCount))) ? decimalCount : 0;
	decimalSeparator = (typeof(decimalSeparator) == 'string') ? decimalSeparator : '.';
	thousandSeparator = (typeof(decimalSeparator) == 'string') ? thousandSeparator : '';

	integerValue = parseInt(Math.abs(number));
	DecimalValue = number - integerValue;

	integerValueArray = integerValue.toString().replace(/^\s+/,"").split('');
	integerValueOutputArray = new Array();
	integerValueOutputArrayReverse = new Array();
	var x = 0;
	for (var i = integerValueArray.length; i > 0; --i) {
		x++;
		if((x-1) && (x-1)%3 == 0)
		{
			integerValueOutputArrayReverse.push(thousandSeparator)
		}

		integerValueOutputArrayReverse.push(integerValueArray[i-1]);
	}
	for (var i = integerValueOutputArrayReverse.length-1; i >=0 ; --i)
	{
		integerValueOutputArray.push(integerValueOutputArrayReverse[i]);
	}


	decimalValueArray = DecimalValue.toString().replace(/\s+$/,"").split('');
	decimalValueOutputArray = new Array();
	for (var i = 2; i < decimalValueArray.length; i++) {

		if(i-2 >= decimalCount) break;
		if((i-2) && (i-2)%3 == 0) {
			decimalValueOutputArray.push(thousandSeparator)
		}
		decimalValueOutputArray.push(decimalValueArray[i]);
	}

	formatedNumber = integerValueOutputArray.join('');
	if(decimalValueOutputArray.length) {
		formatedNumber += decimalSeparator + decimalValueOutputArray.join('');
	}

	return formatedNumber;
}