// JavaScript Document

var defaultSubmitButtonName;

var globalOnloadFunctions = [];


    function onLoadHandler() {
    	fitToPage();
    	iFramePositionieren();
    	for (var counter=0;counter<globalOnloadFunctions.length;counter++)
    	{
    	  globalOnloadFunctions[counter]();
    	}
    }

    function onResizeHandler() {
    	fitToPage();
    	iFrameBeiResizePositionieren();
    }

    function fitToPage() {

        function setElementHeight(element, height) {
          element.style.height = height+"px";
        }

        function setHeight(id, height) {
          var element = document.getElementById(id);
          if (element)
          {
            setElementHeight(element, height);
          }
        }

        function setElementTop(element, top) {
          element.style.top = top+"px";
        }

        function setTop(id, top) {
          var element = document.getElementById(id);
          if (element)
          {
            setElementTop(element, top);
          }
        }

        function findChildNodeByAttribute(element,tagName,key,value) {
          var elements = element.getElementsByTagName(tagName);
          for (var counter=0; counter<elements.length; counter++)
          {
            if (elements[counter][key] == value)
            {
              return elements[counter];
            }
          }
          return null;
        }

        function findChildNode(element,tagName,key,value) {
          var elements = element.getElementsByTagName(tagName);
          if (elements.length > 0)
          {
            return elements[0];
          }
          return null;
        }

		var height = document.body.clientHeight;

		var minHeight = 608;
		var maxHeight = 900;
        height = Math.max(height, minHeight);
        height = Math.min(height, maxHeight);

        var scrollableForm = null;

        var main = document.getElementById("main");
        if (main)
        {
          var formDetailArea = findChildNodeByAttribute(main,"div","className","formDetailArea");
          if (formDetailArea != null)
          {
            var form = findChildNode(formDetailArea,"form");
            if (form != null)
            {
              scrollableForm = findChildNodeByAttribute(form,"div","className","scrollableForm");
              if (scrollableForm == null)
              {
                scrollableForm = findChildNodeByAttribute(form,"div","className","formContent");
              }
            }
            else
            {
              scrollableForm = findChildNodeByAttribute(formDetailArea,"div","className","formContent");
            }
          }
        }

        if (scrollableForm != null)
        {
          var scrollableHeight = height-186;
          if (document.all)
          {
            scrollableHeight = height-180;
          }
          setElementHeight(scrollableForm,scrollableHeight);
          setTop("footer",height-50);
          setTop("footerLogo",height - 50);
          setHeight("menu",height - 110);
          setHeight("menuHeader",height - 110);
          setHeight("treenavigation",height - 240);
          var loginInfoTopOffset = 168;
          setTop("logininfo:loginInfoHeader",height - loginInfoTopOffset);
          setTop("logininfo:loginInfo",height - loginInfoTopOffset + 22);
        }

        document.body.style.visibility = "visible";
    }


	// Der IFrame wird gesetzt für IE bis inklusive Version 6
	function iFrameNotwendig() {

		if (navigator.appName.indexOf('Microsoft') != -1) {

			version = navigator.appVersion;
			index = version.indexOf("MSIE");

			if(index != -1) {
				if(parseInt(version.substring(index+5, index+6)) <= 6) {
					return true;
				}
			}
			else {
				return true;
			}
		}

		return false;
	}

	function iFrameBeiResizePositionieren() {
		if(iFrameNotwendig() == false) {
			return;
		}

		element = document.getElementById("errorArea");
		if(element != null) {

			// wenn die Error-Area versteckt ist, dann nichts tun...
			if(element.style.visibility == 'hidden') {
				return;
			}

			iFramePositionieren();

		}

	}

	function iFramePositionieren() {

		if(iFrameNotwendig() == false) {
			return;
		}

		element = document.getElementById("errorArea");

		if(element != null) {

			// Die Lage des iFrame muß um die Länge der Navigationsbox und um die Höhe des Headers korrigiert werden
			// Anmerkung: Der Versuch, den iframe anders zu plazieren, damit diese Anpassung nicht notwendig ist, ist
			// gescheitert. Die Koordinaten haben gepaßt, aber der iFrame hat seine Wirkung verloren

			menuDiv = document.getElementById("menu");
			offsetX = menuDiv.clientWidth + 12;

			headerDiv = document.getElementById("headerLogo");
			offsetY = headerDiv.clientHeight - 2;

			iframeElement = document.getElementById("iframeMessage");
			iframeElement.style.pixelWidth = element.clientWidth;
			iframeElement.style.pixelHeight = element.clientHeight;
			iframeElement.style.pixelLeft = element.offsetLeft - offsetX;
			iframeElement.style.pixelTop = element.offsetTop - offsetY;
		}

	}


	function iFrameReset() {

		if(iFrameNotwendig() == false) {
			return;
		}

		iframeElement = document.getElementById("iframeMessage");

		iframeElement.style.pixelTop = 0;
		iframeElement.style.pixelLeft = 0;
		iframeElement.style.pixelWidth = 0;
		iframeElement.style.pixelHeight = 0;
	}


