
	/* Loading Bar */
	var loading = false;

	function startLoading() {
		if(!loading) {
			$.loading(true, { pulse: 'ellipsis' });
			loading = true;
		}
	}
	
	function stopLoading() {
		if(loading) {
			$.loading(false);
			loading = false;
		}
	}
	
	/* Custom Overlay */
	
	var overlay = true;
	
	function addOverlay() {
		if(overlay != false) {
		overlay = ($('<div></div>').addClass('ui-widget-overlay'))
			.appendTo(document.body)
			.css({
				width: $(window).width(),
				height: $(window).height(),
				zIndex: 1001
			});
		}
	}
	
	function removeOverlay() {
		$('body > div.ui-widget-overlay').remove();
	}
	
	/* help functions */
	
	function getUrlVars(url)
	{
		var vars = new Object();
		
		if(url.length > 0)
			var hashes = url.slice(url.indexOf('?') + 1).split('&');
		else
			var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
		for(var i = 0; i < hashes.length; i++)
		{
			hash = hashes[i].split('=');
			vars[hash[0]] = hash[1];
		}
		return vars;
	}
	

	/* Datepicker */
	
	function initDatepicker() {
		$.datepicker.regional['de'] = {
			closeText: 'schließen',
			prevText: '&#x3c;zurück',
			nextText: 'Vor&#x3e;',
			currentText: 'heute',
			monthNames: ['Januar','Februar','März','April','Mai','Juni',
			'Juli','August','September','Oktober','November','Dezember'],
			monthNamesShort: ['Januar','Februar','März','April','Mai','Juni',
			'Juli','August','September','Oktober','November','Dezember'],
			dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],
			dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'],
			dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'],
			dateFormat: 'yy-mm-dd', firstDay: 1,
			isRTL: false
		};
		$.datepicker.setDefaults($.datepicker.regional['de']);
	}
	
	function addDatepicker(field, remove, birthday) {
		input = document.getElementById(field);
		
		if (! input)
			return false;
		
		if (remove === undefined)
			remove = true;
		
		var notSet = 'Bitte auswählen';
		
		function datepickerChangeField() {
			if ($('#' + field).val() == '') {
				$('#' + field + '_show').text(notSet);
				
				if (remove)
					$('#' + field + '_remove').css('display', 'none');
			}
			else {
				d = $.datepicker.parseDate('yy-mm-dd', $('#' + field).val());
				date = d.getDate() + '';
				month = (d.getMonth() + 1) + '';
				
				$('#' + field + '_show').text((date.length == 1 ? '0' + date : date) + '.' + (month.length == 1 ? '0' + month : month) + '.' + d.getFullYear());
				
				if (remove)
					$('#' + field + '_remove').css('display', 'inline-block');
			}
		}
	
		$('#' + field).before('<span id="' + field + '_show">' + notSet + '</span>'); /* add show field */
		$('#' + field + '_show').css('margin-right', '5px');
		
		if (remove) {
			$('#' + field).after('<a id="' + field + '_remove" class="button-default ui-state-default ui-corner-all" href="#">Entfernen</a>'); /* add remove button */
			addHoverButtonEffect('#' + field + '_remove');
		}
		
		datepickerChangeField();
		
		if (remove) {
			$('#' + field + '_remove').bind('click', function(e){
				$('#' + field).val('');
				$('#' + field + '_show').text(notSet);
				$('#' + field + '_remove').css('display', 'none');
				return false;
			});
		}
		
		/* add datepicker to field */
		$('#' + field).datepicker(
			{
				changeMonth: true,
				changeYear: true,
				dateFormat: 'yy-mm-dd',
				showOn: 'both',
				buttonImage: pageUrl + '/images/calendar.gif',
				buttonImageOnly: true,
				onClose: function(dateText, inst) {
					$('#' + field + '_show').text(dateText);
					datepickerChangeField();
				},
				showButtonPanel: true
			}
		);
		
		if (birthday)
			$('#' + field).datepicker('option', 'yearRange', '1910:' + (new Date()).getFullYear());
	}
	
	function disableDatepicker(field) {
		$(document).ready(function(){
			$('#' + field).datepicker('disable');
		});
	}
	
	/* show message dialog */
	
	function showMessageDialog(title, message, callback){
		var new_dialog = '<div class="aoug-dialog" title="' + title +'">' + message + '</div>';
		$(new_dialog).dialog({
			bgiframe: true,
			modal: true,
			buttons: {
				Ok: function() {
					$(this).dialog('close');
					if(callback) {
						callback();
					}
				}
			}
		});
	}
	
	/* company choice */
	
	function runCompanyChoice(prefix, speed) {
		if($('#' + prefix + '_company').val() > 0) {
			$('.' + prefix + '-new-company').hide(speed);
		}
		else {
			$('.' + prefix + '-new-company').show(speed);
		}
	}
	
	function addCompanyChoice(prefix) {
		
		runCompanyChoice(prefix, 0);
		$('#' + prefix + '_company').bind('change', function(e){
			runCompanyChoice(prefix, 1000);
		});
	}
	
	/* check Mail */
	
	function checkMail(email, field) {
		startLoading();
		jQuery.post(
			pageUrl + '/AJAX',
			{
				'action': 'checkMail',
				'email': email
			},
			function(data) {
				$('#' + field).removeClass('error');
				$('#' + field + ' strong.message').remove();
				if(data['success'] == false) {
					$('#' + field).addClass('error');
					$('#' + field).prepend('<strong class="message">' + data['message'] + '</strong>');
				}
				stopLoading();
			},
			'json'
		);
	}	
	
	/* become member */
	function becomeMember(type) {
		startLoading();
		jQuery.post(
			pageUrl + '/AJAX',
			{
				'action': 'becomeMember',
				'type': type
			},
			function(data) {
				if(data['success'] == true) {
					showMessageDialog('Abonnement angefordert',data['message']);

					$('#sidebar_become_member').css('display', 'none');
				}
				stopLoading();
			},
			'json'
		);
	}	
	
	function ajaxPopup(content) {
		startLoading();
		jQuery.post(
			pageUrl + '/AJAX',
			{
				'action': 'content_get',
				'content': content
			},
			function(data) {
				if (data['success']) {
					var new_dialog = '<div class="aoug-ajaxpopup">' + data['message'] + '</div>';
					$(new_dialog).dialog({
						bgiframe: true,
						modal: true,
						height: 500,
						width: 800,
						buttons: {
							Ok: function() {
								$(this).dialog('close');
							}
						}
					});
				}
				stopLoading();
			},
			'json'
		);
	}	
	
	function addHoverButtonEffect(name) {
		$(name).hover(
			function(){ 
				$(this).addClass("ui-state-hover"); 
			},
			function(){ 
				$(this).removeClass("ui-state-hover"); 
			}
		).mousedown(function(){
			$(this).addClass("ui-state-active"); 
		})
		.mouseup(function(){
				$(this).removeClass("ui-state-active");
		});
	}
	
	/* overlay */
	function addOverlayChoice(trigger) {
		if(!$('#'+ trigger).is('*'))
			return false;

		var single = !$('#'+ trigger).attr('multiple');
			
		/* build html dialog */
		if(!$('div.choice_dialog_'+ trigger).is('*')) {
			$('body').append('<div class="choice_dialog choice_dialog_'+ trigger +'"><div class="wrap"></div></div>');
		}
		
		/* save selected values */
		var selected = $('#'+ trigger +' option:selected');
		var selected_count = 0;
		
		/* replace select through a button */
		$('#'+ trigger).attr('id', trigger +'_hidden_select');
		$('#'+ trigger +'_hidden_select').attr('name', trigger +'_hidden_select');
		$('#'+ trigger +'_hidden_select').css('display', 'none');
		
		$('#'+ trigger +'_hidden_select').after('<a id="'+ trigger +'" class="button-default ui-state-default ui-corner-all" href="#">Auswählen</a>');
		addHoverButtonEffect('#'+ trigger);		
		
		/* type for choice */
		var type = single ? 'radio' : 'checkbox';
		
		/* build dialog */
		var wrap = $('div.choice_dialog_'+ trigger).find("div.wrap"); 
		/* add searchbar */
		wrap.append('<div class="choice_dialog_searchbar"><input type="text" id="'+ trigger +'_searchbar" value="" /></div>');
		/* add entries */
		$('#'+ trigger +'_hidden_select option').each(function (i) {
			if($(this).val() > 0) {
				wrap.append(
					'<div class="choice_dialog_entry">' +
						'<input type="'+ type +'" name="'+ trigger +'_overlay" id="'+ trigger +'_overlay_'+ $(this).val() +'" value="'+ $(this).val() +'" />' +
						'<label for="'+ trigger +'_overlay_'+ $(this).val() +'"></label>' +
					'</div>'
				);
				$('label[for='+ trigger +'_overlay_'+ $(this).val() +']').text($(this).text());
			}
		});
		
		/* bind search function */
		
		$('#'+ trigger +'_searchbar').bind('keyup', function () {
			if($('#'+ trigger +'_searchbar').val().length > 0) {
				$('div.choice_dialog_entry').each(function () { /* find elements - not case sensitiv */
					if($(this).find('label').text().toLowerCase().indexOf($('#'+ trigger +'_searchbar').val().toLowerCase()) > -1) {  
						$(this).css('display', 'block');
					}
					else {
						$(this).css('display', 'none');
					}
				});			
			}
			else {
				$('.choice_dialog_entry').css('display', 'block');
			}	
		});
		
		/* add form fields */
		$('#'+ trigger).before('<span id="'+ trigger +'_text"></span>');
		$('#'+ trigger).after('<div id="'+ trigger +'_values"></div>');
		
		
		if(single) {
			if(selected.val() > 0) { 
			
				/* add values to form */
				$('#'+ trigger +'_text').text(selected.text());
				$('#'+ trigger +'_values').append('<input type="hidden" name="' + trigger + '" value="' + selected.val() + '" />');
				
				/* select values */
				$('#'+ trigger +'_overlay_'+ selected.val()).attr('checked', 'checked'); 
			}
		}
		else {
			selected_count = selected.length;
			
			/* add values to form */
			selected.each(function(i){
				$('#'+ trigger +'_values').append('<input type="hidden" name="' + trigger + '[]" value="' + $(this).val() + '" />');
				$('#'+ trigger +'_overlay_'+ $(this).val()).attr('checked', 'checked'); 
			});
			
			if(selected_count > 0) { /* show selected entries count */
				if(selected_count == 1)
					$('#'+ trigger +'_text').text('Ein Eintrag ausgewählt.');
				else
					$('#'+ trigger +'_text').text(selected_count + ' Einträge ausgewählt.');
			}		
		}

		/* add dialog */
		$('div.choice_dialog_'+ trigger).dialog({
			bgiframe: true,
			autoOpen: false,
			width: 500,
			modal: true,
			title: 'Auswahl',
			buttons: {
				'Abbrechen': function() {
					var checked_input;
					$('input[name='+ trigger +'_overlay]').each(function(i){
						if($('#'+ trigger +'_values').find('input[value='+ $(this).val() +']').is('*')) {
							$(this).attr('checked', 'checked');
						}
						else {
							$(this).removeAttr('checked');
						}
					});
					$(this).dialog('close');
				},
				'Entfernen': function() {
					$('#'+ trigger +'_text').remove();
					$('#'+ trigger +'_values').remove();
					$('input[name='+ trigger +'_overlay]').each(function(i){
						$(this).removeAttr('checked');
					});
					$(this).dialog('close');
				},
				'Wählen': function() {
						if(single) {
							var field_id = trigger +'_overlay_' + $('input[name='+ trigger +'_overlay]:checked').val();
							var title = $('label[for='+ field_id +']').text();
							
							$('#'+ trigger +'_text').text(title);
							$('#'+ trigger +'_values').html('<input type="hidden" name="' + trigger + '" value="' + $('input[name='+ trigger +'_overlay]:checked').val() + '" />');
						} else {
							selected = $('input[name='+ trigger +'_overlay]:checked');
							selected_count = selected.length;
							
							$('#'+ trigger +'_values').html('');
							selected.each(function(i){
								$('#'+ trigger +'_values').append('<input type="hidden" name="' + trigger + '[]" value="' + $(this).val() + '" />');
							});
							
							if(selected_count > 0) { /* show selected entries count */
								if(selected_count == 1)
									$('#'+ trigger +'_text').text('Ein Eintrag ausgewählt.');
								else
									$('#'+ trigger +'_text').text(selected_count + ' Einträge ausgewählt.');
							}		
							else
								$('#'+ trigger +'_text').text('');
						}
						$(this).dialog('close');
				}
			}
		});
		
		$('#'+ trigger).click(function() {
			$('#'+ trigger +'_searchbar').val('');

			$('div.choice_dialog_entry').css('display', 'block');

			$('div.choice_dialog_'+ trigger).dialog('open');
			return false;
		});	
	}