﻿/**
* Eventhandler für das OnKeyPress Ereignis 
* bei HTML Steuerelementen.
*
* Führt manuell einen PostBack für einen ASP.NET
* DefaultButton aus, da unter Firefox der DefaultButton
* nicht Funktioniert.
*
* Das JavaScript funktioniert voll automatisch und es 
* müssen keine Anpassungen an den ASP.NET Seiten 
* vorgenommen werden.
*
* Copyright: 2008, Daniel Schwarz, *1977 Bochum
*
* Erstellt: 20.08.2008, Daniel Schwarz, *1977 Bochum
*/
function OnPanelDefaultButton_KeyPress(e) 
{
  var keyCode = e ? e.which : window.event.keyCode;
  
  if (keyCode == 13) {
    var blnGefunden = false;
    var pElm = this;

    while (  pElm.parentNode && (pElm.nodeType != 1 || (pElm.nodeType == 1 && (pElm.nodeName.toLowerCase() != 'div' && pElm.nodeName.toLowerCase() != 'body')))) pElm = pElm.parentNode; 

    while (pElm && pElm.nodeName.toLowerCase() != 'body' && !blnGefunden) 
    {
      if (typeof pElm.getAttributeNode != "undefined" && pElm.getAttributeNode("onkeypress") != null && 
          pElm.getAttributeNode("onkeypress").nodeValue.indexOf("WebForm_FireDefaultButton") > -1) 
      {
        blnGefunden = true;
        var str = pElm.getAttribute("onkeypress");
        var match = str.match(/WebForm_FireDefaultButton\((.*),(.*)\)/);
        if (match && match.length == 3) {
          var strId = match[2].replace("'","").replace("'","").replace(" ","");
          elmBtn = document.getElementById(strId);
          if (elmBtn) {
            if (elmBtn.nodeName.toLowerCase() == 'a') {
              strHref = elmBtn.href.replace('javascript:','');
              strHref = strHref.replace(/%20/g," ");
              eval(strHref);
            } else {
              if (elmBtn.click) {
                elmBtn.click();
              }
            }
          }
        }
      } 
      pElm = pElm.parentNode; 
      while (  pElm.parentNode && (pElm.nodeType != 1 || (pElm.nodeType == 1 && (pElm.nodeName.toLowerCase() != 'div' && pElm.nodeName.toLowerCase() != 'body')))) pElm = pElm.parentNode;
    }
  }
}


/**
* Fügt den Eventhandler 
* OnPanelDefaultButton_KeyPress
* Formular Steureelementen (input, select) hinzu, 
* sofern es sich bei dem Browser um ein Firefox o. änl.
* Browser handelt. 
*
* Copyright: 2008, Daniel Schwarz, *1977 Bochum
*
* Erstellt: 20.08.2008, Daniel Schwarz, *1977 Bochum
*/
function InitOnPanelDefaultButton_KeyPress() 
{
  var agt = navigator.userAgent.toLowerCase();
  if (
      (agt.indexOf("firefox") > -1 || 
      agt.indexOf("mozilla") > -1 || 
      agt.indexOf("gecko") > -1 || 
      agt.indexOf("netscape") > -1) &&
      agt.indexOf("msie") == -1
  ) {
  
    var nl = document.getElementsByTagName("input");
    for (var i=0; i < nl.length;i++) {
      
      if (nl[i].getAttribute("type")) {
        if (
              nl[i].getAttribute("type").toLowerCase() == "text" ||
              nl[i].getAttribute("type").toLowerCase() == "radio" ||
              nl[i].getAttribute("type").toLowerCase() == "checkbox" ||
              nl[i].getAttribute("type").toLowerCase() == "password"
           ) 
        {
          nl[i].onkeypress = OnPanelDefaultButton_KeyPress;
        }
      }
    }
    
    nl = document.getElementsByTagName("textarea");
    for (var i=0; i < nl.length;i++) {
      nl[i].onkeypress = OnPanelDefaultButton_KeyPress;
    }
    
    nl = document.getElementsByTagName("select");
    for (var i=0; i < nl.length;i++) {
      nl[i].onkeypress = OnPanelDefaultButton_KeyPress;
    }
    
  }
}