//   Version 1.1 - Oct 22, 2009
//
// ----------------------------------------------------
//   The Cross-Browser Dynamic HTML Scripting Library
//   Needed - Prototype JavaScript framework, version 1.6.1
//   For details, see the Prototype web site:
//   http://www.prototypejs.org/
// ----------------------------------------------------
//
//   Created by Jaromir Prinzler Email: jaro@jaromir.de

//   Website: www.jaromir.de
//

// --- SAMPLE LAYER ---------------------------------------------------------------------------------------------

// <div id="name" name="name" style="position:absolute; left:0px; top:0px; width:100px; height:100px; z-index:0; display:none;">
// <div id="name" name="name" style="position:relative; width:100px; height:100px; z-index:0; display:none;">

// --- CONTENT OF THIS LIBRARY ----------------------------------------------------------------------------------

if(typeof Prototype == "undefined")
 {
  alert("Prototype JavaScript framework, version 1.6.1\n(c) 2005-2009 Sam Stephenson wurde nicht eingebunden !\n\nBitte die \"prototype.js\" laden !!!");
 }

var PrototypeEx = true;

// --- BROWSER DETECTION --- //

var dyn         = (document.all || document.layers || document.getElementById) ? true : false;
var op          = (window.opera) ? true : false;
var ie          = (navigator.appName.indexOf('Microsoft') != -1) ? true : false;
var fox		= (navigator.userAgent.indexOf('Firefox') == -1) ? false:true;
var ns          = (!fox && navigator.appName.indexOf('Netscape') != -1) ? true : false;

var ie4         = (ie && document.all && !document.getElementById) ? true : false;
var ie5         = (ie && document.getElementById && navigator.userAgent.indexOf('MSIE 6.0') == -1) ? true : false;
var ie6         = (ie && document.getElementById && !ie5) ? true : false;
var ie7         = (ie && document.getElementById && navigator.userAgent.indexOf('MSIE 7.0') > -1) ? true : false;
var ie8         = (ie && document.getElementById && navigator.userAgent.indexOf('MSIE 8.0') > -1) ? true : false;

var ie4Min      = (ie4 || ie5 || ie6 || ie7 || ie8) ? true : false;
var ie5Min      = (ie5 || ie6 || ie7 || ie8) ? true : false;
var ie6Min      = (ie6 || ie7 || ie8) ? true: false;
var ie7Min      = (ie7 || ie8) ? true: false;
var ie8Min      = ie8;

var ns4         = (ns && document.layers) ? true : false;
var ns6         = (ns && document.getElementById) ? true : false;

var ns4Min      = (ns4 || ns6) ? true : false;
var ns6Min      = ns6;

// --- FLASHCHECK --- //

var flashMIN    = 5;
var flashMAX    = 12;

var flashCHECK  = false;

if(ie && document.all)
 {
  document.write('<script language=VBScript\>\n');
  document.write('on error resume next\n');

  for(var i = flashMAX; i >= flashMIN; i--)
   {
    document.write('flashCHECK = (flashCHECK or IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.'+i+'")))\n');
   }

  document.write('</script\>\n');
 }

// --- CAPTURE --- //

var cursorWinX  = -1;
var cursorWinY  = -1;

Event.observe(window, 'load', function(event) {
  Event.observe(document.body, 'mousemove', function(event) {
    cursorWinX = Event.pointerX(event);
    cursorWinY = Event.pointerY(event);
  });
 });

// --- BODY --- //

function getBodyHeight()
 {
  return Math.max(Math.max(Math.max(document.body.clientHeight,document.body.scrollHeight), document.viewport.getHeight()), document.body.parentNode.scrollHeight);
 }
 
function getBodyWidth()
 {
  return Math.max(Math.max(Math.max(document.body.clientWidth,document.body.scrollWidth), document.viewport.getWidth()), document.body.parentNode.scrollWidth);
 }

// --- LAYER --- //
/*
Beispiel: addlayer({ layerid:'MeinLayer',
                     style:'position:absolute; left:0; top:0; width:100; height:100; z-index:0; display:none;'       <- optional
                  });
*/
function addlayer(options)
 {
  if(isBlank(options.layerid)) { alert('$(element).addlayer: Kein Layername angegeben ?'); return; }

  if(isBlank(options.style))   { options.style = 'position:absolute; left:0; top:0; z-index:0; display:none;'; }  

  return $(document.body).insert('<div id="' + options.layerid + '" name="' + options.layerid + '" style="' + options.style + '"></div>'); 
 }

// --- LAYER Z-INDEX --- //

