var search_form;
var search_input;
var search_link;
var input_focused;

function get_search_url() {
    text = search_input.value;
    if(!text.length) {
        return '/archives/';
    } else if(text.match(/\//)) {
        return '/archives/+textsearch/?searchtext=' + escape(text);
    } else {
        return '/archives/+textsearch/' + escape(text);
    }
}

function submit_search(event) {
    if(!event) event = window.event;
    window.location = get_search_url();
    event.stop();
}

function update_link(event) {
    search_link.href = get_search_url();
}

function input_focus(event) {
    input_focused = true;
}

function input_blur(event) {
    update_link();
    input_focused = false;
}

function ckeyhandler(event) {
    var k = event.key().string.toLowerCase();
    if(k == 'key_escape') {
        $('main-content-box').focus();
        event.stop();
    }
}

function keyhandler(event) {
    if(input_focused) return;
    var k = event.key().string.toLowerCase();
    var el = null;
    var stop = true;
    switch(k) {
    case '': // escape, arrows, etc
        el = 'main-content-box';
        stop = false;
        break;
    case 'n':
        el = 'link-next';
        break;
    case 'p':
        el = 'link-prev';
        break;
    case 'u':
        el = 'link-up';
        break;
    case 's':
        el = search_input;
        break;
    }
    el = $(el);
    if(el !== null) {
        el.focus();
        if(stop)
            event.stop();
    }
}

function setup(event) {
    search_form = $('search-form');
    connect(search_form, 'onsubmit', submit_search);
    search_input = $('search-input');
    search_form.removeChild(search_form.lastChild);
    search_link = A({'id': 'search-link', href: get_search_url()}, 'search >');
    swapDOM('search-form-submit', search_link);
    connect(search_input, 'onchange', update_link);
    connect(search_input, 'onmouseout', update_link);
    connect(search_input, 'onkeyup', ckeyhandler);
    teh_email = $('site-contact-email');
    teh_email_addr = teh_email.innerHTML.replace(/\s+dot\s+/g, '.')
        .replace(/,\s+at\s+/, '@').replace(/you\s+know\s+what/, 'com');
    swapDOM(teh_email, A({id: 'site-contact-email',
                          href: 'mailto:' + teh_email_addr}, teh_email_addr));
    $('main-content-box').focus();
    map(function(el) {el.innerHTML = strip(el.innerHTML);},
        document.getElementsByTagName('blockquote'));
    connect(window, 'onkeypress', keyhandler);
    function watch_input_focus(el) {
        connect(el, 'onfocus', input_focus);
        connect(el, 'onblur', input_blur);
    }
    map(watch_input_focus, document.getElementsByTagName('input'));
    map(watch_input_focus, document.getElementsByTagName('textarea'));
}

connect(window, 'onload', setup);

if(engine.name == 'MSIE') {

    function fixSizes(event) {
        var el = $('main-content');
        setStyle(el, {padding: '0px 10px'});
        var dim = getElementDimensions(document.body.parentElement);
        var pos = getElementPosition(el);
        dim.w -= pos.x + 25;
        dim.h -= 5;
        setElementDimensions(el, dim);
    }

    connect(window, 'onresize', fixSizes);
}

