﻿
var Validator = {

    Validators : null,

    re_date : /^\d{1,2}\/\d{1,2}\/\d{4}$/,
    re_email : /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/ ,
    
//-------------------------------------------------------------------------------
    OnSubmit : function()
//-------------------------------------------------------------------------------
    {
        var ems = Form.getElementsByTagName('em');
        Validator.Validators = new Array();
        for (i = 0; i < ems.length; i++)
        {
            var em = ems[i];
            var emp = em.parentElement;
            var evalFn = "Validator." + emp.getAttribute('eval');
            if(evalFn == null) continue;
            
            var input = emp.parentElement.children[1];
            if(input.tagName == "INPUT")
            {
                input.eval = evalFn;
                input.em = em;
                Validator.Validators.push(input);
            }
        }
        
        if (!Validator.Validate()) return false;
        return true; 
    },

//-------------------------------------------------------------------------------
    Validate : function()
//-------------------------------------------------------------------------------
    {
        if (typeof(Validator.Validators) == "undefined") return true;
        var i;
        for (i = 0; i < Validator.Validators.length; i++)
        {
            var val = Validator.Validators[i];
            if (!Validator.ValidateVal(val))
            {
                var msg = val.em.innerText + "*"
                val.em.innerHTML = msg;
                return false;
            }
        }
        return true;
    },

//-------------------------------------------------------------------------------
    ValidateVal : function(val)
//-------------------------------------------------------------------------------
    {    
        if (typeof(val) == "undefined") return true;

        if (typeof(val.eval) == "string")
        {
            eval("val.eval = " + val.eval + ";");
        }
        if (typeof(val.eval) == "function")
        {
            return val.eval(val); 
        }
        return true;
    },

//-------------------------------------------------------------------------------
    Required : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }
        return (Validator.Trim(value) != "")
    },

//-------------------------------------------------------------------------------
    emailRequired : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return false;
        if(!Validator.re_email.test(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    email : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return true;
        if(!Validator.re_email.test(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    dateRequired : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return false;
        if(!Validator.re_date.test(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    date : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return true;
        if(!Validator.re_date.test(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    fintRequired : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return false;
        if(!Validator.fint(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    fint : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return true;

        var valueRgx = /^[0-9]{1,}\.[0-9]{0,2}$|^[0-9]{1,}$/i;
        if(valueRgx.test(value))
        {
            return true;
        }
        else
        {
            return false;
        }
    },

//-------------------------------------------------------------------------------
    fdecRequired : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return false;
        if(!Validator.fdec(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    fdec : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return true;

        var valueRgx = /^[0-9]{1,}\.[0-9]{0,2}$|^[0-9]{1,}$/i;
        if(valueRgx.test(value))
        {
            return true;
        }
        else
        {
            return false;
        }
    },

//-------------------------------------------------------------------------------
    hourRequired : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if(Validator.Trim(value) == "") return false;
        if(!Validator.hour(value)) return false;
        
        return true;
    },

//-------------------------------------------------------------------------------
    hour : function(val)
//-------------------------------------------------------------------------------
    {
        var value = val;
        if (typeof(val.value) == "string") {
            value = val.value;
        }

        if (Validator.Trim(value) == "") return true;

        var timeRgx = /^[0-9]{1,2}\:[0-9]{2}$/i;
        if(timeRgx.test(value))
        {
            var tab = new Array();
            tab = value.split(':');
            if(parseInt(tab[0]) > 23)
            {
                return false;
            }
            if(parseInt(tab[1]) > 59 || (parseInt(tab[1]) % 15) != 0)
            {
                return false;
            }
        }
        else
        {
            return false;
        }
        return true;
    },

//-------------------------------------------------------------------------------
    Trim : function(s)
//-------------------------------------------------------------------------------
    {
        var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
        return (m == null) ? "" : m[1];
    },

//-------------------------------------------------------------------------------
    EmailDate : function ()
//-------------------------------------------------------------------------------
    {
        t_date = re_date.test('01/01/2006');
        t_email = re_email.test('msobkowicz@nordnet.fr');
        if (t_email && t_date)
        {
            msg = "test correct.";
        }
        else 
        {
            msg = msg_debut;
            if (!t_email) msg += "l'adresse email est incorrecte\n" ;
            if (!t_date) msg += "la date est incorrecte\n" ;
        }
        alert(msg);
    },

    Init : function()
    {
    }

}

function chechTime(time)
{
    var timeRgx = /^[0-9]{1,2}\:[0-9]{2}$/i;
    if(timeRgx.test(time))
    {
        var tab = new Array();
        tab = time.split(':');
        if(parseInt(tab[0]) > 23)
        {
            return false;
        }
            if(parseInt(tab[1]) > 59 || (parseInt(tab[1]) % 15) != 0)
        {
            return false;
        }
    }
    else
    {
        return false;
    }
    return true;
}
/*
var Validators;

//-------------------------------------------------------------------------------
function OnSubmit()
//-------------------------------------------------------------------------------
{
    var ems = Form.getElementsByTagName('em');
    Validators = new Array();
    for (i = 0; i < ems.length; i++)
    {
        var em = ems[i];
        var emp = em.parentElement;
        var evalFn = emp.getAttribute('eval');
        if(evalFn == null) continue;
        
        var input = emp.parentElement.children[1];
        if(input.tagName == "INPUT")
        {
            input.eval = evalFn;
            input.em = em;
            Validators.push(input);
        }
    }
    
    if (!ValidatorOnSubmit()) return false;
    return true; 
}

//-------------------------------------------------------------------------------
function ValidatorOnSubmit()
//-------------------------------------------------------------------------------
{
    if (typeof(Validators) == "undefined") return true;
    var i;
    for (i = 0; i < Validators.length; i++)
    {
        var val = Validators[i];
        if (!ValidatorValidate(val))
        {
            var msg = val.em.innerText + "*"
            val.em.innerHTML = msg;
            return false;
        }
    }
    return true;
}

//-------------------------------------------------------------------------------
function ValidatorValidate(val)
//-------------------------------------------------------------------------------
{    
    if (typeof(val) == "undefined") return true;

    if (typeof(val.eval) == "string")
    {
        eval("val.eval = " + val.eval + ";");
    }
    if (typeof(val.eval) == "function")
    {
        return val.eval(val); 
    }
    return true;
}

//-------------------------------------------------------------------------------
function RequiredValidator(val)
//-------------------------------------------------------------------------------
{
    var value = "";
    if (typeof(val.value) == "string") {
        value = val.value;
    }
    return (ValidatorTrim(value) != "")
}

//-------------------------------------------------------------------------------
function ValidatorTrim(s)
//-------------------------------------------------------------------------------
{
    var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/);
    return (m == null) ? "" : m[1];
}


var re_date = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
var re_email = /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$/ ;
var msg = "";
var msg_debut = "Attention,\n";

//-------------------------------------------------------------------------------
function valideEmailDate()
//-------------------------------------------------------------------------------
{
//    with (document.test) 
//    {
        t_date = re_date.test('01/01/2006');
        t_email = re_email.test('msobkowicz@nordnet.fr');
//    }
    if (t_email && t_date)
    {
        msg = "test correct.";
    }
    else 
    {
        msg = msg_debut;
        if (!t_email) msg += "l'adresse email est incorrecte\n" ;
        if (!t_date) msg += "la date est incorrecte\n" ;
    }
    alert(msg);
}

////-------------------------------------------------------------------------------
//function ValidatorGetValue(val)
////-------------------------------------------------------------------------------
//{
//    if (typeof(val.value) == "string") {
//        return val.value;
//    }
//    return "";
//}
*/

