function trim(str)
    {
       return str.replace(/^\s+|\s+$/g, '') ;
    }
    
    function NB_Validator (Form, ErrorMsg, Arr)
    {
        OK = true;
        for (var i = 0; i < Arr.length; i++)
        {
            Added = false;
            switch (Arr[i][0])
            {
                case 'require' : 
                    for (var j = 2; j < Arr[i].length; j++)
                        if (trim(eval("document." + Form + "." + Arr[i][j] + ".value")) == "")
                        {
                            OK = false;
                            if (!Added)
                            {
                                ErrorMsg += "\n    - " + Arr[i][1];
                                Added = true;
                            }
                        }
                    break;
                case 'compare' :
                    if (trim(eval("document." + Form + "." + Arr[i][2] + ".value")) !== trim(eval("document." + Form + "." + Arr[i][3] + ".value")))
                    {
                        ErrorMsg += "\n    - " + Arr[i][1];
                        Added = true;         
                        OK = false;                      
                    }
                    break;
                case 'regexp' :
                    var MyReg = new RegExp(Arr[i][2])
                    if (!MyReg.test(trim(eval("document." + Form + "." + Arr[i][3] + ".value"))))
                    {
                        ErrorMsg += "\n    - " + Arr[i][1];
                        OK = false;   
                    }
                    break;    
            }
        }
        
        if (!OK)
            alert(ErrorMsg);
        return OK;
    }   
