function validate(form)
{
    synchroRichTextEditors();

    if (form != null) {
        var doc = form;
    } else {
        var doc = document;
    }

    var arrAreas = doc.getElementsByTagName("textarea");
    var arrTexts = doc.getElementsByTagName("input");
    var arrInputs = new Array();
    var arrPasswords = new Array();

    for (var i = 0; i < arrAreas.length; i++)
    {
        arrAreas[i].style.borderColor = "";
        arrInputs.push(arrAreas[i]);
    }

    for (var i = 0; i < arrTexts.length; i++)
    {
        if (String(arrTexts[i].type).toLowerCase() == "text")
        {
            arrTexts[i].style.borderColor = "";
            arrInputs.push(arrTexts[i]);
        }
        if (String(arrTexts[i].type).toLowerCase() == "password")
        {
            arrTexts[i].style.borderColor = "";
            arrPasswords.push(arrTexts[i]);
        }
    }

    for (var i = 0; i < arrInputs.length; i++)
    {
        switch (String(arrInputs[i].validate).toLowerCase())
        {
            case "email" :
            {
                 if (!String(arrInputs[i].value).match(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,6})$/i))
                 {
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                 }
                 break;
            }

            case "limit200" :
            {
                 if (String(arrInputs[i].value).length > 200)
                 {
                    //alert("Per daug teksto");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                 }
                 break;
            }

            case "limit500" :
            {
                 if (String(arrInputs[i].value).length > 500)
                 {
                    //alert("Per daug teksto");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                 }
                 break;
            }

            case "notnull" :
            {
                if (trimString(arrInputs[i].value) == "") {
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }

            case "date" :
            {
                if (!validateDate(arrInputs[i].value))
                {
                    alert("Blogai nurodete data");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }

            case "datetime" :
            {
                if (!validateDatetime(arrInputs[i].value))
                {
                    alert("Blogai nurodete data ir/arba laika");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }
            case "notnull" :
            {
                if (!arrInputs[i].value)
                {
                    alert("Uzpildykite visus privalomus laukus");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }
            case "datenull" :
            {
                if (!validateDate(arrInputs[i].value) && arrInputs[i].value != '')
                {
                    alert("Blogai nurodete data");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }

            case "datetimenull" :
            {
                if (!validateDatetime(arrInputs[i].value) && arrInputs[i].value != '')
                {
                    alert("Blogai nurodete data ir/arba laika");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }

            case "numeric10null" :
            {
                if (!validateNumeric10(arrInputs[i].value) && arrInputs[i].value != '')
                {
                    alert("Blogai nurodete skaiciu");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }

            case "numeric10" :
            {
                if (!validateNumeric10(arrInputs[i].value))
                {
                    alert("Blogai nurodete skaiciu");
                    arrInputs[i].style.borderColor = "red";
                    arrInputs[i].focus();
                    return false;
                }
                break;
            }
        }        
    }
    for (var i = 0; i < arrPasswords.length; i++)
    {    
        switch (String(arrPasswords[i].validate).toLowerCase())
        {            
            case "password" :
            {                 
                var pwd2 = document.getElementById(arrPasswords[i].id + 'Again');
                if (pwd2 != null && arrPasswords[i].value != pwd2.value)
                {
                    alert("Slaptazodziai nesutampa");
                    arrPasswords[i].style.borderColor = "red";
                    pwd2.style.borderColor = "red";
                    arrPasswords[i].focus();
                    return false;
                }
                break;
            }
        }
    }
    return true;
}

function daysInMonth(y, m) {
    var d = new Date(y, m, 0);
    return d.getDate();
}

function trimString(s) {
    var str = String(s);
    while (str.length > 1 && str.charAt(0) == " ") {
        str = str.substr(1, str.length-1);
    }
    while (str.length > 1 && str.charAt(str.length-1) == " ") {
        str = str.substr(0, str.length-1);
    }
    if (str == " ") {
        str = "";
    }
    return str;
}

function validateDate(s) {
    var m = trimString(s).match(/^(\d{4})[\.\-\/](\d{1,2})[\.\-\/](\d{1,2})$/);
    if (m == null) {
        return false;
    } else {
        if (m[2] < 1 || m[2] > 12) {
            return false;
        }
        if (m[3] < 1 || m[3] > daysInMonth(m[1], m[2])) {
            return false;
        }
    }
    return true;
}

function validateDatetime(s) {
    var m = trimString(s).match(/^(\d{4})[\.\-\/](\d{1,2})[\.\-\/](\d{1,2}) *(?:(\d{1,2})\:(\d{1,2})(?:\:(\d{1,2}))?)?$/);
    if (m == null) {
        return false;
    } else {
        if (m[2] < 1 || m[2] > 12) {
            return false;
        }
        if (m[3] < 1 || m[3] > daysInMonth(m[1], m[2])) {
            return false;
        }
        if (m[4] > 23) {
            return false;
        }
        if (m[5] > 59) {
            return false;
        }
        if (m[6] > 59) {
            return false;
        }
    }
    return true;
}

function validateNumeric10(s) {
    var m = trimString(s).match(/^(\d+(\.\d+)?)?$/);
    if (m == null) {
        return false;
    } else return true;
}

function synchroRichTextEditors() {
    var textAreas = document.getElementsByTagName("textarea");
    for (var i = 0; i < textAreas.length; i++) {
        if (String(textAreas[i].id).substr(0, 3) == "rta") {
//          var editFrame = document.getElementById("edf" + String(textAreas[i].name).substr(3));
            var editFrame = document.frames["edf" + String(textAreas[i].id).substr(3)];
            if (editFrame != null) {
//                textAreas[i].value = editFrame.document.frames['ID_REDIT'].document.body.innerHTML;
                editFrame.imamHTML();
            }
        }
    }
    return true;
}

function ClearSelects(form) {
 var selects = form.getElementsByTagName("SELECT");
 for (var i = 0; i < selects.length; i++) {
       selects[i].selectedIndex = -1;
       selects[i].value = '0';
 }
}

function ClearInputs(form) {
 var inputs = form.getElementsByTagName("INPUT");
 for (var i = 0; i < inputs.length; i++) {
     if (inputs[i].type == 'text') inputs[i].value = '';
     if (String(inputs[i].type).toUpperCase() == "CHECKBOX") inputs[i].checked = false;

 }
}