function initPage() {
  initAutoScalingNav({
    menuId: "nav",
    sideClasses: true,
    minPaddings: 10
  });
  clearFormFields({
    clearInputs: true,
    clearTextareas: true,
    passwordFieldText: false,
    addClassFocus: "focus",
    filterClass: "default"
  });
}
function initAutoScalingNav(o) {
  if (!o.menuId) o.menuId = "nav";
  if (!o.tag) o.tag = "a";
  if (!o.spacing) o.spacing = 0;
  if (!o.constant) o.constant = 0;
  if (!o.minPaddings) o.minPaddings = 0;
  if (!o.liHovering) o.liHovering = false;
  if (!o.sideClasses) o.sideClasses = false;
  if (!o.equalLinks) o.equalLinks = false;
  if (!o.flexible) o.flexible = false;
  var nav = document.getElementById(o.menuId);
  if(nav) {
    nav.className += " scaling-active";
    var lis = nav.getElementsByTagName("li");
    var asFl = [];
    var lisFl = [];
    var width = 0;
    for (var i=0, j=0; i<lis.length; i++) {
      if(lis[i].parentNode == nav) {
        var t = lis[i].getElementsByTagName(o.tag).item(0);
        asFl.push(t);
        asFl[j++].width = t.offsetWidth;
        lisFl.push(lis[i]);
        if(width < t.offsetWidth) width = t.offsetWidth;
      }
      if(o.liHovering) {
        lis[i].onmouseover = function() {
          this.className += " hover";
        }
        lis[i].onmouseout = function() {
          this.className = this.className.replace("hover", "");
        }
      }
    }
    var menuWidth = nav.clientWidth - asFl.length*o.spacing - o.constant;
    if(o.equalLinks && width * asFl.length < menuWidth) {
      for (var i=0; i<asFl.length; i++) {
        asFl[i].width = width;
      }
    }
    width = getItemsWidth(asFl);
    if(width < menuWidth) {
      var version = navigator.userAgent.toLowerCase();
      for (var i=0; getItemsWidth(asFl) < menuWidth; i++) {
        asFl[i].width++;
        if(!o.flexible) {
          asFl[i].style.width = asFl[i].width + "px";
        }
        if(i >= asFl.length-1) i=-1;
      }
      if(o.flexible) {
        for (var i=0; i<asFl.length; i++) {
          width = (asFl[i].width - o.spacing - o.constant/asFl.length)/menuWidth*100;
          if(i != asFl.length-1) {
            lisFl[i].style.width = width + "%";
          }
          else {
            if(navigator.appName.indexOf("Microsoft Internet Explorer") == -1 || version.indexOf("msie 8") != -1 || version.indexOf("msie 9") != -1)
              lisFl[i].style.width = width + "%";
          }
        }
      }
    }
    else if(o.minPaddings > 0) {
      for (var i=0; i<asFl.length; i++) {
        asFl[i].style.paddingLeft = o.minPaddings + "px";
        asFl[i].style.paddingRight = o.minPaddings + "px";
      }
    }
    if(o.sideClasses) {
      lisFl[0].className += " first-child";
      lisFl[0].getElementsByTagName(o.tag).item(0).className += " first-child-a";
      lisFl[lisFl.length-1].className += " last-child";
      lisFl[lisFl.length-1].getElementsByTagName(o.tag).item(0).className += " last-child-a";
    }
    nav.className += " scaling-ready";
  }
  function getItemsWidth(a) {
    var w = 0;
    for(var q=0; q<a.length; q++) {
      w += a[q].width;
    }
    return w;
  }
}

function clearFormFields(o)
{
  if (o.clearInputs == null) o.clearInputs = true;
  if (o.clearTextareas == null) o.clearTextareas = true;
  if (o.passwordFieldText == null) o.passwordFieldText = false;
  if (o.addClassFocus == null) o.addClassFocus = false;
  if (!o.filterClass) o.filterClass = "default";
  if(o.clearInputs) {
    var inputs = document.getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++ ) {
      if((inputs[i].type == "text" || inputs[i].type == "password") && inputs[i].className.indexOf(o.filterClass) == -1) {
        inputs[i].valueHtml = inputs[i].value;
        inputs[i].onfocus = function ()  {
          if(this.valueHtml == this.value) this.value = "";
          if(this.fake) {
            inputsSwap(this, this.previousSibling);
            this.previousSibling.focus();
          }
          if(o.addClassFocus && !this.fake) {
            this.className += " " + o.addClassFocus;
            this.parentNode.className += " parent-" + o.addClassFocus;
          }
        }
        inputs[i].onblur = function () {
          if(this.value == "") {
            this.value = this.valueHtml;
            if(o.passwordFieldText && this.type == "password") inputsSwap(this, this.nextSibling);
          }
          if(o.addClassFocus) {
            this.className = this.className.replace(o.addClassFocus, "");
            this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
          }
        }
        if(o.passwordFieldText && inputs[i].type == "password") {
          var fakeInput = document.createElement("input");
          fakeInput.type = "text";
          fakeInput.value = inputs[i].value;
          fakeInput.className = inputs[i].className;
          fakeInput.fake = true;
          inputs[i].parentNode.insertBefore(fakeInput, inputs[i].nextSibling);
          inputsSwap(inputs[i], null);
        }
      }
    }
  }
  if(o.clearTextareas) {
    var textareas = document.getElementsByTagName("textarea");
    for(var i=0; i<textareas.length; i++) {
      if(textareas[i].className.indexOf(o.filterClass) == -1) {
        textareas[i].valueHtml = textareas[i].value;
        textareas[i].onfocus = function() {
          if(this.value == this.valueHtml) this.value = "";
          if(o.addClassFocus) {
            this.className += " " + o.addClassFocus;
            this.parentNode.className += " parent-" + o.addClassFocus;
          }
        }
        textareas[i].onblur = function() {
          if(this.value == "") this.value = this.valueHtml;
          if(o.addClassFocus) {
            this.className = this.className.replace(o.addClassFocus, "");
            this.parentNode.className = this.parentNode.className.replace("parent-"+o.addClassFocus, "");
          }
        }
      }
    }
  }
  function inputsSwap(el, el2) {
    if(el) el.style.display = "none";
    if(el2) el2.style.display = "inline";
  }
}

if (window.addEventListener)
  window.addEventListener("load", initPage, false);
else if (window.attachEvent)
  window.attachEvent("onload", initPage);
