/**
 * Wenn ein Formularfeld sein Label als Value trägt managt dieses Plugin
 * das Aus- und Einblenden des Labels.
 */
(function($) {
	
	$.fn.infieldlabel = function() {
		
		var $this  = this;
		var $label = $this.val();
		
		$this.focus(function() {
			if($this.val() == $label) {
				$this.val('');
			}
		});
		
		$this.blur(function() {
			if($this.val() == '') {
				$this.val($label);
			};
		});
		
	}
	
})(jQuery);

(function($) {
	
	$.fn.enlargeSimple = function(options) {
		
		var setup = {
			width : 200,
			animation_speed : 150,
			distance : 10
		}
		
		if(typeof options == 'object') $.extend(true, setup, options);
		
		this.each(function() {
			
			var $this  = $(this),
				$long  = $this.find('.filterlist'),
				$short = $('.attribute-headline.program .subheadline .short');
				
				if($long.length > 0) {
					
					$long.appendTo('body');
						
					$long.css({
						position : 'absolute',
						"z-index" : 100,
						width : setup.width,
						visibility : 'hidden',
						display : 'block'
					});
					
					var height = $long.outerHeight();
					
					$long.css({
						display : 'none',
						visibility : 'visible'
					});
					
					$short.mousemove(function(mouse) {
						console.log([mouse.pageX, mouse.pageY]);
						$long.offset({
							left : mouse.pageX-$long.outerWidth()-setup.distance,
							top  : mouse.pageY-height-setup.distance
						});
					});
					
					$short.hover(
						function() {
							$long.fadeIn(setup.animation_speed);
						},
						function() {
							$long.fadeOut(setup.animation_speed);
						}
					);
					
					
				}
			
		});
		
	};
	
	$.fn.enlarge = function(options) {
		
		var setup = {
			width : 200,
			animation_speed : 150
		};
		
		if(typeof options == 'object') $.extend(true, setup, options);
		
		this.each(function() {
			
			var $this     = $(this),
				$long     = $this.find('.filterlist'),
				$short    = $('.attribute-headline.program .subheadline .short'),
				$headline = $this.parent().parent();
			
			if($long.length > 0) {
				
				var offset = $headline.offset(),
					$container = $('<div>', {
						offset: {
							left : offset.left - setup.width - 1,
							top  : offset.top
						},
						width  : setup.width,
						height : 600,
						css    : {
							position  : 'absolute',
							overflow  : 'hidden',
							"z-index" : 200
						}
					}).appendTo('body');
				
				$long.css({
					position : 'absolute',
					left     : setup.width,
					width    : setup.width
				});
				$long.appendTo($container);
				
				$short.hover(
					function() {
						$long.width(setup.width);
						$long.css('left', setup.width);
						$long.stop(true).animate({
							left  : 0
						}, setup.animation_speed);
					},
					function() {
						$long.stop(true).animate({
							left  : setup.width
						}, setup.animation_speed);
					}
				);
				
			}
			
		});
	}
	
})(jQuery);

/**
 * Auto-Complete-Field für Teilnehmereinladungen zu Veranstaltungen
 */
