var Usability = {
	change_contrast: function(contrast){
		var contrast = this.get_cookie('Usability-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('Usability-Contrast', contrast);
		}
		this.reload_if_necessary();
	},
	unset_contrast: function(){
		this.unset_cookie('Usability-Contrast');
	},
	increase_font: function(){
		var font = this.get_cookie('Usability-Font');
		if(font == null)
			this.set_font('2');
		else if(font == '2')
			this.set_font('3');
	},
	decrease_font: function(){
		var font = this.get_cookie('Usability-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('Usability-Font', font);
		}
		this.reload_if_necessary();
	},
	unset_font: function(){
		this.unset_cookie('Usability-Font');
	},
	reset: function(){
		var settings = 'contrast:'+this.get_cookie('Usability-Contrast')+', '+'font:'+this.get_cookie('Usability-Font');
		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('Usability-Contrast');
		var font = this.get_cookie('Usability-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('Usability-Contrast');
		var font = this.get_cookie('Usability-Font');
		if(this.is_valid_contrast(contrast))
			$.getScript('/media/js/usability-' + contrast + '.js');
		if(this.is_valid_contrast(contrast) || this.is_valid_font(font))
			$('#accessibility').find('.reset').show();
	},
	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();
});


