function AllMessages() {
  for(var x = 0; x < document.forms[1].elements.length; x++) { 
    var y = document.forms[1].elements[x];
    if(y.name != 'select_all') 
      if(y.name != 'absnumber') y.checked = document.forms[1].select_all.checked;
    }
  }
  
function AllCheckBoxes(id) {
  for(var x = 0; x < document.forms[id].elements.length; x++) { 
    var y = document.forms[id].elements[x];
    if(y.name != 'select_all') 
      if(y.name != 'absnumber') y.checked = document.forms[id].select_all.checked;
    }
  }  

function openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
  }
  
function send(form) {
  document.forms[form].submit();
  }
  
function sendForm(form) {
  document.forms[form].submit();
  }
  
function sendForm(form, attrib) {
  document.forms[form].action.value = attrib;
  document.forms[form].submit();
  }

function sendUserSubscription(form) {
  document.forms[form].newusersubscription.value = 'true';
  document.forms[form].submit();
  }
       	  
function disableRightClick(e)
  {
  var message = "Der Rechtsklick ist beim Beergame nicht erlaubt!";

  if(!document.rightClickDisabled) // initialize
    {
     if(document.layers)
      {
      document.captureEvents(Event.MOUSEDOWN);
      document.onmousedown = disableRightClick;
      }
    else document.oncontextmenu = disableRightClick;
    return document.rightClickDisabled = true;
    }
  if(document.layers || (document.getElementById && !document.all))
    {
    if (e.which==2||e.which==3)
      {
      alert(message);
      return false;
      }
    }
  else
    {
    alert(message);
    return false;
    }
  }
  
function sendNewMail(form) {
  getDescription();
  getHeader();
  getFooter();
  document.forms[form].submit();
}

function sendNewMail(form, attrib) {
  getDescription();
  getHeader();
  getFooter();
  document.forms[form].action.value = attrib;
  document.forms[form].submit();
}

     
function getDescription() {     				      
  if (browser.isIE5up) {
  } else if (browser.isGecko) {
	var isMidasEnabled = false;
	document.getElementById('descriptionFrame').contentDocument.designMode = "on";
	try {
	  document.getElementById('descriptionFrame').contentWindow.document.execCommand("undo", false, null);
	  isMidasEnabled = true;
	} catch (e) {
	  isMidasEnabled = false;
	}
	if (isMidasEnabled) {
	} else {
	  return;
	}
  } else {
	return;
  }     				      
  var html;
  try {
	html = document.getElementById('descriptioniframe').contentWindow.document.body.innerHTML;
  } catch (e) {
	html = document.getElementById('descriptioniframe').value;
  }
  document.forms[0].description.value = html; 
}  
  
function getHeader() {     				      
  if (browser.isIE5up) {
  } else if (browser.isGecko) {
	var isMidasEnabled = false;
	document.getElementById('headerFrame').contentDocument.designMode = "on";
	try {
	  document.getElementById('headerFrame').contentWindow.document.execCommand("undo", false, null);
	  isMidasEnabled = true;
	} catch (e) {
	  isMidasEnabled = false;
	}
	if (isMidasEnabled) {
	} else {
	  return;
	}
  } else {
	return;
  }       
       				      
  var html;
  try {
	html = document.getElementById('headeriframe').contentWindow.document.body.innerHTML;
  } catch (e) {
	html = document.getElementById('headeriframe').value;
  }
  document.forms[0].header.value = html; 
}  
  
function getFooter() {     				      
  if (browser.isIE5up) {
  } else if (browser.isGecko) {
	var isMidasEnabled = false;
	document.getElementById('footerFrame').contentDocument.designMode = "on";
	try {
	  document.getElementById('footerFrame').contentWindow.document.execCommand("undo", false, null);
	  isMidasEnabled = true;
	} catch (e) {
	  isMidasEnabled = false;
	}
	if (isMidasEnabled) {
	} else {
	  return;
	}
  } else {
	return;
  }       				   		      
  var html;
  try {
	html = document.getElementById('footeriframe').contentWindow.document.body.innerHTML;
  } catch (e) {
	html = document.getElementById('footeriframe').value;
  }
  document.forms[0].footer.value = html; 
}

