/* suprime os espaços em branco à esquerda da string */
function ltrim (sEntrada) {

	var sSaida;
	if (sEntrada.substr(0,1) == ' ') {
		for (i = 0; i <= sEntrada.length; i++) {
			if (sEntrada.substr(i, 1) == ' ') {
				sSaida = sEntrada.substr(i + 1, sEntrada.length);
			}
			else {
				break;
			}
		}
	}
	else {
		sSaida = sEntrada;
	}

	return sSaida;
}

/* suprime os espaços em branco à direita da string */
function rtrim (sEntrada) {
	var sSaida;

	if (sEntrada.substr(sEntrada.length - 1,1) == ' ')
		for (i = sEntrada.length - 1; i >= 0; i--) {
			if (sEntrada.substr(i, 1) == ' ') {
				sSaida = sEntrada.substr(0, i);
			}
			else {
				break;
			}
		}
	else {
		sSaida = sEntrada;
	}

	return sSaida;
}

/* suprime os espaços em branco à direita e à esquerda da string */
function trim(sEntrada) {

	var sSaida;

	sSaida = ltrim(sEntrada);
	sSaida = rtrim(sSaida);

	return sSaida;
}

/*******************************************************************************
 Descrição: verifica se um email é valido segundo os padrões convencionais
*******************************************************************************/
function validaEmail (email) {

 	var sAlfa = "ABCDEFGHIJKLMNOPQRSTUWVXYZ";
 	var sNum = "0123456789";
 	var sEspecial = "_.-@/";
 	var sValido = sAlfa + sNum + sEspecial;
	var sObrigatorio = "@.";
 	email = email.toUpperCase();

	//verifica se os caracteres do e-mail são válidos
 	for (i=0; i<email.length; i++) {
 		if (sValido.indexOf(email.charAt(i)) < 0) {
 			return false;
 		}
 	}

 	//verifica se o e-mail contém @ e . (caracteres obrigatórios)
 	for (i=0; i<sObrigatorio.length; i++) {
 		if (email.indexOf(sObrigatorio.charAt(i)) < 0) {
 			return false;
		}
 	}

 	if (email.indexOf("@") != email.lastIndexOf("@")) {
 		return false;
	}
 	if (email.indexOf("@") > email.lastIndexOf(".")) {
 	    	return false;
	}
 	if (email.charAt(email.indexOf("@") + 1) == ".") {
 	    	return false;
	}
 	if (!(email.indexOf("@") != 0 && email.lastIndexOf(".") != email.length-1)) {
 		return false;
	}

 	return true;
 }

/*******************************************************************************
 Descrição: verifica se um texto contem somente numeros
*******************************************************************************/
function eNumerico (sTexto) {

    // somente digitos decimais(1 ou mais digitos)
    exReg = /^\d+$/;

    return exReg.test(sTexto);
}

/* verifica se um ano e bissexto
   um ano e bissexto se for divisivel por 4 (1996 2004 2008)
   caso termine em 00 (2000 2100), so sera bissexto
   se for divisivel por 400 (2000, 2400) */
function anoBissexto (sAno) {

    if ( (sAno % 4 == 0 && sAno % 100 != 0) || sAno % 400 == 0 ) {
        return true
    }
    
    return false
}

/* fevereiro podera ter 29 dias se o ano for bissexto
   caso contrario, so 28 dias */
function validaFev (sData) {

    arrData = sData.split("/");

    if (arrData[1] == 2) { // mes de fevereiro
        if (anoBissexto(arrData[2])) { // ano bissexto
            if (arrData[0] <= 29) {
                return true;
            }
        }
        else { // nao e bissexto
            if (arrData[0] <= 28) {
                return true;
            }
        }
        return false;
	}

    return true;
}

/* verifica se um campo de texto contem o formato dd/mm/aaaa
   e possui uma data valida */
function validaData (sTexto) {

    /* formato dd/mm/aaaa, nao valida fevereiro, restringe ano 1900-2099 */
    exReg = /^((0[1-9]|[12]\d)\/(0[1-9]|1[0-2])|30\/(0[13-9]|1[0-2])|31\/(0[13578]|1[02]))\/19|20[0-9]{2}$/;

    if (exReg.test(sTexto)) {
        return validaFev(sTexto);
    }
    
    return false;
}

/*
function validaEmail (sTexto) {

    reEmail1 = /^[\w!#$%&'*+\/=?^`{|}~-]+(\.[\w!#$%&'*+\/=?^`{|}~-]+)*@(([\w-]+\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
    reEmail2 = /^[\w-]+(\.[\w-]+)*@(([\w-]{2,63}\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
    reEmail3 = /^[\w-]+(\.[\w-]+)*@(([A-Za-z\d][A-Za-z\d-]{0,61}[A-Za-z\d]\.)+[A-Za-z]{2,6}|\[\d{1,3}(\.\d{1,3}){3}\])$/;
} */


function subtraiData (sDataRef, sDataSub) {

    var min = 1000*60;
    var horas = min*60;
    var dias = horas*24;
    var anos = dias*365.25;

    var dataRef = new Date();
    arrDataRef = sDataRef.split("/");
    dataRef.setFullYear(arrDataRef[2],arrDataRef[1]-1,arrDataRef[0]);

    var dataSub = new Date();
    arrDataSub = sDataSub.split("/");
    dataSub.setFullYear(arrDataSub[2],arrDataSub[1]-1,arrDataSub[0]);

    return Math.floor((dataRef - dataSub)/anos);
}

/* abre uma janela comum na página <url> sem barras e menus */
function abrePopup (url, largura, altura) {

    prop = "toolbar=no, location=no, directories=no, status=no, " +
         "menubar=no, scrollbars=yes, resizable=no, copyhistory=yes, " +
         "status=no, width=" + largura + ", height= " + altura;

    window.open(url, "_blank", prop);
}

