/* Autor = Marcos Regis
   Assunto = Janela no centro absoluto
   Data = 09/03/2006    
   Descriçao =  Função que abre uma janela tipo popup no centro
   absoluto da janela levando em conta a resolução do cliente.    
   Pode ser alterado a vontade mas por getileza mantenha os créditos
*/
function  centerpopup(url,nome,altura,largura){
  /* Função que abre uma janela tipo popup no centro absoluto da janela.
     A função recebe a url, o nome, a altura e a largura.
     Para facilitar ainda mais, pode-se definir um tamanho fixo como
     mínimo baseado na resolução do monitor de quem está acessando     */
  var minimo = screen.width/4; // esta será a largura e a altura mínima    evitando uma 
  // janela muito pequena
  var maximo = screen.height - 100; // esta será a largura e a altura máxima
  // evitando uma janela muito grande
  var w = ( ( ( (largura>minimo)? largura:minimo )<maximo )?largura:maximo);
  var h = ( ( ( ( altura>minimo )? altura:minimo )<maximo )?altura:maximo);
  var l = (screen.width/2) - w/2;    // valor para a posição na horizontal
  var t = (screen.height/2) - h/2;    // valor para a posição na vertical
  var argumentos = 'copyhistory=yes,resizable=yes,scrollbars=yes,width='+w+',height='+h+',left='+l+',top='+t+',screenX='+l+',screenY='+t;
  var novajan = window.open(url,nome, argumentos);
}

  function mascara(event,src, mask) 
  {
    var i = src.value.length;
    var saida = mask.substring(0,1);
    var texto = mask.substring(i);
    if (texto.substring(0,1) != saida && event.keyCode != 8) 
    {
	    src.value += texto.substring(0,1);
    }  
  }
	
	function so_numero(event, campo ) 
	{
		code = event.keyCode ? event.keyCode : event.charCode;
    	if(((code < 48) || (code > 57)) && code != 8 && code !=13  ) {
        	campo.focus();
        	if (event.keyCode)
	          event.returnValue = false;
	        else
	          event.preventDefault();
    	}
	}
	
	function maiuscula(campo){
		var val = campo.value;
			campo.value = val.toUpperCase();
	}	

	function minuscula(campo){
		var val = campo.value;
			campo.value = val.toLowerCase();
	}	


function valida_data(field,nome_campo) 
{
	var checkstr = "0123456789"; 
	var DateField = field; 
	var Datevalue = ""; 
	var DateTemp = ""; 
	var seperator = "/"; 
	var day; 
	var month; 
	var year; 
	var leap = 0; 
	var err = 0; 
	var i; 
	err = 0; 
	DateValue = DateField.value; 
	/* Deletando todos os caracteres exceto o 0..9 */ 
	for (i = 0; i < DateValue.length; i++) 
	{ 
		if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) 
		{ 
			DateTemp = DateTemp + DateValue.substr(i,1); 
		} 
	} 
	DateValue = DateTemp; 
	/* Exectutando a data para 8 digitos - string*/ 
	/* if entrada do ano com 2-digitos / exemplo 20xx */ 
	if (DateValue.length == 6) 
	{ 
		DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); 
	} 
	if (DateValue.length != 8) 
	{ 
		err = 19; 
	} 
	/* Se o ano for errado = 0000 */ 
	year = DateValue.substr(4,4); 
	if (year == 0) 
	{ 
		err = 20; 
	} 
	/* Validando o mês*/ 
	month = DateValue.substr(2,2); 
	if ((month < 1) || (month > 12)) 
	{ 
		err = 21; 
	} 
	/* Validando o dia*/ 
	day = DateValue.substr(0,2); 
	if (day < 1) 
	{ 
		err = 22; 
	} 
	/* Validando ano Bissexto / fevereiro / dia */ 
	if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) 
	{ 
		leap = 1; 
	} 
	if ((month == 2) && (leap == 1) && (day > 29)) 
	{ 
		err = 23; 
	} 
	if ((month == 2) && (leap != 1) && (day > 28)) 
	{ 
		err = 24; 
	} 
	/* Validando o mês */ 
	if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) 
	{ 
		err = 25; 
	} 
	if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) 
	{ 
		err = 26; 
	} 
	/* if 00 houvendo entrada, sem erros */ 
	if ((day == 0) && (month == 0) && (year == 00)) 
	{ 
		err = 0; day = ""; month = ""; year = ""; seperator = ""; 
	} 
	/* if sem erros, escrevo a data completa no Input-Field (e.x. 13/12/2001) */ 
	if (err == 0) 
	{ 
		DateField.value = day + seperator + month + seperator + year; 
	} 
	/* Mensagem de erro if err != 0 */ 
	else 
	{ 
		//alert("Atenção, a data está incorreta.\nDigite a data no formato dd/mm/aaaa."); 
		return false
	} 
}

function valida_email(obj)
{
	var valido = true;
	prim = obj.value.indexOf("@")
	if( prim < 2 || 
		  obj.value.indexOf("@",prim + 1) != -1 ||
			obj.value.indexOf(".") < 1 ||
			obj.value.indexOf(",") > 0 ||
			obj.value.indexOf(" ") != -1 ||
			obj.value.indexOf("zipmeil.com") > 0 ||
			obj.value.indexOf("hotmeil.com") > 0 ||
			obj.value.indexOf(".@") > 0 ||
			obj.value.indexOf("@.") > 0	||
			obj.value.indexOf(".com.br.") > 0	||
			obj.value.indexOf("/") > 0 ||
			obj.value.indexOf("[") > 0 ||
			obj.value.indexOf("]") > 0 ||
			obj.value.indexOf("(") > 0 || 
			obj.value.indexOf(")") > 0 ||
			obj.value.indexOf("..") > 0) {
		valido = false;
	}
	return valido;
}

function mostra_esconde(obj,tipo)
{
	if(tipo == 1)
	{
		obj.style.visibility='visible';
		obj.style.display='';		
	}else if(tipo == 0)
	{
		obj.style.visibility='hidden';
		obj.style.display='none';
	}
}


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;
}

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

/*
Executa o Formata Reais e faz o format currency novamente após o backspace
*/
FormataReais(obj,'.',',',event);
} // end reais

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;
}
