/**
 *  base.js
 */
if ($.browser.msie)
{
    $(document.body).ajaxSend(function (evt, request, settings)
    {
        if (!settings.ifModified && settings.type.toLowerCase() == 'get')
            request.setRequestHeader('If-Modified-Since', 'Thu, 01 Jan 1970 00:00:00 GMT');
    });
}

$(function ()
{
    (function ()//START: vim keybind.
    {
        //  default options for hotkeys.
        var options = {
            'type': 'keydown',
            'disableInInput': true
        }
        //  position holder.
        var positions = [0];
        //  get positions.
        $('h2, h3', $('#main-content')).add('#footer')
        .each(function ()
        {
            positions.push(this.offsetTop - 5);

        });
        positions.sort(function (a, b) { return a > b ? 1 : -1 });
        var __offset = function ()
        {
            if ($.browser.msie)
                return document.body.scrollTop || document.documentElement.scrollTop;
            else
                return window.pageYOffset;
        }
        //  bind keyevents.
        $.hotkeys.add('j', options, function ()
        {
            var offset = __offset();
            for (var i=0; i<positions.length; i++)
            {
                if (offset < positions[i])
                {
                    window.scrollTo(0, positions[i]);
                    break;
                }
            }
        });
        $.hotkeys.add('k', options, function ()
        {
            var offset = __offset();
            for (var i=positions.length; i>=0; --i)
            {
                if (offset > positions[i])
                {
                    window.scrollTo(0, positions[i]);
                    break;
                }
            }
        });
    })();//END: vim keybind.

    (function ()//START: search form.
    {
        var $query = $('#query');
        var lastQuery = $query.val();
        $('#navigation form').submit(function (evt)
        {
            var query = $query.val();
            if (query.length <= 0 || query == lastQuery)
                evt.preventDefault();
        });
    })();//END: search form.
    
    (function ()//START: comment form.
    {
        $('#comment-form form').submit(function (evt)
        {
            $('button:submit', this).attr('disabled', 'disabled');
        });
    })();//END comment form.

});
