function getElementsByClass(searchClass,node,tag) {  
  
	var classElements = new Array();
	
  if ( node == null ) {
    node = document;
  }

	if ( tag == null ) tag = '*';

	var els = node.getElementsByTagName(tag);

	var elsLen = els.length;

	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");

	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}

	return classElements;
}

function hasClass (obj, className) {
  if (typeof obj == 'undefined' || obj==null || !RegExp) { 
    return false; 
  }
  
  var re = new RegExp("(^|\\s)" + className + "(\\s|$)");
  
  if (typeof(obj)=="string") {
    return re.test(obj);
  }
  
  else if (typeof(obj)=="object" && obj.className) {
    return re.test(obj.className);
  }
  return false;
} 


function addClass(element, value) {
  if(!element.className) {
    element.className = value;
  } else {
    newClassName = element.className;
    newClassName+= " ";
    newClassName+= value;
    element.className = newClassName;
  }
}
 
function removeClass(ele,cls) {
  if (hasClass(ele,cls)) {
    var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
    ele.className=ele.className.replace(reg,' ');
  }
}

function get_cookie(Name) {
  var search = Name + "=";
  var returnvalue = "";
	var offset;
	
	if (window.document.cookie.length > 0) {
    		offset = window.document.cookie.indexOf(search)
    		// if cookie exists
    		if (offset != -1) { 
      			offset += search.length
      			// set index of beginning of value
      			end = window.document.cookie.indexOf(";", offset);
      			// set index of end of cookie value
      			if (end == -1) end = window.document.cookie.length;
      			returnvalue=decodeURIComponent(window.document.cookie.substring(offset, end))
      		}
   	}
  	return returnvalue;
}


String.prototype.ltrim = function (clist) {
  // Wurde eine Zeichenkette mit den zu entfernenden
  // Zeichen übergeben?
  if (clist)
    // In diesem Fall sollen nicht Whitespaces, sondern
    // alle Zeichen aus dieser Liste gelöscht werden,
    // die am Anfang des Strings stehen.
    return this.replace (new RegExp ('^[' + clist + ']+'), '');
  // Führende Whitespaces aus dem String entfernen
  // und das resultierende String zurückgeben.
  return this.replace (/^\s+/, '');
}

String.prototype.rtrim = function (clist) {
  // Zeichenkette mit den zu entfernenden Zeichen angegeben?
  if (clist)
    // Zeichen aus der Liste, die am Ende des String stehen
    // löschen.
    return this.replace (new RegExp ('[' + clist + ']+$'), '');
  // Whitespaces am Ende des Strings ertfernen und dann das Ergebnis
  // dieser Operation zurückgeben.
  return this.replace (/\s+$/, '');
}

String.prototype.trim = function (clist) {
  // Wird der Parameter clist angegeben, so werden statt der Whitespaces
  // die in dieser Variablen angegebenen Zeichen "getrimmt".
  if (clist)
    // Führende und abschließende Zeichen aus der Liste entfernen.
    return this.ltrim (clist).rtrim (clist);
  // Whitespaces vom Anfang und am Ende entfernen
  return this.ltrim ().rtrim ();
};
