window.addEvent('domready', function() {
    captureForms();
    sendForm();
});

function captureForms() {
    $$('form').addEvent('submit', function(e) {
        e.stop();
    });
}

function sendForm() {

    $$('input[type=image]','input[type=submit]').each(function(el) {
        addSubmitListener(el);
    });
}

function addSubmitListener(el) {
    el.addEvent('click', function(e) {
        e.stop();
        var f = this.getParent('form');
        var name = f.get('name');
        if (!name) {
            name = f.get('id');
        }
        var url = name.split('_');
        url = 'ajx/' + url[1] + '.ajx.php';

        if ($('actionMsg')) {
            $('actionMsg').destroy();
        }

        ajx_loading(f);

        f.set('send', {
            'url' : url,
            'method' : 'post',
            onComplete : function(rsp) {
                formAction(f, rsp);
            }
        });
        f.send();
    });
}

function formAction(el, rsp) {
    var act = rsp.split('|');
    var e = new Element('div', {
        'id' : 'actionMsg'
    });

    switch (act[0]) {
        case 'confirmation':
            e.set( {
                'html' : act[1],
                'class' : 'confirmationMgs'
            });
            e.inject(el, 'before');
            delete el.destroy();
            break;
        case 'warning':
            e.set( {
                'html' : act[1],
                'class' : 'warningMgs'
            });
            e.inject(el, 'before');
            break;
        case 'errorHighlight':
            highlightErrors(act[2], el);
            e.set( {
                'html' : act[1],
                'class' : 'warningMgs'
            });
            e.inject(el, 'before');
            break;
    }

    remove_ajx_loading();
}

function highlightErrors(str, el) {

    var els = str.split('_%%_');
    var inputs = el.getElements('input');
    inputs.combine(el.getElements('select'));
    inputs.combine(el.getElements('textarea'));

    inputs.each(function(itm) {

        if (itm.get('type') === 'image') {
            return;
        }

        var name = itm.get('name');

        if (itm.get('tag') === 'select') {
            itm = itm.getParent('div');
        }

        var lbl = itm.getPrevious('label');
        if (!lbl) {
            lbl = itm.getNext('lable');
        }

        if (!lbl) {
            return;
        }

        lbl.setStyle('color', '#7E7E7E');

        if (els.contains(name)) {
            lbl.setStyle('color', '#ED2D23');
        }
    });
}