
measureUnit = "pt"

minSize = 13;
minStyleSize = 13;
maxSize = 16;
maxStyleSize = 16;
startSize = 13;
startStyleSize = 13;
stepSize = 1;
stepStyleSize = 1;
var keyin = 43;
var keyinCAPS = 43;
var keyout = 45;
var keyoutCAPS = 45;
var keyinIe = 62;
var keyinIeCAPS = 62;
var keyoutIe = 60;
var keyoutIeCAPS = 60;
var zoomFactor = 1.1;
var maxZoom = 4.096;
var minZoom = 0.625;
var startDecZoom = 0.7;
var startIncZoom = 1.3;

function searchTags(childTree, level) {
  var retArray = new Array();
  var tmpArray = new Array();
  var j = 0;
  var childName = "";
  for (var i=0; i<childTree.length; i++) {
    childName = childTree[i].nodeName;
    if (childTree[i].hasChildNodes()) {
      if ((childTree[i].childNodes.length == 1) && (childTree[i].childNodes[0].nodeName == "#text"))
        retArray[j++] = childTree[i];
      else {
        tmpArray = searchTags(childTree[i].childNodes, level+1);
        for (var k=0;k<tmpArray.length; k++)
          retArray[j++] = tmpArray[k];
        retArray[j++] = childTree[i];
      }
    }
    else
      retArray[j++] = childTree[i];
  }
  return(retArray);
}
function changeFontSize(stepSize, stepStyleSize) {
  myObj = searchTags(document.getElementById("argomenti").childNodes, 0);
  myObjNumChilds = myObj.length;
  for (i=0; i<myObjNumChilds; i++) {
    myObjName = myObj[i].nodeName;
    if (myObjName != "#text" && myObjName != "HTML" &&
        myObjName != "HEAD" && myObjName != "TITLE" &&
        myObjName != "STYLE" && myObjName != "SCRIPT" &&
        myObjName != "BR" && myObjName != "TBODY" &&
        myObjName != "#comment") {
      size = parseInt(myObj[i].getAttribute("size"));
      styleSize = parseInt(myObj[i].style.fontSize);
      if (isNaN(size) || (size < minSize) || (size > maxSize))
        size = startSize;
      if (isNaN(styleSize) || (styleSize < minStyleSize) || (styleSize > maxStyleSize))
        styleSize = startStyleSize;
      if ( ((size > minSize) && (size < maxSize)) || 
           ((size == minSize) && (stepSize > 0)) || 
           ((size == maxSize) && (stepSize < 0)) ) {
        myObj[i].setAttribute("size", size+stepSize);
      }
      if ( ((styleSize > minStyleSize) && (styleSize < maxStyleSize)) || 
           ((styleSize == minStyleSize) && (stepStyleSize > 0)) ||
           ((styleSize == maxStyleSize) && (stepStyleSize < 0)) ) {
        newStyleSize = styleSize+stepStyleSize;
        myObj[i].style.fontSize = newStyleSize+measureUnit;
      }
    } 
  } 
} 

function increaseFontSize() {
  changeFontSize(stepSize, stepStyleSize);
}

function decreaseFontSize() {
  myStepSize = -stepSize;
  myStepStyleSize = -stepStyleSize;
  changeFontSize(myStepSize, myStepStyleSize);
}

function zoomin() {
  if (window.parent.document.getElementById("argomenti").style.zoom < maxZoom) {
    if (window.parent.document.getElementById("argomenti").style.zoom > 0) {
      window.parent.document.getElementById("argomenti").style.zoom *= zoomFactor; 
    }
    else { 
      window.parent.document.getElementById("argomenti").style.zoom = startIncZoom;
    }
  }
  else {
    alert("Massimo ingrandimento !");
  }
}

function zoomout() {
  if ( (window.parent.document.getElementById("argomenti").style.zoom > minZoom) ||
       (window.parent.document.getElementById("argomenti").style.zoom == 0) ) {
    if (window.parent.document.getElementById("argomenti").style.zoom > 0) {
      window.parent.document.getElementById("argomenti").style.zoom /= zoomFactor; 
    }
    else {
      window.parent.document.getElementById("argomenti").style.zoom = startDecZoom;
    }
  }
  else {
    alert("Minimo ingrandimento !");
  }
}
function checkzoom(e) {
  if (document.all) {
    myEvent = event.keyCode;
  }
  else {
    myEvent = e.which;
  }
  switch(myEvent) {
    case keyinIe:
    case keyinIeCAPS:
      zoomin();
      break;
    case keyoutIe:
    case keyoutIeCAPS:
      zoomout();
      break;
    case keyin:
    case keyinCAPS:
      increaseFontSize();
      break;
    case keyout:
    case keyoutCAPS:
      decreaseFontSize();
      break;
    default:
      break;
  }
}
