/**
 * Katalogo elemento kontaktų blokelis
 */
var Contacts = new Class({

    Implements: Options,

    options: {
        name:           'contacts',
        container_id:   'contacts_popup_outbox',
        //Paslėpimo mygtukas (id)
        button_hide:    'contacts_hide',
        //Atidarymo mygtukas (klasė)
        button_show:    'contacts_show'

    },

    slider: null,

    initialize: function(options) {
        this.setOptions(options);
        this.setInputNames();
        this.initAnimation();
        $(this.options.name + '_submit').addEvent('click', this.submit.bind(this));
    },


    initAnimation: function() {
        this.slider = new Fx.Slide(this.options.name + '_popup_inbox', {
            onComplete: function() {
                $(this.options.name + '_popup_outbox').getElements('div')[0].style.height = "auto";
            }.bind(this)
        });


        if ($(this.options.button_hide)) {
            $(this.options.button_hide).addEvent('click', function(e) {
                e = new Event(e);
                this.slider.slideOut();
                e.stop();
                return false;
            }.bind(this));
        }


        var show_elements = $$('.' + this.options.name + '_show');
        show_elements.each(function(el){
            el.addEvent('click', function(e) {
                e = new Event(e);
                if ($(this.options.name + '_email').disabled == true) {
                    $(this.options.name + '_message').focus();
                }
                else {
                    $(this.options.name + '_email').focus();
                }
                this.slider.toggle();
                e.stop();
                return false;
            }.bind(this));
        }.bind(this));
    },


    slideToBox: function() {
        var fx = new Fx.Scroll(window).toElement(this.options.container_id);
    },

    hideBox: function() {
        if (this.slider) {
            this.slider.hide();
        }
    },

    setInputNames: function() {
        $(this.options.name + '_action').name = 'action';
        $(this.options.name + '_email').name = 'email';
        $(this.options.name + '_submit').name = 'submit';
        $(this.options.name + '_message').name = 'message';
        $(this.options.name + '_form_id').name = 'form_id';
        $(this.options.name + '_popup_outbox').style.display = "block";
        $(this.options.name + '_popup_outbox').style.visibility = "visible";
    },

    submit: function() {
        var submitForm = true;
        var reEmail = new RegExp("[^@]{1,64}@[^@]{1,255}");

        if ($(this.options.name + '_error_1')) {
            $(this.options.name + '_error_1').className = "hide";
            if ($(this.options.name + '_form').email.value.search(reEmail) == -1) {
                $(this.options.name + '_error_1').className = "show";
                submitForm = false;
            }
        }

        if ($(this.options.name + '_error_2')) {
            $(this.options.name + '_error_2').className = "hide";
            if ($(this.options.name + '_form').message.value == "") {
                $(this.options.name + '_error_2').className = "show";
                submitForm = false;
            }
        }

        if (submitForm) {
            $(this.options.name + '_form').submit();
        }

        return false;
    },

    fadeOutSuccess: function() {
        var element_id = this.options.name + '_success';
        var fx = new Fx.Slide(element_id);

        fx.slideOut('vertical');
    },

    injectSuccessFader: function() {
        var element_id = this.options.name + '_success';

        if($(element_id)) {
            setTimeout(this.fadeOutSuccess.bind(this), 5000);
        }
    }

});
