
    // Functions in JavaScript to fields edition,
    // like currency, date, integer and number, in the european standard.

    // License: Shareware.
    // Version: Brazil - 2005.
    // TradeMark: amf2005.
    // Author: Arnaldo Machado Filho, Phycisist (USP-1978), wewill@ig.com.br

function amf2005_BecameInteger(val,len)
{
    n='__0123456789';
    d=val.value;
    l=d.length;
    s='';
    if (l > 0)
    {
        a=2;
        for (i=0; i<l; i++)
        {
            c=d.charAt(i);
            if (n.indexOf(c) > a)
            {
                a=1;
                s+=c;
            };
        };
        l=s.length;
        t=len-1;
        if (l > t)
        {
            l=t;
            s=s.substr(0,t);
        };
        if (s == '')
        {
            s='0';
        };
    };
    val.value=s;
    return 'ok';
};

function amf2005_BecameCurrency(cur,len)
{
   n='__0123456789';
   d=cur.value;
   l=d.length;
   r='';
   if (l > 0)
   {
    z=d.substr(0,l-1);
    s='';
    a=2;
    for (i=0; i < l; i++)
    {
        c=d.charAt(i);
        if (n.indexOf(c) > a)
        {
            a=1;
            s+=c;
        };
    };
    l=s.length;
    t=len-1;
    if (l > t)
    {
        l=t;
        s=s.substr(0,t);
    };
    if (l > 2)
    {
        r=s.substr(0,l-2)+'.'+s.substr(l-2,2);
    }
    else
    {
        if (l == 2)
        {
            r='0,'+s;
        }
        else
        {
            if (l == 1)
            {
                r='0.0'+s;
            };
        };
    };
    if (r == '')
    {
        r='0.00';
    }
    else
    {
        l=r.length;
        if (l > 6)
        {
            j=l%3;
            w=r.substr(0,j);
            wa=r.substr(j,l-j-6);
            wb=r.substr(l-6,6);
            if (j > 0)
            {
                w+='';
            };
            k=(l-j)/3-2;
            for (i=0; i < k; i++)
            {
                w+=wa.substr(i*3,3)+'';
            };
            r=w+wb;
        };
    };
   };
   if (r.length <= len)
   {
    cur.value=r;
   }
   else
   {
    cur.value=z;
   };
   return 'ok';
};

function amf2005_BecameNumber(val,len)
{
    n='__0123456789';
    d=val.value;
    l=d.length;
    s='';
    a=2;
    for (i=0; i<l; i++)
    {
        c=d.charAt(i);
        if (n.indexOf(c) > a)
        {
            a=1;
            s+=c;
        };
    };
    l=s.length;
    t=len-1;
    if (l > t)
    {
        l=t;
        s=s.substr(0,t);
    };
    r='';
    if (l > 2)
    {
        r=s.substr(0,l-2)+','+s.substr(l-2,2);
    }
    else
    {
        if (l == 2)
        {
            r='0,'+s;
        }
        else
        {
            if (l == 1)
            {
                r='0,0'+s;
            };
        };
    };
    if (r == '')
    {
        r='0,00';
    };
    val.value=r;
    return 'ok';
};

function amf2005_valid_date(l,dd,mm,yy)
{
    z='err';
    if (l == 6 || l == 8)
    {
        xx=yy;
        if (dd >= 1 && dd <= 31)
        {
            if (mm == 2 || mm == 4 || mm == 6 || mm == 9 || mm == 11)
            {
                if (dd <= 30)
                {
                    if (mm == 2)
                    {
                        if (dd <= 28)
                        {
                            z='ok';
                        }
                        else
                        {
                            if (dd == 29)
                            {
                                bb=xx%4;    // 4 by 4
                                if (bb == 0)
                                {
                                    cc=xx%100;    // 100 by 100
                                    if (cc == 0)
                                    {
                                        qq=xx%400;    // 400 by 400
                                        if (qq == 0)
                                        {
                                            z='ok';
                                        };
                                    }
                                    else
                                    {
                                        z='ok';
                                    };    
                                };
                            };
                        };
                    }
                    else
                    {
                        z='ok';
                    };
                };
            }
            else
            {
                if (mm >= 1 && mm <= 12) { z='ok'; };
            };
        };
    };
    ii=200;        // inner parameter
    if (xx < 1600 || xx > 2400 || xx < 2005 - ii || xx > 2005 + ii) { z='err'; };
    return z;
};

function amf2005_consist_date(dat)
{
    n='0123456789';
    d=dat.value;
    l=d.length;
    s='';
    for (i=0; i<l; i++)
    {
        c=d.charAt(i);
        if (n.indexOf(c) >= 0)
        {
            s+=c;
        };
    };
    l=s.length;
    xx='0000';
    r=s;
    if (l > 8)
    {
        r=s.substr(0,8);
        s=r;
        l=8;
    };
    if (l == 6)
    {
        dd=s.substr(0,2);
        mm=s.substr(2,2);
        yy=s.substr(4,2);
        if (yy < 50)
        {
            xx='20'+yy;
        }
        else
        {
            xx='19'+yy;
        };
        ww=dd+'/'+mm+'/'+yy;
    };
    if (l == 8)
    {
        dd=s.substr(0,2);
        mm=s.substr(2,2);
        yy=s.substr(4,4);
        xx=yy;
        ww=dd+'/'+mm+'/'+yy;
    };
    if (l == 6 || l == 8)
    {
        z=amf2005_valid_date(l,dd,mm,xx);
        if (z == 'ok') { r=ww; };
    };
    dat.value=r;
    return 'ok';
};

function amf2005_update_date(dat)
{
    n='0123456789';
    d=dat.value;
    l=d.length;
    s='';
    for (i=0; i<l; i++)
    {
        c=d.charAt(i);
        if (n.indexOf(c) >= 0)
        {
            s+=c;
        };
    };
    l=s.length;
    if (l == 6)
    {
        dd=s.substr(0,2);
        mm=s.substr(2,2);
        yy=s.substr(4,2);
        if (yy < 50)
        {
            yy='20'+yy;
        }
        else
        {
            yy='19'+yy;
        };
        ww=dd+'/'+mm+'/'+yy;
    };
    if (l == 8)
    {
        dd=s.substr(0,2);
        mm=s.substr(2,2);
        yy=s.substr(4,4);
        ww=dd+'/'+mm+'/'+yy;
    };
    rr='';
    if (l == 6 || l == 8)
    {
        z=amf2005_valid_date(l,dd,mm,yy);
        if (z == 'ok')
        { 
            rr=ww;
        };
    };
    dat.value=rr;
    return 'ok';
};

