/**
* @desc Datei implementiert Klasse für die Info-Box von SES-Dental
* @author Marko Walther
*/

	/**
	* @desc Hilfsfunktion, die einen Ereignishandler zu einem gegebenen Objekt hinzufügt
	* @param pointer pObj		Objekt
	* @param string sEvent	Das Ereignis (ohne 'on...')
	* @param function fnFunction	Der Event-Handler
	*/
	function addEventHandler( pObj, sEvent, fnFunction ) {
	
	  if( pObj.addEventListener ) {
	
			pObj.addEventListener( sEvent, fnFunction, false );
	    return true;
	  
	  } // if
		
		if( pObj.attachEvent ) { // msie o.ä.
	
			var bRet = pObj.attachEvent( "on"+sEvent, fnFunction );
	    return bRet;
	  
	  } // if
	  
	  return false;
	
	} // function addEventHandler
	
	/**
	* @desc Hilfsfunktion zum Checken oder Unchecken aller Checkboxen
	* mit dem geg. Namen
	* @param string sName Name der Checkboxen
	* @param boolean bCheck true = checken, false = unchecken
	*/
	function checkAll( sName, bCheck ) {
		
		var aElems = document.getElementsByName( sName );		
		var nAnzahl = aElems.length;
		
		if( typeof(nAnzahl) != 'undefined' ) {
							
			for( nAnzahl; nAnzahl > 0; nAnzahl-- ) {
			 	
				aElems[nAnzahl-1].checked = bCheck;
			
			} // for
		
		} // if
		
	} // function checkAll
	
	var g_MousePos = new Array();
	
	/**
	* @desc ermittelt die Position der Maus im Document und speichert sie
	* in der globalen variabel g_MousePos;
	* @param ev Event-Objekt
	*/
	function globalMouseMove( ev ) {
    
    if( !ev ) {
      
      ev = window.event; // IE
      
    } // if
    
    if( ev ) {

  		if( ev.pageX || ev.pageY ) { // Netscape
  		
  			g_MousePos = { x:ev.pageX, y:ev.pageY };
  			
  		} else { // IE, Firefox, Opera
  		
    		g_MousePos = {
    		
    			x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
    			y:ev.clientY + document.body.scrollTop  - document.body.clientTop
    		
    		}; // g_MousePos
  		
  		} // if
  		      
    } else {

			g_MousePos = { x: 0, y: 0 }; // Ooops, not handled :-(
      
    } // if

	} // function globalMouseMove
 
  /**
  * @desc Rahmt die aktuelle Textauswahl im geg. Textfeld mit
  * dem g.g Anfangs- und Endtag ein
  * Bem.: Funktion funktioniert nicht in Opera.
  * 
  * @param string sFieldName name des Textfeldes
  * @param string sATag Anfangstag
  * @param string sETag Endtag
  */
  function insertTags( sFieldName, sATag, sETag ) {
    
    var pInput = document.getElementsByName( sFieldName )[0];
    pInput.focus();
    
    // für Internet Explorer
    if( typeof document.selection != 'undefined' ) {
      
      // Einfügen des Formatierungscodes 
      var oRange = document.selection.createRange();
      var sInsText = oRange.text;
      oRange.text = sATag + sInsText + sETag;
      
      // Anpassen der Cursorposition
      oRange = document.selection.createRange();
      
      if( sInsText.length == 0 ) {
        
        oRange.move( 'character', -sETag.length );
      
      } else {
        
        oRange.moveStart( 'character', sATag.length+sInsText.length+sETag.length );      
      
      } // if
      oRange.select();
    
    } else if( typeof pInput.selectionStart != 'undefined' ) {
    // für neuere auf Gecko basierende Browser 
      
      // Einfügen des Formatierungscodes
      var nStart = pInput.selectionStart;
      var nEnd = pInput.selectionEnd;
      var sInsText = pInput.value.substring( nStart, nEnd );
      
      pInput.value = pInput.value.substr( 0, nStart )+sATag+sInsText+sETag+
                     pInput.value.substr( nEnd );
                     
      // Anpassen der Cursorposition
      var nPos;
      if( sInsText.length == 0 ) {
        
        nPos = nStart+sATag.length;
        
      } else {
        
        nPos = nStart+sATag.length+sInsText.length+sETag.length;
      
      } // if
      
      pInput.selectionStart = nPos;
      pInput.selectionEnd = nPos;
    
    } // if

  } // function insertTags

	/**
	* @desc Funktion ermittelt die absolute position des Knotens
	* @param pointer pNode Elementknoten, dessen Position bestimmt werden soll
	* @return array mit der x-Koordinate im 0. und der y-Koordinate im 1. Index 
	*/
	function nodeGetAbsPosition( pNode ) {
	
		var nPosX = 0;
		var nPosY = 0;
		
		var sOut = "";
		while( pNode != null && pNode.nodeName != "BODY" ) {
	
			nPosX += pNode.offsetLeft;
			nPosY += pNode.offsetTop;
			pNode = pNode.offsetParent;
			
		} // while
		
		return new Array( nPosX+window.pageXOffset, 
		                  nPosY+window.pageYOffset );
	
	} // function nodeGetAbsPosition

