/******************************************************************************
    Funções desta biblioteca:
    trim() - string - retira os espações em branco a direita e esquerda
    isAlfa() - boolean - verifica se o valor passado é string
    comparaData() - compara se uma data é maior/menor/igual a outra
    select2String() - string - monta string a partir das opções de um <select>
    truncFloat() - float - retorna o valor truncado em n casas decimais
    roundFloat() - float - retorna o valor arrendondado em n casas decimais
    float2Str() - string - retorna um valor númerico como String
 ******************************************************************************/

/******************************************************************************/
/*    Funcao: trim()
    Parametros: nenhum
    Retorno: String
    Descricao: Retira os espacos em branco da esquerda e da direita
        de um objeto String*/
/******************************************************************************/
function trim(){
//    var re = / *(.*) */;
//    var retVal = this.replace(re, "$1");
    var retVal = this.ltrim();
    retVal = retVal.rtrim();
    return retVal;
}
String.prototype.trim = trim;

function ltrim(){
    var start = 0;
    var end = this.length;
    var retVal = this.substring(start, end);
    var esq = /^ /;
    while (retVal.match(esq)) {
        retVal = this.substring(++start, end);
    }
    return retVal;
}
String.prototype.ltrim = ltrim;
function rtrim(){
    var end = this.length;
    var retVal = this.substring(0, end);
    var dir = / $/;
    while (retVal.match(dir)) {
        retVal = this.substring(0, --end);
    }
    return retVal;
}
String.prototype.rtrim = rtrim;

/******************************************************************************/
/*    Funcao: trim()
    Parametros: nenhum
    Retorno: String
    Descricao: Retira os espacos em branco da esquerda e da direita
        de um objeto String*/
/******************************************************************************/
/*function trim(){
    var retVal = "";
    var start = 0;
    while ((start < this.length) && (this.charAt(start) == ' ')) {
    ++start;
    }
    var end = this.length;
    while ((end > 0) && (this.charAt(end - 1) == ' ')) {
    --end;
    }
    retVal = this.substring(start, end);
    return retVal;
}
String.prototype.trim = trim;*/


/******************************************************************************/
/*    Funcao: isAlfa(<value>)
    Parametros:
    - value : Valor a ser analisado como String
    Retorno: boolean
    Descricao: Verifica se um determinado valor contém apenas
        caracteres alfanuméricos */
/******************************************************************************/
function isAlfa( value)
{
	var expr= new RegExp("[A-Za-z ]+");
	return expr.test( value);
}

function isNum( value ) {
    var strValidos = "0123456789";
    var valor= new String(value);
    for( var i=0; i< valor.length; i++)
    {
        if( strValidos.indexOf(valor.charAt(i)) == -1)
            return false;
    }
    return true;
}

/******************************************************************************/
/*    Funcao: comparaData(<data_a>, <data_b>)
    Parametros:
    - data_a : String representando uma data válida
    - data_b : String representando uma data válida
    Retorno:
        -1 : menor
         0 : igual
         1 : maior
    Descricao: Verifica a data A em relação a data B */
/******************************************************************************/
function comparaData(data_a, data_b){
    var saida;
    var a_data = new Date(data_a.substr(6,4),data_a.substr(3,2),data_a.substr(0,2));
    var b_data = new Date(data_b.substr(6,4),data_b.substr(3,2),data_b.substr(0,2));
    saida = a_data.valueOf() < b_data.valueOf() ? -1 : a_data.valueOf() > b_data.valueOf() ? 1 : 0;
    return saida;
}

/******************************************************************************/
/*    Funcao: select2string(<nome_obj_in>, <nome_obj_out>){
    Parametros:
    - nome_obj_in : String representando uma entidade SELECT do HTML
    - nome_obj_out : String representando uma entidade INPUT do HTML
        (tipo HIDDEN, TEXT, ...)
    Retorno: Altera diretamente o conteúdo de "nome_obj_out"
    Descricao: Captura o conteúdo texto das opções selecionadas do "select"
        montando uma string com os dados separados por virgula /*
/******************************************************************************/
function select2string(nome_obj_in, nome_obj_out){
    var obj_in  = eval(document.getElementById(nome_obj_in) );
    var obj_out = eval(document.getElementById(nome_obj_out) );
    if (obj_in.selectedIndex >= 0 ) {
        obj_out.value = "";
        for(var i = 0 ; i < obj_in.options.length ; i++ )
            if (obj_in.options[i].selected)
                obj_out.value = (obj_out.value ? obj_out.value + ", " : "") + obj_in.options[i].text;
    }
}

/******************************************************************************/
/*    Funcao: truncFloat(<x>, <prec>){
    Parametros:
    - n : valor a ser "truncado"
    - prec : número de casas decimais
    Retorno: float
    Descricao: retorna o valor "truncado" com n casas decimais /*
/******************************************************************************/
function truncFloat(x,prec){
    var n = new Number();
    n = Math.floor(x * Math.pow(10,prec)) / Math.pow(10,prec);

    return n;
}

/******************************************************************************/
/*    Funcao: roundFloat(<x>, <prec>){
    Parametros:
    - n : valor a ser "arrendondado"
    - prec : número de casas decimais
    Retorno: float
    Descricao: retorna o valor "arrendondado" com n casas decimais /*
/******************************************************************************/
function roundFloat(x,prec){
    var n = new Number();
    n = Math.round(x * Math.pow(10,prec)) / Math.pow(10,prec);

    return n;
}

/******************************************************************************/
/*    Funcao: float2Str(<x>, <prec>){
    Parametros:
    - n : valor a ser analisado
    - prec : número de casas decimais
    Retorno: String
    Descricao: retorna um valor numérico em formato String com n casas decimais/*
/******************************************************************************/
function float2Str(x,prec){
    var n = new Number();
    n = roundFloat(x,prec);
    var s = new String();
    s = n.toString();
    if(s.indexOf('.') < 0) s += '.';

    while(s.length - s.indexOf('.') - 1 < prec) s += '0';

    return s;
}

