﻿QWD.Form = {

    defaultInit: function(id, defaultValue) {
        var e = $(id);
        e.attr('qwdDefaultValue', defaultValue);
        e.focus(QWD.Form.defaultClear);
        e.blur(QWD.Form.defaultUpdate);
        e.blur();
    },

    defaultClear: function() {
        var e = $(this);
        if (e.val() == e.attr('qwdDefaultValue')) {
            e.val('');
            e.removeClass('grayed');
        }
    },

    defaultUpdate: function() {
        var e = $(this);
        if ('' == e.val() || e.attr('qwdDefaultValue') == e.val()) {
            e.val(e.attr('qwdDefaultValue'));
            e.addClass('grayed');
        }
    },

    regExEmail: /^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i,

    validationValue: function(e) {
        if (e.type == 'radio' || e.type == 'checkbox') {
            return e.checked ? e.value : '';
        }

        return e.value;
    },

    validateError: function(v, e, oblig, msg) {
        if (null == e) {
            alert('Could not validate form. Please try again later.');
            return false;
        }

        if (!v && oblig) {
            e.className += ' input-error';
            alert(msg);
            e.focus();
            return false;
        }

        e.className = e.className.replace(' input-error', '');
        return true;
    },

    validate: function(id, oblig, re, msg) {
        var v = true;
        var e = document.getElementById(id);
        if (null != e) {
            val = QWD.Form.validationValue(e);
            var s = null != e && '' != val;
            v &= s;
            v &= re.test(val);
            v = !((!s && oblig) || (s && !v));
        }

        return QWD.Form.validateError(v, e, oblig || s, msg);
    },

    validateOr: function(ids, cnt, msg) {
        var e;
        for (var i = 0; i < ids.length; i++) {
            e = document.getElementById(ids[i]);
            if (null == e) continue;
            if ('' == QWD.Form.validationValue(e)) continue;
            cnt--;
        }

        return QWD.Form.validateError(cnt <= 0, document.getElementById(ids[0]), true, msg);
    },

    validateSame: function(id, id2, msg) {
        var v = true;
        var e1 = document.getElementById(id);
        var e2 = document.getElementById(id2);
        if (null == e1 || null == e2) {
            return QWD.Form.validateError(false, e2, true, null);
        }

        return QWD.Form.validateError(QWD.Form.validationValue(e1) == QWD.Form.validationValue(e2), e2, true, msg);
    }
};

