	//Capturando Navegador
	if (navigator.appName.indexOf('Microsoft') != -1)
	{
		clientNavigator = "IE";
	}
		else
	{
		clientNavigator = "Other";
	}
		
	//Digitar apenas números
	function jNumero(evento)
	{
		if ( clientNavigator == "IE" )
		{
			if (evento.keyCode < 48 || evento.keyCode > 57)
			{
				return false
			}
		}
		else
		{
			if ( (evento.charCode < 48 || evento.charCode > 57) && evento.keyCode == 0 )
			{
				return false
			}
		}
 	}
	
	function pontoFlutuante(evento, objeto)
	{
		if ( clientNavigator == "IE" )
		{
			if (evento.keyCode < 48 || evento.keyCode > 57)
			{
				return false
			}
		}
		else
		{
			if ( (evento.charCode < 48 || evento.charCode > 57) && evento.keyCode == 0 )
			{
				return false
			}
		}
	}

	// Função de Máscara de Campos
	function mascaraCampos(objForm, strField, sMask, evtKeyPress) 
	{
      var i, nCount, sValue, fldLen, mskLen,bolMask, sCod, nTecla;

      if(window.event) { // Internet Explorer
        nTecla = evtKeyPress.keyCode; }
      else if(evtKeyPress.which) { // Nestcape
        nTecla = evtKeyPress.which;
      }

      sValue = objForm[strField].value;

      // Limpa todos os caracteres de formatação que
      // já estiverem no campo.
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( "-", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( ".", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "/", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( "(", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( ")", "" );
      sValue = sValue.toString().replace( " ", "" );
      sValue = sValue.toString().replace( " ", "" );
      fldLen = sValue.length;
      mskLen = sMask.length;

      i = 0;
      nCount = 0;
      sCod = "";
      mskLen = fldLen;

	  if (nTecla != 8) { // backspace
        if (sMask.charAt(i-1) == "9") { // apenas números...
          return ((nTecla > 47) && (nTecla < 58)); } // números de 0 a 9
        else { // qualquer caracter...

		
		  while (i <= mskLen) {
	        bolMask = ((sMask.charAt(i) == "-") || (sMask.charAt(i) == ".") || (sMask.charAt(i) == "/"))
	        bolMask = bolMask || ((sMask.charAt(i) == "(") || (sMask.charAt(i) == ")") || (sMask.charAt(i) == " "))
	
	        if (bolMask) {
	          sCod += sMask.charAt(i);
	          mskLen++; }
	        else {
	          sCod += sValue.charAt(nCount);
	          nCount++;
	        }
	
	        i++;
	      }
	
	      objForm[strField].value = sCod;

          return true;
        } }
      else {
        return true;
      }
    }
	
	//Máscara real
	documentall = document.all;
	
	/*
	* função para formatação de valores monetários retirada de
	* http://jonasgalvez.com/br/blog/2003-08/egocentrismo
	*/
	
	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 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 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;
	
	}
	
/**
* Javascript prototypes - String.pad() and Number.format()
* Carlos Reche (carlosreche@yahoo.com)
*/
String.PAD_LEFT  = 0;
String.PAD_RIGHT = 1;
String.PAD_BOTH  = 2;

String.prototype.pad = function(size, pad, side) {
  var str = this, append = "", size = (size - str.length);
  var pad = ((pad != null) ? pad : " ");
  if ((typeof size != "number") || ((typeof pad != "string") || (pad == ""))) {
    throw new Error("Wrong parameters for String.pad() method.");
  }
  if (side == String.PAD_BOTH) {
    str = str.pad((Math.floor(size / 2) + str.length), pad, String.PAD_LEFT);
    return str.pad((Math.ceil(size / 2) + str.length), pad, String.PAD_RIGHT);
  }
  while ((size -= pad.length) > 0) {
    append += pad;
  }
  append += pad.substr(0, (size + pad.length));
  return ((side == String.PAD_LEFT) ? append.concat(str) : str.concat(append));
}

Number.prototype.format = function(d_len, d_pt, t_pt) {
  var d_len = d_len || 0;
  var d_pt = d_pt || ".";
  var t_pt = t_pt || ",";
  if ((typeof d_len != "number")
    || (typeof d_pt != "string")
    || (typeof t_pt != "string")) {
    throw new Error("wrong parameters for method 'String.pad()'.");
  }
  var integer = "", decimal = "";
  var n = new String(this).split(/\./), i_len = n[0].length, i = 0;
  if (d_len > 0) {
    n[1] = (typeof n[1] != "undefined") ? n[1].substr(0, d_len) : "";
    decimal = d_pt.concat(n[1].pad(d_len, "0", String.PAD_RIGHT));
  }
  while (i_len > 0) {
    if ((++i % 3 == 1) && (i_len != n[0].length)) {
      integer = t_pt.concat(integer);
    }
    integer = n[0].substr(--i_len, 1).concat(integer);
  }
  return (integer + decimal);
}

function checkMail(mail)
{
	var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if(typeof(mail) == "string")
	{
		if(er.test(mail)){ return true; }
	}
	else if(typeof(mail) == "object")
	{
		if(er.test(mail.value))
		{
			return true;
		}
	}
	else
	{
		return false;
	}
}
