/******************************************************************************/
/* allgemeines Standardskript                                                 */
/*                                                                            */
/* @version 1.0                                                               */
/* @author update Solutions AG, Kulmbach                                      */
/*         Harald Rebhan
/******************************************************************************/

// Hilfreich zum Auslesen aller Eigenschaften eines Elementes
//    for (property in element) {
//			alert(property + "=" + element[property]);
//		}  


// Funktion, die beim Laden der HTML-Seite ausgeführt wird 
function on_load(focusId) {
  /* 0  browser(); */
  /* ANGEGEBENE REIHENFOLGE MUSS EINGEHALTEN WERDEN!!! */
  /* 1  register_events(); */        
  /* 2  getLists(); */
  /* 3  loadListFirst(); */ 
  /* 4  setStartpgTab(); */
  /* 5  setStartpgList(); */
  /* 6 */ setFocus(getFocusField(focusId));
  
  /* 7  if(document.captureEvents) document.captureEvents(Event.KEYPRESS);
          document.onkeypress = key_press; */

  /* 8  AJAX.clientAlive(); */
}

/*
 * Setzt den Fokus auf das Element mit der übergebenen id
 * @params  element = auf dieses Element wird der Focus gesetzt  
 */
function setFocus(element) {
  if (element != null) {
    element.focus();
    
    if (element.type && (element.type == "text" || element.type == "textarea")) {
      element.select();
    }
  }
}

// Liefert das Element mit der übergebenen Id
function getFocusField(id) {

  var element = null;

  // Element für die übergebene id ermitteln      
  if (id != null && id.length > 0) {
    element = document.getElementById(id);
    /* Wenn das übergebene Element jedoch disabled ist, muß trotzdem das nächst mögliche
     * Element ermittelt werden !!
     */  
    if (element != null && element.disabled ) {
      element = null;
    }
  }

  // erstes Input-Feld
  if (element == null) {
    
    outer: for(var i=0; i < document.forms.length; i++) {
      for(var j=0; j < document.forms[i].length; j++) {
        element = document.forms[i].elements[j];
        if (!element.disabled && element.type && 
          (element.type == "text" || element.type == "select-one" || element.type == "textarea" || element.type == "password")) {
          break outer;
        }
      }
    }
    
  }

  return element;
}

// Dropdown-Menüs
var activeTrigger = null;
var activeDropdown = null;

// Blendet das Dropdown-Menü für den übergebenen Menüpunkt (trigger) ein
function dropdown(trigger) {
  var dropdown = trigger.nextSibling;
  while(dropdown.className != "drop" ) {
    dropdown = dropdown.nextSibling;
  }

	if (activeDropdown != null) {
	  activeDropdown.style.display = "none";
	  document.onmousemove = null;
	  activeTrigger = null;
	  activeDropdown = null;
  }

  dropdown.style.display = "block";
  
  // Falls das Dropdown über den rechten Rand hinausragt -> rechtsbündig zum trigger anzeigen
  var frame = document.getElementById("frame"); // Haupttable
  if (frame) { // knif

    // Absoluten rechten Rand des dropdowns ermitteln 
    var dropdownRight = dropdown.offsetLeft + dropdown.offsetWidth;
    var parent = dropdown.offsetParent;
    while (parent) {
      dropdownRight = dropdownRight + parent.offsetLeft;
      parent = parent.offsetParent;
    }

    // Rechter Rand des dropdowns ragt über die Haupttabelle
    if (dropdownRight > frame.offsetWidth) {
        
      // Absoluten rechten Rand des triggers ermitteln 
      var triggerRight = trigger.offsetLeft + trigger.offsetWidth;
      var parent = trigger.offsetParent;
      while (parent) {
        triggerRight = triggerRight + parent.offsetLeft;
        parent = parent.offsetParent;
      }

      // dropdown verschieben (rechtsbündig zum trigger)
      dropdown.style.left = (triggerRight - dropdown.offsetWidth) + "px";

    }
  }
  
  activeTrigger = trigger;
  activeDropdown = dropdown;
  // Handler registrieren, der auf MouseMove-Events lauscht
  document.onmousemove = handleMove;
}

/* Überwacht onmousemove-Events und versteckt ein sichtbares Dropdown-Menü,
   wenn der Mauszeiger dessen Fläche verlässt */ 
function handleMove(e) {
  var evt = (e == null || e == "undefined") ? event : e;
  var src = evt.srcElement ? evt.srcElement : e.target;
  var mouseX = evt.pageX ? evt.pageX - 5: evt.clientX - 5;
  var mouseY = evt.pageY ? evt.pageY + 2 : evt.clientY;

  // Solange wir auf dem Trigger sind -> nix machen
  if (src == activeTrigger) {
    return;
  }

  // Wenn sich der Mauscursor im Dropdownrechteck (+5px Toleranz) befindet -> nix machen
  var dropdownX = getAbsX(activeDropdown);
  var dropdownY = getAbsY(activeDropdown);
  if (mouseX+10 >= dropdownX && mouseX-5 <= dropdownX + activeDropdown.offsetWidth &&
      mouseY+5 >= dropdownY && mouseY-10 <= dropdownY + activeDropdown.offsetHeight) {
    return;
  }

  // Die Maus ist außerhalb des Triggers und des Dropdownbereichs
  // -> Dropdown verstecken und Handler löschen
  activeDropdown.style.display = "none";
  document.onmousemove = null;
  activeTrigger = null;
  activeDropdown = null;
}


  // Schleifenzähler für maximale Wartezyklen
var loop=1;

// Empfängt das Timeout-Objket das mit window.setTimeout erzeugt wird
var timeout; 
  