(function($) {
	
	$.fn.attendeeinvitation = function(objects, selection) {

		var $invitation_list  = $('.attendee-type-user .selected-members'),
			$invitation_value = $('#attendee-user-value'),
			keyCode = $.ui.keyCode,
			methods = {
				addUser : function(user) {
				
					$link = $('<a>', {
						text  : user.label,
						click : function(event) {
							methods.removeThis($(this).parent());
							event.preventDefault();
						}
					});
					$user = $('<li>', {
						"class" : 'user',
						data : user,
						html : $link
					}).appendTo($invitation_list);
				
				},
				addEmail : function(email) {
					
					if(methods.validateEmailSyntax(email)) {
						methods.addUser({ 
							label : email,
							value : email,
							no_user : true
						});
						return true;
					}
					return false;
					
				},
				removeThis : function($element) {
					
					$element.remove();
					methods.actualizeSelection();
					
				},
				actualizeSelection : function() {
					
					var value = '',
						$list = $invitation_list.find('li.user');

					$list.each(function(index) {
						if(index > 0) value += ',';
						value += $(this).data('value');
					});
					$invitation_value.val(value);
					
					if($list.length == 0) {
						$invitation_list.find('li.no-element').show();
					} else {
						$invitation_list.find('li.no-element').hide();
					}
					
				},
				validateEmailSyntax : function(email) {

					var regexp = /^[\w-]+(\.[\w-]+)*@([a-z0-9-]+(\.[a-z0-9-]+)*?\.[a-z]{2,6}|(\d{1,3}\.){3}\d{1,3})(:\d{4})?$/;
					return regexp.test(email);

				},
				findSubstring : function(string, substring) {
					if($.trim(string.toLowerCase()).indexOf($.trim(substring.toLowerCase())) == -1) return false;
					return true;
				}
				
			};
			
		
		this.each(function() {
			
			var $this = $(this);

			$this.keydown(function(event) {
				if(event.keyCode === keyCode.ENTER) {
					if(methods.addEmail($.trim($this.val()))) {
						$this.val('');
					}
					methods.actualizeSelection();
					event.preventDefault();
				}
			});
			
			$this.autocomplete({
				
				delay  : 50,
				source : objects,
				search : function(event, ui) {
					
					var val    = $.trim($this.val()),
						result = [];
						
					$.each(objects, function() {
						if(methods.findSubstring(this.email, val) || methods.findSubstring(this.label, val)) {
							result.push(this);
						}
					});
					
					if(result) $this.autocomplete('response', result);
					
					return false;
		
				},
				focus  : function(event, ui) {
					$this.val(ui.item.label);
					return false;
				},
				select : function(event, ui) {
					methods.addUser(ui.item);
					methods.actualizeSelection();
					$this.val('');
					return false;
				}
				
			});
			
			$.each(selection, function() {
				if(this.no_user) {
					methods.addEmail(this.email);
				} else {
					methods.addUser(this);
				}
			});
			methods.actualizeSelection();
			
		});
		
	}
	
})(jQuery);

/**
 * Auto-Complete-Field für Node-Referenzen
 */
(function($) {

	$.fn.autocompleteinput = function() {
		
		var $this = this,
			$complete_id = $this.parent().parent().find("#object_complete_id"),
			$complete_delete = $this.parent().parent().find("#object_complete_delete");
			
		if($this.length > 0){
			$this.autocomplete({
				source: availableObjects,
				focus: function(event, ui) {
					$this.val(ui.item.label);
					return false;
				},
				select: function(event, ui) {
					$this.val(ui.item.label);
					$complete_id.val(ui.item.value);
					$complete_delete.removeClass('hide');
					return false;
				},
				change: function(event, ui) {
					var checker = false,
					errorLog = $('#warning_error_log_edit');
					
					if ( $this.val() == '' ) checker = true;
					
					if ( !checker ) {
						for (var i = 0; i < availableObjects.length; i++) {
							if ( availableObjects[i] && availableObjects[i].label == $this.val()) {
								checker = true;
								break;
							}
						}
					}
					
					if(!checker) {
						$('#object_complete_name').goTo();
						if(errorLog.hasClass('invisible')) {
							errorLog.removeClass('invisible');
							errorLog.addClass('visible');
						}
					} else {
						if(errorLog.hasClass('visible')) {
							errorLog.removeClass('visible');
							errorLog.addClass('invisible');
						}
					}
				}
			});
		}
		
	}

})(jQuery);

(function($) {
    $.fn.goTo = function() {
        $('html, body').animate({
            scrollTop: $(this).offset().top - 200 + 'px'
        }, 0);
        return this; // for chaining...
    }
})(jQuery);


(function($) {

	$.fn.autocompleteclear = function() {
	
		var $this = this,
			$complete_name = $('#object_complete_name'),
			$complete_id = $complete_name.parent().parent().find('#object_complete_id');
			
		$this.click(function(event) {
			$complete_name.val('');
			$complete_id.val('');
			$this.addClass('hide');
			event.preventDefault();
		});
		
	}

})(jQuery);



