var qp_selectable_ext = function(objOpts){
	var objExt = objOpts;

  objExt.init = function(){
  	this.id = (typeof this.id == "undefined") ? ("id_"+new Date().getTime()) : this.id;
    this.arr = [];

    return objExt;
  };

  objExt.removeItems = function(){
  	// Selektionsarray durchlaufen
	  for(var i=0; i<this.arr.length; i++){
    	// Falls das Element im DOM noch existiert -> entfernen
	    if(this.arr[i])
	      this.arr[i].parentNode.removeChild(this.arr[i]);
	  }
		// Leeres Array an Selektionsarray zuweisen
    this.arr = []
  };

  objExt.selectItem = function(event, ui){
  	// Falls das aktuelle Objekt noch nicht im Selektionsarray enthalten ist -> einfügen
    if($.inArray(ui.selected, this.arr) == -1){
      this.arr[this.arr.length] = ui.selected;
    }
  };

  objExt.unselectItem = function(event, ui){
    // Hilfsarray
    var arrHelp = [];

    // Array mit selektierten Elementen durchlaufen
    for(var i=0; i<this.arr.length; i++){
      // Falls es sich nicht um das deselektierte Element handelt -> in bereinigtes Selektionsarray übernehmen
      if(this.arr[i] != ui.unselected){
        arrHelp[arrHelp.length] = this.arr[i];
      }
    }
    // Bereinigtes Array an Selektionsarray zuweisen
    this.arr = arrHelp;
  };

  objExt.showSelected = function(){
	  var strOut = "";
	  for(var strEntry in this.arr){
      strOut += "["+strEntry+"] = " + this.arr[strEntry] + "("+this.arr[strEntry].nodeName+")" + "\n";
	  }
    alert(strOut);
  };

  return objExt;
}
