var init = (typeof document.compatMode!="undefined" && document.compatMode!="BackCompat")?"documentElement":"body";
var cgibin = '/cgi-bin';

function getXmlHttpObject(){
     //erstellen des requests
    var req = null;
    try{
        req = new XMLHttpRequest();
    }
    catch (ms){
        try{
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (nonms){
            try{
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (failed){
                req = null;
            }
        }  
    }
    return req;
}


function showItem( item , targetid){
    if (item == null){
      alert("Item fehlt");
      return;
    }
    if (targetid == null){
      alert("targetid fehlt");
      return;
    }
    var req = getXmlHttpObject();
    if (req == null)
          alert("Error creating request object!");
      
    // volle URL, damit es auch während der Entwicklung Lokal funktioniert.
    //http://www.subjekte.de/cgi-bin/
    req.open("GET", cgibin + '/getContent.php?type=glossar&id='+item, true);

    //Beim abschliessen des request wird diese Funktion ausgeführt
    req.onreadystatechange = function(){            
        switch(req.readyState) {
                case 4:
                if(req.status!=200) {
                    //alert("Fehler:"+req.status); 
                }else{    
                    //alert(req.responseText);
                    //schreibe die antwort in den div container mit der id content
                    // enable inner Links between artefakts
                    var newText = MyReplace( req.responseText, '$$', targetid);
                    
                    //document.getElementById( targetid ).innerHTML = newText;
                    
                    //document.getElementById( targetid ).style.display='block';
                    show( newText );
                }
                break;
        
                default:
                    return false;
                break;     
            }
        };

      req.setRequestHeader("Content-Type",
                          "application/x-www-form-urlencoded");
    req.send(null);
}

/*function close( tagid ) {
  document.getElementById( tagid ).style.display='none';
} */

/*
function getArtefakt( content, item ){
    // preview ausschalten
    document.getElementById( "eins" ).style.display='none';
    document.getElementById( "saveinfo" ).style.display='none';
    //erstellen des requests
    var req = null;
    if (item == null){
      alert("Item fehlt");
      return;
    }
    if (content == ''){
      alert("Content fehlt");
      return;
    }
    var req = getXmlHttpObject();
    if (req == null)
          alert("Error creating request object!");
      
    //anfrage erstellen , request ist asynchron      
    req.open("GET", '/cgi-bin/getContent.php?type='+content+'&id='+item, true);

    //Beim abschliessen des request wird diese Funktion ausgeführt
    req.onreadystatechange = function(){            
        switch(req.readyState) {
                case 4:
                if(req.status!=200) {
                    //alert("Fehler:"+req.status); 
                    document.artefaktForm.artefakt.value='';
                }else{    
                    document.artefaktForm.artefakt.value=req.responseText;
                }
                break;
        
                default:
                    return false;
                break;     
            }
        };

      req.setRequestHeader("Content-Type",
                          "application/x-www-form-urlencoded");
    req.send(null);
}
*/

/*
function preview( content ){

  document.getElementById('eins').innerHTML = content;
  document.getElementById( "eins" ).style.display='block';
}

function saveArtefakt( type, itemid, artefakt ){
    return;  // disabled, change only via upload of export.
    var req = null;
    //alert(artefakt);
    // sonderzeichen escapten, insbesondere #
    artefakt = encodeURIComponent(artefakt);
    //alert(artefakt);
    
    try{
        req = new XMLHttpRequest();
    }
    catch (ms){
        try{
            req = new ActiveXObject("Msxml2.XMLHTTP");
        } 
        catch (nonms){
            try{
                req = new ActiveXObject("Microsoft.XMLHTTP");
            } 
            catch (failed){
                req = null;
            }
        }  
    }

    if (req == null)
          alert("Error creating request object!");
      
    //anfrage erstellen
    req.open("GET", '/cgibin/manageArtefakt.php?type='+type+'&artname='+itemid+'&artefakt='+artefakt, true);

    //Beim abschliessen des request wird diese Funktion ausgeführt
    req.onreadystatechange = function(){            
        switch(req.readyState) {
                case 4:
                if(req.status!=200) {
                    //alert("Fehler:"+req.status); 
                }else {                        
                    document.getElementById( "saveinfo" ).style.display='block';
                }
                break;
        
                default:
                    return false;
                break;     
            }
        };

    req.setRequestHeader("Content-Type",
                          "application/x-www-form-urlencoded");
    req.send(null);

}
*/
function MyReplace(QuellText, SuchText, ErsatzText) {   
// http://www.arstechnica.de/index.html?name=http://www.arstechnica.de/computer/JavaScript/JS11_01.html
    // Fehlerpruefung
    if ((QuellText == null) || (SuchText == null))           { return null; }
    if ((QuellText.length == 0) || (SuchText.length == 0))   { return QuellText; }

    // Kein ErsatzText ?
    if ((ErsatzText == null) || (ErsatzText.length == 0))    { ErsatzText = ""; }

    var LaengeSuchText = SuchText.length;
    var LaengeErsatzText = ErsatzText.length;
    var Pos = QuellText.indexOf(SuchText, 0);

    while (Pos >= 0)
    {
        QuellText = QuellText.substring(0, Pos) + ErsatzText + QuellText.substring(Pos + LaengeSuchText);
        Pos = QuellText.indexOf(SuchText, Pos + LaengeErsatzText);
    }
    return QuellText;
}


/*Eventhandler, der die aktuelle Postion der  Maus ermittelt und speichert */
function getpos( Ereignis ) {
  var xpos = document.getElementById('x');
  var ypos = document.getElementById('y');
//  if (document.layers) {
//    document.layers[0].left = Ereignis.pageX;
//    document.layers[0].top = Ereignis.pageY;
//                        }
// else 
  var xPos = 0;
  var yPos = 0;
  if ( document.all ){ // microsoft
    xPos = window.event.x;
    yPos = window.event.y;
  }
  else {
    xPos = Ereignis.pageX;
    yPos = Ereignis.pageY;  
  }
  if (document.all && !document.captureEvents) {
		xPos    += document[init].scrollLeft;
		yPos    += document[init].scrollTop;
  }
  xpos.innerHTML = xPos;
  ypos.innerHTML = yPos;
  if (document.layers) routeEvent(e);
}

/* im Dokument neuen DIV einfügen für die Anzeige der artefakte */
function addInfospace(){
  var div = document.createElement("div");
  div.setAttribute("id", "addinfo");
  document.body.appendChild( div);
  div.style.position = "absolute";
  div.style.width = "245px";
  div.style.heigth = "100px";
  div.style.borderWidth = "thin";
  div.style.borderStyle = "solid";
  div.style.display = "none";
  div.style.backgroundColor = '#EEEEEE'; // 'teal'
//  div.innerHTML = '<table id="tooltip-table" border="1" width="250" cellspacing="1" cellpadding="0"><tr><td colspan="4" id="tooltip-powered"><span id="tooltip-CloseSpan"><a href="javascript:void(0)" class="tooltip-close" onClick="closeTooltip()" title="Schließen"><span class="tooltip-close">[x]</a></a></span></td></tr><tr><td colspan="4" id="tooltip-msg">Bitte warten...</td></tr></table>';
  div.innerHTML = '<div style=""><p id="tooltipClose" style="margin:0px;text-align:right;padding:3px;"> <a href="javascript:void(0)" onClick="closeTooltip()" title="Schließen">    <span class="tooltip-close">Schlie&szlig;en [x]</span></a>    </p></div><div id="tooltipContent" style="padding:3px;"><p>Bitte warten... </p></div>';
  
  var postext = document.createElement('span');
  postext.setAttribute( 'id', 'x');
  postext.style.display = 'none';  
  postext.innerHTML = ' ';
  document.body.appendChild( postext);
  var node = document.getElementById('x');
  
  
  postext = document.createElement( 'span');
  postext.setAttribute( 'id', 'y');
  postext.style.display = 'none';  // IE specific
  postext.innerHTML = ' ';
  document.body.appendChild( postext);
}

function show( content ){
  var div  = document.getElementById( 'addinfo');
  var divWidth = 250;
  var xpos = document.getElementById( 'x');
  var ypos = document.getElementById( 'y');
  var table = document.getElementById( 'AutoNumber3');

  var td = getThirdColumn( table );
  var pos = getPosition( td );
  var x = pos.x +6;
  var y = ypos.innerHTML;
  if ( ypos.innerHTML > 50 ) y = ypos.innerHTML - 50;

  var inner = 0;
  if ( window.innerWidth ) inner = window.innerWidth
  else inner = document.body.offsetWidth;  // MS  IE
  
  var outer = 0;
  if ( window.outerWidth ) outer = window.outerWidth
  else outer = document.body.clientWidth;
  //alert (' Bereich: ' +outer + '; ' +inner + ', ' +x + ', ' +divWidth);
  // sichtbarer Bereich
  var visible = Math.min( inner, outer) -8; // -8 für Scrollbar
  if ( x+divWidth > visible) x = visible - divWidth;
  div.style.left = x;
  div.style.top  = y;
  var tooltipContent = document.getElementById( 'tooltipContent');
  tooltipContent.innerHTML = content;
  div.style.display = 'block';
  
}

function closeTooltip(){
  var div = document.getElementById( 'addinfo');
  div.style.display = 'none';
  
}

/* der Aufruf dieser Funktion ermittelt die absoluten Koordinaten
   des Objekts element */
function getPosition(element) {
  var elem=element,tagname="",x=0,y=0;
  
  while ((typeof(elem)=="object")&&(typeof(elem.tagName)!="undefined"))
  {
    y+=elem.offsetTop;     /* Offset des jeweiligen Elements addieren */
    x+=elem.offsetLeft;    /* Offset des jeweiligen Elements addieren */
    tagname=elem.tagName.toUpperCase(); /* tag-Name ermitteln, Grossbuchstaben */

/* wenn beim Body-tag angekommen elem fuer Abbruch auf 0 setzen */
    if (tagname=="BODY")
      elem=0;

/* wenn elem ein Objekt ist und offsetParent enthaelt
   Offset-Elternelement ermitteln */
    if (typeof(elem)=="object")
      if (typeof(elem.offsetParent)=="object")
        elem=elem.offsetParent;
  }

/* Objekt mit x und y zurueckgeben */
  position=new Object();
  position.x=x;
  position.y=y;
  return position;
}

function getThirdColumn( element ){
  
  var childs = element.childNodes;
  var stack  = new Array();
  for ( var i=0; i<childs.length; i++){
    stack.push( childs[i] ); 
  }
  var tdcount = 0;
  var deepInspect = true;
  var elem = stack.shift();
  
  while ( typeof(elem) == "object"){

    if ( elem.hasChildNodes() && deepInspect){
      for (var i=0; i<elem.childNodes.length; i++){
        stack.push( elem.childNodes[i] ) ;
      }
    }
    if (elem.nodeName.toUpperCase() == "TD"){
      
      tdcount++;
      if (tdcount == 7) {  // die dritte spalte ist das 7. TD-element, da wir keine tiefen Inspection durchführen    
        break;
      }
    }
    if ( stack.length > 0){
      elem = stack.shift();
    }
    else {
      elem = 0;
    }
  }
  return elem;
}

document.onmousedown = getpos;
