// Infos aus Cookie lesen
function cookie_lesen(name) {
	var i = 0;  // Suchposition im Cookie
	var suche = name + '=';
	while (i < document.cookie.length) {
		if (document.cookie.substring(i, i + suche.length) == suche) {
			var ende = document.cookie.indexOf(';', i + suche.length);
			ende = (ende > -1) ? ende : document.cookie.length;
			var cook = document.cookie.substring(i + suche.length, ende);
			return unescape(cook);
		}
		i++;
	}
	return null;
}

// Infos in Cookie schreiben
function cookie_schreiben(name, wert, domain, expires, path, secure) {
	var cook = name + '=' + unescape(wert);
	cook += (domain) ? '; domain=' + domain : '';
	cook += (expires) ? '; expires=' + expires : '';
	cook += (path) ? '; path=' + path : '';
	cook += (secure) ? '; secure' : '';
	document.cookie = cook;
}

// Cookie löschen
function cookie_loeschen(name) {
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = cookie_lesen(name);
	document.cookie = name + '=' + cval + '; expires=' + exp.toGMTString();
}

// Popups erzeugen: onclick="popup(this.href (wenn href des Links; ansonsten URL), zahl_breite, zahl_hoehe, '_name'); return false;"
function popup(url, width, height, name) {
	if (!name) {
		name = '_popup';
	}
	pop = window.open(url.replace(/&amp;/g, '&'), name, 'height=' + height + ',left=100,top=100,toolbar=no,resizable=yes,scrollbars=yes,width=' + width);
	pop.blur();
	pop.focus();
	return false;
}

// Formularfeld mit Text füllen (vorherige Eingabe wird ignoriert)
function formularfeld_fuellen(form_text, popup, form_name, text_name) {
	var textfeld;
	if (!popup) {
		textfeld = document.forms[form_name].elements[text_name];
	} 
	else {
		textfeld = opener.document.forms[form_name].elements[text_name];
	}
	textfeld.value = form_text;
	if (!popup) {
		textfeld.focus();
	}
	else {
		window.close();
	}
	return false;
}

function setDivText(c1, text) {
	document.getElementById(c1).innerHTML = text;
}

// Menü ein-/ausklappen
function klappen(name, rueck) {
	if (rueck == true) {
		if (cookie_lesen('klapp[' + name + ']') == 'block') {
			$('#' + name).hide('blind');			
			cookie_loeschen('klapp[' + name + ']');
		}
		else {
			$('#' + name).show('fold');
			cookie_schreiben('klapp[' + name + ']', 'block');
		}
	}
	else {
		if (cookie_lesen('klapp[' + name + ']') == 'none') {
			$('#' + name).show('fold');
			cookie_loeschen('klapp[' + name + ']');
		}
		else {
			$('#' + name).hide('blind');
			cookie_schreiben('klapp[' + name + ']', 'none');
		}
	}
}

