function format(expr,decplaces){
    var str = "" +Math.round (eval(expr)*Math.pow(10,decplaces));
    while (str.length <=decplaces){
        str ="0" +str;
    }
    var decpoint =str.length - decplaces;
    return str.substring(0,decpoint) + "," +str.substring(decpoint,str.length);
}

function trocarmoeda( str ) {
  var aux_str = '';
  aux_str = str.replace('.', ',') ;
  return parseFloat( aux_str );
}

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 == 13) return true;
        key = String.fromCharCode(whichCode);  // Valor para o código da Chave
        if (strCheck.indexOf(key) == -1) return false;  // Chave inválida
        len = fld.value.length;
        for(i = 0; i < len; i++)
                if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
        aux = '';
        for(; i < len; i++)
                if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
        aux += key;
        len = aux.length;
        if (len == 0) fld.value = '';
        if (len == 1) fld.value = '0'+ decSep + '0' + aux;
        if (len == 2) fld.value = '0'+ decSep + aux;
        if (len > 2) {
                aux2 = '';
                for (j = 0, i = len - 3; i >= 0; i--) {
                        if (j == 3) {
                                aux2 += milSep;
                                j = 0;
                        }
                        aux2 += aux.charAt(i);
                        j++;
                }
                fld.value = '';
                len2 = aux2.length;
                for (i = len2 - 1; i >= 0; i--)
                        fld.value += aux2.charAt(i);
                fld.value += decSep + aux.substr(len - 2, len);
        }
        return false;
}

function formatamoeda( OBJ ){
    key = event.keyCode;
        var i, uBound;
        //teclas delete, backspace, shift, nao disparam o evento
        if( key!=16 && !(key>36 && key<41) ){
                invertedSTR = new String("");
                invertedSTR = retiraNaoNumericos_Moeda ( OBJ );
                invertedSTR = inverteString ( invertedSTR );

                if ( invertedSTR.length < 12 ){
            UBound = invertedSTR.length;
                } else{
                        UBound = 12;
                }

                if ( invertedSTR.length == 0 ){
                        UBound = 3;
                        invertedSTR = invertedSTR + "000";
                }

                if ( invertedSTR.length == 1 ){
                        UBound = 3;
                        invertedSTR = invertedSTR + "00";
                }

                if ( invertedSTR.length == 2 ){
                        UBound = 3;
                        invertedSTR = invertedSTR + "0";
                }

                STR = new String("");
                for ( i=0; i<UBound; i++){
                        STR = STR + invertedSTR.charAt(i);

                        if (i==1)
                                STR = STR + ",";

                        if ( (i==4) || (i==7) || (i==10) )
                                STR = STR + "";
                }

                STR = inverteString(STR);
                STR = trimZerosAEsquerda ( STR );
                STR = fillZerosAEsquerda ( STR, 4 );
                OBJ.value = STR;
                posicionaCursor(OBJ, "F", 0)
        }
}

function formatainteiro( OBJ ){
    key = event.keyCode;
        var i, uBound;
        //teclas delete, backspace, shift, nao disparam o evento
        if( key!=16 && !(key>36 && key<41) ){
                invertedSTR = new String("");
                invertedSTR = retiraNaoNumericos_Moeda ( OBJ );
                invertedSTR = inverteString ( invertedSTR );

                if ( invertedSTR.length < 12 ){
            UBound = invertedSTR.length;
                } else{
                        UBound = 12;
                }

                if ( invertedSTR.length == 0 ){
                        UBound = 3;
                        invertedSTR = invertedSTR + "000";
                }

                if ( invertedSTR.length == 1 ){
                        UBound = 3;
                        invertedSTR = invertedSTR + "00";
                }

                if ( invertedSTR.length == 2 ){
                        UBound = 3;
                        invertedSTR = invertedSTR + "0";
                }

                STR = new String("");
                for ( i=0; i<UBound; i++){
                        STR = STR + invertedSTR.charAt(i);

                        if (i==1)
                                STR = STR + ",";

                        if ( (i==4) || (i==7) || (i==10) )
                                STR = STR + "";
                }

                STR = inverteString(STR);
                STR = trimZerosAEsquerda ( STR );
                STR = fillZerosAEsquerda ( STR, 4 );
                OBJ.value = STR;
                posicionaCursor(OBJ, "F", 0)
        }
}


function retiraNaoNumericos_Moeda( OBJ ){
        var i;
        STR = new String("");

        for(i=0;i<OBJ.value.length;i++)
                if (OBJ.value.charAt(i)>="0" && OBJ.value.charAt(i)<="9" || OBJ.value.charAt(i) == "-" )
                        STR = STR + OBJ.value.charAt(i);

        OBJ.value = STR;
        return STR;
}

function inverteString ( VLR ){
        var i;
        STR = new String("");

        for(i=VLR.length; i>=0; i--)
                STR = STR + VLR.charAt(i);

        return STR;
}

function trimZerosAEsquerda( VLR ){
        var i;
        STR = new String("");

        for (i=0; i<VLR.length; i++)
                if ( ( VLR.charAt(i) != '0') && ( VLR.charAt(i) != '.') )
                        break;

        for (;i<VLR.length;i++)
                STR = STR + VLR.charAt(i);

        return STR;
}

function fillZerosAEsquerda( VLR, minLength ){
        var i;
        STR = new String("");

        VLR = trimZerosAEsquerda (VLR);

        for (i=0; i < (minLength - VLR.length); i++)
                STR = "0" + STR;

        return STR;
}

function identificaBrowser(){
        var strBrowser;

        versao = navigator.appVersion;
        nomeBrowser = navigator.appName;

        if (navigator.appName.indexOf("Microsoft") != -1)
                strBrowser = "IE";
        else if(navigator.appName.indexOf("Netscape") != -1)
                strBrowser = "NE";
        else
                strBrowser = "OO";

        return strBrowser;
}

function posicionaCursor(OBJ, LOC, POS)
{

        LOC = LOC.toUpperCase();

        //Só funciona no IE
        if (identificaBrowser() !="IE")

                return;

        else

        {
                if ((LOC == "I") || (LOC == "M") || (LOC == "F"))
                {

                        var posicao;

                        if (LOC == "I")
                                posicao = 0;

                        if (LOC == "F")
                                posicao = OBJ.value.length;

                        if (LOC == "M")
                                posicao = POS;

                        var tRange = OBJ.createTextRange();
                        tRange.move("character",posicao);
                        tRange.select();

                }
                return;

        }
}

function moeda2float( value ){
        var pos1 = value.indexOf(".");
        var pos2 = value.indexOf(",");
        var str = "";
        if ( pos1 >= 0 ) {
                if ( pos1 > pos2 ) {
                        str = value.replace( /./g , '<STONES>') ;
                        str = value.replace( /,/g , '.') ;
                        str = value.replace( /<STONES>/g , ',') ;
                }
        } else {
                str = value.replace( /,/g , '.') ;
        }
        return parseFloat( str );
}