﻿/*************************************************
 *     Модуль проверки на коректность ввода,     *
 *     соответствие строк формату и так далее.   *
 *                                               *
 *     Автор:                     Агроник А.Ю.   *
 *     Дата создания:             08.06.2007     *
 *                                               *
 *		Внимание! данный файл является           *
 *		частью программного продукта SCSC        *
 *      и не поставляется отдельно. Права        *
 *      на программный продукт SCSC              *
 *      принадлежат компании A2 www.a2soft.ru    *
 *											   	 *
 *************************************************/
 
 var Validator = {
    ///<summary>
    /// Проверка на попадение строки в заданый фильтр
    /// Возвращает исходную строку, елси попало, и пустую -- если ошибки
    ///</summary>
    Mask:{
        Numbers:"0123456789",
        Email:"1234567890qwertyuiopasdfghjklzxcvbnm_-.@",
        Phone:"0123456789()-+"
    },
    NotAValue:function(value, not)
    {
		return (value != not);//&&(value != "");
    },
    FitsMask:function(filter, source)
    {
        var resok = true;
        var result = source.toLocaleLowerCase();
        if(filter && source)
        {
            for(var i=0; i< result.length; i++)
            { 
                var ok = false;
                var c = result.charAt(i);
                for(var j=0; j<filter.length; j++)
                {
                    ok = ok || (c == filter.toLocaleLowerCase().charAt(j));
                }
                resok = resok && ok;
            }
        }
        return resok;
    },
    FilterFieldByMask:function(e, obj)
    {
        var kcode = window.event ? e.keyCode : e.which;
        if(kcode != null)
        {
            if((kcode < 34 || kcode > 40) && kcode != 13)
            {
                if(this.FitsMask(this.Mask.Numbers, obj.value))
                    $global.ClearError(obj);
                else
                {
                    obj.value = $global.StepToNumber(obj.value);
                    if(this.FitsMask(this.Mask.Numbers, obj.value))
                        $global.ClearError(obj);
                    else
                        $global.SetError(obj);
                }
            }
        }
    },
    NormalizeToNumber:function(str)
    {
        var res = "";
        var sstr = str.toString();
        for(var i=0;i<sstr.length;i++)
        {
            var c = sstr.charAt(i);
            if(this.FitsMask(this.Mask.Numbers, c))
               res += c;
        }
        return res == "" ? 0 : Number(res);
    },
    NormalizeToUpper:function(value, border)
    {
        var result = 0;
        if(border)
        {
            var nvalue = Number(Validator.NormalizeToNumber(value));   
            var nborder = Number(Validator.NormalizeToNumber(border));
            result = nvalue > nborder ? nborder : nvalue;
        }
        return result;
    },
    NormalizeToBottom:function(value, border)
    {
        var result = 0;    
        if(border)
        {
            var nvalue = Number(Validator.NormalizeToNumber(value));   
            var nborder = Number(Validator.NormalizeToNumber(border));
            result = nvalue < nborder ? nborder : nvalue;
        }
        return result;
    }, 
    NormalizeByInterval:function(value, up, down)
    {
        var result = 0;
        if(up)
        {
            if(down)
            {
                result = Validator.NormalizeToBottom(Validator.NormalizeToUpper(value, up), down);
            }
        }
        return result;
    }
 }
