var form_validator = {
    submit_disabled: false,
    company_package: false,

    init: function() {
        if(!document.getElementById || !document.getElementsByTagName || !document.getElementsByClassName || !document.createElement || !document.createTextNode) return;

        this.container = $('order_form') || $('support_form') || $('poll_form');
        if(!this.container) return;

        Event.observe(this.container , 'submit', this.submitListener.bindAsEventListener(this), false);

        this.company_package = $('client_company');

        this.disableSubmit();

        this.setupValidation();
    },

    enableSubmit: function() {
        var submit_img = this.container.select('.input_image');
        var il = submit_img.length;
        if(submit_img) {
            
            for(var i = 0; i < il; i++) {
                
                var current_src = submit_img[i].getAttribute('src');
                var new_src = current_src.replace(/_disabled.png/, '.png');
                submit_img[i].setAttribute('src', new_src);
                this.submit_disabled = false;
                submit_img[i].setAttribute('alt', '');
                submit_img[i].setAttribute('title', '');
                submit_img[i].parentNode.className = submit_img[i].parentNode.className.replace(/disabled/, '');
                
            }
        }
    },

    disableSubmit: function() {
        var submit_img = this.container.select('.input_image');
        var il = submit_img.length;
        if(submit_img) {
            
            for(var i = 0; i < il; i++) {
                
                var current_src = submit_img[i].getAttribute('src');
                if(current_src.indexOf('disabled') != -1) return;
                var new_src = current_src.replace(/.png/, '_disabled.png');
                submit_img[i].setAttribute('src', new_src);
                this.submit_disabled = true;
                submit_img[i].setAttribute('alt', 'Dalje možete tek kad popunite sva polja');
                submit_img[i].setAttribute('title', 'Dalje možete tek kad popunite sva polja');
                submit_img[i].parentNode.className += ' disabled';
            
            }

        }
    },

    setupValidation: function() {
            var all_inputs = this.container.select('.input_text');
            var il = all_inputs.length;
            for(var i = 0; i < il; i++) {
                var current_input = all_inputs[i];
                if(this.company_package && current_input.getAttribute('id') == 'client_name') continue;
                Event.observe(current_input, 'keyup', this.elementListener.bindAsEventListener(this), false);
            }

            var all_radios = this.container.select('input[type="radio"]');
            var il = all_radios.length;
            for(var i = 0; i < il; i++) {
                var current_input = all_radios[i];
                Event.observe(current_input, 'click', this.elementListener.bindAsEventListener(this), false);
            }


            var package_type = $('package_type');
            if(package_type) {
                Event.observe(package_type, 'change', this.elementListener.bindAsEventListener(this), false);
            }

            var question = $('question');
            if(question) {
                Event.observe(question, 'keyup', this.elementListener.bindAsEventListener(this), false);
            }
    },

    elementListener: function(e) {
        var event = window.event ? window.event : e;
        var eventTarget = event.srcElement ? event.srcElement :  event.target;
        this.validate();

    },

    validate: function() {
            var error_count = 0;

            if(this.container.getAttribute('id') == 'poll_form') {
                //poll validation
                var radio_error = true;
                var all_radios = this.container.select('input[type="radio"]');
                var il = all_radios.length;
                for(var i = 0; i < il; i++) {
                    var current_input = all_radios[i];
                    if(current_input.checked) {
                        radio_error = false;
                    }
                }
                if(radio_error) {
                    error_count++;
                }
            } else {

                //support & order form validation
                var all_inputs = this.container.select('.input_text');
                var il = all_inputs.length;
                for(var i = 0; i < il; i++) {
                    var current_input = all_inputs[i];
                    if(this.company_package && current_input.getAttribute('id') == 'client_name') continue;
                    var current_value = current_input.value.replace(/ /g, '');
                    if(current_value == '') {
                        error_count++;
                    }
                }

                var package_type = $('package_type');
                if(package_type) {
                    var selected_index = package_type.selectedIndex;
                    if(selected_index == 0) {
                        error_count++;
                    }
                }

                var question = $('question');
                if(question) {
                    if(question.value.replace(/ /g, '') == '') {
                        error_count++;
                    }
                }

            }



            if(error_count) {
                this.disableSubmit();
            } else {
                this.enableSubmit();
            }

    },

    submitListener: function(e) {

       if(this.submit_disabled) {
            if(window.event) {
                window.event.returnValue = false;
            } else {
                e.preventDefault();
            }
            return false;
        }
    }
}