function showModal(modalId) {
	setTimeout('Richfaces.showModalPanel("' + modalId + '")', 100);
}

function hideModal(modalId) {
	setTimeout('Richfaces.hideModalPanel("' + modalId + '")', 100);
} 

function setMesmaData(di, df) {
	if( $(df).value == "" || $(df).value == null || $(df).value.startsWith("_") ) {
		if( $(di).value == "" || $(di).value == null || $(di).value.startsWith("_") ) {
			$(df).value = "";
		}else{
			$(df).value = $(di).value;
		}
	}
	if( $(di).value == "" || $(di).value == null || $(di).value.startsWith("_") ) {
		if( $(df).value == "" || $(df).value == null || $(df).value.startsWith("_") ) {
			$(di).value = "";
		}else{
			$(di).value = $(df).value;
		}
	}
} 

function validarPeriodo(di, df, mesmaData) {
	if (mesmaData) {
		setMesmaData(di, df);
	}
	 if (toDate($(di).value).getTime() > toDate($(df).value).getTime()) {
	   alert("A data final n\u00e3o pode ser menor que a data inicial.");
	   $(di).value = "";
	   $(df).value = "";
	 }
}

function validarPeriodoClearDates(di, df, mesmaData, clearDates) {
	if (mesmaData) {
		setMesmaData(di, df);
	}
	if (toDate($(di).value).getTime() > toDate($(df).value).getTime()) {
		alert("A data final n\u00e3o pode ser menor que a data inicial.");
		if(clearDates != null && 'All' === clearDates){
			$(di).value = "";
			$(df).value = "";			
		}else if(clearDates != null && 'From' === clearDates){
			$(di).value = "";
		}else if(clearDates != null && 'To' === clearDates){
			$(df).value = "";			
		}
	}
}

function validarPeriodoAnoMes(di, df, mesmaData) {
	if (mesmaData) {
		setMesmaData(di, df);
	}
	if (getDateFirstDayOfMonth($(di).value).getTime() > getDateLastDayOfMonth($(df).value).getTime()) {
		alert("A data final n\u00e3o pode ser menor que a data inicial.");
		$(df).value = "";
	}
}

function validarDataMaxima(data) {
	if (getDateFirstDayOfMonth(data.value).getTime() > new Date().getTime() ) {
		alert("A data n\u00e3o pode ser superior que a data atual.");
		data.value = "";
	} 
}

function validateDateNonPast(data, msg) {
	dataAtual = new Date();
	ano = dataAtual.getFullYear();
	mes = dataAtual.getMonth();
	dia = dataAtual.getDate();
	newData = new Date(ano, mes, dia,0,0,0,0);
	if (toDate(data.value).getTime() > newData.getTime() ) {
		if (!msg) {
			alert("A data n\u00e3o pode ser maior ou igual a data atual.");
		} else {
			alert(msg);
		}
		$(data).value = "";
		$(data).focus();
		return false;
	}
	return true;
}


function validateDatePast(data, msg) {
	dataAtual = new Date();
	ano = dataAtual.getFullYear();
	mes = dataAtual.getMonth();
	dia = dataAtual.getDate();
	newData = new Date(ano, mes, dia,0,0,0,0);
	if (toDate(data.value).getTime() < newData.getTime() ) {
		if (!msg) {
			alert("A data n\u00e3o pode ser menor que a data atual.");
		} else {
			alert(msg);
		}
		$(data).value = "";
		$(data).focus();
		return false;
	}
	return true;
}

function toDate(string) {
	 data = string.split("/");
	 return new Date(data[2],data[1] - 1,data[0]);
}

function getDateFirstDayOfMonth(string) {
	 data = string.split("/");
	 return new Date(data[1], data[0]-1, 1);
}

function getDateLastDayOfMonth(string){
	 data = string.split("/");
	 return new Date(data[1], data[0], 0);
}

function validarDataPassada(campoData, msg){
	if(toDate(campoData.value).getTime() > new Date().getTime()){
		if (!msg) {
			alert('A data informada n\u00e3o pode ser maior que a data atual.');
		} else {
			alert(msg);
		}		
		campoData.value = "";
		campoData.focus();
		return false;
	}
	return true;
}

function validarDataBaseCalculoRpv(campoData){
    var dataLimite = '01/07/1994';
	if(toDate(campoData.value).getTime() > new Date().getTime()){
		alert('A data informada n\u00e3o pode ser maior que a data atual.');
		campoData.value = "";
		campoData.focus();
		return false;
	}
	
	if(toDate(campoData.value).getTime() < toDate(dataLimite).getTime()){
		alert('A data informada n\u00e3o pode ser menor que 01/07/1994.');
		campoData.value = "";
		campoData.focus();
		return false;
	}
	return true;
}

