// JavaScript Document
var numberinput=new Object();
	numberinput.cache=Array();
	numberinput.style = function()
	{
		this.border = false;
		this.backgroundColor = false;
		this.textAlign = false;
		this.fontSize = false;
		this.font = false;
		this.width = false;
		this.height = false;
		this.position = false;
		this.textDecoration = false;
		this.color = false;
		this.top = false;
		this.left = false;
		this.right = false;
		this.bottom = false;
		this.cursor = false;
		this.fontWeight = false;
		this.scaleUnit = 'px';
		this.html = function()
		{
			var s = '';
			if(this.font) s+='font:'+this.font+';';
			if(this.border) s+='border:'+this.border+';';
			if(this.backgroundColor) s+='background-color:'+this.backgroundColor+';';
			if(this.fontWeight) s+='font-weight:'+this.fontWeight+';';
			if(this.textAlign) s+='text-align:'+this.textAlign+';';
			if(this.fontSize) s+='font-size:'+this.fontSize+this.scaleUnit+';';
			if(this.width) s+='width:'+this.width+this.scaleUnit+';';
			if(this.height) s+='height:'+this.height+this.scaleUnit+';';
			if(this.position) s+='position:'+this.position+';';
			if(this.textDecoration) s+='text-decoration:'+this.textDecoration+';';
			if(this.color) s+='color:'+this.color+';';
			if(this.top) s+='top:'+this.top+this.scaleUnit+';';
			if(this.left) s+='left:'+this.left+this.scaleUnit+';';
			if(this.right) s+='right:'+this.right+this.scaleUnit+';';
			if(this.bottom) s+='bottom:'+this.bottom+this.scaleUnit+';';
			if(this.cursor) s+='cursor:'+this.cursor+';';
			return s;
		}
	}
	numberinput.obj=function(prefix)
	{
		this.prefix=prefix;
		
		this.style = new numberinput.style();
		this.relativePath='';
		this.showIndex=false;
		this.refreshEvent=false;
		this.value = 0;
		this.name = 'numberinput';
		this.maxlength=10;
		this.debugMode = false;
		this.onBlur = false;
		this.id = 'asdasdasda';
		this.className = '';
		this.readOnly = false;
		this.fraclength = 2;

		this.intfacdelimiter = ',';
		this.unitdelimiter = '.';
		
		this.getRelativePath = function(script)
		{
			var scripts = document.getElementsByTagName('SCRIPT');
			if(!scripts) return false;
			var regexp = new RegExp(script,"gi");
			for(var i = 0; i<scripts.length; i++)
			{
				if(String(scripts.item(i).src).match(regexp))
					this.relativePath = scripts.item(i).src.replace(regexp,'');
			}
		}
		this.create=function()
		{
			this.id = this.prefix; 	
			if (this.relativePath == '') this.getRelativePath('numberinput.js');
			var s = '<span style="margin:0px;padding:0px;">';
				s+= '<input type="text" id="'+this.prefix+'numberinput" name="'+this.prefix+'numberinput"  class="'+this.className+'" value="'+this.value+'" onblur="numberinput.cache[\''+this.prefix+'\'].onBlur(this);" maxlength="'+this.maxlength+'" style="'+this.style.html()+'"  />';  //onfocus="numberinput.cache[\''+this.prefix+'\'].onFocus(this);"
				s+= '<input id="'+this.prefix+'hiddencontent" type="hidden" name="'+this.name+'" value="'+this.value+'" />';
				s+= '</span>';
			document.writeln(s);
			
			var obj  = this.getContent();
			obj.onkeydown = numberinput.onlynumbers;

			numberinput.cache[this.prefix] = this;
			//this.core(Number(this.value));
		}
		this.update = function()
		{
			this.getContent().onkeydown = numberinput.onlynumbers;
			this.core(this.value);
		}
		this.core = function(value)
		{
			var obj = new numberinput.convert();
			
			if(String(value).match(/[,]|[ ]/gi))
			{
				value = String(value).replace(/[,]/gi,'.');
				value = String(value).replace(/[ ]/gi,'');
			}
				obj.length.value = this.fraclength;
				obj.format.unitDelimiter = this.unitdelimiter;
			
			var formatedvalue = obj.toVigformat(Number(value));
			var realvalue = obj.toDecformat(formatedvalue);
			
			this.getContent().value = formatedvalue;
			this.value = realvalue;
			this.getHiddenContent().value = realvalue;
		}
		this.onBlur = function(obj)
		{
			if(!obj)return false;	
			var value = new String(obj.value);	
			this.core(value);
		}
		this.getHiddenContent = function()
		{
			var obj = document.getElementById(this.prefix+'hiddencontent');
			if(!obj)return false;return obj;
		}
		this.getContent = function()
		{
			var obj = document.getElementById(this.prefix+'numberinput');
			if(!obj)return false;return obj;
		}
	}
	numberinput.convert = function()
	{
		this.length = {
			min: 2,
			max: 10,
			value: 2
		}
		this.format = {
			intDelimiter: ',',
			unitDelimiter: ' '
		}
		
		this.fracoutput = function(length,str,number)
		{
			if(length == 0) return '';
			var s = str;
			
			if(number)
			{
				
				var len = String(number).length;
				length = length - len;
				s=str+number;
				
				if(len > length) s=str+this.roundNumber(number,this.length.value);
				
			}
			while(length>0)
			{
				s+= '0';
				length--;
			}
			return s;
		}
		this.roundNumber = function(number,limit)
		{
			var value = number;
			var i = Number(number.slice(0,limit).charAt(limit-1));
			var j = Number(number.slice(limit,limit+1));
			if(j>=5) i++;
			if(i>=10) i = 1;
			var a = number.slice(0,limit-1);
			return a+i;
		}
		this.toDecformat = function(number)
		{
			if(typeof number != 'string') return false;
			if(number.match(/[,]/g)) number = number.replace(/[,]/g,'.');
			if(number.match(/[ ]/g)) number = number.replace(/[ ]/g,'');
			return Number(number);
		}
		this.toVigformat = function(number)
		{
			if(typeof number != 'number') return false;
			if(String(number).match(/[.]/g) != null)
			{
				var string = String(number).split('.');
				var inteiro = string[0];
				var frac = string[1];
			} else {
				var inteiro = number; 
				var frac = 0;
			}
			
			var intloop = Number(String(inteiro.length / 3).split('.')[0]);
			sstring = String(inteiro).split('').reverse();
			
			var loop = 0;
			for(var i = 0; i< sstring.length; i++)
			{
				if(loop == 3)
				{
					sstring.insert(this.format.unitDelimiter,i);
					loop = -1;
				}
				loop++;	
			}
			
			var s = '';
			while(sstring.length > 0){s+= sstring.pop();}
			
			frac = this.fracoutput(this.length.value,this.format.intDelimiter,(frac==undefined?0:frac));
			return s+frac;
		}
	}
	
	
	
	numberinput.dot = 0;
	numberinput.onlynumbers=function(e) 
	{

		if (!e) var e = window.event;
			if (e.keyCode) code = e.keyCode;
				else if (e.which) code = e.which;
		
		var obj = e.srcElement?e.srcElement:e.target;
		var str = String(obj.value);
				if(str.match(/[,|.]/gi)) numberinput.dot = 1; 
					else numberinput.dot = 0;
		
			if (e.keyCode == 188 && numberinput.dot == 0) {numberinput.dot = 1;return true;}
			if (e.keyCode == 190 && numberinput.dot == 0) {numberinput.dot = 1;return true;}
			if (e.keyCode == 8) return true;
			if (e.keyCode == 9) return true;
			if (e.keyCode == 32) return true;
			if (e.keyCode == 110) return true;
			if (e.keyCode == 37) return true;
			if (e.keyCode == 39) return true;
			
			if ( e.keyCode < 45 || e.keyCode > 57
				&& e.keyCode < 96 ||e.keyCode > 105 ) return false;
		
			return true;

	}
	numberinput.warningMsg = '';
	numberinput.warningObj = null;
	numberinput.warningPosX = null;
	numberinput.warningPosY = null;
	numberinput.warningCSS = new Object();
	numberinput.warningCSS.bgColor = '#ffff00';
	numberinput.warningCSS.color = '#000000';
	numberinput.warningCSS.font = 'Arail';
	numberinput.warningCSS.fontSize = '10px';
	numberinput.warningCSS.position = 'absolute';
	numberinput.warningCSS.width = '100px';
	numberinput.warningCSS.height = '';
	numberinput.warning=function()
	{
		//alert(numberinput.warningMsg);
		var bgColor = 'background-color:'+numberinput.warningCSS.bgColor+';';
		var color = 'color:'+numberinput.warningCSS.color+';';
		var font = 'font:'+numberinput.warningCSS.font+';';
		var fontSize = 'font-size:'+numberinput.warningCSS.fontSize+';';
		var position = 'position:'+numberinput.warningCSS.position+';top:'+numberinput.warningPosY+';left:'+numberinput.warningPosX+';';
		var width = 'width:'+numberinput.warningCSS.width+';';
		var height = 'height:'+numberinput.warningCSS.height+';';
		
		var css = bgColor+color+font+fontSize+position+width+height;
		var s = '<div id="numberinput_warningObj" style="'+css+'">'+numberinput.warningMsg+'</div>';
		document.body.innerHTML+=s;
		numberinput.warningObj = document.getElementById('numberinput_warningObj');
		window.setTimeout('numberinput.warningDelete()',5000);
	}
	numberinput.warningDelete=function()
	{
		numberinput.warningObj.parentNode.removeChild(numberinput.warningObj);
		numberinput.warningObj = null;
	}
	numberinput.browser = function() 
	{
		var browser = new String(navigator.appName);
		if(browser.match('Microsoft Internet Explorer')) return String('IE');
		if(browser.match('Netscape')) return String('MOZ');
		if(browser.match('Opera')) return String('OPERA');
	}
	
	
	

