
/**
  Javascript - Funktionalität für "titled box"
*/

if( typeof TitledBoxHelp != 'object' )
{


  /*
    Abhängigkeiten zu gui.js und jQuery
  */
  if ( typeof jQuery != 'function' )
  {
    document.write('<script type="text/javascript" src="/js/api/extern/jquery.js"></script>');
  }
    
  try
  {
    if ( typeof jQuery.fn.innerWidth != 'function' )
    {
      throw 'NojQueryDimension';
    }
  }
  catch(err) {
    document.write('<script type="text/javascript" src="/js/api/gui.js"></script>');
  }

  /**
    Funktion für die "titled box" zur Anzeige von Hilfetexten beim
    Ereignis "onMouseOver"
    @param object Ereignis - Objekt 
    @param object HTML-Element das den mouseover-Effekt hat
    @param bool   Wahr, wenn Hilfe links eingeblendet werden soll  
  */
  var TitledBoxHelp = function(event,elem,left)
  {
  
      var ev = event || window.event;
      jQuery.event.fix(ev);
  
      var           l = left || false;
      var           x = ev.pageX;
      var           y = ev.pageY;
      var         div = $(elem).next('div');
      var       style = { 'display' : 'block' };  
      
      div = div[0];
      /**
        Schätzt die Breite des anzuzeigenden DIVs
        @param div object Anzuzeigende DIVs
        @return object Objekt mit geschätzter Breite und Höhe des anzuzeigenden DIVs
      */
      var getBoxSize = function( div )
        {
          var s = Math.floor(15*Math.sqrt(div.innerHTML.length)) ;
          return { width : s, height : Math.floor(2*s/3) };
        }

      /**
        Berechnet horizontale Positiondes anzuzeigenden DIV
        @param x int x-Koordinate des Ereignisses
        @param w int Breite des anzuzeigenden DIV
        @return int x-Koordinate für das anzuzeigende DIV
      */

      var calcHorzPos = function( x, w )
        {
          var iw = $(window).innerWidth();
          var xo = $(window).scrollLeft();
          
          if ( ( ( 1.6*w + x ) > ( iw + xo ) ) != l )
          {
             return ( x - w - 20 );          
          } else {
             return ( x + 20 );
          }
          
        }
      var size = getBoxSize(div);
      style.left   =  calcHorzPos( x, size.width ) +'px';   
      style.top    =  ( y - Math.floor(size.height/3) ) + 'px';
      style.width  =  size.width + 'px';
      
      $(div).show();
      $(div).css( style );

      /* Fuege onmouseout-Ereignishandler hinzu */
      elem.onmouseout = function()
        {
          $(div).hide();
          elem.onmouseout = null;
        }        
  }

  var TitledBoxEntries = function(event,elem,left)
  {
      var ev = event || window.event;

      jQuery.event.fix(ev);
  
      var           l = left || false;
		
	  //especially for ie6
	  if(ev.pageX)
	  {
      	var           x = ev.pageX;
      }
      else
      {
      	var           x = window.event.x;
      }
	  if(ev.pageY)
	  {
      	var           y = ev.pageY;
      }
      else
      {
      	var           y = window.event.y;
      }
      
      var         div = $(elem).next('div');
      var       style = { 'display' : 'block' };  
      
      div = div[0];

      style.left   =  x+25 + 'px';   
      style.top    =  y + 'px';

      if(l)
      {
      	style.left   =  x-200 + 'px';   
      	style.top    =  y+10 + 'px';
      }
      	
      
//breite am Inhalt angepasst
//      style.width  =  size.width + 'px';
      
      $(div).show();
      $(div).css( style );

      /* Fuege onmouseout-Ereignishandler hinzu */
      elem.onmouseout = function()
        {
          $(div).hide();
          elem.onmouseout = null;
        }        
  }
  
}

