function isdefined( variable)
{
    return (typeof(variable) == "undefined")?  false: true;
}

function strZero(obj,nBytes)
{
   var strRetorno = obj.value.toString();
   if (obj.value.length != nBytes)
      for (var i=1;i<= nBytes - obj.value.length;i++)
         strRetorno = "0" + strRetorno;
  obj.value = strRetorno;
}


function Trim(obj)
{	
    Ltrim(obj);
    Rtrim(obj);
    Ctrim(obj);
    
    return obj.value;
}


function Rtrim(obj) 
{
  	if ( obj != null){	
		if (obj.value != null ){
		   varx = obj.value;
		   while (varx.substr(varx.length - 1,1) == " ") 
		   {
		      varx = varx.substr(0, varx.length -1);
		   }   
		   obj.value = varx;
		}
	}
}


function Ltrim(obj) 
{
	if ( obj != null){	
		if (obj.value != null ){
			varx = obj.value;
		    while (varx.substr(0,1) == " ") 
		    {
		       varx = varx.substr(1, varx.length -1);
		    }
		   obj.value = varx;
		 }
	}
}

function Ctrim(obj){
	if ( obj != null){	
		if (obj.value != null ){
			varx = obj.value;
			while (varx.substr(0,1) == "{" || varx.substr(0,1) == "}") 
		   {
		      varx = varx.substr(1, varx.length -1);
		   }
		  obj.value = varx;
		}
	}
}

function pulaFocus(num, campoAtual, campoDestino) {	
	if ((campoAtual.value.length == num) && (campoDestino != campoAtual))
		campoDestino.focus();		
}

function formatar(src, mask){
  var i = src.value.length;
  var saida = mask.substring(0,1);
  var texto = mask.substring(i)
if (texto.substring(0,1) != saida)
  {
    src.value += texto.substring(0,1);
  }
}

function formatCurrency(campo) {
	num=campo.value;
	num = num.toString().replace(/\$.|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	campo.value= (((sign)?'':'-') + num + '.' + cents);
	campo.blur();
	campo.focus();
}

documentall = document.all;

function formatamoney(c) {
var t = this; if(c == undefined) c = 2;
var p, d = (t=t.split("."))[1].substr(0, c);
for(p = (t=t[0]).length; (p-=3) >= 1;) {
t = t.substr(0,p) + "." + t.substr(p);
}
return t+","+d+Array(c+1-d.length).join(0);
}

String.prototype.formatCurrency=formatamoney

function demaskvalue(valor, currency){

// Se currency é false, retorna o valor sem apenas com os números. Se é true, os dois últimos caracteres são 
// considerados as
// casas decimais
var val2 = '';
var strCheck = '0123456789';
var len = valor.length;
if (len== 0){
return 0.00;
}

if (currency ==true){
// Elimina os zeros à esquerda
// a variável <i> passa a ser a localização do primeiro caractere após os zeros e
// val2 contém os caracteres (descontando os zeros à esquerda)


for(var i = 0; i < len; i++)
if ((valor.charAt(i) != '0') && (valor.charAt(i) != ',')) break;

for(; i < len; i++){
if (strCheck.indexOf(valor.charAt(i))!=-1) val2+= valor.charAt(i);
}

if(val2.length==0) return "0.00";
if (val2.length==1)return "0.0" + val2;
if (val2.length==2)return "0." + val2;

var parte1 = val2.substring(0,val2.length-2);
var parte2 = val2.substring(val2.length-2);
var returnvalue = parte1 + "." + parte2;
return returnvalue;

}
else{
// currency é false: retornamos os valores COM os zeros à esquerda,
// sem considerar os últimos 2 algarismos como casas decimais

val3 ="";
for(var k=0; k < len; k++){
if (strCheck.indexOf(valor.charAt(k))!=-1) val3+= valor.charAt(k);
}
return val3;
}
}

function reais(obj,event){

var whichCode = (window.Event) ? event.which : event.keyCode;

//Executa a formatação após o backspace nos navegadores !document.all

if (whichCode == 8 && !documentall) {

//Previne a ação padrão nos navegadores

if (event.preventDefault){ //standart browsers
event.preventDefault();
}else{ // internet explorer
event.returnValue = false;
}
var valor = obj.value;
var x = valor.substring(0,valor.length-1);
obj.value= demaskvalue(x,true).formatCurrency();
return false;
}

//Executa o Formata Reais e faz o format currency novamente após o backspace

FormataReais(obj,'.',',',event);
} // end reais


function backspace(obj,event){

//Essa função basicamente altera o backspace nos input com máscara reais para os navegadores IE e opera.
//O IE não detecta o keycode 8 no evento keypress, por isso, tratamos no keydown.
//Como o opera suporta o infame document.all, tratamos dele na mesma parte do código.


var whichCode = (window.Event) ? event.which : event.keyCode;
if (whichCode == 8 && documentall) {
var valor = obj.value;
var x = valor.substring(0,valor.length-1);
var y = demaskvalue(x,true).formatCurrency();

obj.value =""; //necessário para o opera
obj.value += y;

if (event.preventDefault){ //standart browsers
event.preventDefault();
}else{ // internet explorer
event.returnValue = false;
}
return false;

}// end if
}// end backspace

function FormataReais(fld, milSep, decSep, e) {
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;

//if (whichCode == 8 ) return true;
//backspace - estamos tratando disso em outra função no keydown
if (whichCode == 0 ) return true;
if (whichCode == 9 ) return true; //tecla tab
if (whichCode == 13) return true; //tecla enter
if (whichCode == 16) return true; //shift internet explorer
if (whichCode == 17) return true; //control no internet explorer
if (whichCode == 27 ) return true; //tecla esc
if (whichCode == 34 ) return true; //tecla end
if (whichCode == 35 ) return true;//tecla end
if (whichCode == 36 ) return true; //tecla home


//O trecho abaixo previne a ação padrão nos navegadores. Não estamos inserindo o caractere normalmente, mas via script


if (e.preventDefault){ //standart browsers
e.preventDefault()
}else{ // internet explorer
e.returnValue = false
}

var key = String.fromCharCode(whichCode); // Valor para o código da Chave
if (strCheck.indexOf(key) == -1) return false; // Chave inválida


//Concatenamos ao value o keycode de key, se esse for um número

fld.value += key;

var len = fld.value.length;
var bodeaux = demaskvalue(fld.value,true).formatCurrency();
fld.value=bodeaux;


//Essa parte da função tão somente move o cursor para o final no opera. Atualmente não existe como movê-lo no konqueror.

if (fld.createTextRange) {
var range = fld.createTextRange();
range.collapse(false);
range.select();
}
else if (fld.setSelectionRange) {
fld.focus();
var length = fld.value.length;
fld.setSelectionRange(length, length);
}
return false;

}

function retornarAtualizar(campo) {
	window.close();
	if (window.opener && !window.opener.closed) {
		window.opener.location.reload();
	}
}