(function($) {
	
	var settings = {
		selectors : {
			hover_container : '#topmenu-firstandtwolevel-container',
			firstlevel : {
				menulink : '.firstlevel-link-container a'
			},
			secondlevel : {
				container : '.topmenu-secondlevel',
				section : '.topmenu-secondlevel-position'
			},
			anylevel : {
				container : '#topmenu-anylevel'
			},
			thirdlevel : {
				container : '.topmenu-thirdlevel-position',
				link      : '.thirdlevel-link-container a'
			},
			fourthlevel : {
				container : '.topmenu-fourthlevel-position'
			},
			links : 'a'
		},
		animation : {
			secondlevelcontainer : {
				speed: 500,
				easing : 'easeOutExpo'
			}
		}
		
	};
	
	$.fn.efgmenu = function(arguments) {
		
		if(typeof arguments == 'object') {
			$.extend(true, settings, arguments);
		} else if(typeof arguments != 'undefined') {
			$.error('Argument is not acceptable.');
		};
		
		var $this = this;
		
		var objects = {
			firstlevel : {
				menulink : this.find(settings.selectors.firstlevel.menulink)
			},
			secondlevel : {
				container : {
					obj : this.find(settings.selectors.secondlevel.container),
					height : this.find(settings.selectors.secondlevel.container).height()
				},
				section : this.find(settings.selectors.secondlevel.section)
			},
			anylevel : {
				container : this.find(settings.selectors.anylevel.container)
			},
			thirdlevel : {
				container : this.find(settings.selectors.thirdlevel.container),
				link      : this.find(settings.selectors.thirdlevel.link),
				selected  : this.find(settings.selectors.thirdlevel.link).filter('.selected')
			},
			fourthlevel : {
				container : this.find(settings.selectors.fourthlevel.container)
			},
			links : this.find(settings.selectors.links)
		};
		var data = {
			left : parseInt(objects.thirdlevel.container.width())+1
		};
		
		var methods = {
			initialState : function() {
				var $active = objects.anylevel.container.find(settings.selectors.fourthlevel.container + '.active');
			
				if($active.length == 1) {
					$active.stop(true, true).animate(
						{
							left : data.left,
							opacity: 1
						},
						settings.animation.speed,
						settings.animation.easing
					);
					objects.thirdlevel.selected.addClass('hover');
				}
				
			},
			resetCss : function() {
				
				// Positionierung der Vierten Ebene für Einblendung
				objects.fourthlevel.container.not('.active').css('left', 0);
				
				// selektiertes drittes lvl hervorheben
				objects.thirdlevel.selected.addClass('hover');
			}
		};
		
		// Einblenden des Submenus
		$this.find(settings.selectors.hover_container).hoverIntent(
			function() {
				objects.secondlevel.container.obj.height(objects.secondlevel.container.height);
				objects.secondlevel.container.obj.stop(true, true).slideDown(
					settings.animation.secondlevelcontainer.speed,
					settings.animation.secondlevelcontainer.easing
				);
			},
			function(){
				objects.secondlevel.container.obj.stop(true, true).slideUp(
					settings.animation.secondlevelcontainer.speed, 
					settings.animation.secondlevelcontainer.easing 
				);
			}
		);
		
		// Level 3 und 4 Managen
		objects.thirdlevel.link.hoverIntent({
			timeout : 100,
			over : function() {
				var $a  = $(this),
					$id = $a.attr('id').substr(8);
					
				objects.thirdlevel.selected.removeClass('hover');
					
				$.each(objects.fourthlevel.container, function() {
					var $unit = $(this);
					if($id == $unit.attr('id').substr(10)) {
						$unit.stop().animate(
							{
								left : data.left,
								opacity: 1
							},
							settings.animation.speed,
							settings.animation.easing
						);
					} else {
						$unit.stop().animate(
							{
								left : '0px',
								opacity: 0								
							},
							settings.animation.speed,
							settings.animation.easing
						);
					}
				});
			},
			out : function() {
				if(objects.thirdlevel.container.find('a.arrow').length == 0) {
					methods.initialState();
				}
			}
		});
		
		objects.anylevel.container.mouseleave(function() {
			
			objects.anylevel.container.find(settings.selectors.fourthlevel.container + ':not(.active)').stop().animate(
				{
					left : '0px',
					opacity: 0
				},
				settings.animation.speed,
				settings.animation.easing
			);
			
			methods.initialState();

		});
		
		$this.removeClass('js-inactive');
		methods.resetCss();
		objects.links.click(function() {
			this.blur();
		});
		
	}
	
})(jQuery);

