/* ###############################################
 * Cookie library, courtesy of quirksmode.org
 * ############################################### */ 
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 Cookie Library
 * ############################################### */ 


/* ###############################################
 * Begin text size widget code
 * ############################################### */ 
var COOKIE_LENGTH = 30; //In days
var TEXT_COOKIE_NAME = "textSize";
var DEFAULT_SIZE = 12;

//Used by relative function if cookies aren't available
var currentTextSize = DEFAULT_SIZE;


/* ***********************************************
 * Renders specified base text size
 * ***********************************************/ 
function renderTextSize (size) {
  window.document.body.style.fontSize = (size) + "pt";
}


/* ***********************************************
 * Reads base text size from cookie
 * ***********************************************/ 
function loadTextSize () {
  if (readCookie(TEXT_COOKIE_NAME) == null) {
      //There's nothing to change the size too
      return;
  } else {
    renderTextSize(parseInt(readCookie(TEXT_COOKIE_NAME)));
  }
}


/* ***********************************************
 * Sets base text size to the specified size
 * ***********************************************/ 
function setTextSize (size) {
  //Prevent excessivly small text
  if (size < 8) {
    return;
  }
  
  renderTextSize(size);
  
  //Save the text size
  createCookie(TEXT_COOKIE_NAME, size, COOKIE_LENGTH);
  currentTextSize = size;
}


/* ***********************************************
 * Changes base text size by the specified amount
 * ***********************************************/ 
function setTextSizeRelative (change) {
  var size;

  if (readCookie(TEXT_COOKIE_NAME) != null) {
    size = parseInt(readCookie(TEXT_COOKIE_NAME));
  } else {
    size = currentTextSize; //Read from var if cookies aren't available
  }
  
  size += change;
  
  setTextSize(size);
}


/* ***********************************************
 * Resets base text size to default
 * ***********************************************/ 
function resetTextSize () {
  setTextSize(DEFAULT_SIZE);
}

/* ###############################################
 * End text size widget code
 * ############################################### */ 


/* ###############################################
 * Begin contrast changer code
 * ############################################### */ 
var CONTRAST_COOKIE_NAME = "contrast";

var CSS_PATH_PREFIX = "css/colour-";
var CSS_PATH_SUFFIX = ".css";
var CSS_ELEMENT_ID = "colour";

/* ***********************************************
 * Switches to the specified stylesheet
 * ***********************************************/ 
function setContrast (contrast) {
  var css = document.getElementById(CSS_ELEMENT_ID);
  
  css.href = CSS_PATH_PREFIX + contrast + CSS_PATH_SUFFIX;
  
  createCookie(CONTRAST_COOKIE_NAME, contrast);
}


/* ***********************************************
 * Reads contrast setting from cookie
 * ***********************************************/ 
function loadContrast () {
  if (readCookie(CONTRAST_COOKIE_NAME) == null) {
      //There's nothing to change the size too
      return;
  } else {
    setContrast(readCookie(CONTRAST_COOKIE_NAME));
  }
}

/* ###############################################
 * End contrast changer code
 * ############################################### */ 

function loadAccessSettings() {
  loadTextSize();
  loadContrast();
}