var ultimateChange = 0;
var importedChange = 0;
var useCookie = true;
var maxUpSize = 2;
var maxDownSize = -1;

if (useCookie)
{
  var x, svName, svValue, bCookieFound = false, aCookies = document.cookie.split(";");
  for (x = 0; x < aCookies.length; x++)
  {
    svName = aCookies[x].substr(0, aCookies[x].indexOf("="));
    svValue = aCookies[x].substr(aCookies[x].indexOf("=") + 1);
    svName = svName.replace(/^\s+|\s+$/g, "");
    if ("TextSizeDimension" == svName)
    {
      bCookieFound = true;
      importedChange = parseInt(svValue);
      break;
    }
  }
}


function ts(target, incomingChange)
{
    if (!document.getElementById) return
    var sizeChange = importedChange;
    
    if (incomingChange == 'cookie') //use cookie value
    {
      if (importedChange == 0 || !bCookieFound)
        return;

      sizeChange = importedChange;
      ultimateChange = importedChange;
    }
    else if (incomingChange == 0 || incomingChange == 'reset') //reset
    {
      sizeChange = ultimateChange * -1;
      ultimateChange = 0;
    }
    else
    {
      //do not allow resize above maxUpSize dimension or below maxDownSize dimension
      if
      (
        (incomingChange > 0 && ultimateChange + incomingChange > maxUpSize)
        || (incomingChange < 0 && ultimateChange + incomingChange < maxDownSize)
      )
      {
        return;
      }
      else
      {
        ultimateChange += incomingChange;
        sizeChange = incomingChange;
      }
    }

    if (useCookie)
    {
      document.cookie = "TextSizeDimension=" + ultimateChange + "; path=/";
    }

    var TextManipulatedElements =
        $(
          "#" + target + "," +
          "#" + target + " table," +
          "#" + target + " tr," +
          "#" + target + " td," +
          "#" + target + " div," +
          "#" + target + " span," +
          "#" + target + " font," +
          "#" + target + " p," +
          "[name=" + target + "]," +
          "[name=" + target + "] table," +
          "[name=" + target + "] tr," +
          "[name=" + target + "] td," +
          "[name=" + target + "] div," +
          "[name=" + target + "] span," +
          "[name=" + target + "] font," +
          "[name=" + target + "] p"
        );
    $.each(TextManipulatedElements, function () { $(this).attr('fontSizeHold',$(this).css('fontSize')) });
    $.each(TextManipulatedElements, function () { $(this).css('fontSize',(parseInt($(this).attr('fontSizeHold').replace('px', '')) + parseInt(sizeChange)) + "px"); });
}
