
//============================================================================
//
// Erweiterungen Webtemplate peter@danninger.eu
//
//============================================================================

// Browserfunktionalitaet ermitteln ------------------------------------------
//
// globale Variable
//
var COOKIE = false;     // Cookies enabled
var JAVA = false;       // Java enabled
var DOM = false;        // DOM verfügbar (aktueller Browser !)
var MSIE = false;       // IExplore
var MOZILLA = false;    // Mozilla, Netscape
var OPERA = false;      // Opera
var APPNAME = "";       // Browser-Name
var APPVERSION = "";    // Browser-Version


// setzen der globalen Variablen ---------------------------------------------
//
function browserCheck () {
  APPNAME = navigator.appName;
  APPVERSION = navigator.appVersion;
  USERAGENT = navigator.userAgent;
//alert ("APPNAME= "+APPNAME+"\nAPPVERSION= "+APPVERSION+"\nUSERAGENT= "+USERAGENT);
  JAVA = navigator.javaEnabled ();
  COOKIE = cookieEnabled ();
  if (window.opera) {
    OPERA = true;
  }
  if (document.getElementById) {
    DOM = true;
  }
  if ((typeof document.all == "object") && !OPERA) {
    MSIE = true;
  }
  if (window.netscape && window.screen && !OPERA) {
    MOZILLA = true;
  }
}

// Test ob Cookies enabled ---------------------------------------------------
//
function cookieEnabled () {
  if (navigator.cookieEnabled == true)          return (true);
  else if (navigator.cookieEnabled == false)    return (false);
  else {
    var myCookie = "";
    document.cookie = "test";
    if (document.cookie)        myCookie = document.cookie;
    return (myCookie.indexOf ("test") >= 0);
  }
}

//============================================================================
// DHTML Komfortfunktionen
//
// getgetElementById mit Plausicheck
//
function getElemById (id) {
  if (! DOM)    return (null);
  var e = document.getElementById (id);
  if (typeof e != "object")       e = null;
  return (e);
}

// getElementsByName mit Plausicheck
//
function getElemByName (name, index) {
  if (! DOM)    return (null);
  var ea = document.getElementsByName (name);
  var e = null;
  if (typeof ea == "object")      e = ea[index];
  return (e);
}

// getElementsByTagName mit Plausicheck
//
function getElemByTagName (tagname, index) {
  if (! DOM)    return (null);
  var ea = document.getElementsByTagName (tagname);
  var e = null;
  if (typeof ea == "object")    e = ea[index];
  return (e);
}

// entferne alle childNodes eines Elementknotens
//
function deleteChilds (e) {
  if (! DOM)      return;
  if (e == null)   return;
  var ch = e.childNodes;
  var i = ch.length;
  while (--i >= 0) {
    e.removeChild (ch[i]);
  }
}

// Attribut erzeugen --> Element e
//
function setAttribute (e, attr, value) {
  var a = document.createAttribute (attr);
  a.nodeValue = value;
  e.setAttributeNode (a);
}

// Text erzeugen --> Element e
//
function setText (e, text) {
  var t = document.createTextNode (text);
  e.appendChild (t);
}

//============================================================================
// Event-Informationen ermitteln
//
// eInfo["type"]        Type, z.B. "Load"
// eInfo["target"]      Target-Element
// eInfo["key"]         Tasten-Code       (Control-Keys bei OPERA anders !!!)
// eInfo["click"]       Mouse-Button      (Browserabhängig !!!)
// eInfo["posx"]        Maus Position
// eInfo["posy"]        relativ zur Bildschirmposition
//