(function($) {
	
	
	$.fn.collapse = function(arguments) {
		
		var settings = {
			selectors : {
				button : null,
				container : null
			},
			easing : 'easeInOutExpo',
			speed : 1000,
			closed_class : 'collapsed'
		};
		
		if(typeof arguments == 'object' && arguments.selectors && arguments.selectors.button && arguments.selectors.container) {
			$.extend(true, settings, arguments);
		} else {
			$.error('collapse: arguments are not acceptable.');
		};
		
		this.each(function() {
			
			var $this      = $(this),
				$button    = $this.find(settings.selectors.button);
			
			$button.click(function(event) {

				var $container = $this.find(settings.selectors.container);
				
				if($button.hasClass(settings.closed_class)) {
					$button.removeClass(settings.closed_class);
					$container.slideDown(settings.speed, settings.easing);
				} else {
					$container.slideUp(settings.speed, settings.easing, function() {
						$button.addClass(settings.closed_class);
					});
				}
				event.preventDefault();

			});
			
		});
		
	}
	
})(jQuery);

(function($) {
	
	$.fn.filtermanagement = function(arguments) {
		
		var settings = {
			selectors : {
				level_two_list : 'ul.level-two',
				level_one_tag : 'li.level-one',
				buttons : 'a'
			},
			speed: 500,
			easing : 'swing'
		};
		
		var storage = {};

		if(typeof arguments == 'object') {
			$.extend(true, settings, arguments);
		};
		
		this.find(settings.selectors.level_one_tag).hoverIntent(
			function() {
				var $this = $(this).find(settings.selectors.level_two_list);
					
				if($this.length > 0 && $this.hasClass('closed')) {
					$this.stop(true, true).slideDown(settings.speed, settings.easing);
				}
			},
			function() {
				var $this = $(this).find(settings.selectors.level_two_list);
				
				if($this.length >0 && $this.hasClass('closed') && $this.find('a.selected').length == 0) {
					$this.stop(true, true).slideUp(settings.speed, settings.easing);
				}
			}
		);
		
		this.find(settings.selectors.buttons).click(function(e) {
			
			var $this = $(this);
			
			if($this.hasClass('selected')) {
				delete storage[$this.attr('rel')];
				$this.removeClass('selected');
			} else{
				storage[$this.attr('rel')] = 'selected';
				$this.addClass('selected');
			}
			
			e.preventDefault();
		});
		
	}
	
})(jQuery);


