function objErrMsg() {
    var errMsg = ''
    this.errMsg = errMsg;
}

// Method check the correctness of form fields
function checkElementsByEForm(form, stopOnError){

    var msgPrefix = document.getElementById('errMsgPrefix').innerHTML;
    var msgSuffix = document.getElementById('errMsgSuffix').innerHTML;

    var result = true;
    var globalErrMsg = '';
    var eNum = -1;
    for (var i = 0; i < form.elements.length; i++){
        var e = form.elements[i];
        var errMsg = new objErrMsg();
        var res = checkEformElement(e, errMsg);
        if (!res){
            result = false;
            globalErrMsg += errMsg.errMsg + '\n';
            if (eNum == -1){
                eNum = i;
            }
        }
    }
    if (!result){
        alert(msgPrefix + '\n\n' + globalErrMsg + '\n' + msgSuffix);
        if (eNum != -1){
            try {
                var ee = form.elements[eNum];
                ee.focus();
                ee.select();
            } catch (ex){}
        }
    }
    return result;
}

// Method check the from field
// @param element object
// @param error message object
function checkEformElement(e, eM){

    var msgFieldPrefix = document.getElementById('errFieldMsgPrefix').innerHTML;
    var msgFieldSuffix = document.getElementById('errFieldMsgSuffix').innerHTML;

    var result = true;
    //if Validate
    if (e.getAttribute('vV') == '1'){
        //if Required
        if (e.getAttribute('vR') == '1'){
            if (e.value == ''){
                result = false;
                //eM.errMsg = e.getAttribute('vRMsg');
                eM.errMsg = msgFieldPrefix + ' \'' + document.getElementById(e.id + '_label').innerHTML + '\' ' + msgFieldSuffix;
            }
        }
            if (result && trim(e.value) != ''){
                if (e.getAttribute('vDT') != ''){
                    var dt = e.getAttribute('vDT');
                    var res = true;
                    if (dt == 'dtCustom'){
                        res = checkEformCustomDT(e.value);
                    }
                    if (dt == 'dtEMail'){
                        res = checkEformEMailDT(e.value);
                    }
                    if (dt == 'dtNumeric'){
                        res = checkEformNumericDT(e.value);
                    }
                    if (!res){
                        //eM.errMsg = e.getAttribute('vVMsg');
                        eM.errMsg = msgFieldPrefix + ' \'' + document.getElementById(e.id + '_label').innerHTML + '\' ' + msgFieldSuffix;
                    }
                    result = res;
                }
            }

        if (result){
            if (e.getAttribute('vOnV') != ''){
                var func = e.getAttribute('vOnV');
                eval(func);
                if (!result){
                    eM.errMsg = e.getAttribute('vVMsg');
                }
            }
        }
    }
    return result;
}

function checkEformEMailDT(value){
    var exp = new RegExp('[\\S]{1,}[\\@]{1}[\\S]{1,}[\\.]{1}[\\S]{1,}');
        return exp.test(value);
}

function checkEformNumericDT(value){
    var s = '[+|-]{0,1}[\\d]{1,12}';
        s = s + '(\\.[\\d]{1,2}|)';
    var exp = RegExp(s);
    return exp.test(value);
}

function checkEformCustomDT(value){
    var exp = RegExp('(\\s|\\S)*');
    return exp.test(value);
}

function ltrim(s){
    return (s.replace(/^[\s]*/, ''));
}

function rtrim(s){
    return (s.replace(/[\s]*$/, ''));
}

function trim(s){
    return (ltrim(rtrim(s)));
}