/**
* Configure the main variables
*/
var font_size = 13;
var font_original = 13;
var min_font = 9;
var max_font = 18;

/**
* Saves the current font size into a cookie
* so that when the page is loaded again the font size is resumed
*/
function saveFontSize(){
	document.cookie="font_size="+font_size;
}

/**
* Gets the font_size from the cookie and assigns 
* it to the global variable font_size
*/
function loadFontSize(){
  cookies = document.cookie.split(";");		
  for (i = 0; i < cookies.length; i++){
    if (cookies[i].indexOf('font_size') > -1){
      fontValue = cookies[i].split("=");
      font_size = parseInt(fontValue[1]);
    }
  }
}

/**
* Sets the font size to a selected HTML element
*/
function setFontSize(element){
  //get the current font size
  loadFontSize()
  obj = document.getElementById(element);
  obj.style.fontSize = font_size+"px";

  var article_tags = document.getElementsByTagName('span');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tags = document.getElementsByTagName('a');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tables = document.getElementsByTagName('table');
  for (j = 0; j < article_tables.length; j++) {
    if (article_tables[j].className == 'art_table') {
      var article_tags = article_tables[j].getElementsByTagName('td');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
      var article_tags = article_tables[j].getElementsByTagName('th');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
    }
  }

}

/**
* Increases the font size of a HTML element with 1px
* if the size is greater than the maximum allowed 
* the size is not increased further more
*/
function increase(element) {
  obj = document.getElementById(element);
  font_size = obj.style.fontSize;
  font_size = parseInt(font_size);

  if (font_size < max_font)  font_size = font_size + 1;
  obj.style.fontSize = font_size + 'px';

  var article_tags = document.getElementsByTagName('span');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tags = document.getElementsByTagName('a');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tables = document.getElementsByTagName('table');
  for (j = 0; j < article_tables.length; j++) {
    if (article_tables[j].className == 'art_table') {
      var article_tags = article_tables[j].getElementsByTagName('td');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
      var article_tags = article_tables[j].getElementsByTagName('th');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
    }
  }

  //save the font size into the cookie
  saveFontSize();
}

/**
* Decreases the font size of a HTML element with 1px
* if the size is smaller than the minimum allowed 
* the size is not decreased further more
*/
function decrease(element) {
  obj = document.getElementById(element);
  font_size = obj.style.fontSize;
  font_size = parseInt(font_size);

  if (font_size > min_font)  font_size = font_size - 1;
  obj.style.fontSize = font_size + 'px';

  var article_tags = document.getElementsByTagName('span');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tags = document.getElementsByTagName('a');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tables = document.getElementsByTagName('table');
  for (j = 0; j < article_tables.length; j++) {
    if (article_tables[j].className == 'art_table') {
      var article_tags = article_tables[j].getElementsByTagName('td');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
      var article_tags = article_tables[j].getElementsByTagName('th');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
    }
  }

  //save the font size into the cookie
  saveFontSize()
}

/**
* Resets the font size to its original value
*/
function reset (element){
  obj = document.getElementById(element);
  font_size = font_original;
  obj.style.fontSize = font_size + 'px';

  var article_tags = document.getElementsByTagName('span');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tags = document.getElementsByTagName('a');
  for (i = 0; i < article_tags.length; i++) {
    if (article_tags[i].className.match(/^(art_sub)/)) {
      article_tags[i].style.fontSize = parseInt(font_size-2) + 'px';
    } else if (article_tags[i].className.match(/^(art_|highlight_)/)) {
      article_tags[i].style.fontSize = font_size + 'px';
    }
  }
  var article_tables = document.getElementsByTagName('table');
  for (j = 0; j < article_tables.length; j++) {
    if (article_tables[j].className == 'art_table') {
      var article_tags = article_tables[j].getElementsByTagName('td');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
      var article_tags = article_tables[j].getElementsByTagName('th');
      for (i = 0; i < article_tags.length; i++) {
        article_tags[i].style.fontSize = font_size + 'px';
      }
    }
  }

  //save the font size into the cookie
  saveFontSize()
}