function validarData(digData) {
    var patternDMA = /\d{2}[/]\d{2}[/]\d{4}/;
    var patternMA = /\d{2}[/]\d{4}/;
    var patternDM = /\d{2}[/]\d{2}/;
    var data = digData.value;
	if (data.replace(/[_|\/]/g, "") == "") {
		digData.value = "";
		return true;
	}
    if (patternDMA.test(data)){
        var dia = data.substr(0,2);
        var mes = data.substr(3,2);
        var ano = data.substr(6,4);
    } else if (patternMA.test(data)){
        var dia = 1;
        var mes = data.substr(0,2);
        var ano = data.substr(3,4);
    }else if (patternDM.test(data)){
    	var dia = data.substr(0,2);
        var mes = data.substr(3,4);
        var ano = 1970;
    }else{
        alert("A Data tem um formato inv\u00e1lido.");
        digData.value = "";
        return false;
    }
    if (!validarDataDMA(dia, mes, ano)) {
        alert("A Data "+data+" \u00e9 inv\u00e1lida!");
        digData.value = "";
        return false;
    }
    return true;
}

function validarExistenciaDataInicial(di, df) {
	dataInicio = $(di).value;
	dataFim = $(df).value;
	if (dataInicio == '' && dataFim != '') {
		alert('Informe a data inicial');
		$(df).value = "";
		$(di).focus();
	}
}

function validarHora(digHora){
	var hora = digHora.value;
	var MIN_HORA = 0;
	var MAX_HORA = 23;
	var MIN_MINUTO = 0;
	var MAX_MINUTO = 59;
	var pos1 = hora.indexOf(':');
	var minHora = hora.substring(0, pos1);
	var minVal = hora.substring(pos1+1,pos1+3); 
	
	if(minHora > MAX_HORA || minHora < MIN_HORA){
		alert("Selecionar hora entre 0 e 23");
		digHora.value = "";
		digHora.focus();
		return false;
	}
	
	if(minVal > MAX_MINUTO || minVal < MIN_MINUTO){
		alert("Selecionar minuto entre 0 e 59");
		digHora.value = "";
		digHora.focus();
		return false;
	}
	return true;
}

function validarDataDMA(dia, mes, ano) {
    if (ano > 1500){
    switch (mes){
        case '01':
        case '03':
        case '05':
        case '07':
        case '08':
        case '10':
        case '12':
        if  (dia <= 31)
            return true;
        break
        case '04':              
        case '06':
        case '09':
        case '11':
        if  (dia <= 30) 
            return true;
        break
        case '02':
                var bissexto = 0;
                if ((ano % 4 == 0) || (ano % 100 == 0) || (ano % 400 == 0)) 
                        bissexto = 1; 
                if ((bissexto == 1) && (dia <= 29))
                        return true;
                if ((bissexto != 1) && (dia <= 28)) 
                        return true; 
                break                                           
    }
    }
    return false;
}

function onlyNumber(obj){
	valor = obj.value;
	signal = valor.indexOf('-') == 0 ? '-' : '';
	obj.value = signal + valor.replace(/\D/g,"");
}

//N�o permite que o campo venha com valor zero
function noZero(obj){
	if(obj.value != "" && obj.value <= 0 ){
		alert("O valor tem de ser maior que zero.");
		obj.value = "";
		obj.focus();	
	}
}

function onlyPositiveNumber(obj){
	valor = obj.value;
	obj.value = valor.replace(/\D/g,"");
} 

//Validador de E-Mail
function validarEmail(obj) {
	var mail = obj.value;		
	var er = new RegExp(/^[A-Za-z0-9_\-\.]+@[A-Za-z0-9_\-\.]{2,}\.[A-Za-z0-9]{2,}(\.[A-Za-z0-9])?/);
	if(mail == "")return;
	if(!er.test(mail)){
		alert("Formato inv\u00e1lido do e-mail.");
		obj.value = "";
		obj.focus();
	}
} 

// Validador de CPF
function validarCpf(obj) {
	cpf = obj.value;
	cpf = cpf.replace(/\./g, "");
	cpf = cpf.replace(/-/g, "");
	cpf = cpf.replace(/_/g, "");
	if (cpf == ""){
		return;
	}
	var filtro = /^\d{11}$/;
	if (!filtro.test(cpf) || !isCpfValido(cpf)) {
		window.alert("CPF inv\u00e1lido.");
		obj.value = "";
		obj.focus();
	}
}

function isCpfValido(cpf) {
	soma = 0;
	for (i = 0; i < 9; i++)
		soma += parseInt(cpf.charAt(i)) * (10 - i);
	dv1 = 11 - (soma % 11);
	if (dv1 == 10 || dv1 == 11)
		dv1 = 0;
	if (dv1 != parseInt(cpf.charAt(9))) {
		return false;
	}
	soma = 0;
	for (i = 0; i < 10; i++)
		soma += parseInt(cpf.charAt(i)) * (11 - i);
	dv2 = 11 - (soma % 11);
	if (dv2 == 10 || dv2 == 11)
		dv2 = 0;
	if (dv2 != parseInt(cpf.charAt(10))) {
		return false;
	}
	return true;
}