/* ******************************************************************
	   TOOLTIPS 
****************************************************************** */


// integriert: Crossbrowser-Funktionen von "cross.js"

// Config:
var ballonBack = "#00ff77";  // Hintergrundfarbe
var ballonText = "#000000";  // Text und Randfarbe
var ballonBreite = 200;        // Ballon-Breite (Vorgabewert)
var ballonBorder = 1;      // Randst?rke
var ballonFont = "Arial";
var ballonDir = 0;         // Ausrichtung; 0=rechts 1=links
var ballonVDir = 0;        // Ausrichtung; 0=unten 1=oberhalb
var ballonChangeVDir = 65;    // Schwellwert f?r Wechsel der
			      // V-Ausrichtung am unteren Rand
var ballonSpace = 10;        // Abstand vom Cursor
var ballonShow = false; // Anzeige aktiv/inaktiv

var Ballon = null;        // das DIV-Objekt
var b_Breite;             // aktueller Speicher f?r Ballonbreite
var b_Dir, b_VDir;

// Ballon-Objekt (div) festlegen
function setBallon(id, breite, bgcolor) {

	document.onmousemove = cursorMove;

	if (breite && breite>20) b_Breite = breite;
	if (bgcolor) ballonBack = bgcolor;
	Ballon = crossGetObject(id);
	if (Ballon == null) {
		alert("keine Unterst?tzung f?r Ballon-Infos");
		showBallon = noBallon; hideBallon = noBallon;
	}
	ballonShow = false;
}
function noBallon() {} // functionsaufrufe abfangen
document.write('<meta name="scripts" content="TOOLTIPS">');

// Ballon kreieren und anzeigen
function showBallon(msg, dir, breite, bgcolor) {
	var b_Back;
	var relWidth, relHeight;

	if (Ballon == null) return;
	if (breite && breite>20) b_Breite = breite;
	else b_Breite=ballonBreite;
	if (bgcolor) b_Back=bgcolor;
	else b_Back=ballonBack;
	msg = '<table width=' + b_Breite + ' border=0 cellpadding=' + ballonBorder + ' cellspacing=0 bgcolor=\"' + ballonText + '\"><tr><td><table width=100% border=0 cellpadding=3 cellspacing=0 bgcolor=\"' + b_Back + '\"><tr><td><font face=\"'  + ballonFont + '\" color=\"' + ballonText + '\" size=-1>' + msg + '</font></td></tr></table></td></tr></table>';
	if (!dir) b_Dir = ballonDir;
	else b_Dir = dir;
	relWidth = crossInnerWindowWidth() + crossGetScroll("x");
	relHeight = crossInnerWindowHeight() + crossGetScroll("y");
	if (crossMouseX + b_Breite + ballonSpace > relWidth) 
		{b_Dir = 1;}
	else if (crossMouseX < b_Breite + ballonSpace) b_Dir = 0;
	b_VDir = ballonVDir;
	if (crossMouseY + ballonChangeVDir > relHeight) b_VDir = 1;
	else if (crossMouseY - ballonChangeVDir < 0) b_VDir = 0;
	crossWrite(Ballon, msg);
	ballonShow = true;
	crossShowObject(Ballon);
}

function hideBallon() {
	if (Ballon == null) return;
	crossHideObject(Ballon);
	ballonShow=false;
	crossMoveTo(Ballon, -200, 0);
}

// der Maus folgen
function cursorMove(e) {
	var posX, posY;

	crossMousePosition(e);

	if (ballonShow) {
		
		if (b_Dir==0) {
			posX = crossMouseX + ballonSpace;
			if (b_VDir==0) {posY = crossMouseY + ballonSpace;}
			else {posY = crossMouseY - ballonChangeVDir;}
		}
		else {
			posX = crossMouseX-b_Breite-ballonSpace;
			if (b_VDir==0) {posY = crossMouseY + ballonSpace;}
			else {posY = crossMouseY - ballonChangeVDir;}
		}
		crossMoveTo(Ballon, posX, posY)
	}
}

