var form = {

    required: Array,
    validateEmail: Array,
    formName: '',

    initiate: function(str) {
        required = $$('input.required');
        validateEmail = $$('input.validate-email');

        formName = str;
    },

    validate: function() {
        $('log').empty().setStyles({
            color: 'red'
        });

        if (required.length > 0) {
            for (e = 0; e < required.length; e++) {
                if (required[e].value == '') {
                    $('log').setHTML(required[e].title);
                    required[e].focus();
                    return false;
                }
            }
        }
        if (validateEmail.length > 0) {
            for (v = 0; v < validateEmail.length; v++) {
                if (!form.emailCheck(validateEmail[v].value)) {
                    $('log').setHTML(validateEmail[v].title);
                    validateEmail[v].focus();
                    return false;
                }
            }
        }
       this.contactForm();
    },
    contactForm: function() {

        var log = $('log').empty().addClass('ajax-loading');

        $(formName).send({
            update: log,
            onComplete: function() {
                log.removeClass('ajax-loading').setStyles({
                    color: '#f98822'
                });
            }
        });
    },
    emailCheck: function(str) {
        var at = "@";
        var dot = ".";
        var lat = str.indexOf(at);
        var lstr = str.length;
        var ldot = str.indexOf(dot);

        if (str.indexOf(at) == -1) return false;
        if (str.indexOf(at) == -1 || str.indexOf(at) == 0 || str.indexOf(at) == lstr) return false;
        if (str.indexOf(dot) == -1 || str.indexOf(dot) == 0 || str.indexOf(dot) == lstr) return false;
        if (str.indexOf(at, (lat + 1)) != -1) return false;
        if (str.substring(lat - 1, lat) == dot || str.substring(lat + 1, lat + 2) == dot) return false;
        if (str.indexOf(dot, (lat + 2)) == -1) return false;
        if (str.indexOf(" ") != -1) return false;

        return true;
    }
};
