function Validate()
{
    for(i=0; i < arrFields.length; i++)
    {
        //alert(i+" :: "+arrFields[i]);
        var sFText = arrFields[i].split('@')[0];
        var sFname = arrFields[i].split('@')[1];
        var sFFunc = arrFields[i].split('@')[2];
        var sFComp = arrFields[i].split('@')[3];
        var sFVal = document.getElementById(sFname).value;
        var sFObj = document.getElementById(sFname);

        //alert("sFText :: "+sFText+"\n sFname :: "+sFname+"\n sFFunc :: "+sFFunc+"\n sFVal :: "+sFVal);

        if(sFFunc != "")
        {
            var arrFuncs = sFFunc.split('##');
            for(y=0; y < arrFuncs.length; y++)
            {
                switch (arrFuncs[y])
                {
                    case "fIsEmpty":
                    sFVal = sFVal.replace(/(^\s*)|(\s*$)/,"");
                    if(sFVal.length == 0)
                    {
                        alert(sFText+' field is required!');
                        return false;
                    }
                    break;
                    
                    case "fIsEmail":
                        sFVal = checkMail(sFVal);
                        if(sFVal == false) 
                            sError = " Invalid Email!"; 
                    break;
                    
                    case "fIsLatin":
                        sFVal = fIsLatin(sFVal);
                        if(sFVal == false) 
                            sError = " Invalid symbols!";
                    break;
                    
                    case "fDateMod":
                        sFVal = fDateMod(sFVal);
                        if(sFVal == false) 
                            sError = " Date format is DD/MM/YYYY!";
                    break;

                    case "fIsEqual":
                        sFVal2 = document.getElementById(sFComp).value;
                        sFVal = fIsEqual(sFVal,sFVal2);
                        if(sFVal == false)
                            sError = " Passwords fields do not match!";
                    break;

                    case "fIsGreaterOrEqual":
                        sFVal2 = document.getElementById(sFComp).value;
                        sFVal = fIsGreaterOrEqual(sFVal,sFVal2);
                        if(sFVal == false) 
                            sError = " Impossible date!";
                    break;

                    case "fTimeMod":
                        sFVal = fTimeMod(sFVal);
                        if(sFVal == false) 
                            sError = " Time format is HH.MM!"; 
                    break;
                    
                    case "fDateTime":
                        sFVal = fDateTime(sFVal);
                        if(sFVal == false) 
                            sError = " DateTime format is DD/MM/YYYY HH:MM!";   
                    break;
                    
                    case "fIsChecked":
                        sFVal = fIsChecked(sFObj);
                        if(sFVal == false) 
                            sError = " Check the field '"+sFText+"'!";      
                    break;
                    
                    case "fIsPrice":
                        sFVal = checkPrice(sFVal);
                        if(sFVal == false) 
                            sError = " Price format is 00.00";    
                    break;
                }
            }
            
            if(sFVal == false)
            {
                alert("Wrong value in "+sFText+"\n"+sError);
                return false;
            }
        }
    }
    return true;
}

function fIsChecked(val)
{
    if(val.checked == false)
        return false;
    else
        return true;
}

function fDateTime(val)
{
    mr = /^\d{1,2}\/\d{1,2}\/19|20\d{2} \d{1,2}:\d{1,2}(:\d{1,2})?$/i;
    if (mr.test(val) == false) return false;
    else return true;  
}

function fDateMod(val)
{
    mr = /^\d{1,2}\/\d{1,2}\/19|20\d{2}$/i;
    if (mr.test(val) == false) return false;
    else return true; 
}
function fTimeMod(val)
{
    mr = /^\d{1,2}:\d{1,2}$/i;
    if (mr.test(val) == false) return false;
    else return true;
}
function fIsEqual(mystring,mystring2)
{           
    if(mystring != mystring2) return false;
    else return true;
}
function fIsGreaterOrEqual(mydate,mystring2)
{ 
    var mystring1 = mydate.split('/');
    var mystring2 = mystring2.split('/');
    if(mystring1[2]+mystring1[1]+mystring1[0] < mystring2[2]+mystring2[1]+mystring2[0]) return false;
    else return mydate;
}
function checkMail(val)
{
    mr = /^[a-z0-9\-_\.]+@([a-z0-9\-_]+\.)+[a-z]{2,4}$/i;
    //mr = /[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+'. '@'.'[-!#$%&\'*+\\/0-9=?A-Z^_`a-z{|}~]+\.'.'[-!#$%&\'*+\\./0-9=?A-Z^_`a-z{|}~]+$/i;
    if (mr.test(val) == false) return false;
    else return true;
}
function fIsLatin(val)
{
    mr = /^[a-z0-9\-_]+$/i;
    if (mr.test(val) == false) return false;
    else return true;
}
function checkPrice(val)
{
    mr = /^[0-9]+([\.]{1})?([0-9]{1,2})?$/i;
    if (mr.test(val) == false) return false;
    else return true;
}