
// JavaScript Document
regexp_email = /^[a-z0-9\-](\.?\w)*(\-?\w)*@[a-z0-9\-]+(\.[a-z0-9]+)*(\.[a-z0-9]{2,4})$/i;
reTime = /^([0-1]\d|2[0-3]):[0-5]\d$/;
reDigits = /^\d+$/;
reMoeda = /^\d{1,3}(\.\d{3})*\,\d{2}$/;
reDolar = /^\d{1,3}(\.\d{3})*\,\d{4}$/;

/**
* 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 supertrim(valor){
	var temp = '';
	var aux = valor.split(" ");
	var len = aux.length;
	for(i=0; i<len; i++){
		if(aux[i] == ""){
			aux.splice(i, 1);
			i=i-1;
			len = aux.length;
		}
	}
	aux = aux.join(" ");
	return aux;
}
/*******************************************************************************************************************/
function alpha_numerico(campo){
	aux = campo.value.split("");
	var strCheck = '0123456789ABCDEFGHIJKLMNOPQRSTUVXYWZabcdefghijklmnopqrstuvxywz'; 	// os digitos aceitos
	var len = aux.length;
	var i;
	for(i=0; i<len; i++){
		if (strCheck.indexOf(aux[i]) == -1){// se não fazer parte dos carecteres aceitos ou seja numeros.      
			return false;
		}    
	}
	return true;
}
/*******************************************************************************************************************/
/* Conta e limita os caracteres de uma textarea */
function textCounter(campo, countcampo, maxlimit){ //Esta função que irá contar, mostrar e restringir o tamanho do campo 
  if (campo.value.length > maxlimit) { //se passar do limite não deixará entrar o caracter 
	campo.value = campo.value.substring(0, maxlimit); 
  } else { //aqui, enquanto não se chegar ao limite, a cada caracter inserido ele reduzira -1 da contagem 
	countcampo.value = maxlimit - campo.value.length; 
  } 
}           


/*******************************************************************************************************************/
function cnpj_cpf(CNPJ) {
	var s;
	// inicio de verificacao de cnpj ou cpf
	s = limpa_string(CNPJ.value);
	// checa se é cpf	
	if (s.length == 11) {
		if (valida_CPF(CNPJ.value) == false ) {
			return false;
		}
     }  
     // checa se é cgc
	else if (s.length == 14) {
		if (valida_CGC(CNPJ.value) == false ) {
			return false;
		}
	}
	else {
		return false;
	}
     return true;
}
// fim da funcao validação()

function limpa_string(S){
	// Deixa so' os digitos no numero
	var Digitos = "0123456789";
	var temp = "";
	var digito = "";

	for (var i=0; i<S.length; i++)	{
		digito = S.charAt(i);
		if (Digitos.indexOf(digito)>=0)	{
			temp=temp+digito	}
	} //for

	return temp
}
// fim da funcao


function valida_CPF(s)	{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(10-i);
	}
        if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
        return true;
}

function valida_CGC(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
	var d1 = 0;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
        if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
	return true;
}
////////////////
// onKeyPress="return(FormataNumero(event))"
function FormataNumero(teclapress){
	var key = '';
    var strCheck = '0123456789'; 	// os digitos aceitos
    var whichCode = (window.Event) ? teclapress.which : teclapress.keyCode;   
    if (whichCode == 13 || whichCode == 8 || whichCode == 0){ 
	  return true;  // Enter backspace ou FN qualquer um que não seja alfa numerico
    } 
    key = String.fromCharCode(whichCode); 	// pega o codKey do Event e transforma no caracter correspondente
    if (strCheck.indexOf(key) == -1){ 		// se não fazer parte dos carecteres aceitos ou seja numeros.
	  return false;  //NÃO E VALIDO 
    } else {
		return true;
	}
}

