// ALLGEMEINE JAVASCRIPTFUNKTIONEN  --------------------------------------------
function popup(seite,x,y)
{
  var jetzt = new Date();
  jetzt=jetzt.getTime();
  eval("Details_"+jetzt+" = window.open(seite,'Details_"+jetzt+"','width="+x+",height="+y+",scrollbars=yes');");
  eval("window.Details_"+jetzt+".focus();");
}

function imgpopup(seite,x,y)
{
  var jetzt = new Date();
  jetzt=jetzt.getTime();
  eval("Details_"+jetzt+" = window.open(seite,'Details_"+jetzt+"','width="+x+",height="+y+",scrollbars=no,dependent=yes,menubar=no,toolbar=no,resizable=yes');");
  eval("window.Details_"+jetzt+".focus();");
}

// Funktion um einen JS-Befehl zu verz�gern bei der Ausf�hrung
var handle;
function delaythis(order)
{
  if(window.handle) window.clearTimeout(handle);
  eval("handle=top.window.setTimeout(\""+order+"\", 800);");
}

/* #############################################################################
################################################################################
 DIV LAYER JAVASCRIPTFUNKTIONEN
################################################################################
##############################################################################*/
function showlayer(layerid)
{
  if(navigator.appName=="Netscape")
  {
    document.getElementById(layerid).style.visibility="visible";
  }
  else
  {
    document.all[layerid].style.visibility="visible";
  }
}


function hidelayer(layerid)
{
  if(navigator.appName=="Netscape")
  {
    document.getElementById(layerid).style.visibility="hidden";
  }
  else
  {
    document.all[layerid].style.visibility="hidden";
  }
}

function moveLayer(layerid,left,top)
{
  if(navigator.appName=="Netscape")
  {
      eval('document.getElementById("'+layerid+'").style.left='+left);
      eval('document.getElementById("'+layerid+'").style.top='+top);
  }
  else
  {
    eval('document.all["'+layerid+'"].style.top='+top);
    eval('document.all["'+layerid+'"].style.left='+left);
  }
}
function scrolldiv(layerid,topval)
{
   // alert(topval);
  ie = (document.styleSheets&&document.all)? true:false
  ns6 = document.getElementById&&!document.all;
  opera= (document.all&& !document.styleSheets)? true:false;


  if (ie)
  {
    if(!topval)
    {
      eval('var topval = document.all["'+layerid+'"].style.top.match(/[0-9]{0,3}/);');
      topval = (topval*1);
    }
    eval("document.all."+layerid+".style.top=document.body.scrollTop+"+topval+";");
  }
  if (ns6||opera)
  {
    if(!topval)
    {
      alert('TOPVAL '+topval);
      eval('var topval = document.getElementById("'+layerid+'").style.top.match(/[0-9]{0,3}/);');
      topval = topval*1;
    }
    eval("document.getElementById('"+layerid+"').style.top=pageYOffset+"+topval+";");
  }
  //alert('TOPVAL '+topval);
  eval("setTimeout(\"scrolldiv('"+layerid+"','"+topval+"')\",1);");
}

function switchlayer(Layer_Name)
{
  var GECKO = document.getElementById? 1:0 ;
  var NS = document.layers? 1:0 ;
  var IE = document.all? 1:0 ;

  if (GECKO)
       {document.getElementById(Layer_Name).style.display=
	   (document.getElementById(Layer_Name).style.display=='block') ? 'none' : 'block';}
  else if (NS)
       {document.layers[Layer_Name].display=(document.layers[Layer_Name].display==
	   'block') ? 'none' : 'block';}
  else if (IE)
       {document.all[Layer_Name].style.display=(document.all[Layer_Name].style.display==
	   'block') ? 'none' : 'block';}
}

function write2div(layerid,inhalt)
{
  var tmp = false;

  if (document.getElementById) tmp = document.getElementById(layerid);
  else if (document.all) tmp = document.all[layerid];

  if (tmp)  tmp.innerHTML = inhalt;
  else if (document.layers)
  {
    with (document.layers[layerid].document)
    {
      open();
      write(inhalt);
      close();
    }
  }
}

