window.app = (function() {
    var self = {};

    self.init = function(mvps) {
        self.elems = {
            'thank-you': $('#thank-you'),
            'error': $('#error'),
            'processing': $('#processing'),
            'mvp-section': $('#mvp'),
            'mvp-title': $('#mvp-title'),
            'mvp-text': $('#mvp-text'),
            'mvp-photo': $('#mvp-photo')
        };
        self.mvps = mvps;
        self.slide_index = 1;
        self.set_active_mvp(self.mvps[0]);
        self.slide_delay = 12000;

        $('#demo-request').find('form').submit(self.email_form);
        $('#contact-form').find('form').submit(self.email_form);

        $("body").ajaxError(function() {
            $.modal.close();
            setTimeout(function(){ self.elems['error'].modal({'overlayClose': true}); }, 100);
        });

        for(var i = 0; i < self.mvps.length; i++) {
            self.preload_image(self.mvps[i].photo);
        }

        setTimeout(function(){ self.next_slide(); }, self.slide_delay);
    }

    self.preload_image = function(image_src) {
        if(document.images) {
            var image = new Image;
            image.src = image_src;
        }
    }

    self.set_active_mvp = function(mvp) {
        self.elems['mvp-title'].text(mvp.title);
        self.elems['mvp-text'].text(mvp.text);
        self.elems['mvp-photo'].attr('src', mvp.photo);
    }

    self.next_slide = function() {
        self.elems['mvp-title'].fadeOut();
        self.elems['mvp-text'].fadeOut();
        self.elems['mvp-photo'].fadeOut(function(){
            self.set_active_mvp(self.mvps[self.slide_index]);
            self.slide_index += 1;
            if(self.slide_index >= self.mvps.length) { self.slide_index = 0; }
        }); 

        self.elems['mvp-title'].fadeIn();
        self.elems['mvp-text'].fadeIn();
        self.elems['mvp-photo'].fadeIn(function(){   
            setTimeout(function(){ self.next_slide(); }, self.slide_delay);
        });
    }

    self.email_form = function(event){
        var form = $(event.target),
            inputs = form.find(':input'),
            message_parts = [],
            reply = {};

        for(var i = 0; i < inputs.length; i++) {
            var input = inputs[i];

            if(!input.value) { alert('All Fields Are Required.'); return false; }
            if(input.name === 'subject') { reply['subject'] = input.value; }
            if(input.name === 'email') { reply['from'] = input.value; }
            if(input.type !== 'submit') { message_parts.push(input.name + ': ' + input.value); }
        }

        reply['message'] = message_parts.join('\n');
        $.modal.close();
        setTimeout(function(){ self.elems['processing'].modal({'overlayClose': true}); }, 100);

        $.post('/send-email/', reply, function(resp){
            $.modal.close();
            setTimeout(function(){ self.elems['thank-you'].modal({'overlayClose': true}); }, 100);
        }, "json");

        return false;
    }

    return self;
})();

