var Usability = {
    change_contrast: function(contrast){
        var contrast = this.get_cookie('Usabilty-Contrast');
        if(contrast == null)
            this.set_contrast('bw');
        else if(contrast == 'bw')
            this.set_contrast('wb');
        else
            this.set_contrast(null);
    },
    set_contrast: function(contrast){
        this.unset_contrast();
        if(this.is_valid_contrast(contrast)){
            this.set_cookie('Usabilty-Contrast', contrast);
        }
        this.reload_if_necessary();
    },
    unset_contrast: function(){
        this.unset_cookie('Usabilty-Contrast');
    },
    increase_font: function(){
        var font = this.get_cookie('Usabilty-Font');
        if(font == null)
            this.set_font('2');
        else if(font == '2')
            this.set_font('3');
    },
    decrease_font: function(){
        var font = this.get_cookie('Usabilty-Font');
        if(font == '3')
            this.set_font('2');
        else if(font == '2')
            this.set_font(null);
    },
    set_font: function(font){
        this.unset_font();
        if(this.is_valid_font(font)){
            this.set_cookie('Usabilty-Font', font);
        }
        this.reload_if_necessary();
    },
    unset_font: function(){
        this.unset_cookie('Usabilty-Font');
    },
    reset: function(){
        this.unset_contrast();
        this.unset_font();
        this.reload_if_necessary();
    },
    reload_if_necessary: function(){
        location.reload();
    },
    is_valid_contrast: function(contrast){
        return (contrast == 'wb' || contrast == 'bw');
    },
    is_valid_font: function(font){
        return (font == '2' || font == '3');
    },
    write_link_tags: function(){
        var contrast = this.get_cookie('Usabilty-Contrast');
        var font = this.get_cookie('Usabilty-Font');
        if(this.is_valid_contrast(contrast))
            document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="/media/css/' + contrast + '.css" /%3E'));
        if(this.is_valid_font(font))
            document.write(unescape('%3Clink type="text/css" rel="stylesheet" href="/media/css/font' + font + '.css" /%3E'));
    },
    load_contrast_script: function(contrast){
        var contrast = this.get_cookie('Usabilty-Contrast');
        if(this.is_valid_contrast(contrast)){
            $.getScript('/media/js/usability-' + contrast + '.js');
        }
    },
    set_cookie: function(name, value){
        document.cookie = name + '=' + value + '; path=/';
    },
    get_cookie: function(name){
        var cookies = document.cookie.split(';');
        for(var i = 0; i < cookies.length; i++){
            var cs = cookies[i];
            while(cs.charAt(0) == ' ')
                cs = cs.substring(1, cs.length);
            var value = cs.substring(name.length + 1, cs.length);
            if(cs.indexOf(name + '=') == 0 && value != 'None')
                return value;
        }
        return null;
    },
    unset_cookie: function(name){
        document.cookie = name + '=None; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT';
    }
}

$(document).ready(function() {
	Usability.load_contrast_script();
});