function getEventInfo (e) {
  if (!e)     var e = window.event;           // MSIE
  if (typeof (e) != "object")     return (null);
  var eInfo = new Array ();
  var ty = null;
  if (e.type)             ty = e.type;
  eInfo["type"] = ty;
  var ta = null;                              // Event-Target
  if (e.target)           ta = e.target;
  else if (e.srcElement)  ta = e.srcElement;
  eInfo["target"] = ta;
  var cd = null;                              // Key-Code
	if (e.keyCode)          cd = e.keyCode;     // new Browsers
	else if (e.which)       cd = e.which;       // old Browsers
  eInfo["key"] = cd;
  var cl = null;                              // Mouse-Button
	if (e.which)            cl = e.which;       // old Browsers
	else if (e.button)      cl = e.button;      // new Browsers
  eInfo["click"] = cl;
  var posx = 0;                               // Mouse-Position
  var posy = 0;                               // relative to screen
  if (e.pageX || e.pageY) {
    posx = e.pageX;
    posy = e.pageY;
  }
  else if (e.clientX || e.clientY) {
    posx = e.clientX + document.body.scrollLeft;
    posy = e.clientY + document.body.scrollTop;
  }
  eInfo["posx"] = posx;
  eInfo["posy"] = posy;
  return (eInfo);
}

//============================================================================
// Keyboard Eventhandler
//
// OPERA liefert sonderbare Werte bei Funktionstasten
//

function keyuphandler (e) {
  var eInfo = getEventInfo (e);
  if (eInfo == null)			return;
  var code = eInfo["key"];
	switch (code) {                           // OPERA (POS1 liefert null)
	  case 57385: code = 38; break;
	  case 57383: code = 33; break;
	  case 57387: code = 37; break;
	  case 57393: code = 109; break;
	  case 189:   code = 109; break;
	  case 57386: code = 40; break;
	  case 57413: code = 145; break;
	  case 57384: code = 34; break;
	  case 57388: code = 39; break;
	  case 57392: code = 107; break;
	  case 187:   code = 107; break;
	  case 57381: code = 36; break;
	  // bei Bedarf erweitern !!!
	}
 	keyup (code);
}

//============================================================================
// Mouse Eventhandlers
//
// OPERA ignoriert rechte Maustaste
//
// links:  1
// rechts: 3    (MSIE liefert 2, OPERA gar nichts)
//
function mouseuphandler (e) {
  var eInfo = getEventInfo (e);
  if (eInfo == null)			return;
  var code = eInfo["click"];
  if (code == 2 && MSIE)    code = 3;
  mouseup (code);
	return false;
}

function mousedownhandler (e) {
  var eInfo = getEventInfo (e);
  if (eInfo == null)			return;
  var code = eInfo["click"];
  if (code == 2 && MSIE)    code = 3;
	mousedown (code);
	return false;
}

function contextmenuhandler (e) {
  contextmenu ();
  return false;   // kein Kontextmenue des Browsers (geht nicht bei OPERA  !!!)
}

// Keyboard-Eventhandler -----------------------------------------------------
//	

function keyup (c) {
  switch (c) {
    case 3:                                 // right mousebutton
    case 8:                                 // Backspace
    case 38:                                // Cursor-up
    case 33:                                // Page-up
    case 109:                               // -
    case 37:  prevImg (); break;            // Cursor-left
    case 1:                                 // left mousebutton
    case 40:                                // Cursor-down
    case 61:                                // +
    case 34:                                // Page-down
    case 39:                                // Cursor-right
    case 32:                                // Space
    case 145: nextImg (); break;            // Roll-down
    case 36:             										// Pos1
    case 27:  thumbsGrid (); break;					// Escape
    default:  break;
  }
return false;
}

function mouseup (c) {
  keyup (c);
}

function mousedown (c) {
  return;
}

function contextmenu () {
	//alert ("Please accept that picture ist copyright protected, thank you");
  return false;
}

var prv = "";
function prevImg () {
	if (prv != "")		window.location.replace (prv);
  return;
}

var nxt = "";
function nextImg () {
	if (nxt != "")		window.location.replace (nxt);
  return;
}

var thg = "";
function thumbsGrid () {
	if (thg != "")		window.location.replace (thg);
  return;
}

function setEventHandlers () {
	browserCheck ();
	window.document.onkeyup = keyuphandler;
	window.document.onmouseup = mouseuphandler;
	window.document.onmousedown = mousedownhandler;
	window.document.oncontextmenu = contextmenuhandler;
	
	//var e = getElemById ("previewImage");
	//if (e == null)		return false;
  //e.oncontextmenu = contextmenuhandler;
  return;
}