function minimizeLayerZIndexSort(a, b)
 {
  return a[1] - b[1];
 }

function minimizeLayerZIndex()
 {
  if(!dyn) return false;

  var elements = document.getElementsByTagName('div');

  if(elements.length > 0)
   {
    var elementsZIndexes = new Array(elements.length);

    // LAYER UND AKTUELLEN ZINDEX IN ARRAY SCHREIBEN...
    for(var tempLayerLoop = 0; tempLayerLoop < elements.length; tempLayerLoop++)
     {
      elementsZIndexes[tempLayerLoop] = Array(elements[tempLayerLoop],parseInt(elements[tempLayerLoop].style.zIndex));
     }

    // ...ARRAY SORTIEREN...
    elementsZIndexes.sort(minimizeLayerZIndexSort);

    // ...UND NEUEN ZINDEX ZUWEISEN
    for(var i = 0, inx = 1; i < elementsZIndexes.length; i++,inx++)
     {
      $(elementsZIndexes[i][0]).setZIndex(inx);
     }
   }

  return true;
 }

// ****** POPUP ****************************************************************************************************//

var popupWindow = null;

function popupClose()
 {
  if(popupWindow)
   {
    popupWindow.close();
    popupWindow = null;
   }

  return true;
 }

function popupShow(URL,optWIDTH,optHEIGHT,optTITLE,optSCROLLBAR)
 {
  if(!dyn || isBlank(URL) || !popupClose()) return;

  if(isBlank(optWIDTH))     { optWIDTH     = 640; }
  if(isBlank(optHEIGHT))    { optHEIGHT    = 480; }
  if(isBlank(optTITLE))     { optTITLE     = "Popupfenster"; }
  if(isBlank(optSCROLLBAR)) { optSCROLLBAR = true; }

  var xpos = (screen.width-optWIDTH)   / 2; if(xpos < 0) { xpos = 0; }
  var ypos = (screen.height-optHEIGHT) / 2; if(ypos < 0) { ypos = 0; }

  if((popupWindow=window.open(URL,optTITLE,"left="+xpos+",top="+ypos+",width="+optWIDTH+",height="+optHEIGHT+",resizable=no,menubar=no,scrollbars="+((optSCROLLBAR) ? "yes":"no")+",location=no")) != null)
   {
    popupWindow.focus();
   }

  return true;
 }

// ****** OTHER ****************************************************************************************************//

function isBlank(STR)
 {
  if((STR == null)||(typeof STR == "undefined")) STR = '';
  STR += ''; STR = STR.replace(/^\s+|\s+$/g,'');
  return (STR == '') ? true : false;
 }

function resizeWindowTo(objWINDOW, optWIDTH, optHEIGHT)
 {
  if(!dyn || isBlank(objWINDOW)) return;

  if(isBlank(optWIDTH))   { optWIDTH  = screen.width;  } else { optWIDTH  = Math.min(optWIDTH,  screen.width);  }
  if(isBlank(optHEIGHT))  { optHEIGHT = screen.height; } else { optHEIGHT = Math.min(optHEIGHT, screen.height); }

  objWINDOW.moveTo((screen.width-optWIDTH)/2,(screen.height-optHEIGHT)/2);
  objWINDOW.resizeTo(optWIDTH,optHEIGHT);

  objWINDOW.focus();
 }

function refreshPNGs(optIMAGE)
 {
  if(!ie || ie7Min || !document.body.filters) return;

  if(!isBlank(optIMAGE))
   {
    if(optIMAGE.title)
     {
      var imgName = optIMAGE.src.toUpperCase();
      if(imgName.substring(imgName.length-3, imgName.length) == "PNG")
       {
        var strNewHTML = "<div id=\""+optIMAGE.title+"\" style=\"height:"+optIMAGE.height+"; width:"+optIMAGE.width+"; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'"+optIMAGE.src+"\', sizingMethod=\'scale\');\"></div>";
        optIMAGE.outerHTML = strNewHTML;
       }
     }
    return;
   }

  for(var i=0; i<document.images.length; i++)
   {
    refreshPNGs(document.images[i]);
   }
 }