(function($) {
	
	$.fn.highlighter = function(arguments) {
		
		var options = {
			animate : true,
			selectors : {
				background : 'this',
				color : '*'
			},
			colors : {
				background : '#ee8025',
				color : '#FFFFFF'
			},
			speed : 250,
			easing : 'swing',
			highlight_class : 'highlight'
		};
		
		if(typeof arguments == 'object') {
			$.extend(true, options, arguments);
		}
		
		var $this = this;
		
		this.each(function() {
			
			var $storage = {
				background : null,
				color : {}
			};
				
			var $link = $(this);
			$link.hover(
				function() {

					if(options.selectors.background == 'this') {
						var $target = $link;
					} else {
						var $target = $link.find(options.selectors.background);
					}

					if(options.animate) {

						if(!$storage.background) {
							$storage.background = $target.css('backgroundColor');
						}

						$target.stop().animate({
							backgroundColor : options.colors.background
						}, options.speed, options.easing);
						
						$link.find(options.selectors.color).each(function(){
							var $fis = $(this);
							if(!$storage.color[ $fis.attr('class') ]) $storage.color[ $fis.attr('class') ] = $fis.css('color');
							$fis.stop().animate({
								color : options.colors.color
							}, options.speed, options.easing);
						});

					}

					$target.addClass(options.highlight_class);
					$link.find(options.selectors.color).addClass(options.highlight_class);

				},
				function() {

					if(options.selectors.background == 'this') {
						var $target = $link;
					} else {
						var $target = $link.find(options.selectors.background);
					}

					if(options.animate) {

						$target.stop().animate({
							backgroundColor : $storage.background
						}, options.speed, options.easing);
						
						$link.find(options.selectors.color).each(function() {
							var $fis = $(this);
							var $fclass = $fis.attr('class').split(' ');
							$fis.stop().animate({
								color : $storage.color[ $fclass[0] ]
							}, options.speed, options.easing);
						});

					}
					
					$target.removeClass(options.highlight_class);
					$link.find(options.selectors.color).removeClass(options.highlight_class);

				}
			);
		});
		
	}
	
})(jQuery);