/* *************************************************************
	CROSSBROWSER-FUNKTIONEN 
************************************************************* */


// Browsertyp ermitteln (und in B_Type speichern)
var B_Type = new crossBrowserType();
function crossBrowserType() {
	this.IE = false;
	this.NS4 = false;
	this.NS6 = false;
	this.id = "";

	if (document.all) {this.IE = true; this.id = "IE";}
	else if (document.getElementById) {this.NS6 = true; this.id = "NS6";}
	else if (document.layers) {this.NS4 = true; this.id = "NS4";}
}

// Mausposition zur?ckgeben
var crossMouseX, crossMouseY;
if (B_Type.NS4) document.captureEvents(Event.MOUSEMOVE);

function crossMousePosition(e) {
	if (B_Type.IE) {
		crossMouseX=event.x + document.body.scrollLeft;
		crossMouseY=event.y + document.body.scrollTop;
	}
	else {crossMouseX=e.pageX; crossMouseY=e.pageY;}
}


// browserspezifisches DHTML-Objekt anhand von ID zur?ckgeben
function crossGetObject(id) {
	var obj = null;
	if (B_Type.IE) obj=document.all[id];
	else if (B_Type.NS6) obj=document.getElementById(id);
	else if (B_Type.NS4) obj=document.layers[id];
	return obj;
}

// Text in DHTML-Objekt ausgeben
function crossWrite(obj, text) {

	if (B_Type.IE) obj.innerHTML = text;
	else if (B_Type.NS6) obj.innerHTML = text;
	else if (B_Type.NS4) {
		obj.document.open();
		obj.document.write(text);
		obj.document.close();
	}
}

// verf?gbare Fensterbreite ermitteln
function crossInnerWindowWidth() {
	var val;
	if (B_Type.IE) val=document.body.clientWidth;
	else if (B_Type.NS6) val=window.innerWidth;
	else if (B_Type.NS4) val=window.innerWidth;
	return val;
}

// tats?chliche Fensterbreite ermitteln
function crossOuterWindowWidth() {
	var val;
	if (B_Type.IE) val=document.body.offsetWidth;
	else if (B_Type.NS6) val=window.outerWidth;
	else if (B_Type.NS4) val=window.outerWidth;
	return val;
}

// verf?gbare Fensterh?he ermitteln
function crossInnerWindowHeight() {
	var val;
	if (B_Type.IE) val=document.body.clientHeight;
	else if (B_Type.NS6) val=window.innerHeight;
	else if (B_Type.NS4) val=window.innerHeight;
	return val;
}

// Scroll-Position ermitteln, "y" = vertikal, "x" = horizontal
function crossGetScroll(achse) {
	var val;
	if (!achse || achse == "y") {  // vertikale Achse
		if (B_Type.IE) val=document.body.scrollTop;
		else if (B_Type.NS6) val=window.pageYOffset;
		else if (B_Type.NS4) val=window.pageYOffset;
	}
	else {  // horizontale Achse
		if (B_Type.IE) val=document.body.scrollLeft;
		else if (B_Type.NS6) val=window.pageXOffset;
		else if (B_Type.NS4) val=window.pageXOffset;
	}
	return val;
}

// Scroll-Position setzen
function crossSetScroll(x, y) {
	window.scrollTo(x, y);
}


// Objekt positionieren x/y
function crossMoveTo(obj, x, y) {
	if (B_Type.IE) {obj.style.pixelLeft=x; obj.style.pixelTop=y;}
	else if (B_Type.NS4) {obj.left=x; obj.top=y;}
	else if (B_Type.NS6) {obj.style.left=x+"px"; obj.style.top=y+"px";}
}

// Objekt-Position ermitteln
function crossGetPositionX(obj) {
	if (B_Type.IE) return obj.style.pixelLeft;
	else if (B_Type.NS4) return obj.left;
	else if (B_Type.NS6) return parseInt(obj.style.left);
}
function crossGetPositionY(obj) {
	if (B_Type.IE) return obj.style.pixelTop;
	else if (B_Type.NS4) return obj.top;
	else if (B_Type.NS6) return parseInt(obj.style.top);
}

