/**
 * Global variables:
 * prefsLoaded - shows if user settings loaded from cookies
 * defaultFontSize - default value of font size
 * currentFontSize - current font size value
 */
var prefsLoaded = false;
var defaultFontSize = "62.5";
var currentFontSize = defaultFontSize;

/**
 * resetStyles
 *
 * Sets font size to default value
 */
function resetStyles(){

  currentFontSize = defaultFontSize;
  changeFontSize(0);
}

/**
 * changeFontSize
 *
 * Changes current font size
 *
 * @param int sizeDifference - value that will be added to current font size
 */
function changeFontSize(sizeDifference){

  currentFontSize = parseFloat(currentFontSize) + parseFloat(sizeDifference * 5);

  if(currentFontSize > 100){
    currentFontSize = 100;
  }else if(currentFontSize < 40){
    currentFontSize = 40;
  }

  setFontSize(currentFontSize);
}

/**
 * setFontSize
 *
 * Sets font size
 *
 * @param int fontSize - new font size value (in %)
 */
function setFontSize(fontSize){

  document.body.style.fontSize = fontSize + '%';

    currentFontSize=fontSize;

  saveSettings();
}

/**
 * createCookie
 *
 * Save some setting in cookie
 *
 * @param string name - setting's name
 * @param string value - setting's value
 * @param int days - after this interval cookie will be deleted by browser (in days)
 */
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 expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

/**
 * readCookie
 *
 * Read some setting from cookie
 *
 * @param string name - setting's name
 */
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;
}

/**
 * setUserOptions
 *
 * Load user's font size from cookie and sets it as current font size
 */
function setUserOptions(){
  if(!prefsLoaded){

    cookie = readCookie("fontSize");
    currentFontSize = cookie ? cookie : defaultFontSize;
    setFontSize(currentFontSize);

    prefsLoaded = true;
  }
}

Event.observe(window, 'load', function(){
  setUserOptions();
});

/**
 * saveSettings
 *
 * Save current font size value in cookie
 */
function saveSettings()
{
  createCookie("fontSize", currentFontSize, 365);
}