(function($) {
	
	$.fn.gallery = function(arguments) {
		
		var $this = this,
			setup = {
				animation_speed : 250,
				selectors : {
					headline : '.attribute-headline h1:first',
					navigation : {
						current : '.navigation .current',
						button : {
							forward : '.navigation .forward',
							back    : '.navigation .back'
						}
					},
					caption  : '.attribute-caption',
					download : '.node-download .class-media',
					media    : '.attribute-media img:first, .attribute-media iframe:first',
					comments : '.container-comments'
				},
				gallery : {},
				ajax : {
					commtents_base : '/comments/view/'
				}
			},
			storage   = {
				media : [],
				ajax_id : 0
			},
			intervals = [],
			lastState,
			history = window.History,
			mediaChangeInProgress = false,
			methods   = {
				preload : function() {
					
					if(setup.gallery.media) {
						$.each(setup.gallery.media, function() {
							storage.media.push(
								this.class_identifier == 'youtube' ? methods.generateYoutubeFrame(this) : methods.generateImage(this)
							);
						});
						
					}
					
				},
				manageButtons : function(index) {
					
					index--;
					if(storage.media[index+1]) {
						methods.hideAndUnhideButtons('forward', 'show');
					} else {
						methods.hideAndUnhideButtons('forward', 'hide');
					}
					if(storage.media[index-1]) {
						methods.hideAndUnhideButtons('back', 'show');
					} else {
						methods.hideAndUnhideButtons('back', 'hide');
					}
					
				},
				hideAndUnhideButtons : function(direction, action) {
					
					var $button = $this.find(setup.selectors.navigation.button[direction]);
					
					if(action === 'hide' && $button.css('opacity') != 0) {
						$button.animate({ opacity : 0 }, setup.animation_speed, function() {
							$button.addClass('hidden');
						});
					} else if(action === 'show' && ($button.css('opacity') != 1 || $button.hasClass('hidden'))) {
						if($button.css('opacity') > 0) $button.css('opacity', 0);
						$button.removeClass('hidden');
						$button.animate({ opacity : 1 }, setup.animation_speed);
					}
					
				},
				registerButtons : function() {
					
					var $forward = $this.find(setup.selectors.navigation.button.forward),
						$back    = $this.find(setup.selectors.navigation.button.back);
						
					$forward.click(function(event) {
						if(!mediaChangeInProgress) {
							mediaChangeInProgress = true;
							var current = parseInt($this.find(setup.selectors.navigation.current).text())+1;
							if(history.enabled) {
								methods.pushState(current);
							} else {
								methods.switchMedia(current);
							}
							methods.manageButtons(current);
						}
						event.preventDefault();
					})
					
					$back.click(function(event) {
						if(!mediaChangeInProgress) {
							mediaChangeInProgress = true;
							var current = parseInt($this.find(setup.selectors.navigation.current).text())-1;
							if(history.enabled) {
								methods.pushState(current);
							} else {
								methods.switchMedia(current);
							}
							methods.manageButtons(current);
						}
						event.preventDefault();
					})
						
					
				},
				switchMedia : function(index) {
					
					index--;
					if(!storage.media[index]) return false;
					
					var $target   = storage.media[index],
						tdata     = $target.data(),
						$media    = $this.find(setup.selectors.media),
						$current  = $this.find(setup.selectors.navigation.current),
						$headline = $this.find(setup.selectors.headline),
						$caption  = $this.find(setup.selectors.caption),
						$download = $this.find(setup.selectors.download),
						$path     = $('#path .path-text');
					
					$current.text(index+1);
					
					$target.css({
						visibility : 'hidden', 
						display    : 'block',
						position   : 'absolute',
						width      : $media.width()
					});
					
					if($target.data('class_identifier') == 'youtube') {
						$target.css(
							'height', 
							$media.width() * tdata.aspect_multiplier + 30
						);
					}
					
					// if($media.data('class_identifier') == 'youtube') {
						// $media.parent().height($media.height());
						// $media.remove();
					// }
					
					$target.appendTo('body');
					
					var height = $target.height();
					
					// JS ist schneller als die Renderengine!
					intervals[index] = setInterval(function() {
						height = $target.height();
						if(height > 0) {
							clearInterval(intervals[index]);
							$target.css({
								visibility : 'visible',
								display    : 'none',
								position   : 'static'
							});
							
							$media.fadeOut(setup.animation_speed);
							$media.parent().animate(
								{
									height : height
								}, 
								setup.animation_speed,
								function() {
									$target.appendTo($media.parent());
									$target.fadeIn(setup.animation_speed);
									$media.appendTo('body');
									mediaChangeInProgress = false;
								}
							);
							
						}
					}, 10);
					
					$headline.fadeOut(setup.animation_speed, function() {
						$headline.text(tdata.headline);
						$headline.fadeIn(setup.animation_speed);
					});
					$caption.fadeOut(setup.animation_speed, function() {
						$caption.html(tdata.caption);
						$caption.fadeIn(setup.animation_speed);
					});
					$path.fadeOut(setup.animation_speed, function() {
						$path.text(tdata.headline);
						$path.fadeIn(setup.animation_speed);
					});
					
					if(tdata.download) {
						$download.attr('href', tdata.download);
						$download.find('.filesize').text(tdata.filesize);
						$download.parent().filter(':hidden').fadeIn(setup.animation_speed);
					} else {
						$download.parent().fadeOut(setup.animation_speed);
					}
					
					// stuppst das Abholen der Kommentare an
					methods.callComments(tdata.node_id);
					
					return true;
					
				},
				callComments : function(node_id) {
					
					storage.ajax_id = node_id;
					
					$.getJSON(
						setup.ajax.commtents_base + node_id,
						function(data) {
							if(storage.ajax_id == node_id) methods.plantComments(data);
					});
					
					
				},
				plantComments : function(data) {
					
					if(data.status === 'success') {
						$this.find(setup.selectors.comments).replaceWith(data.response);
					}
					
				},
				pushState : function(index) {
					
					var $target = storage.media[index-1],
						state   = history.getState(),
						title   = state.title;

					if(title === '') title = document.title;
						
					history.pushState({ index : index }, $target.data('headline') + title.substr(title.indexOf(' / ')), $target.data('href'));
					
				},
				bindStateChange : function() {
					
					history.Adapter.bind(window, 'statechange', function(event) {
						var state = history.getState();
						if(typeof state.data.index !== 'undefined') methods.switchMedia(state.data.index);
					});
					
				},
				generateYoutubeFrame : function(youtube) {
					
					return $('<iframe>', {
						'class'     : 'youtube-player',
						type        : 'text/html',
						src         : 'http://www.youtube.com/embed/'+youtube.src,
						frameborder : 0,
						data        : youtube
					});
	
				},
				generateImage : function(image) {
					
					return $('<img>', {
						src : image.src,
						data : image
					});
					
				}
			};
		
		
		$.extend(true, setup, arguments);
		
		methods.preload();
		methods.registerButtons();
		
		if(history.enabled) methods.bindStateChange();
		
	}
	
})(jQuery);