/*******************************************************************************************************************/
/*
colocar no input
onKeyPress="return(FormataCampo(this,event,'##.###.###/####-##'))"
*/
// FUNÇÃO QUE PEGA A TECLA DIGITADA E A MASCARA
function FormataCampo(campo,teclapress,mascara){
	var valor = key = '';
    var strCheck = '0123456789'; 	// os digitos aceitos
    var whichCode = (window.Event) ? teclapress.which : teclapress.keyCode;   
    if (whichCode == 13 || whichCode == 8 || whichCode == 0){ 
	  return true;  // Enter backspace ou FN qualquer um que não seja alfa numerico
    } 
    key = String.fromCharCode(whichCode); 	// pega o codKey do Event e transforma no caracter correspondente
    if (strCheck.indexOf(key) == -1){ 		// se não fazer parte dos carecteres aceitos ou seja numeros.
	  return false;  //NÃO E VALIDO 
    }    
	if(verificaTam(campo.value, mascara)){ 	// função para verificar se o tamanho do campo é maior ou igual o da mascara
	  return false;    						//impede de digitar alem da mascara
    }
	valor = campo.value; 	
	valor = monta(valor, mascara, key)		// função que monta a campo com a mascara.

	campo.value = valor;					// joga o valor do campo mascarado.
	return false;
}

function verificaTam(varCampo, mask){
	var lenMask = len = 0;
	lenMask = mask.length;
	len = varCampo.length;    
	if(len>=lenMask)
		return true;
	else
		return false;
}

function monta(aux, mascara, key){

	var i = len = lenMask = 0;
	var digito = '';
	len = aux.length;
	digito = mascara.substr(len,1);		// pega o digito correspondente no lugar na mascara
	if(digito == '#'){					// se for #, ou seja o numero na mascara 
		aux += key;						// acrescenta no campo
	} else {							// se for diferente de #
		aux += digito;					// acrescenta no campo o caracter especial.
// verificar se atingiu o tamanho da mascara
		if(verificaTam(aux, mascara)){ 
		  return aux;						// se atingiu retorna o campo como esta
    	} else {							// se nao
			aux = monta(aux, mascara, key)	// monta novamente ate terminar a mascara ou o digito for #
		}

	}
	return aux;
}
/*******************************************************************************************************************/
function CompDatas(dtInicial, dtFinal){
	var dtini = dtInicial;
	var dtfim = dtFinal;	
	datInicio = new Date(dtini.substring(6,10), 
						 dtini.substring(3,5), 
						 dtini.substring(0,2));
	datInicio.setMonth(datInicio.getMonth() - 1); 
	datFim = new Date(dtfim.substring(6,10), 
					  dtfim.substring(3,5), 
					  dtfim.substring(0,2));		 
	datFim.setMonth(datFim.getMonth() - 1); 	
	if(datInicio > datFim){
		return false;
	} else {
		return true;
	}	
}

function verifica_data(data) {
	dia = (data.value.substring(0,2)); 
	mes = (data.value.substring(3,5)); 
	ano = (data.value.substring(6,10)); 
	situacao = ""; 
	// verifica o dia valido para cada mes 
	if ((dia < 01)||(dia < 01 || dia > 30) && (  mes == 04 || mes == 06 || mes == 09 || mes == 11 ) || dia > 31) { 
		return false;
	} 
	//verifica se o mes e valido 
	if (mes < 01 || mes > 12 ) { 
		return false;
	} 
	// verifica se e ano bissexto 
	if (mes == 2 && ( dia < 01 || dia > 29 || ( dia > 28 && (parseInt(ano / 4) != ano / 4)))) { 
		return false;
	} 
	if (data.value == "") { 
		return false;
	} 
	return true;
} 

