/**
 *  Konstansok
 */
var EREG_STRING             = '^[+=\\-_@#\\w\\b\\d\\s/!,;:\\..?$%&()"áéíúőűüöóÁÉÍÚŐŰÜÖÓ\\\']+$';
var EREG_STRING_NAME        = '^[+=\\-_@#\\w\\b\\d\\s/!,;:\\.?$%&()"áéíúőűüöóÁÉÍÚŐŰÜÖÓ\\\']+$';
var EREG_URL                = '^http://[-_\\w\\b\\d/!,\\.?$%&()=]+$';
var EREG_WORD               = '^[\\w]+$';
var EREG_ALPHA              = '^[a-zA-ZáéíúőűüöóÁÉÍÚŐŰÜÖÓ ]+$';
var EREG_MAY_ALPHA          = '^([a-zA-Z]+)?$';
var EREG_NUM                = '^[-]?[0-9]+$';
var EREG_MAY_NUM            = '^([-]?[0-9]+)?$';
var EREG_VALID              = '^[0-9]{2}-[0-9]{2}-[0-9]{4}$';
var EREG_VALID_DOT          = '^[0-9]{4}.[0-9]{2}.[0-9]{2}.$';
var EREG_MAY_VALID          = '^([0-9]{2}-[0-9]{2}-[0-9]{4})?$';
var EREG_EMAIL              = '^[-\\w\\._]+@(\\w[-\\w_]*\\.)+([\\w]+)$';
var EREG_MAY_EMAIL          = '^([-\\w\\._]+@(\\w[-\\w_]*\\.)+([\\w]+))?$';
var EREG_PHONENUMBER        = '^[-+\\(\\)0-9/ ]+$';
var EREG_MAY_PHONE          = '^([-+\\(\\)0-9/ ]+$)?$';
var EREG_NUM_LENGTH10       = '^[0-9]{10}$';
var EREG_NUM_LENGTH8        = '^[0-9]{8}$';
var EREG_NUM_LENGTH4        = '^[0-9]{4}$';
var EREG_LENGTH18           = '^[\\w]{1,18}$';
var EREG_LENGTH18B          = '^[\\w]{0,18}$';
var EREG_CHECKBOX_ON        = '^on$';
var EREG_DOUBLE             = '^[-]?[0-9]+(\\.[0-9]+)?$';
var EREG_MIXEDDOUBLE        = '^[-]?[0-9]+([\\.\\,][0-9]+)?$';

var errormsg                = new Array();

errormsg[EREG_STRING]       = 'Enter a string!';
errormsg[EREG_STRING_NAME]  = 'Please write your name!';
errormsg[EREG_URL]          = 'Enter a URL!';
errormsg[EREG_WORD]         = 'You are allowed to use letters, numbers and underscore!';
errormsg[EREG_ALPHA]        = 'You are allowed to use letters and whitespace!';
errormsg[EREG_MAY_ALPHA]    = 'You are allowed to use letters and whitespace or leave it blank!';
errormsg[EREG_NUM]          = 'Enter a number!';
errormsg[EREG_MAY_NUM]      = 'Enter a number or leave it blank!';
errormsg[EREG_VALID]        = 'Enter a date in DD-MM-YYYY format!';
errormsg[EREG_VALID_DOT]    = 'Enter a date in DD-MM-YYYY format! ';
errormsg[EREG_MAY_VALID]    = 'Enter a date in DD-MM-YYYY format or leave it blank!';
errormsg[EREG_EMAIL]        = 'Enter an e-mail address!';
errormsg[EREG_MAY_EMAIL]    = 'Enter an e-mail address or leave it blank!';
errormsg[EREG_PHONENUMBER]  = 'Enter a phone number (numbers, dashes, brackets and spaces are allowed)!';
errormsg[EREG_MAY_PHONE]    = 'Enter a phone number (numbers, dashes, brackets and spaces are allowed) or leave it blank!';
errormsg[EREG_NUM_LENGTH10] = 'Enter a 10-digit number!';
errormsg[EREG_NUM_LENGTH8]  = 'Enter an 8-digit number!';
errormsg[EREG_NUM_LENGTH4]  = 'Enter a 4-digit number!';
errormsg[EREG_LENGTH18]     = '1-18 character long string is allowed!';
errormsg[EREG_LENGTH18B]    = '0-18 character long string is allowed!';
errormsg[EREG_CHECKBOX_ON]  = 'Check something!';
errormsg[EREG_DOUBLE]       = 'Enter an integer or a float (you should use decimal point)!';
errormsg[EREG_MIXEDDOUBLE]  = 'Enter an integer or a float (you can use decimal point or decimal comma)!';