(function($, undefined){
	
	$.fn.userregistration = function() {
		
		var setup = {
				selectors : {
					ajax    : '.ajax-icon',
					buttons : '.button_link'
				},
				classes : {
					loading : 'loading',
					accept  : 'accept',
					tick    : 'tick'
				},
				animation_speed : 500
		};

		this.each(function() {
			
			var $this     = $(this),
				$ajax     = $this.find(setup.selectors.ajax),
				$buttons  = $this.find(setup.selectors.buttons),
				collab_id = $this.attr('rel');
				
			$buttons.click(function(event) {
				
				var $this     = $(this),
					user_id   = $this.attr('rel'),
					is_accept = $this.hasClass(setup.classes.accept);
					
				$buttons.slideUp(setup.animation_speed);
					
				$ajax.addClass(setup.classes.loading);
				$ajax.removeClass(setup.classes.tick);
				
				$.getJSON(
					(is_accept ? '/ruser/addmemberstate/' : '/ruser/removememberstate/') + user_id + '/ajax',
					function(json) {
						if(json !== false) {
							$ajax.removeClass(setup.classes.loading);
							$ajax.addClass(setup.classes.tick);
							
							$.get('/rcollaboration/deactivatecollaboration/' + collab_id + '/ajax');
							
						}
					}
				);
				
				event.preventDefault();
				
			});
		
		});
		
	};
	
	$.fn.memberstate = function() {

		this.each(function() {
		
			var $this = $(this),
				user_id = $this.attr('rel');
			
			$this.click(function(event) {
				
				var is_true = $this.hasClass('true');
				
				$this.addClass('loading');
				
				$.get(
					(is_true ? '/ruser/removememberstate/' : '/ruser/addmemberstate/') + user_id + '/ajax',
					function(json) {
						if(json) {
							$this.removeClass('loading true false').addClass(is_true ? 'false' : 'true');
						}
					}
				);
				
				event.preventDefault();
			});
			
		});

		
	}
	
})(jQuery);

(function($) {
	
	$.fn.deactivateCollaboration = function() {
		
		var setup = {
			animation_speed : 500,
			selectors : {
				message_count : '.message-count',
				list_items    : 'ul.item-list > li',
				empty_mesage  : '#empty-message'
			}
		};
		
		this.each(function() {
			
			var $this = $(this),
				$msgcount = $(setup.selectors.message_count),
				$list = $(setup.selectors.list_items),
				$empty_msg = $(setup.selectors.empty_mesage);
				
			$this.click(function(event) {

				$this.removeClass('tick-orange').addClass('loading');

				$.get(
					$this.attr('href') + '/ajax', 
					function(json) {

						if(json) {

							$this.parent().slideUp(setup.animation_speed, function() {
								if($list.filter(':visible').length == 0) {
									$empty_msg.hide().removeClass('hide').slideDown(setup.animation_speed);
								}
							});

							if(parseInt($msgcount.text()) > 0) $msgcount.text(parseInt($msgcount.text()-1));

						}

					}
				);

				event.preventDefault();
			});
			
		});
		
	}
	
})(jQuery);


// http://efg.local/ruser/removemberstate/1370/ajax
// http://efg.local/ruser/addmemberstate/1370/ajax


String.prototype.trim = function() {
  return this
  	.replace(/^\s*/, '')
  	.replace(/\s*$/, '')
  	.replace(/\n*/g, '')
  	.replace(/\t*/g, '')
  	.replace(/>\s*</g, '><')
  	.replace(/\s{2,}/g, ' ');
}

/**
 * Erweitert Arrays um die Methode in_array
 * Beispiel: histack.in_array(needle)
 */
Array.prototype.in_array = function(needle) {
	for(var i=0; i < this.length; i++) {
		if(this[ i ] === needle) {
			 return true;
		}
	}
	return false;
};