// Validador de CNPJ
function validarCnpj(obj) {
	var numeros, digitos, soma, i, resultado, pos, tamanho, digitos_iguais, cnpj;
	cnpj = obj.value;
	cnpj = cnpj.replace(/\./g, "");
	cnpj = cnpj.replace(/-/g, "");
	cnpj = cnpj.replace(/_/g, "");
	cnpj = cnpj.replace(/\//g, "");
	if (cnpj == ""){
		return;
	}
	var filtro = /^\d{14}$/;
	if (!filtro.test(cnpj) || !isCnpjValido(cnpj)) {
		window.alert("CNPJ inv\u00e1lido.");
		obj.value = "";
		obj.focus();
	}
}

function isCnpjValido(cnpj) {
	soma = 0;
	for (i = 0; i < 4; i++) {
		soma = soma + parseInt(cnpj.charAt(i)) * (5 - i);
	}
	for (i = 4; i < 12; i++) {
		soma = soma + parseInt(cnpj.charAt(i)) * (13 - i);
	}
	dv1 = 11 - (soma % 11);
	if (dv1 >= 10) {
		dv1 = 0;
	}
	if (dv1 != parseInt(cnpj.charAt(12))) {
//		window.alert( dv1 + " " + parseInt(cnpj.charAt(12)));
		return false;
	}
	soma = 0;
	for (i = 0; i < 5; i++) {
		soma = soma + parseInt(cnpj.charAt(i)) * (6 - i);
	}
	for (i = 5; i < 12; i++) {
		soma = soma + parseInt(cnpj.charAt(i)) * (14 - i);
	}
	soma = soma + dv1 * 2;
	dv2 = 11 - (soma % 11);
	if (dv2 >= 10) {
		dv2 = 0;
	}
	if (dv2 != parseInt(cnpj.charAt(13))) {
//		window.alert( dv2 + " " + parseInt(cnpj.charAt(13)));
		return false;
	}
	return true;
}

/**
 * Usado pelo componente inputTextarea para contar e limitar o texto
 * @param obj � o campo do formulario
 * @param max � o limite m�ximo do texto
 * @return
 */
function counterTextarea(obj, max) {
	if (!max || max == '') return;
	typed = obj.nextElementSibling;
	typed.style.visibility = "visible";
	var maxlength = parseInt(max);					  			
	if(obj.value.length > maxlength) {
		obj.value = obj.value.substring(0, maxlength);
	}
	typed.innerHTML = "( " + obj.value.length + " / " + maxlength +" )";
}

function limparEspacoBranco(str){
	str=str.replace(/\s+/g, " ");
	str=str.replace(/^ /, "");
	str=str.replace(/ $/, "");
	return str;
}

  function trimAllSpace(str){ 
      var str1 = ''; 
      var i = 0; 
      while(i != str.length) 
      { 
          if(str.charAt(i) != ' ') 
              str1 = str1 + str.charAt(i); i ++; 
      } 
      return str1; 
  }
  
  function trimString(str) { 
       var str1 = ''; 
       var i = 0; 
       while ( i != str.length){ 
           if(str.charAt(i) != ' ') str1 = str1 + str.charAt(i); i++; 
       }
       var retval = IsNumeric(str1); 
       if(retval == false) 
           return -100; 
       else 
           return str1; 
 }  
function consultarRepresentativo(numeroRepresentativo){
	var regex = new RegExp("([a-zA-z��������������������������������]*)(\\s*\\d*)");
	var match = regex.exec(numeroRepresentativo);
	
	var origem = match[1].replace(/[��������������������������������]/g,' ');
	var codRepresentativo = match[2];
	var representativo = codRepresentativo + " " + origem  + " ";
	consulta_stj(representativo, 'post');
}
function consulta_stj(representativo, method) {
	method = method || "post"; // Set method to post by default if not specified.
	var path;
	// The rest of this code assumes you are not using a library.
	// It can be made less wordy if you use one.
	var form = document.createElement("form");
	form.setAttribute("method", method);

	var partesRep = representativo.split(" ");
	if(partesRep[1].localeCompare("RESP") == 0
			|| partesRep[1].localeCompare("ARESP") ==0) {
		path = "https://ww2.stj.jus.br/processo/pesquisa/";
		flag = 1;
	}else if(partesRep[2].localeCompare("CONTROV") == 0){
		
		flag = 3;
		path = "http://www.stf.jus.br/portal/cms/verTexto.asp?servico=jurisprudenciaRepercussaoGeralRepresentativo";
	} else {
		
		path = "http://www.stf.jus.br/portal/processo/verProcessoAndamento.asp";
		flag = 2;
	}
	form.setAttribute("action", path);
	form.setAttribute("target", "_blank");
	var hiddenField = document.createElement("input");
	hiddenField.setAttribute("type", "hidden");
	if(flag == 1){
		hiddenField.setAttribute("name", "num_processo");
		hiddenField.setAttribute("value", partesRep[1]+" "+partesRep[0]);
		form.appendChild(hiddenField);
	}else if(flag == 2){
		hiddenField.setAttribute("name", "numero");
		hiddenField.setAttribute("value", partesRep[1]+" "+partesRep[0]);
		form.appendChild(hiddenField);
	}
	else{
		form.appendChild(hiddenField);
	}
	
	
	

	document.body.appendChild(form);
	form.submit();
}