function tablecollapse()
{
	/* Variables */
	var collapseClass='footcollapse';
	var collapsePic='arrow_up.gif';
	var expandPic='arrow_down.gif';
	var initialCollapse=true;

	// loop through all tables
	var t=document.getElementsByTagName('table');
	var checktest= new RegExp("(^|\\s)" + collapseClass + "(\\s|$)");
	for (var i=0;i<t.length;i++)
	{
		// if the table has not the right class, skip it
		if(!checktest.test(t[i].className)){continue;}

		// make the footer clickable
		t[i].getElementsByTagName('tfoot')[0].onclick=function()
		{
			// loop through all bodies of this table and show or hide
			// them
			var tb=this.parentNode.getElementsByTagName('tbody');
			for(var i=0;i<tb.length;i++)
			{
				tb[i].style.display=tb[i].style.display=='none'?'':'none';
			}
			// change the image accordingly
			var li=this.getElementsByTagName('img')[0];
			li.src=li.src.indexOf(collapsePic)==-1?collapsePic:expandPic;
		}
		// if the bodies should be collapsed initially, do so
		if(initialCollapse)
		{
			var tb=t[i].getElementsByTagName('tbody');
			for(var j=0;j<tb.length;j++)
			{
				tb[j].style.display='none';
			}
		}
		// add the image surrounded by a dummy link to allow keyboard
		// access to the last cell in the footer
		var newa=document.createElement('a');
		newa.href='#';
		newa.onclick=function(){return false;}
		var newimg=document.createElement('img');
		newimg.src=initialCollapse?expandPic:collapsePic;
		var tf=t[i].getElementsByTagName('tfoot')[0];
		var lt=tf.getElementsByTagName('td')[tf.getElementsByTagName('td').length-1];
		newa.appendChild(newimg);
		lt.insertBefore(newa,lt.firstChild);
	}
}
/* #############################################################################
################################################################################
 COMBOBOX - FUNKTIONEN
################################################################################
##############################################################################*/
// DIE FUNKTION ;-) l�uft durch das Array, ermittelt die Auf das Suchmuster passenden Eintr�ge und blendet sie in einer Selectbox ein.
function keyupsearch(formname,textname,selectname,zielname,textarray,valuearray)
{
    // Variablendeklaration (muss offenbar da sont in Fox gemeckert wird. Kein Fehler aber Warnung --> NERVT!
    var maxNumToShow;
    var selectObj, textObj, functionListLength;
    var i, searchPattern, numShown, rgexperg;

    // Maximale Anzahl der Eintr�ge die dargestellt werden
    // hohe werte wie 999*** lassen bei gro�em Arrayinhalt den User vergreisen bis was passiert
    // im WWS mit allen Lagerartikeln und Wert 9999999 ~7 Minuten bis Anzeige
    maxNumToShow = 20;

    // Einblenden des Auswahlfesterns mit dem Div-Layer genannt nach der selectbox + 'div'
    eval("zeigen('"+selectname+"div');");

    // Setzt die Objekte als Bezug auf die benutzten Eingabeelemente
    eval("selectObj = document."+formname+"."+selectname+";");
    eval("textObj = document."+formname+"."+textname+";");

    // Ermittelt die L�nge des mit textarray mitgelieferten array. Wie in PHP count
    eval("functionListLength = "+textarray+".length;");

    // Hier wird der Inhalt des Ttextfeldes wird in Variable Suchmuster gesteckt
    searchPattern = textObj.value;

    // REXGEXP f�r Javascript (?????) �hnlich SQL --> LIKE %suchmuster%
    re = new RegExp(searchPattern,"gi");


    // alternatives REGEXP hier wird die Eingabe von Beginn an gesucht (entweder die oder die obere)
    // searchPattern = "^"+textObj.value;


    // Leert die Optionsliste in der selectbox. Wenn man es wegl�sst l�sst der IE garantiert die Hosen runter.
    // offenbar h�ngt er den Inahlt dann beim n�chsten Tastenanschlag einfach wieder an .. und wieder etc...
    selectObj.length = 0;

    // Schleife durch die Optionsm�glichkeiten und Suche nach dem Muster
    numShown = 0;
    for(i = 0; i < functionListLength; i++)
    {
        // suche nach Muster gibt 1 oder bei nichtgefallen -1 zur�ck (durch eval entstellt)
        eval("rgexperg = "+textarray+"["+i+"].search(re);");
        if(rgexperg != -1)
        {
            // wenn dar Arrayinahlt mit dem Suchmuster �bereinstimmt wird er der leeren Selectbox hinzugef�gt
            // es gilt: new Option('text','value')  (durch eval entstellt)
            eval("selectObj[numShown] = new Option("+textarray+"["+i+"],"+valuearray+"["+i+"]);");
            numShown++;
        }
        // Stopt halt wenn die oben festgelegte Maximalanzahl erreicht ist den Vorgang
        if(numShown == maxNumToShow)
        {
            break;
        }
    }
    // Schrumpft die Anzahl der Treffer beim REGEXPT in der selectbox auf 1 wird der Eintrag selektiert
    // und wasweisich ich schicke Ihn verz�gert zur Verarbeitungsfunktion
    if(selectObj.length == 1)
    {
        selectObj.options[0].selected = true;
        eval("delaythis('selectentry(\\'"+formname+"\\',\\'"+textname+"\\',\\'"+selectname+"\\',\\'"+zielname+"\\',\\'"+textarray+"\\');');");
    }
}

// die Verarbeitungsfunktion wenn man einen Eintrag ausw�hlt
function selectentry(formname,textname,selectname,zielname,textarray)
{
  var wert, inhalt;
  // Blendet den Layer wieder aus
  eval("verstecken('"+selectname+"div');");

  // setzt das zeil auf den selektierten Value der selectbox
  eval("document."+formname+"."+zielname+".value = document."+formname+"."+selectname+".options[document."+formname+"."+selectname+".options.selectedIndex].value;");

  //setzt das Suchfenster auf den selektierten Textwert der selectbox und deaktiviert sie bis zum reset durch button
  eval("document."+formname+"."+textname+".value = document."+formname+"."+selectname+".options[document."+formname+"."+selectname+".options.selectedIndex].text;");
  eval("document."+formname+"."+textname+".disabled = true;");

  // und nimmt den Fokus aus der selectbox wenn sie ausgeblendet ist, indem sie ihnauf das deaktivierte textfeld der suche legt
  // Sieht sonst seltsam aus mit dem Auswahlrahmen im Nirvana
  eval("document."+formname+"."+textname+".focus();");

}
//die funktion f�r einen eventl resetknopf auf das suchfeld
function resetsearch(formname,textname,selectname,zielname)
{
  // reaktiviert das Suchfeld
  eval("document."+formname+"."+textname+".disabled = false;");
  // setzt den Inhalt des Suchfeldes leer
  eval("document."+formname+"."+textname+".value = '';");
  // Blendet den Layer wieder aus
  eval("verstecken('"+selectname+"div');");
  //setzt den Inahlt des Ergebnisfeldes leer
  eval("document."+formname+"."+zielname+".value = '';");
  // und fokussiert es
  eval("document."+formname+"."+textname+".focus();");
}