function deleteConfirmation() {
	return confirm("Moechten Sie wirklich den Loeschvorgang ausfuehren?");
}

function showDocument(url) {
	 popup = window.open("pleasewait.html","_blank","resizable=yes,height=550,width=750,toolbar=no,menubar=no,scrollbars=yes");
	 popup.window.location.href=url;
	 popup.focus();
}


function showMessageZuVielePersonen()
{
    alert("Sie haben mehr Personen angegeben als in dem Antragsformular eingetragen werden k\u00F6nnen.\n"+
          "Es werden im Antragsformular nur so viele Personen eingetragen wie m\u00F6glich!")
}

function checkDruckOptionen(element,zuVielePersonen,kritischerRadioValue)
{
  var kritischerValueSelektiert = false;
  for (var counter=0; counter<element.length; counter++)
  {
    if ((element[counter].checked) &&
        (element[counter].value == kritischerRadioValue))
    {
       kritischerValueSelektiert = true;
       break;
    }
  }

  if ((kritischerValueSelektiert) && (zuVielePersonen))
  {
    showMessageZuVielePersonen();
  }
  return true;
}

// Function dient dazu zu gewaehrleisten dass nur eine Person als VN ausgewaehlt
// werden kann
function selectVn(source) {

	// aufgrund der JSF-Namens-Gegebenheiten muss ein Zugang ueber die
	// input Tags gewaehlt werden
	var inputElementList=document.getElementsByTagName("input");

    var pos=source.name.indexOf('[');
	var name=source.name.substring(0,pos);

	// ueber die VN checkboxen iterieren und pruefen ob die Eingabe
	// mit einem Value uebereinstimmt
    for (var i=0;i<inputElementList.length;i++) {
       // nur checkbox auswaehlen
       if(inputElementList[i].type=='checkbox' && inputElementList[i].name.substring(0,pos)==name)
       {
           if (source.checked==false)
           {
              // selektiere erstes element
              if (inputElementList[i].name==(name+'[0]'))
              {
	    		 inputElementList[i].checked=true;
	    	  }
       	   }
       	   else
       	   {
       	      // deselektiere alle anderen
       	      if(inputElementList[i]!=source)
       	      {
	             inputElementList[i].checked=false;
	          }
	       }
       }
    }
}

function setAllCheckBoxes(actionForm,value){
  for ( i = 0; i < actionForm.elements.length; i++ ) {
    if (actionForm.elements[i].type == 'checkbox' ) {
      actionForm.elements[i].checked  = value;
    }
  }
}

function clearAllCheckBoxes(actionForm){
  setAllCheckBoxes(actionForm,false);
}

function selectAllCheckBoxes(actionForm){
  setAllCheckBoxes(actionForm,true);
}


function invertCheckBox(actionForm){
  for ( i = 0; i < actionForm.elements.length; i++ ) {
    if (actionForm.elements[i].type == 'checkbox' ) {
      actionForm.elements[i].checked  = !actionForm.elements[i].checked;
    }
  }
}


function setSelectElementsVisibleWhenUnderDivArea(visible,div){

  for ( i = 0; i < document.forms[0].elements.length; i++ ) {
   	var element=  document.forms[0].elements[i];
   	if(element!=null) {
	    if (element.type == 'select-one' ) {
	      checkIfOneElementInTheAreaOfAnother(div,element);
	      if(visible) {
	      	  element.style.visibility='visible';
	      } else {
		      element.style.visibility='hidden';
	      }
	    }
    }
  }
}


function checkIfOneElementInTheAreaOfAnother(element1,element2) {
	alert('Element 1 Div Pos X ' +findPosX(element1)+' Pos Y '+findPosY(element1)+ ' H?he '+element1.offsetHeight+' Breite '+element1.offsetWidth+'\n'+
 	      'Element 2 Div Pos X ' +findPosX(element2)+' Pos Y '+findPosY(element2)+ ' H?he '+element2.offsetHeight+' Breite '+element2.offsetWidth);


}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

function setSelectElementsVisible(visible){
  alert('setSelectElementsVisible');

  for ( i = 0; i < document.forms[0].elements.length; i++ ) {
   	var element=  document.forms[0].elements[i];
   	if(element!=null) {
	    if (element.type == 'select-one' ) {
	      if(visible) {
	      	  element.style.visibility='visible';
	      } else {
		      element.style.visibility='hidden';
	      }
	    }
    }
  }
}



function handleKeyPress (event) {

  if (!event)
    event = window.event;
  if (event.which) {
    Tastencode = event.which;
  } else if (event.keyCode) {
    Tastencode = event.keyCode;
  }
  // Enter pruefen
  if(Tastencode==13) {
    if(defaultSubmitButtonName!=null) {
	  document.getElementsByName(defaultSubmitButtonName)[0].click();
	  event.returnValue=false;
	  event.cancel = true;
	}
  }
}

function setDefaultSubmitButton(submitButtonName) {
	document.onkeypress = handleKeyPress;
	defaultSubmitButtonName=submitButtonName;
    document.getElementsByName(defaultSubmitButtonName)[0].focus();

}


