/* 
 * Funktion: hasClassName
 * Beschreibung: Prüft ob ein Element eine CSS-Klasse zugewiesen hat.
 * Parameter
 *  id (string):         ID des zu überprüfenden Elements
 *  className (string):  Name der zu überprüfenden Klasse
 *  Return:              true od. false, je nachdem ob die Klasse zugewiesen
 *                       wurde oder nicht.
 */
hasCSSClassName = function(id, className)
{
    if(typeof(id) == 'string')
      var element = window.document.getElementById(id);
    if(typeof(id) == 'object') 
      var element = id;

    var elementClassName = element.className;
    return (elementClassName.length > 0 && (elementClassName == className ||
    new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));  
}

/* 
 * Funktion: addClassName
 * Beschreibung: Weist einem Element eine CSS-Klasse zu. Wurde die
 *               Klasse bereits zugewiesen, bleibt das Element 
 *               unberührt.
 * Parameter
 *  id (string):         ID des zu manipulierenden Elements
 *  className (string):  Name der Klasse die hinzugefügt werden soll.
 */
addCSSClassName = function(id,className) 
{
    if(typeof(id) == 'string')
      var element = window.document.getElementById(id);
    if(typeof(id) == 'object') 
      var element = id;
      
    if (!hasCSSClassName(id,className))
      element.className += (element.className ? ' ' : '') + className;
}

/* 
 * Funktion: removeClassName
 * Beschreibung: Entfernt eine CSS-Klasse eines Elements. Hat das
 *               Element die Klasse nicht zugewiesen bleibt es 
 *               unberührt.
 * Parameter
 *  id (string):         ID des zu manipulierenden Elements
 *  className (string):  Name der Klasse die gelöscht werden soll.
 */
removeCSSClassName = function(id, className)
{
    if(typeof(id) == 'string')
      var element = window.document.getElementById(id);
    if(typeof(id) == 'object') 
      var element = id;
      
    element.className = element.className.replace(
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').trim();
}



/* 
 * Funktion: [String].trim()
 * Hinweis: Erweitert die Funktionalität der JavaScript internen Klasse "string"
 * Beschreibung: Entfernt beliebig Leerzeichen vor und nach 
 *               dem zu manipulierendem String.
 * Beispiel: 
 *  var bla = "  hallo    ";
 *  alert(bla.trim()); // Gibt 'hallo' aus
 */
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

/* 
 * Funktion: [String].ltrim()
 * Hinweis: Erweitert die Funktionalität der JavaScript internen Klasse "string"
 * Beschreibung: Entfernt beliebig Leerzeichen vor dem zu manipulierendem String.
 * Beispiel: 
 *  var bla = "  hallo    ";
 *  alert(bla.ltrim()); // Gibt 'hallo    ' aus
 */
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}

/* 
 * Funktion: [String].rtrim()
 * Hinweis: Erweitert die Funktionalität der JavaScript internen Klasse "string"
 * Beschreibung: Entfernt beliebig Leerzeichen nach dem zu manipulierendem String.
 * Beispiel: 
 *  var bla = "  hallo    ";
 *  alert(bla.rtrim()); // Gibt '  hallo' aus
 */
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
