
// spamprotection

function writeEmail(name, domain) {
  document.write('<a href=\"mailto:' + name + '@' + domain + '\">');
  document.write(name + '@' + domain + '</a>');
}

// open window s

function openWindow(theURL,winName,features) {
  return window.open(theURL,winName,features);
}

function openFaq(theURL) {
  openWindow(theURL+'&template=popup', 'insiderFaq', 'width=500,height=350,scrollbars=yes,resizable=yes');
  return false;
}

// menu mouseover

// TODO Matzi: cross browser versions (none DOM etc)

function menuOver(menuId,className) {
  if (document.getElementById(menuId)) {
      document.getElementById(menuId).className = className;
  }
}

function menuOut(menuId,className) {
  if (document.getElementById(menuId)) {
      document.getElementById(menuId).className = className;
  }
}

// changeImage

// TODO Matzi: cross browser version (none DOM etc)

function changeImg(imgId,imgSrc) {
  if (document.getElementById(imgId)) {
      document.getElementById(menuId).src = imgSrc;
  }
}


// TODO Matzi: cross browser version (none DOM etc)
function showHideHiddenContent(contentId) {
  if(DOM && document.getElementById(contentId)) {
    if (document.getElementById(contentId).style.visibility == "visible") {
      document.getElementById(contentId).style.visibility = "hidden";
      document.getElementById(contentId).style.display = "none";
    } else {
      document.getElementById(contentId).style.visibility = "visible";
      document.getElementById(contentId).style.display = "block";
    }
  }
}
        
// pulldown/up (menus)

// TODO Matzi: refactor for older browser versions
function pulldown(pulldownId) {
  var name = navigator.userAgent.toLowerCase();
  if(DOM && document.getElementById(pulldownId)) {
    var pulldown = document.getElementById(pulldownId);
    pulldown.style.visibility = "visible";
  }
}

function pullup(pulldownId) {
  var name = navigator.userAgent.toLowerCase();
  if(DOM && document.getElementById(pulldownId)) {
    var pulldown = document.getElementById(pulldownId);
    pulldown.style.visibility = "hidden";
  }
}

// show and hide the formfield explanation layers

// TODO Matzi: refactor for older browser versions
function explain(formField, explDiv) {
	if((explain.lastdiv) && (explain.lastdiv.id != explDiv)) {
		explain.lastdiv.style.display = "none";
		explain.lastdiv.style.visibility = "hidden";
	}

  var formStart = "formStart"; // default
  if (explain.arguments.length>2) {
    formStart = explain.arguments[2]+"Start";
  }
	var formEnd = "formEnd"; // default
  if (explain.arguments.length>2) {
    formEnd = explain.arguments[2]+"End";
  }
  var formExplanations = "formExplanations"; // default
  if (explain.arguments.length>2) {
    formExplanations = explain.arguments[2]+"Explanations";
  }

	formField = document.getElementById(formField);
	formStart = document.getElementById(formStart)
  formEnd = document.getElementById(formEnd);
  formExplanations = document.getElementById(formExplanations);
  explDiv = document.getElementById(explDiv)

  if (formField && explDiv) {
    // calculate position
    var explDivLeft = formExplanations.offsetLeft;
    var explDivTop = formField.offsetTop + formStart.offsetTop;

    // move it up if it'll go below the end of the form
    explDiv.style.visibility = "hidden";
    explDiv.style.display = "block";
    if (explDivTop + explDiv.offsetHeight > formEnd.offsetTop) {
      explDivTop -=  explDivTop + explDiv.offsetHeight - formEnd.offsetTop;
    }

    // show it
    explDiv.style.position = "absolute";
    explDiv.style.display = "block";
    explDiv.style.top = explDivTop + "px";
    explDiv.style.left = explDivLeft + "px";
    explDiv.style.visibility = "visible";
    explain.lastdiv = explDiv;
  }
}

function unexplain(div) {
  document.getElementById(div).style.visibility = "hidden";
}


// DHTML-lib

// DHTML init

var DHTML = 0, DOM = 0, MS = 0, NS = 0, OP = 0;

function DHTML_init() {

 if (window.opera) {
     OP = 1;
 }
 if(document.getElementById) {
   DHTML = 1;
   DOM = 1;
 }
 if(document.all && !OP) {
   DHTML = 1;
   MS = 1;
 }
if (window.netscape && window.screen && !DOM && !OP){
   DHTML = 1;
   NS = 1;
 }
}

DHTML_init();

function getElement (Mode, Identifier, ElementNumber) {
  var Element, ElementList;
  if (DOM) {
    if (Mode.toLowerCase() == "id") {
      Element = document.getElementById(Identifier);
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "name") {
      ElementList = document.getElementsByName(Identifier);
      Element = ElementList[ElementNumber];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "tagname") {
      ElementList = document.getElementsByTagName(Identifier);
      Element = ElementList[ElementNumber];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    return false;
  }
  if (MSIE4) {
    if (Mode.toLowerCase() == "id" || Mode.toLowerCase() == "name") {
      Element = document.all(Identifier);
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "tagname") {
      ElementList = document.all.tags(Identifier);
      Element = ElementList[ElementNumber];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    return false;
  }
  if (NS4) {
    if (Mode.toLowerCase() == "id" || Mode.toLowerCase() == "name") {
      Element = document[Identifier];
      if (!Element) {
        Element = document.anchors[Identifier];
      }
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    if (Mode.toLowerCase() == "layerindex") {
      Element = document.layers[Identifier];
      if (!Element) {
        Element = false;
      }
      return Element;
    }
    return false;
  }
  return false;
}

function getAttribute (Mode, Identifier, ElementNumber, AttributeName) {
  var Attribute;
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {
    return false;
  }
  if (DOM || MSIE4) {
    Attribute = Element.getAttribute(AttributeName);
    return Attribute;
  }
  if (NS4) {
    Attribute = Element[AttributeName]
    if (!Attribute) {
       Attribute = false;
    }
    return Attribute;
  }
  return false;
}

function getContent (Mode, Identifier, ElementNumber) {
  var Content;
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {
    return false;
  }
  if (DOM && Element.firstChild) {
    if (Element.firstChild.nodeType == 3) {
      Content = Element.firstChild.nodeValue;
    } else {
      Content = "";
    }
    return Content;
  }
  if (MSIE4) {
    Content = Element.innerText;
    return Content;
  }
  return false;
}

function setContent (Mode, Identifier, ElementNumber, Text) {
  var Element = getElement(Mode, Identifier, ElementNumber);
  if (!Element) {
    return false;
  }
  if (DOM && Element.firstChild) {
    Element.firstChild.nodeValue = Text;
    return true;
  }
  if (MSIE4) {
    Element.innerText = Text;
    return true;
  }
  if (NS4) {
    Element.document.open();
    Element.document.write(Text);
    Element.document.close();
    return true;
  }
}