// Objekt anzeigen
function crossShowObject(obj) {
	if (B_Type.IE || B_Type.NS6) {obj.style.visibility="visible";}
	else if (B_Type.NS4) {obj.visibility="show";}
}
// Objekt ausblenden
function crossHideObject(obj) {
	if (B_Type.IE || B_Type.NS6) {obj.style.visibility="hidden";}
	else if (B_Type.NS4) {obj.visibility="hide";}
}


// Hintergrund-Farbe setzen
function crossBackgroundColor(color, obj) {
	if (typeof obj == "undefined") {document.bgColor=color; return;}
	if (B_Type.IE || B_Type.NS6) {obj.style.backgroundColor=color;}
	else if (B_Type.NS4) {obj.document.bgColor=color;}
}


// Hintergrund-Bild setzen
function crossBackgroundImage(obj, img) {
	if (B_Type.IE || B_Type.NS6) {obj.style.backgroundImage="url(" + img + ")";}
	else if (B_Type.NS4) {obj.background.src = img;}
}





/**
 * This array is used to remember mark status of rows in browse mode
 */
var marked_row = new Array;


/**
 * Sets/unsets the pointer and marker in browse mode
 *
 * @param   object    the table row
 * @param   interger  the row number
 * @param   string    the action calling this script (over, out or click)
 * @param   string    the default background color
 * @param   string    the color to use for mouseover
 * @param   string    the color to use for marking a row
 *
 * @return  boolean  whether pointer is set or not
 */
function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
{
    var theCells = null;

    // 1. Pointer and mark feature are disabled or the browser can't get the
    //    row -> exits
    if ((thePointerColor == '' && theMarkColor == '')
        || typeof(theRow.style) == 'undefined') {
        return false;
    }

    // 2. Gets the current row and exits if the browser can't get it
    if (typeof(document.getElementsByTagName) != 'undefined') {
        theCells = theRow.getElementsByTagName('td');
    }
    else if (typeof(theRow.cells) != 'undefined') {
        theCells = theRow.cells;
    }
    else {
        return false;
    }

    // 3. Gets the current color...
    var rowCellsCnt  = theCells.length;
    var domDetect    = null;
    var currentColor = null;
    var newColor     = null;
    // 3.1 ... with DOM compatible browsers except Opera that does not return
    //         valid values with "getAttribute"
    if (typeof(window.opera) == 'undefined'
        && typeof(theCells[0].getAttribute) != 'undefined') {
        currentColor = theCells[0].getAttribute('bgcolor');
        domDetect    = true;
    }
    // 3.2 ... with other browsers
    else {
        currentColor = theCells[0].style.backgroundColor;
        domDetect    = false;
    } // end 3

    // 4. Defines the new color
    // 4.1 Current color is the default one
    if (currentColor == ''
        || currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        if (theAction == 'over' && thePointerColor != '') {
            newColor              = thePointerColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.2 Current color is the pointer one
    else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
             && (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
        if (theAction == 'out') {
            newColor              = theDefaultColor;
        }
        else if (theAction == 'click' && theMarkColor != '') {
            newColor              = theMarkColor;
            marked_row[theRowNum] = true;
        }
    }
    // 4.1.3 Current color is the marker one
    else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        if (theAction == 'click') {
            newColor              = (thePointerColor != '')
                                  ? thePointerColor
                                  : theDefaultColor;
            marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                  ? true
                                  : null;
        }
    } // end 4

    // 5. Sets the new color...
    if (newColor) {
        var c = null;
        // 5.1 ... with DOM compatible browsers except Opera
        if (domDetect) {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].setAttribute('bgcolor', newColor, 0);
            } // end for
        }
        // 5.2 ... with other browsers
        else {
            for (c = 0; c < rowCellsCnt; c++) {
                theCells[c].style.backgroundColor = newColor;
            }
        }
    } // end 5

    return true;
} // end of the 'setPointer()' function