// Ellenorzo utasitasok a mezokrol
var fields = new Array();

/*** Beallitasok vege ***/

function checksubmit(myform) {
    if (myform == null) {
        myform = document.getElementById('form');
    }
   
    allpassed=true;

    for (i=0; i<fields.length; i++) {
        if (myform.elements[fields[i][0]]!=undefined) {
            elem=myform.elements[fields[i][0]];
            passed=true;
         
            /** Szamok ellenorzese **/
            if (elem.type == 'text' &&
                fields[i][1] == 'number' &&
                elem.value != undefined)
            {
                passed = elem.value.match('^[-]?[0-9]+$') ? true : false;
                if (fields[i][3] != undefined) {
                    passed = passed && 
                        (elem.value>=fields[i][2]) &&
                        (elem.value<=fields[i][3]);
                } else if (fields[i][2] != undefined) {
                    passed = passed && (elem.value<=fields[i][2]);
                }
            } 

            /** 'feltételes mező' ellenőrzése */
            else if (fields[i][1] == 'relation') {
                var relArray = fields[i][2];
                for (j=0;j<relArray.length;j++) {
                    var relelem=myform.elements[relArray[j][0]];
                    if ((relelem.type != 'checkbox' && relelem.value.match(relArray[j][1])) ||
                        (relelem.type == 'checkbox' && relelem.checked==true)) {
                        if (!elem.value.match(relArray[j][2])) {
                            passed = false;
                        }
                    }
                }
            }

            /** Szoveg mezo ellenorzese EREG alapján **/
            else if ((elem.type == 'text' || elem.type == 'password') && 
                fields[i][1] != undefined && 
                elem.value != undefined) 
            {
                passed = elem.value.match(fields[i][1]) ? true : false;
            }

           /**
            *  Legordulo menuk ellenorzese
            */
            else if (elem.type == 'select-one') {
                passed = elem.value != '-1';
            }

           /**
            * Tobb elemu selectek ellenorzese
            */
            else if (elem.type == 'select-multiple') {
                passed = false;
                for (var j=0; j<elem.options.length; j++) {
                    passed = passed || elem.options[j].selected;
                }
            }
          
           /** 
            *  Radiogombok ellenorzese 
            *  (legalabb egynek kivalasztva kell lennie)
            */
            else if (elem.length != undefined && elem.length > 0) {
                passed=false;
                for (index=0; index<elem.length; index++) {
                    passed = passed || elem[index].checked;
                }
            }
         
            /** Kitoltes ellenorzese (nincs EREG) **/
            else if (elem.type == 'text' || elem.type == 'textarea') {
                passed = elem.value.match('^$') ? false : true;
            }
         
            warnspan = document.getElementById("w_"+fields[i][0]);
            if (warnspan != null) {
                warnspan.style.visibility= passed ? 'hidden' : 'visible';
                warnspan.style.display= passed ? 'none' : 'block';
                warnspan.innerHTML = errormsg[fields[i][1]];
            }
         
            allpassed = allpassed && passed;
        }
    }
    if (!allpassed) {
        alert('There are some mistakes on the form! Please check it again!');
        allpassed=false;
    }
    return allpassed;
}