function isFlashAvailable()
 {
  if((navigator.plugins) && (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"])) { return true; }
  if(navigator.userAgent.indexOf("WebTV") != -1)       								{ return true; }
  if(ie && document.all && eval("flashCHECK") == true) 								{ return true; }

  return false;
 }

function enableActiveX(containerID)
 {
  if(isBlank(containerID) || !ie) return;
  var html = $(containerID).innerHTML;
  $(containerID).innerHTML = html;
 }

function addWindowOnLoadEvent(FUNC)
 {
  if(isBlank(FUNC)) return;
  var oldonload = window.onload;
  if(typeof window.onload != 'function') { window.onload = FUNC; return; }
  window.onload = function() { oldonload(); FUNC(); }
 }

function addWindowOnUnloadEvent(FUNC)
 {
  if(isBlank(FUNC)) return;
  var oldonload = window.onunload;
  if(typeof window.onunload != 'function') { window.onunload = FUNC; return; }
  window.onunload = function() { oldonunload(); FUNC(); }
 }

function addSlashes(str)
 {
  return (str.replace(/\'/g,'\\\'').replace(/\"/g,'\\"').replace(/\\/g,'\\\\').replace(/\0/g,'\\0'));
 }

function stripSlashes(str)
 {
  return (str.replace(/\\'/g,'\'').replace(/\\"/g,'"').replace(/\\\\/g,'\\').replace(/\\0/g,'\0'));
 }

function leftTrim(str)
 {
  return str.replace(/^[ \t\n\r]+/g, "");
 }

function rightTrim(str)
 {
  return str.replace(/[ \t\n\r]+$/g, "");
 }

function basicTrim(str)
 {
  return rightTrim(leftTrim(str));
 }

function superTrim(str)
 {
  return (str.replace(/\s+/g," ").replace(/\s+$/,"").replace(/^\s+/,""));
 }

function removeWhiteSpaces(str)
 {
  return (str.replace(/\s+/g,""));
 }

// ****** FORM ****************************************************************************************************//

function gotoNext(elementID, optFORMOBJ)
 {
  try
   {
    var element = ((!isBlank(optFORMOBJ))&&(typeof(optFORMOBJ) == 'object')&&(optFORMOBJ.elements != "undefined")) ? optFORMOBJ.elements[elementID]:$(elementID);

    switch(element.type)
     {
      case 'select-one': if(element.selectedIndex < (element.length-1))
                          {
                           element.selectedIndex++;
                           return true;
	                  }
                         break;

      default:           alert('gotoNext(\''+elementID+'\',\'' + value + '\', ' + optFORMOBJ + '); ???\n\nUnbekannter Typ \'' + element.type + '\' ?');
                         break;
     }
    return false;
   }

  catch(e) { alert('gotoNext('+elementID+'); ???\n\n'+e.description); return false; }
 }

function gotoBack(elementID, optFORMOBJ)
 {
  try
   {
    var element = ((!isBlank(optFORMOBJ))&&(typeof(optFORMOBJ) == 'object')&&(optFORMOBJ.elements != "undefined")) ? optFORMOBJ.elements[elementID]:$(elementID);

    switch(element.type)
     {
      case 'select-one': if(element.selectedIndex > 0)
                          {
	                   element.selectedIndex--;
	                   return true;
	                  }
                         break;

      default:           alert('gotoBack(\''+elementID+'\',\'' + value + '\', ' + optFORMOBJ + '); ???\n\nUnbekannter Typ \'' + element.type + '\' ?');
                         break;
     }
    return false;
   }

  catch(e) { alert('gotoBack('+elementID+'); ???\n\n'+e.description); return false; }
 }

function setIt(elementID, value, optFORMOBJ)
 {
  try
   {
    var element = ((!isBlank(optFORMOBJ))&&(typeof(optFORMOBJ) == 'object')&&(optFORMOBJ.elements != "undefined")) ? optFORMOBJ.elements[elementID]:$(elementID);
    
    switch(element.type)
     {
      case 'select-one': for(var i=0; i < element.length; i++)
                          {
                           if(element.options[i].value != value) continue;
                            
                           element.selectedIndex = i;
                           return true;
                          }
                         break;
			 
      case 'checkbox':   element.checked = (value == element.value) ? true:false;
    			 return true;
      case 'text':
      case 'hidden':     element.value = value;
                         return true;

      default:           alert('setIt(\''+elementID+'\',\'' + value + '\', ' + optFORMOBJ + '); ???\n\nUnbekannter Typ \'' + element.type + '\' ?');
                         break;
     }
    return false;
   }

  catch(e) { alert('setIt('+elementID+'); ???\n\n'+e.description); return false; }
 }

function getIt(elementID, optFORMOBJ)
 {
  try
   {
    var element = ((!isBlank(optFORMOBJ))&&(typeof(optFORMOBJ) == 'object')&&(optFORMOBJ.elements != "undefined")) ? optFORMOBJ.elements[elementID]:$(elementID);
    
    switch(element.type)
     {
      case 'select-one': return element.options[element.selectedIndex].value;

      case 'checkbox':   return element.checked ? element.value:null;

      case 'text':
      case 'hidden':     return element.value;

      default:           alert('getIt(\''+elementID+'\',' + optFORMOBJ + '); ???\n\nUnbekannter Typ \'' + element.type + '\' ?');
                         break;
     }
    return false;
   }

  catch(e) { alert('getIt('+elementID+'); ???\n\n'+e.description); return false; }
 }

// ****** PROTOTYPE ERWEITERUNG ********************************************************

var PTEx_LoadTimeStart    = new Date();

var PTEx_ShowMenuTimeOut  = null;
var PTEx_ShowMenuLayer    = null;
var PTEx_ShowMenuGroup    = null;

var ElementEx = {
/*
Beispiel: addlayer({ layerid:'MeinLayer',
                     style:'position:absolute; left:0; top:0; width:100; height:100; z-index:0; display:none;'       <- optional
                  });
*/
  addlayer:

               function(element,options) {
	         element = $(element);

  		 if(isBlank(options.layerid)) { alert('$(element).addlayer: Kein Layername angegeben ?'); return; }

  		 if(isBlank(options.style))   { options.style = 'position:absolute; left:0; top:0; z-index:0; display:none;'; }  

  		 return element.insert('<div id="' + options.layerid + '" name="' + options.layerid + '" style="' + options.style + '"></div>'); 
 	       },
/*
Beispiel: $('element').getxpos();
*/
  getxpos:
               
               function(element) {
	         element = $(element);
		 return parseInt(element.getStyle('left'));		 
               },
/*
Beispiel: $('element').getypos();
*/
  getypos:
               
               function(element) {
	         element = $(element);
		 return parseInt(element.getStyle('top'));		 
               },

/*
Beispiel: $('element').setsize({ width:100,
                                 height:120
                               });
*/
  setsize:
               
               function(element) {
	         element = $(element);
		 if(isBlank(options.width)||isBlank(options.height)) { alert('$(element).setsize: Kein Breite oder Höhe angegeben ?'); return; }
		 element.setStyle({width: options.width+'px', height: options.height+'px'});		 
               },
/*
Beispiel: $('element').setbgimage({ filename:'bild.jpg'
                                 });
*/
  setbgimage:
               
               function(element,options) {
	         element = $(element);
		 if(isBlank(options.filename)) { alert('$(element).setbgimage: Kein Dateiname angegeben ?'); return; }
		 element.setStyle({backgroundImage: 'url('+options.filename+')' });		 
               },
/*
Beispiel: $('element').setbgcolor({ color:FF0000
                                 });
*/
  setbgcolor:
               
               function(element,options) {
	         element = $(element);
		 if(isBlank(options.color)) { alert('$(element).setbgcolor: Keine Farbe angegeben ?'); return; }
		 element.setStyle({backgroundColor: '#'+options.color });		 
               },
/*
Beispiel: $('element').setborder({ color:FF0000,
                                   size:1
                                 });
*/
  setborder:
               
               function(element,options) {
	         element = $(element);
		 if(isBlank(options.color)||(isBlank(options.size))) { alert('$(element).setborder: Keine Farbe oder Linienstärke angegeben ?'); return; }
		 element.setStyle({borderColor: '#'+options.color, borderWidth: options.size+'px', borderStyle: 'solid'});		 
               },
/*
Beispiel: $('element').setToBack();
*/
  setToBack:
               
               function(element) {
	         element = $(element);

                 var zindex   = null;
                 var elements = document.getElementsByTagName('div');
    
                 for(var i = 0; i < elements.length; i++)
                  {
		   if(elements[i] == element) continue;
		   
		   if(zindex == null) { zindex = 		  parseInt($(elements[i]).getStyle('zIndex'));  }
	           else               { zindex = Math.min(zindex, parseInt($(elements[i]).getStyle('zIndex'))); }
		  }
		    
		element.setZIndex(Math.max(0,parseInt(zindex)-1));
               },

/*
Beispiel: $('element').setToFront();
*/
  setToFront:
               
               function(element) {
	         element = $(element);
		 
                 var zindex   = null;
                 var elements = document.getElementsByTagName('div');

                 for(var i = 0; i < elements.length; i++)
                  {
		   if(elements[i] == element) continue;
		  
		   if(zindex == null) { zindex = 	  	  parseInt($(elements[i]).getStyle('zIndex'));  }
	           else               { zindex = Math.max(zindex, parseInt($(elements[i]).getStyle('zIndex'))); }		   
		  }

		 element.setZIndex(parseInt(zindex)+1);
               },
/*
Beispiel: $('element').getZIndex();
*/
  getZIndex:
               
               function(element) {
	         element = $(element);
		 parseInt(element.getStyle('zIndex'));
               },
/*
Beispiel: $('element').setZIndex(index);
*/
  setZIndex:
               
               function(element,index) {
	         element = $(element);		 	 
		 try      { element.setStyle({zIndex: parseInt(index)}); }
		 catch(e) { alert('Z-Index von Layer "'+element.id+'" konnte nicht gesetzt werden !'); }		 
               },
/*
Beispiel: $('element').maximize();
*/
  maximize:
               
               function(element) {
		 element = $(element);
                 element.setStyle({left: '0px', top: '0px', width: getBodyWidth()+'px', height: getBodyHeight()+'px'});
               },	        
/*
Beispiel: $('element').setcurrenttime();
*/
  setcurrenttime: 
               
               function(element) {
	         element = $(element);
		 var jetzt = new Date();
		 element.sethtml(jetzt.toLocaleString());
		 setTimeout(function(e) { element.setcurrenttime(); }, 950);
               },	        
/*
Beispiel: $('element').setloadingtime();
*/
  setloadingtime:
  
               function(element) {
	         element = $(element);
		 var loadtimeFinish = Math.floor((new Date()-PTEx_LoadTimeStart)/100)/10;
		 if(loadtimeFinish%1==0) loadtimeFinish += ".0";
		 element.sethtml(loadtimeFinish);
               },	        
/*
Beispiel: $('element').sethtml('<h1>Code</h1>');
*/
  sethtml:     
               function(element,html) {
                 element = $(element);
		 if(element.updater)  { element.updater.stop(); element.updater = null; }
                 element.update((html) ? html:'');
               },
/*
Beispiel: $('element').gethtml();
*/
  gethtml:     
               
               function(element) {
                 element = $(element);
		 return element.innerHTML;
               },
/*
Beispiel: $('element').moveto( { xpos:10, 
                                 ypos:50
			       } );
*/
  moveto:      
               
               function(element,options) {
                 element = $(element);
		 if(isBlank(options.xpos)||(isBlank(options.ypos))) { alert('$(element).moveto: Keine Position angegeben ?'); return; }
		 element.setStyle({left: options.xpos+'px', top: options.ypos+'px'});
               },
/*
Beispiel: $('element').moveby( { xadd:10, 
                                 yadd:50
			       } );
*/
  moveby:      
               
               function(element,options) {
                 element = $(element);
		 if(isBlank(options.xadd)||(isBlank(options.yadd))) { alert('$(element).moveby: Keine Position angegeben ?'); return; }
		 options.xadd += parseInt(element.getStyle('left'));
		 options.yadd += parseInt(element.getStyle('top'));
		 element.setStyle({left: options.xpos+'px', top: options.ypos+'px'});
               },
/*
Beispiel: $('element').collapse();
*/
  collapse:    
               
               function(element) {
                 element = $(element);
		 element.hide();
    		 element.setStyle({left: '0px', top: '0px', width: '0px', height: '0px'});
	       },
/*
Beispiel: $('element').center();
*/
  center:      
               
               function(element) {
                 element = $(element);
	         var offsets = document.viewport.getScrollOffsets();
	         var xpos    = Math.max(0, Math.floor((document.viewport.getWidth()  - element.getWidth())  / 2)) + offsets.left;
	         var ypos    = Math.max(0, Math.floor((document.viewport.getHeight() - element.getHeight()) / 2)) + offsets.top;
		 element.moveto({xpos: xpos, ypos: ypos});
	       },
/*	  
  Beispiel: $('element').centershow();	  
*/
  centershow:  
               
               function(element) {
                 element = $(element);
                 element.center();
                 element.show();
               },

/*	  
  Beispiel: $('element').movetoview( { border:16 <- optional
                                     } );	  
*/
  movetoview:                 
               function(element,options) {
                 element = $(element);
		 var offsets = document.viewport.getScrollOffsets();
		 var border = (isBlank(options) || isBlank(options.border)) ? 16:parseInt(options.border);

		 var xpos = parseInt(element.getStyle('left'));
		 var ypos = parseInt(element.getStyle('top'));		 

		 if((xpos + element.getWidth())  > (document.viewport.getWidth()  - border)) { xpos = document.viewport.getWidth()  - element.getWidth()  - border; }
		 if((ypos + element.getHeight()) > (document.viewport.getHeight() - border)) { ypos = document.viewport.getHeight() - element.getHeight() - border; } 
		 
		 if(xpos < border) { xpos = border; }
		 if(ypos < border) { ypos = border; }
		 
		 element.moveto({xpos: xpos+offsets.left, ypos: ypos+offsets.top});
               },
/*
  Beispiel: $('element').submitform( { formname:'search',
				       beforeLoad:function(e) { },     <- optional
				       afterLoad:function(e) { },      <- optional
				     } );
*/
  submitform:  
               
               function(element,options) {
		 element = $(element);
	         if(isBlank(options.formname)) { alert('$(element).submitform: Kein Formularname angegeben ?'); return; }		 		
		 
		 if(element.updater)    { element.updater.stop(); element.updater = null; }
		 if(options.beforeLoad) { options.beforeLoad(element); }

		 $(options.formname).request(
		  {
    		   onFailure: function() {	   
    		     element.innerHTML = 'Beim Aufruf der Seite ist ein Fehler aufgetreten !';
    		   },
    		   onComplete: function(transport) {
    		     var response = transport.responseText || "Seite erzeugt keine Ausgabe ?";
		     element.innerHTML = response;		     
		     setTimeout(function() { response.evalScripts(); }, 10);
		     if(options.afterLoad) { options.afterLoad(element); }		     
    		   }
		  });		  
               },
/*
  Beispiel: $('element').periodicurl( { adress:'http://www.test.de',
				        params:'ID=1&AR=2',  	       <- optional
				        method:'post',  	       <- optional
					frequency:3,		       <- optional
					decay:1,                       <- optional
				        beforeLoad:function(e) { },    <- optional
				        afterLoad:function(e) { },     <- optional
				      } );
*/
  periodicurl: 
               
               function(element,options) {
                 element = $(element);
	         if(isBlank(options.adress)) { alert('$(element).periodicurl: Keine Adresse angegeben ?'); return; }
		 if(element.updater)    { element.updater.stop(); element.updater = null; }
		 if(options.beforeLoad) { options.beforeLoad(element); }

		 element.updater = new Ajax.PeriodicalUpdater(element.id, options.adress, {
                   method:    (options.method)    ? options.method:'post',
                   postBody:  (options.params)    ? options.params:null,
                   frequency: (options.frequency) ? options.frequency:3,
                   decay:     (options.decay)     ? options.decay:1,
                   onSuccess: function() {
		     if(options.afterLoad) { options.afterLoad(element); }
                   }
                  });
               },

/*
  Beispiel: $('element').refreshurl( { beforeLoad:function(e) { },        <- optional 
				       afterLoad:function(e) { },         <- optional
                                     } );  
*/
  refreshurl:                    
               function(element,options) {
                 element = $(element); 
		 if(isBlank(element.ActUrl)) { alert('$(element).refreshurl: Keine Adresse hinterlegt ?'); return; }
		 
		 element.loadurl( { adress:element.ActUrl, 
				    params:(!isBlank(element.ActParams)) ? element.ActParams :null, 
				    method:(!isBlank(element.ActMethod)) ? element.ActMethod :null, 
				    beforeLoad:((!isBlank(options))      ? options.beforeLoad:null), 
				    afterLoad: ((!isBlank(options))      ? options.afterLoad :null) 
				  } );
	       },
/*
  Beispiel: $('element').loadurl( { adress:'http://www.test.de',
				    params:'ID=1&AR=2',  	       <- optional
				    method:'post',  	       	       <- optional
				    beforeLoad:function(e) { },        <- optional
				    afterLoad:function(e) { },         <- optional
				  } );
*/
  loadurl:     
               
               function(element,options) {
                 element = $(element);
	         if(isBlank(options.adress)) { alert('$(element).loadurl: Keine Adresse angegeben ?'); return; }	 
		 if(element.updater)    { element.updater.stop(); element.updater = null; }

		 element.ActUrl    = options.adress;
		 element.ActMethod = options.method;
		 element.ActParams = options.params;

		 if(options.beforeLoad) { options.beforeLoad(element); }

		 var myAjax = new Ajax.Request(options.adress,
                  {
                   method:   (options.method) ? options.method:'post',
                   postBody: (options.params) ? options.params:null,
                   onFailure: function() {
                     element.innerHTML = 'Beim Aufruf der Seite ist ein Fehler aufgetreten !';
		     if(options.afterLoad) { options.afterLoad(element); }
                   },
                   onComplete: function(transport) {
                     var response = transport.responseText || "Seite erzeugt keine Ausgabe ?";
                     element.innerHTML = response;
		     setTimeout(function() { response.evalScripts() }, 10);
		     if(options.afterLoad) { options.afterLoad(element); }
                   }
                  });		  
	       },
/*
  Beispiel: $('element').showmenu( { layer:'POPUP', 
				     group:'default', 		    <- optional
				     delay:1000,	            <- optional
				     duration:.5                    <- optional
				   } );
*/
  showmenu:    
               
               function(element,options) {
                 element = $(element);
		 
		 if(isBlank(options.layer))     { alert('$(element).showmenu: Keine Layer als Popup angegeben ?'); return; }
		 if(isBlank(options.duration))  { options.duration = .5;   }
		 if(isBlank(options.delay))     { options.delay    = 1000; }
		 
		 if(((PTEx_ShowMenuTimeOut)||(PTEx_ShowMenuTimeOut = new Array()))&&((PTEx_ShowMenuLayer)||(PTEx_ShowMenuLayer = new Array()))&&((PTEx_ShowMenuGroup)||(PTEx_ShowMenuGroup = new Array())))
                  {
		   if((!isBlank(options.group))&&(!isBlank(PTEx_ShowMenuGroup[options.group]))&&(PTEx_ShowMenuGroup[options.group] != $(options.layer)))
		    {
		     PTEx_ShowMenuGroup[options.group].hide();
		     PTEx_ShowMenuGroup[options.group] = null;
		    }

		   if(!isBlank(PTEx_ShowMenuLayer[element.id])) return;
		    		
		   PTEx_ShowMenuLayer[element.id] = $(options.layer);
		     
		   Event.observe(element, 'mouseover', function(event) {
		     window.clearTimeout(PTEx_ShowMenuTimeOut[element.id]);

		     if(!isBlank(options.group))
		      {
		       PTEx_ShowMenuGroup[options.group] = PTEx_ShowMenuLayer[element.id];
		      }

		     if(PTEx_ShowMenuLayer[element.id].visible()) return;
		    
		     if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
		      {
		       PTEx_ShowMenuLayer[element.id].show();
		       return;
		      }
    		      
		     PTEx_ShowMenuLayer[element.id].setOpacity(0);
		     PTEx_ShowMenuLayer[element.id].show();

		     new Effect.Fade(PTEx_ShowMenuLayer[element.id], { duration:options.duration, from:0, to:1 });
		   });
		     
		   Event.observe(element, 'mouseout', function(event) {
		     PTEx_ShowMenuTimeOut[element.id] = window.setTimeout(function() {
		       if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
		        {
		         PTEx_ShowMenuLayer[element.id].hide();
			 return;
			}
		       
		       new Effect.Fade(PTEx_ShowMenuLayer[element.id], { duration:options.duration, from:1, to:0, afterFinish:function(e) { PTEx_ShowMenuLayer[element.id].hide(); } });		 
		     }, options.delay);
		   });

		   Event.observe(PTEx_ShowMenuLayer[element.id], 'mouseover', function(event) {
		     window.clearTimeout(PTEx_ShowMenuTimeOut[element.id]);
		   });

		   Event.observe(PTEx_ShowMenuLayer[element.id], 'mouseout', function(event) {
		     PTEx_ShowMenuTimeOut[element.id] = window.setTimeout(function() {
		       if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
		        {
		         PTEx_ShowMenuLayer[element.id].hide();
			 return;
			}
		       
		       new Effect.Fade(PTEx_ShowMenuLayer[element.id], { duration:options.duration, from:1, to:0, afterFinish:function(e) { PTEx_ShowMenuLayer[element.id].hide(); } });		 
		     }, options.delay);
		   });

		   if(!PTEx_ShowMenuLayer[element.id].visible())
		    {
		     if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
		      {
		       PTEx_ShowMenuLayer[element.id].show();
		       return;
		      }
		    
    		     PTEx_ShowMenuLayer[element.id].setOpacity(0);
		     PTEx_ShowMenuLayer[element.id].show();

		     new Effect.Fade(PTEx_ShowMenuLayer[element.id], { duration:options.duration, from:0, to:1 });
		    }
	          }
	       },

/*
  Beispiel: $('element').loadcanvas( { opacity:.8,		      <- optional
				       duration:.5,                   <- optional
				     } );
*/

  loadcanvas:  
               function(element,options) {
                 element = $(element);

	         if(isBlank(options.duration)) { options.duration = .5; }
		 if(isBlank(options.opacity))  { options.opacity  = .8; }

		 if(!element.visible())
		  {
    	           if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
    	            {
		     element.setOpacity(options.opacity);
		     element.maximize();
    	             element.show();

		     return;
   	            }  
    	          
                   element.setOpacity(0);
		   element.maximize();
	           element.show();
		     
		   new Effect.Fade(element, { duration:options.duration, from:0, to:options.opacity });
		  } 
               },

/*
  Beispiel: $('element').hidecanvas( { opacity:.8,		      <- optional
				       duration:.5,                   <- optional
				     } );
*/

  hidecanvas:  
               function(element,options) {
                 element = $(element);

	         if(isBlank(options.duration)) { options.duration = .5; }

		 if(element.visible())
		  {
    	           if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
    	            {
		     element.collapse();
		     return;
   	            }  

	           var opacity = element.getOpacity();
		   new Effect.Fade(element, { duration:options.duration, from:opacity, to:0, 
		     afterFinish:function(e) {
		     element.collapse();
		     }
		   });
		  } 
               },

/*
  Beispiel: $('element').loadpicture( { filename:bild.jpg, 
					duration:.2, 		       <- optional
					text:'Bildbeschreibung',       <- optional
					beforeLoad:function(e) { },    <- optional
					afterLoad:function(e) { },     <- optional
					afterFinish:function(e) { },   <- optional
					afterClose:function(e) { }     <- optional
				      } );
*/

  loadpicture: 
               
               function(element,options) {
                 element = $(element);

	         if(isBlank(options.filename)) { alert('$(element).loadpicture: Kein Dateiname angegeben ?'); return; }
	         if(isBlank(options.duration)) { options.duration = .2; }

	         if(element.visible())
	          {     
	           if(element.image)
	            {
	             if(element.filename && (element.filename == options.filename))
		      {
		       if(typeof Scriptaculous == "undefined")
		        {
		         element.show();
		         return;
		        }
    	          
		       element.shake({ duration:.2, distance:10 });
    	               return;
    	              }
	       
	             Event.stopObserving(element.image, 'mousedown');
	            }
    
	           if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
	            {
	             element.hide();
		     return;
	            }
		    
	           new Effect.Fade(element, { duration:options.duration, from:1, to:0, 
                     afterFinish:function(e) {
                       element.hide();
	               element.loadpicture(options);
                     }
                   });
                   return;
	          }

	         if((element.image)||(element.image = new Image()))
	          {
	           if(options.beforeLoad) { options.beforeLoad(element); }
	     
	           Event.observe(element.image, 'load', function(event) {
	             element.update('<table style="cursor: pointer; margin:0px; padding:3px 3px; background:#000000; border:#000000 1px solid;">'+
			            ((!isBlank(element.image.src)) ? '<tr><td><img style=\"border:none;\" src="'+element.image.src+'"></td></tr>':'')+
			            ((!isBlank(options.text))      ? '<tr><td style=\"'+((element.image.width>0) ? 'width:'+element.image.width+'px; ':'')+'font-size: 10px; color:#FFFFFF;\">'+unescape(options.text)+'</td></tr>':'')+
			            '</table>');

	             element.center();
      
    		     if(!isBlank(options.afterLoad)) { options.afterLoad(element); }
      
    	             if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
    	              {
    		       element.show();
		       if(options.afterFinish) { options.afterFinish(element); }
    		      }  
    	             else
    		      {
    		       element.setOpacity(0);
		       element.show();

		       new Effect.Fade(element, { duration:options.duration, from:0, to:1,
		         afterFinish:function(e) {
		           if(options.afterFinish) { options.afterFinish(element); }
		         }
		       });
    	              } 
            
    	             Event.observe(element, 'mousedown', function(event) {

		       if((typeof Scriptaculous == "undefined")||(options.duration <= 0))
		        {
		         element.hide();
			 if(options.afterClose) { options.afterClose(element); }
		        }
		       else
		        {
		         new Effect.Fade(element, { duration:options.duration, from:1, to:0,
		           afterFinish:function(e) {
	    		     element.hide();			     
			     if(options.afterClose) { options.afterClose(element); }
		           }
	                 });
	                }
	             });

    	             Event.stopObserving(element.image, 'load');
                   });

	           element.image.src = element.filename = options.filename;
	          }	     
	       },
/*
  Beispiel: $('element').toggletable( { name:test
				      } );
*/
  toggletable: 
               
               function(element,options) {
                 element = $(element);
		 
		 if(isBlank(options.name)) { alert('$(element).toggletable: Kein Name der Zeilen angegeben ?'); return; }

		 $$('tr').each(function(s) {
		   if((!isBlank(s.id))&&(options.name == s.id)) {
		     s.toggle();
		   }
		 }); 
	       }
}

Element.addMethods(ElementEx);
								