/*
 * © 2008 Martin Veverka <martin.vev@gmail.com>
 */
var keys = new Array();
var keysEnabled = true;

function key_init(){
    document.onkeydown = key_down;
    
    if (document.getElementsByTagName) {
        var a_links = document.getElementsByTagName('link');
        for (var i = 0; i < a_links.length; i++) {
            if (typeof a_links[i]['rel'] != 'undefined' && typeof a_links[i]['href'] != 'undefined') {
                keys[a_links[i]['rel']] = a_links[i]['href'];
            }
        }
    }
}

function key_down(ev){
    var e = ev || window.event;
    if (keysEnabled) {
        if (e.ctrlKey && e.keyCode == 36) {
            key_go(e, 'home');
        }
        else if (e.keyCode == 37) {
        	key_go(e, 'previous');
        }
        else if (e.keyCode == 27) {
            key_go(e, 'up');
        }
        else if (e.keyCode == 39) {
            key_go(e, 'next');
        }
                 
    }
}

function key_go(e, rel){
    if (typeof keys[rel] != 'undefined') {
        if (keys[rel] != false) {
            window.location.href = keys[rel];
            //keys[rel]=false;
        }
        if (e.preventDefault) {
            e.preventDefault();
        }
        else {
            e.returnValue = false;
        }
    }
}

function link_set(rel, href){
    if (document.getElementsByTagName) {
        var a_head = document.getElementsByTagName('head')[0];
        var a_links = document.getElementsByTagName('link');
        for (var i = 0; i < a_links.length; i++) {
            if (typeof a_links[i]['rel'] != 'undefined') {
                if (a_links[i]['rel'] == rel) {
                    a_head.removeChild(a_links[i]);
                }
            }
        }
        if (href) {
            var link = document.createElement('link');
            link.rel = rel;
            link.href = href;
            a_head.appendChild(link);
        }
        keys[rel] = href;
    }
}

$(document).ready(key_init);