// Passwort auf Sicherheit prüfen
function pruefe_passwort(feld1, feld2, formname, inputfield, outputfield) {
	var securityindex = 10;
	var char_old;
	var char_new;
	var charEqual = true;
	var i;
	var pwd = document.forms[formname].elements[inputfield].value;
	var feld1 = document.forms[formname].elements[feld1].value;
	var feld2 = document.forms[formname].elements[feld2].value;

	// Länge prüfen, min. 8 Zeichen, max. 20 Zeichen
	if (pwd.length < 8) { //|| pwd.length > 20) {
		securityindex = securityindex - 20;
	}
	// Kennwort auf unerlaubte Zeichen prüfen
	//if (pwd.match(/[^a-zA-Z0-9\*\+-\/%~&\|@\\#\*\$\<\>\(\)\{\}\[\]´`\^_\.,;:!\?]/g)) {
		//securityindex = securityindex - 20;
	//}
	// auf gleiche aufeinanderfolgende Zeichen prüfen
	char_new = pwd.charAt(pwd.length - 1);
	for (i = 0 ; i < pwd.length - 1; i++) {
		char_old = pwd.charAt(i);
		if (char_new == char_old && charEqual == true) {
			charEqual = true;
		}
		else {
			charEqual = false;
		}
	}
	if (charEqual == true) {
		securityindex = securityindex - 20;
	}
	// Kennwort auf Mail überprüfen
	if (pwd.toLowerCase() == feld1.toLowerCase()) {
		securityindex = securityindex - 20;
	}
	// Kennwort auf Nickname überprüfen
	if (pwd.toLowerCase() == feld2.toLowerCase()) {
		securityindex = securityindex - 20;
	}
	// Kennwort auf Anzahl der Sonderzeichen prüfen
	var Ergebnis;
	Ergebnis = pwd.match(/[\+\-\/%~&|@\\#\*\$\<\>\(\)\{\}\[\]´`\^_\.,;:!\?]/g);
	if (Ergebnis && Ergebnis.length < 2) {
		securityindex = securityindex - 5;
	}
	else if (Ergebnis == null) {
		securityindex = securityindex - 5;
	}

	if (securityindex <= 0 ) {
		document.forms[formname].elements[outputfield].style.backgroundColor = "#D61919";
		document.forms[formname].elements[outputfield].value="Das Passwort ist sehr unsicher.";
	}
	else if (securityindex <= 9) {
		document.forms[formname].elements[outputfield].style.backgroundColor = "#F18218";
		document.forms[formname].elements[outputfield].value="Das Passwort ist leicht unsicher.";
	}
	else {
		document.forms[formname].elements[outputfield].style.backgroundColor = "#3BB312";
		document.forms[formname].elements[outputfield].value="Das Passwort ist sicher.";
	}
}

// Zahlen formatieren
function zahl(nummer) {
	var nummer = '' + Math.ceil(nummer);
	var laenge = nummer.length;
	if (laenge > 3) {
		var mod = laenge % 3;
		var output = (mod > 0 ? (nummer.substring(0,mod)) : '');
		for (i = 0; i < Math.floor(laenge / 3); i++) {
			if ((mod == 0) && (i == 0)) {
				output += nummer.substring(mod + 3 * i, mod + 3 * i + 3);
			}
			else {
				output += '.' + nummer.substring(mod + 3 * i, mod + 3 * i + 3);
			}
		}
		return (output);
	}
	else {
		return nummer;
	}
}

// http://jqueryui.com/demos/autocomplete/#combobox
(function( $ ) {
	$.widget( "ui.combobox", {
		_create: function() {
			var self = this,
				select = this.element.hide(),
				selected = select.children( ":selected" ),
				value = selected.val() ? selected.text() : "";
			var input = this.input = $( "<input>" )
				.insertAfter( select )
				.val( value )
				.autocomplete({
					delay: 0,
					minLength: 0,
					source: function( request, response ) {
						var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
						response( select.children( "option" ).map(function() {
							var text = $( this ).text();
							if ( this.value && ( !request.term || matcher.test(text) ) )
								return {
									label: text.replace(
										new RegExp(
											"(?![^&;]+;)(?!<[^<>]*)(" +
											$.ui.autocomplete.escapeRegex(request.term) +
											")(?![^<>]*>)(?![^&;]+;)", "gi"
										), "<strong style='color:white'>$1</strong>" ),
									value: text,
									option: this
								};
						}) );
					},
					select: function( event, ui ) {
						ui.item.option.selected = true;
						self._trigger( "selected", event, {
							item: ui.item.option
						});
					},
					change: function( event, ui ) {
						if ( !ui.item ) {
							var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
								valid = false;
							select.children( "option" ).each(function() {
								if ( $( this ).text().match( matcher ) ) {
									this.selected = valid = true;
									return false;
								}
							});
							if ( !valid ) {
								// remove invalid value, as it didn't match anything
								$( this ).val( "" );
								select.val( "" );
								input.data( "autocomplete" ).term = "";
								return false;
							}
						}
					}
				})
				.addClass( "ui-widget ui-widget-content ui-corner-left" );

			input.data( "autocomplete" )._renderItem = function( ul, item ) {
				return $( "<li></li>" )
					.data( "item.autocomplete", item )
					.append( "<a>" + item.label + "</a>" )
					.appendTo( ul );
			};

			this.button = $( "<button type='button'></button>" )
				.attr( "tabIndex", -1 )
				.attr( "title", "Alles zeigen" )
				.insertAfter( input )
				.button({
					icons: {
						primary: "ui-icon-triangle-1-s"
					},
					text: false
				})
				.removeClass( "ui-corner-all" )
				.addClass( "ui-corner-right ui-button-icon" )
				.click(function() {
					// close if already visible
					if ( input.autocomplete( "widget" ).is( ":visible" ) ) {
						input.autocomplete( "close" );
						return;
					}

					// work around a bug (likely same cause as #5265)
					$( this ).blur();

					// pass empty string as value to search for, displaying all results
					input.autocomplete( "search", "" );
					input.focus();
				});
		},

		destroy: function() {
			this.input.remove();
			this.button.remove();
			this.element.show();
			$.Widget.prototype.destroy.call( this );
		}
	});
})( jQuery );


/*
*
* Copyright (c) 2010 C. F., Wong (<a href="http://cloudgen.w0ng.hk">Cloudgen Examplet Store</a>)
* Licensed under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
*/
(function($,len,createRange,duplicate){
	$.fn.caret=function(options,opt2){
		var start,end,t=this[0],browser=$.browser.msie;
		if(typeof options==="object" && typeof options.start==="number" && typeof options.end==="number") {
			start=options.start;
			end=options.end;
		} else if(typeof options==="number" && typeof opt2==="number"){
			start=options;
			end=opt2;
		} else if(typeof options==="string"){
			if((start=t.value.indexOf(options))>-1) end=start+options[len];
			else start=null;
		} else if(Object.prototype.toString.call(options)==="[object RegExp]"){
			var re=options.exec(t.value);
			if(re != null) {
				start=re.index;
				end=start+re[0][len];
			}
		}
		if(typeof start!="undefined"){
			if(browser){
				var selRange = this[0].createTextRange();
				selRange.collapse(true);
				selRange.moveStart('character', start);
				selRange.moveEnd('character', end-start);
				selRange.select();
			} else {
				this[0].selectionStart=start;
				this[0].selectionEnd=end;
			}
			this[0].focus();
			return this
		} else {
		  if(browser){
				var selection=document.selection;
               if (this[0].tagName.toLowerCase() != "textarea") {
                   var val = this.val(),
                   range = selection[createRange]()[duplicate]();
                   range.moveEnd("character", val[len]);
                   var s = (range.text == "" ? val[len]:val.lastIndexOf(range.text));
                   range = selection[createRange]()[duplicate]();
                   range.moveStart("character", -val[len]);
                   var e = range.text[len];
               } else {
                   var range = selection[createRange](),
                   stored_range = range[duplicate]();
                   stored_range.moveToElementText(this[0]);
                   stored_range.setEndPoint('EndToEnd', range);
                   var s = stored_range.text[len] - range.text[len],
                   e = s + range.text[len]
               }
			// End of Modification
           } else {
				var s=t.selectionStart,
					e=t.selectionEnd;
			}
			var te=t.value.substring(s,e);
			return {start:s,end:e,text:te,replace:function(st){
				return t.value.substring(0,s)+st+t.value.substring(e,t.value[len])
			}}
		}
	}
})(jQuery,"length","createRange","duplicate");

// Füllt ein Formularfeld mit den entsprechenden Tags
function bbcode_eingeben(id, starttag, endtag) {
	var range = $('#' + id).caret();
	var text = $('#' + id).val();
	$('#' + id).val(text.substr(0, range.start) + starttag + text.substr(range.start, range.end-range.start) + endtag + text.substr(range.end));
	if (range.start < range.end) {
		$('#' + id).caret(range.end + starttag.length + endtag.length,
		range.end + starttag.length + endtag.length);
	}
	else {
		$('#' + id).caret(range.start + starttag.length, range.start + starttag.length);
	}
}