/********************************************************************************************************************/
function upper(campo){
	campo.value=campo.value.toUpperCase()
}
/*******/
function lower(campo){
	campo.value=campo.value.toLowerCase()	
}
/*****************************************************
colocar no input
onKeydown="return FormataMoeda(this,7,event,2)"
*****************************************************/
//Formata número tipo moeda usando o evento onKeyDown
function FormataMoeda(campo,TamMax,teclapress,decimal) {
	var valor = aux = key = '';
    var strCheck = '0123456789'; 	// os digitos aceitos
    var whichCode = (window.Event) ? teclapress.which : teclapress.keyCode;
	if(whichCode>= 96 && whichCode <= 105) whichCode -= 48;
	if (whichCode == 13 || whichCode == 9 || whichCode == 0){ 
	  return true;  // Enter backspace ou FN qualquer um que não seja alfa numerico
    } 
	valor = limpa_string(campo.value);
	tam = valor.length;
	if(whichCode == 8 ){
		valor = valor.substr(0,tam-1);		
	} else {
		key = String.fromCharCode(whichCode); 	// pega o codKey do Event e transforma no caracter correspondente
	    if (strCheck.indexOf(key) == -1){ 		// se não fazer parte dos carecteres aceitos ou seja numeros.
		  return false;  //NÃO E VALIDO 
	    }    				
		if(tam < TamMax){
			valor += key;
		}
	}
	
	tam = valor.length;	
	if(tam > decimal){
		tam2=0;
		tam2 = valor.substr(0, tam-decimal).length;
		var x;
		var y=0;
		aux = '';
		//alert("Tam: " + tam2);
		for(x=tam2-1;x>=0;x--){
			//alert("X: " + x);
			if(y==3){
//				aux = "." + aux;
				y=1;
			} else {
				y++;	
			}
			aux = valor.substr(x, 1) + aux;
			//alert("Aux: " + aux);
		}
		aux += ",";
		aux += valor.substr(tam-decimal, decimal);
		valor=aux;
	}
	campo.value = valor;
	return false;
}

function selTab(tab){
	//o elemento abaixo é div, porque as abas estão dentro de um div.
	tabs = document.getElementsByTagName("div");
	//aqui cai no que eu já tinha dito: você poderá ter quantas abas quiser. Aqui simplesmente contará quantas abas você tem.
	for (n=0;n < tabs.length ;n++){
		//aqui vai comparar se o nome do id do seu div é igual a aba que você selecionou. Se for, ele vai mostrar o conteúdo da aba selecionada. Caso contrário, não exibe nada.
		if (tabs[n].id == tab){
			tabs[n].style.display = "inline";
			document.getElementById('col' + tabs[n].id.substring(3,tabs[n].id.length)).style.background="#BAB4A7";
			document.getElementById(tab.substring(3,tab.length) + 'Esq').src = "../imagens/esq_sub.gif";
			document.getElementById(tab.substring(3,tab.length) + 'Dir').src = "../imagens/dir_sub.gif";
			document.getElementById(tab.substring(3,tab.length) + 'Top').background = "../imagens/top_sub.gif";

		} else {
			tabs[n].style.display = "none";
			document.getElementById('col' + tabs[n].id.substring(3,tabs[n].id.length)).style.background="#D4D0C8";
			document.getElementById(tabs[n].id.substring(3,tabs[n].id.length) + 'Esq').src = "../imagens/esq_sob.gif";
			document.getElementById(tabs[n].id.substring(3,tabs[n].id.length) + 'Dir').src = "../imagens/dir_sob.gif";
			document.getElementById(tabs[n].id.substring(3,tabs[n].id.length) + 'Top').background = "../imagens/top_sob.gif";
		}
	}
}
//////

function sortSelect(obj){
    var o = new Array();
    for (var i=0; i<obj.options.length; i++){
        o[o.length] = new Option(obj.options[i].text, obj.options[i].value, obj.options[i].defaultSelected, obj.options[i].selected);
    }
    o = o.sort(
        function(a,b){ 
            if ((a.text+"") < (b.text+"")) { return -1; }
            if ((a.text+"") > (b.text+"")) { return 1; }
            return 0;
        } 
    );

    for (var i=0; i<o.length; i++){
        obj.options[i] = new Option(o[i].text, o[i].value, o[i].defaultSelected, o[i].selected);
    }
}
////////
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
function Limpa(campo){
	var temp = campo.value.replace(".","");
	temp = temp.replace(",",".");
	temp = parseFloat(temp);
	if(temp==0){
		campo.value='';
	}
}
function Formata(campo, dig){
	var temp = campo.value.replace(".","");
	temp = temp.replace(",",".");
	if(temp==''){ temp=0; } else { temp = parseFloat(temp); }
	campo.value = temp.format(dig, ",","");
}

/************************************************************************************/