// Versorgt das img-Tag mit der richtigen Bild-Quelle und wartet bis das Bild geladen ist
function showPic(src) {
    if (src && src != "" && (!document.readyState || document.readyState == "complete")) {
      var overlay = document.getElementById("overlay");
      overlay.src = src;
      timeout = window.setTimeout("wait(loop)", 100);
    }
}

// Versorgt das img-Tag mit der richtigen Bild-Quelle und wartet bis das Bild geladen ist
function showPic2(src, trigger) {
		if (src && src != "" && (!document.readyState || document.readyState == "complete")) {
      var overlay = document.getElementById("overlay");
      overlay.src = src;
	    overlay.style.top = getAbsY(trigger) - (document.all ? 0 : window.pageYOffset)
      timeout = window.setTimeout("wait(loop)", 100);
    }
}

// Versorgt das img-Tag mit der richtigen Bild-Quelle und wartet bis das Bild geladen ist
function wait(loop) {
  var overlay = document.getElementById("overlay");
  // falls Bildes noch geladen wird -> warten
  if (!overlay.complete && loop < 10) {
    timeout = window.setTimeout("wait(++loop)", 100);
  }
  // erst wenn Bild komplett geladen ist -> anzeigen
  else {
    overlay.style.display = "inline";
    while (getAbsY(overlay) + overlay.height - (document.all ? getPageYOffset() : 0) > getInnerHeight()) {
      overlay.style.top = overlay.offsetTop - 2; 
    }
  }
}

  // Versteckt das Bild wieder
function hidePic() {
  // Eventuell aktiven Timeout abrechen (Verhindert das "Bild-Stehenbleiben")
  window.clearTimeout(timeout);
    if (!document.readyState || document.readyState == "complete") {
      var overlay = document.getElementById("overlay");
      window.state=overlay;
      overlay.style.display = "none";
      overlay.src = "/webuscm-base/images/1x1.gif";
    }
  }

// Schreibt den Wert 'value' in das Inputfeld mit Namen 'name'
function fill(name, value) {
  var inputField = document.getElementsByName(name)[0];
  if (inputField != null && !inputField.disabled) {
    inputField.value = value;
  }
}

// Kreuzt alle Checkboxen an, deren Namen mit 'del' beginnen und der entsprechendes Mengenfeld 0 enthält
function checkZero() {
  for (var i=0; i < document.getElementsByTagName("input").length; ++i) {
    var element = document.getElementsByTagName("input")[i];
    if (element.name.substring(0,3) == "del") {
      var quantity = document.getElementsByName("mng" + element.name.substring(3))[0];
      if (quantity.value == "0") {
        element.checked = true;
      }
    }
  }
}   

// Aktiviert oder löscht alle Checkboxen, deren Namen mit dem übergebenen suffix beginnen
function checkAll(trigger, suffix, checked) {
  for (var i=0; i < document.getElementsByTagName("input").length; ++i) {
    var element = document.getElementsByTagName("input")[i];
    if (element.name.substring(0, suffix.length) == suffix) {
      element.checked = checked;
    }
  }
  // Die Funktion des Auslösers noch invertieren
  var text = trigger.innerHTML;
	trigger.innerHTML = trigger.getAttribute("opp", 0);
	trigger.setAttribute("opp", text, 0);
	trigger.onclick = function() { checkAll(this, suffix, !checked); };
}

function changeNumber() {
	var nummer = document.wk.Dropdown.options[document.wk.Dropdown.selectedIndex].value;
	document.wk.Artikel.value = nummer;
}

function getAbsX(obj) {

	var leftOffset = 0;
  if (obj.offsetParent) {
		while (obj.offsetParent) {
			leftOffset += obj.offsetLeft;
    	obj = obj.offsetParent;
	  }
  }
  else if (obj.x) { //for NN4
		leftOffset = obj.x;
	}
  return leftOffset;
}
   
function getAbsY(obj) {

	var topOffset = 0;
  if (obj.offsetParent) {
		while (obj.offsetParent) {
			topOffset += obj.offsetTop;
      obj = obj.offsetParent;
    }
  }
  else if (obj.y) { // for NN4
		topOffset = obj.y;
	}
  return topOffset;
}


function getInnerWidth() {
  if (window.innerWidth) { // all except Explorer
  	return window.innerWidth;
  }
  if (document.documentElement && document.documentElement.clientWidth) { // Explorer 6 Strict Mode
  	return document.documentElement.clientWidth;
  }
  if (document.body) { // other Explorers
  	return document.body.clientWidth;
  }
  return 0;
}

function getInnerHeight() {
  if (window.innerHeight) { // all except Explorer
  	return window.innerHeight;
  }
  if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
  	return document.documentElement.clientHeight;
  }
  if (document.body) { // other Explorers
  	return document.body.clientHeight;
  }
  return;
}

function getPageYOffset() {
  if (window.pageYOffset) { // all except Explorer
  	return window.pageYOffset;
  }
  if (document.documentElement && document.documentElement.scrollTop) {	// Explorer 6 Strict
  	return document.documentElement.scrollTop;
  }
  if (document.body) { // all other Explorers
  	return document.body.scrollTop;
  }
}

function swapMainPicture(img1, id2) {

	var img2 = document.getElementById(id2);
	if (img1 && img1.src && img2 && img2.src) {
		var img1Src = img1.src;
		img1.src = img2.src;
		img2.src = img1Src;
	}
}


function showText(id, rows, height){
  var element=document.getElementById(id);
  if (element != null) {
	// element.style.visibility = "visible";
		element.setAttribute("rows", rows);
		// element.style.setAttribute("height", "5.5em", false);
		element.style.height=height;
  }
}


