Object.extend(String.prototype, (function() {
	function escapeSpecialChars() {
		return this.replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
	}
	
	return {
		escapeSpecialChars: escapeSpecialChars
	}
})());

function isIE6OrLess(){
	var agt=navigator.userAgent.toLowerCase();
	var is_major = parseInt(navigator.appVersion);
	var is_minor = parseFloat(navigator.appVersion);
	var is_ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	return (is_ie && (is_major == 4) && (agt.search(/msie [56]\./)!=-1) );
}
/**
 * Stellt Debug-Messages für Firefox, IE8, Opera, Safari, Chrome (Konsole) und IE<8 (alert) zur Verfügung.
 * @param string text
 * @return void
 */
function lg(text) {
	if (false)
	{
		if (typeof(opera) != "undefined" && opera != null) {
			opera.postError(text);
			return;
		}
		else 
			if (typeof(console) != "undefined" && console != null) {
				console.log(text);
				return;
			}	
//			else {
//				alert(text);
//			}
	}
}

/**
 * Prueft, ob point innerhalb der Grenzen von elm liegt. Gibt true oder false zurueck.
 * @param {x:integer, y:integer} point
 * @param {Object} elm
 * @return boolean true, wenn point innerhalb von elm liegt, sonst false
 */
function isInElement(point, elm) {
	var x = point.x;
	var y = point.y;
	var elm = elm;

	 var dOffset = document.viewport.getScrollOffsets();

	if ((x > elm.viewportOffset()[0]+elm.cumulativeScrollOffset()[0]+dOffset[0]+elm.getWidth() || x < elm.viewportOffset()[0]+elm.cumulativeScrollOffset()[0]+dOffset[0])
	|| (y > elm.viewportOffset()[1]+elm.cumulativeScrollOffset()[1]+dOffset[1]+elm.getHeight() || y < elm.viewportOffset()[1]+elm.cumulativeScrollOffset()[1]+dOffset[1])) {
		return false;
	} else {
		return true;
	}
}



var EinladenWidget_SUPER = Class.create(COMPOSE); //Erzeugen einer Dummy-Parent-Klasse, da eigentliche Parent-Klasse 'nur' als object vorliegt 
var EinladenWidget = Class.create(EinladenWidget_SUPER,  
		{
			initialize: function(toggler, controlls_div, friends_div, recipients_div, explanation_el, compose_form, container_el){
				this.init(friends_div, recipients_div, explanation_el, compose_form, container_el); //Parent-Constructor-Aufruf
				this.process_already_invited_friends();
				this.controlls_div = controlls_div;
				this.controlls_div.style.display = 'none';
				toggler.observe('click', this.toggle_container.bindAsEventListener(this));
			},

			toggle_container: function(ev){
				ev.stop();
				if (this.container_el.style.display == 'none')
					new Effect.BlindDown(this.container_el,{duration: 0.5});
				else 
					new Effect.BlindUp(this.container_el, {duration: 0.5});
			},
			
			process_already_invited_friends: function () {
				//geht Liste in recipients_div durch und erstellt inaktive Buttons
				this.recipients_div.select("LI").each( function(li){
					var link = this.create_passive_bubble(li.innerHTML);
					this.recipients_div.insert({bottom: link});
				}.bind(this));
				if(this.recipients_div.down("OL"))
					this.recipients_div.down("OL").remove();
		    },
		    
		    //erzeugt das Bubble-HTML-Konstrukt für bereits eingeladenen Freunde (nicht mehr entfernbar)
		    
		    create_passive_bubble: function(text){
		    	var link = $( this.create_link(text) );
		    	return new Element("p", {className: "not_changable"}).update(link.innerHTML);
		    },
		    
		    add_recipient: function($super, el){
		    	$super(el);
		    	this.handle_controll_display();
		    },
		    remove_recipient: function($super, el){
		    	$super(el);
		    	this.handle_controll_display();
		    },
		    
		    handle_controll_display: function(){
		    	var active_elems = false;
		    	this.recipients_div.select("A").each(function(link){
		    		if(link.visible()){
		    			active_elems = true;
		    		}
		    	});
		    	if( active_elems && !this.controlls_div.visible() )
		    		new Effect.Appear(this.controlls_div, {duration: 0.3});
		    	else if ( !active_elems && this.controlls_div.visible())
		    		new Effect.Fade(this.controlls_div, {duration: 0.3});
		    }
	
		});



Event.observe(document, "dom:loaded", function(){
	$(document.body).addClassName('dynd');
	var container_el = $('vorschlagen_container'); 
	if (container_el){  //nur vorhanden, wenn User angemeldet
		
		if( ! location.href.include("#vorschlagen_container"))
			container_el.style.display = 'none';
		
		var ef = new EinladenWidget($('vorschlagen'),
								   $('steuerelemente_freunde'),
								   $('meine_freunde'), 
								   $('eingeladene_freunde'),
								   null, 
								   container_el.down("FORM"), 
								   container_el);
	}
	
		
	
	

});
