(function (){
    function addToOnload( func ) {
        var curr_onload = window.onload;
        if( typeof curr_onload == 'function') {
            window.onload = function(){
                curr_onload();
                func();
            }
        } else {
            window.onload = func;
        }
    }

    // Cookie functions taken from http://www.quirksmode.org/js/cookies.html by ppk
    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    function eraseCookie(name) {
        createCookie(name,"",-1);
    }
    // End attributed cookie functions

    var selectedit_cookie_name = 'nfcms_selectedit';
    var hide_selectedit_class = 'hide_selectedit';
    var nfcms_selectedit;
    var body = document.body;

    addToOnload(function(){
        body = document.body;
        nfcms_selectedit = readCookie(selectedit_cookie_name);
        if(nfcms_selectedit) {
            body.className += body.className + ' ' + hide_selectedit_class + ' ';
        }
    });

    var regex = new RegExp("\\s*" + hide_selectedit_class + "\\s*", 'g');

    document.onkeydown = function(e) {
        // Also from ppk...
        var code;
        if (!e) var e = window.event;
        if (e.keyCode) code = e.keyCode;
        else if (e.which) code = e.which;

        if(code == '27') { //escape key
            if(nfcms_selectedit){
                body.className = body.className.replace(regex, '');
                eraseCookie(selectedit_cookie_name);
                nfcms_selectedit = '';
            }  
            else {
                body.className += body.className + ' ' + hide_selectedit_class + ' ';
                createCookie(selectedit_cookie_name, 'true', 365);
                nfcms_selectedit = true;
            }
        }
    }
})();
