function form_uri(type) {
    return '/form/' + encodeURIComponent(type) + '/';
}

function load_form(type, elem, callback) {
     elem.load(form_uri(type), callback);
}

function bind_form(form) {
    form.on('submit', function(e) {
        e.preventDefault();
        var data = $(this).serialize();
        var type = $(this).find('[name=type]').val();
        $.post(form_uri(type), data, function(data) {
            if(data.length) {
                var new_form = $(data);
                form.replaceWith(new_form);
                bind_form(new_form);
            } else {
                form.replaceWith('<h3>Thank you for your contact request!<h3>');
            }
        }, 'html');
    });
}

$(function() {
    $('a.form').click(function() {
        var type;
        if ($(this).hasClass('demo')) {
            type = 'demo';
        } else if ($(this).hasClass('whitepaper')) {
            type = 'whitepaper';
        } else {
            // Mysterious element, no use for us
            return true;
        }
        var overlay = $('<div class="overlay">')
            .hide();
        load_form(type, overlay, function() {
            overlay.prepend('<a href="#close">close</a>');
            var form = overlay.find('form');
            bind_form(form);

            // should be extracted to a separate function, see video.js
            overlay.find('a').click(function() {
                overlay.fadeOut().remove();
                return false;
            });
            $('body').prepend(overlay);
            overlay.fadeIn();
        });
        return false;
    });
});


$(document).keyup(function(e) {
    if (e.keyCode == 27) {
        $('.overlay').fadeOut().remove();
    }
});

