$(function () {
    var bindexamples = function () {
        $('.question a')
            .bind('click', function (ev) {
                ev.preventDefault();
                $('#question').val($(this).text());
                $('#question-form').triggerHandler('submit');
            });
    };
    var bindreasonform = function () {
        if (!$('#email').val()) {
            $('#email').focus();
        } else {
            $('#reason').focus();
        }
        $('#reasonform').one('submit', function (ev) {
            ev.preventDefault();
            var form = $(this);
            var params = {'reason': $('#reason').val(),
                          'j': 'on',
                          'email': $('#email').val()
                          };
            $('#votebox')
                .html("<img id='loader' src='/static/images/loader.gif' />")
                .load(form.attr('action'), params, function () {
                });
        });
        $('#closereasonform').one('click', function (ev) {
            ev.preventDefault();
            var form = $('#reasonform');
            var params = {'reason': "",
                          'j': 'on'
                          };
            $('#votebox')
                .html("<img id='loader' src='/static/images/loader.gif' />")
                .load(form.attr('action'), params, function () {
                });
        });
    };
    var getnewq = function () {
        $('#examplequestions').load('/example', bindexamples);
    };
    var val = 'e.g. What is the capital of Spain?';
    $('#question-form')
        .bind('submit', function (ev) {
            ev.preventDefault();
            var question = $('#question').val();
            if (question.substr(0,5) == 'e.g. ') {
                question = question.substr(5);
                $('#question').val(question)
            }
            var params = {'j': 'on', 'question': question};
            $('#answer-container')
                .html("<div class='preanswer'><img id='loader' src='/static/images/loader.gif' /></div>")
                .load('/ask', params, function () {
                    $('.form').addClass('q');
                    var curr = parseInt($('#questions-so-far').text());
                    $('#questions-so-far').text($('#new-questions-so-far').val());
                    $('a.goodanswer').bind('click', function (ev) {
                        ev.preventDefault();
                        var tgt = $(this).attr('href') + '?j=on';
                        $('#votebox').load(tgt, bindreasonform);
                    });
                    getnewq();
                });
        })
        .append("<input type='hidden' id='qval' value='"+val+"' />");
    $('#question')
        .bind('focus', function (ev) {
            var q = $(this);
            if (q.val() == $('#qval').val()) {
                q.val('');
            } else {
                q.select();
            }
        })
        .bind('blur', function (ev) {
            var q = $(this);
            if (q.val() == '') {
                q.val($('#qval').val());
            }
        });
    bindexamples();
    bindreasonform();
    var autoparams = {minChars: 2,
                      delay: 200,
                      matchSubset: 0,
                      cacheLength: 10,
                      onItemSelect: function () {
                        $('#question').focus();
                      }};
    $("#question").autocomplete("/autocomplete", autoparams);
});

