﻿/**
 * dateObj: gibt Datum in der Form d. F Y zurueck
 *
 * @param none
 * @return String
 */
function dateObj() {
	var jetzt = new Date();
	date = jetzt.toLocaleDateString();
	i = date.indexOf(",")
	return date.substr(i+1);
};

function resetMap() {
	$('#karten').css("display", 'none');
	$('#plz_karte').css("display", 'none');
	$('#plz_karte').html('');
	$('#karten').css("background-color", 'transparent');
	$('#karten').css("border", 'none');
	$('#thumbs').css("display", 'block');
	$('#karten').fadeIn('slow');
};



function submitPLZ(plz, ort) {
	// Eingabe pruefen
	// alert(plz);
	if (isNaN(plz) || String(plz).length > 2)
		return false;
	else if (ort != null && ! ort.match(/\bHamburg\b|\bBerlin\b/))
		return false;
	else {
		// alles OK? -> Werte in Formular setzen und abschicken
		plz = String(plz).length < 2	? "0" + plz
										: parseFloat(plz);
		$('#plz').val(plz);
		if (ort != null)
			$('#ort').val(ort);
		$('#formSuche').submit();
	}
}

// Anfang openWindow. Für Datei entfernungstabelle.php und fzg-bewertung
function openWindow(URLtoOpen, windowName, windowFeatures)
 {
	Fenster=window.open(URLtoOpen, windowName, windowFeatures);
 }
 // Ende openWindow



// Funktionen werden erst ausgefuehrt,
//	wenn DOM-Tree fertig
$(document).ready(function() {

	// Datum in ID ausgeben
	$('#datum').html(dateObj());


	// Auswertung der Formulare (aller!) an Submit-Event binden
	$('form').submit(function() {

		var error	= false;
		var msg		= '';

		// Schnellsuche oben links
		if (this.id == 'schnellsucheForm') {
			if ($('text#s_items', this).val() == '') {
				error = true;
				msg += 'Es wurde kein Suchbegriff eingegeben!';
			} else {
				var text	= $('text#s_items', this).val();	// Wert im Textfeld
				var radio	= $('input:checked', this).val();	// welcher Radiobutton?

				// reagiert jeweils abhaengig von Auswahl der Radiobuttons
				switch (radio) {
					case 'plz':
						if (isNaN(text)) {
							error = true;
							msg += 'Postleitzahlen bestehen in Deutschland nur aus Zahlen.\n'
						} else if (text.length < 2 || text.length > 5) {
							error = true;
							msg += 'Deutsche Postleitzahlen haben höchstens 5 Stellen.\n';
							msg += 'Mindestens 2 müssen Sie aber eingeben.\n';
						}
						break;
					case 'fulltext':
						if (text.length < 4) {
							error = true;
							msg += 'Für eine sinnvolle Suche müssen Sie mindestens 4 Zeichen eingeben.\n';
						}
						break;
					case 'vw':
						if (isNaN(text)) {
							error = true;
							msg += 'Vorwahlen müssen aus den zahlen 0-9 bestehen.\n'
						}
				}
			}
		} // EOF Schnellsuche


		// erweiterte Suche auswerten
		if (this.id == 'formSuche') {
			// PLZ auf Gueltigkeit testen
			if ($('text#plz', this).val() != '') {
				val = $('text#plz', this).val();
				// keine nat. Zahl oder kuerzer als 2 / laenger als 5 Stellen
				if (isNaN(val)) {
					error = true;
					msg += 'Postleitzahlen bestehen in Deutschland nur aus Zahlen.\n'
				} else if (val.length < 2 || val.length > 5) {
					error = true;
					msg += 'Deutsche Postleitzahlen haben höchstens 5 Stellen.\n';
					msg += 'Mindestens 2 müssen Sie aber eingeben.\n';
				}
			}
		} // EOF erweiterte Suche


		if (error == true) {
			alert(msg += '\nBitte ändern Sie dies!');
			return false;
		}
		return true;

	}); /** EOF Formularauswertung */




	// ********************** /
	// Ajax-Funktionen
	// ********************** /

	/* SUCHE */
	// Eventhandler aller Selects der Suche ausschl. letzter
	$('#formSuche select:lt(2)').change(function(e) {
		var dataLand = '';
		// wurde Oberkategorie gewaehlt, Land als Parameter mitziehen,
		//	um nur entprechende Branchen zu liefern
		if ($(this)[0].name == 'gruppe' && $("#element_bundesland_select").value != "") {
			dataLand = '&land=' + $("#element_bundesland_select").val();
		}
		if ($("#plz").val()) {
			dataLand += '&plz=' + $("#plz").val();
		}

		$.ajax({
			type: "POST",
			url: "ajax_check.php",
			data: $(this)[0].name + "=" + $(this)[0].value + dataLand,
			success: function(json) {
				jObj = eval(json);
				el = "#" + jObj[0].selectEl;
				newOpts = '<option value="0" selected="selected">Bitte wählen Sie...</option>\n';
				// IE interpretiert Laenge von jObj falsch (einer zuviel)
				// -> deshalb muss Zahl der Iterationen verringert werden
				$.browser.msie == true ? loops = jObj.length - 1 : loops = jObj.length;
				for (i=1; i<loops; i++) {
					newOpts += '<option value="' + jObj[i].value + '">' + jObj[i].display + '</option>\n';
				}

				$(el).html(newOpts);
				$("option:first", el).attr("selected", "selected");

				// upzudatendes Element anzeigen (eigtl. nur Kategorien (letztes))
				if ($(el).parent().attr('class').indexOf('hideEl') != -1) {
					$(el).parent().removeClass("hideEl");
					$(el).parent().slideDown("slow");
				}

				// wenn neues Land gewaehlt, Kategorien wieder deaktivieren
				if (el == "#element_gruppe_select" || loops == 1) {
					$("#span_kategorie_select").slideUp("normal");
					$("#span_kategorie_select").addClass("hideEl");

					// Reset evtl. gewaehlter Branche
					$("#element_kategorie_select option:selected").val(0);
				}
			}
		});
	});



	/**
	 * KARTENBEREICH
	 */
	/**
	 * regelt die Hover-Styles der Karten-Thumbs
	 */
	 $('#karten > #thumbs > .plzBox > img').hover(
	 	function() {
	 		$(this).css("border-color", '#C50407');
	 		$(this).css("cursor", 'pointer');
	 	},
	 	function() {
	 		$(this).css("border-color", '#000000');
	 		$(this).css("cursor", 'default');
	 	}
	 );

	/**
	 * Managed den Austausch der PLZ-Karten nach Klick auf Thumbnails
	 */
	 $('#karten > #thumbs > .plzBox > img').click(function() {
	 		// Alt-Tags der Thumbs wird ausgewertet
	 		//	z.B. [...]alt="PLZ-Bereich 2"[...]
	 		var x = $(this)[0].alt.lastIndexOf(" ");	// letztes Leerzeichen
	 		var plz = $(this)[0].alt.substring(x+1);	// String ab letztem Leerzeichen

	 		// erhaltene Werte testen
	 		if (plz.match(/\d|\bHamburg\b|\bBerlin\b/)) {
	 			// Kartenbereich leeren, dann sichtbar machen (weiss, Umrandung)
	 			// und DIV fuer einzelne Karten einfuegen
	 			$('#thumbs').css('display', 'none');
	 			$('#karten').css("background-color", '#ffffff');
	 			$('#karten').css("border", '1px solid #000000');
	 			$('#karten').append('<div id="plz_karte"></div>');

	 			// gewaehlte PLZ-Karte mit Imagemap einfuegen und aufblenden
	 			$('#plz_karte').html('<img src="images/plzkarte_' + plz + '_gross.gif" border="0" alt="alle Postleitzahlen im Bereich ' + plz + '" title="alle Postleitzahlen im Bereich ' + plz + '" usemap="#map_' + plz + '">');
	 			$('#plz_karte').append('<a href="javascript:resetMap();"  title="erneut aus allen Postleitzahlen wählen." id="back">&laquo; zurück</a>');
	 			$('#plz_karte').fadeIn('slow');

	 			$('#plz_karte').append('<div id="plz_map"></div>');
	 			$('#plz_map').load('karten/map_' + plz + '.txt');
	 		}
	 	});
});

// ********************** /
// Ajax-Funktionen
// ********************** /
/* regionen Pressemeldungen */
/** XMLHttpRequest Wrapper
 */
function httpRequest() {
	var http_request = false;
	this.method = 'GET';
	this.asynchron = true;
	this.send = null; // set send to key-value pairs (urlencoded and escaped? QUERY_STRING)
	this.responseIsXML = false;
	var that = this;

	/**
	 * Initialize HTTpRequest
	 *
	 * @param reference		Function that handles the response
	 */
	this.init = function (handler, parentObj) {
		if (window.XMLHttpRequest) {
			http_request = new XMLHttpRequest();
			http_request.overrideMimeType ? http_request.overrideMimeType('text/xml') : false; // fuer IE 7
		}
		else if (window.ActiveXObject) { // IE
			http_request = new ActiveXObject('Microsoft.XMLHTTP');
		}
		http_request.onreadystatechange = function () {
			if (http_request.readyState == 4) {
				try {
					if (http_request.status) {
						throw true;
					} else {
						throw false;
					}
				} catch (e) {
					if (e == true) {
						var response = that.responseIsXML == false ? http_request.responseText : http_request.responseXML;
						http_request.status == 200 ? handler(response, parentObj, true) : handler(response, parentObj, false);
					} else {
						handler({ajax_error:true}, false);
					}
				}
			}
		}
	}

	/**
	 * Fire the Request
	 *
	 * @param string	url to load with parameters
	 */
	this.load = function(url) {
		if (this.method == 'POST') {
			http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		}
		http_request.open(this.method, url, this.asynchron);
		http_request.send(this.send);
	}
}


/***************************
Ende Ajax
***************************/
/* Newstooltip entfernen */
function hideNewsTt(lim)
{
	var node = document.getElementById('newsToolTip');
	document.getElementsByName('fusslink'+lim)[0].removeChild(node);
}

/****************
Ajax Suchformular
****************/
function keycode(e) {
	e=e?e:window.event;
	var keycode = e.which?e.which:e.keyCode;
	return keycode;
}

/**
 * Region Input Krams
 */
var RegionIntelliSense = function () {
	var that = this;
	this.input = document.getElementById('region');
	this.httpRequest = new httpRequest;

	this.input.onkeyup = function (event) {
		if(this.value.length > 0){
			that.httpRequest.init(that.buildRegionSelect, that);
			that.httpRequest.load('ajax_region.php?region='+this.value);
		}
	}
}

RegionIntelliSense.prototype.buildRegionSelect = function(response, that, success){
	response = eval('('+response+')');
	document.pressemitteilungen.bundesland.disabled = false;
	if (document.getElementById('intelliRegion')) {
		var toDelete = document.getElementById('intelliRegion');
		toDelete.parentNode.removeChild(document.getElementById('intelliRegion'));
		toDelete = undefined;
		document.getElementById('intelliRegionClose').style.display = "none";
	}
	document.getElementById('intelliRegionClose').style.display = "block";
	if( response.length == 0) return false;
	var regionSelect = document.createElement('select');
	regionSelect.size = "5";
	regionSelect.id="intelliRegion";
	var newOption = new Option('Bitte wählen Sie Ihre Region...', '', false, true);
	regionSelect.options[regionSelect.options.length] = newOption;
	for(var i = 0; i < response.length; i++){
		var newOption = new Option(response[i].regionName+' ::: '+response[i].bundeslandName,response[i].regionName);
		newOption.bundeslandId = response[i].bundeslandId;
		regionSelect.options[regionSelect.options.length] = newOption;
	}

	that.input.parentNode.appendChild(regionSelect);
	regionSelect.onchange = function(){
		that.input.value = this.value;
		// select da bundesland in da select
		for (var n=0;n<document.pressemitteilungen.bundesland.options.length;n++) {
			if (document.pressemitteilungen.bundesland.options[n].value.indexOf(this.options[this.selectedIndex].bundeslandId)==0) {
				document.pressemitteilungen.bundesland.selectedIndex = n;
				document.pressemitteilungen.bundesland.disabled = true;
				break;
			}
		}
		that.input.parentNode.removeChild(this);
		document.getElementById('intelliRegionClose').style.display = "none";
	}
}

/********Formular für Eingabe von Pressemitteilungen***************/
function valPresseForm()
{
	var validate=new Array('adressId', 'name', 'strasse', 'plz', 'ort', 'vtel', 'tel', 'titel', 'text1', 'agb', 'region', 'bundesland');
	var rt = 0;
	var label = '';
	var error=new Array();
	var re = new RegExp ("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[_a-z0-9-]+(\.[_a-z0-9-]+)*\.[a-z]{2,4}$");
    var telreg = new RegExp ("^[- 0-9+/()]{3,}$");
	for (x=0;x<validate.length;x++) {
		if (document.pressemitteilungen[validate[x]].value=='') {
			validate[x] == 'ort' ? validate[x] = 'plz' : validate[x];
			validate[x] == 'tel' ? validate[x] = 'vtel' : validate[x];
			error.push(validate[x]);
		}
		validate[x] == 'ort' ? validate[x] = 'plz' : validate[x];
		validate[x] == 'tel' ? validate[x] = 'vtel' : validate[x];
		label = validate[x]+'Label';
		document.getElementById(label).style.color='#4D546E';
		document.getElementById('emailLabel').style.color='#4D546E';
		document.getElementById('presseImgLabel').style.color='#4D546E';
	}
	if (typeof document.pressemitteilungen.adressId != 'undefined' &&
        document.pressemitteilungen.adressId.selectedIndex == 0)
	{
		error.push('adressId');
	}
	if (isNaN(document.pressemitteilungen.plz.value) || document.pressemitteilungen.plz.value.length < 5)
	{
		error.push('plz');
	}
	if (!telreg.test(document.pressemitteilungen.vtel.value))
	{
		error.push('vtel');
	}
	if (!telreg.test(document.pressemitteilungen.tel.value))
	{
		error.push('vtel');
	}
	if (re.test(document.pressemitteilungen.email.value) == false)
	{
		error.push('email');
	}
	if (document.pressemitteilungen['agb'].checked==false)
	{
		error.push('agb');
	}
	if (document.pressemitteilungen.presseImg.value != ''&& document.pressemitteilungen.presseImg.value.substr(-3, 3) != 'gif' && document.pressemitteilungen.presseImg.value.substr(-3, 3) != 'jpg' && document.pressemitteilungen.presseImg.value.substr(-4, 4) != 'jpeg')
	{
		error.push('presseImg');
	}

	if (error.length>0)
	{
		alert("Bitte alle mit * markierten Felder ausfüllen.");
		for (x=0;x<error.length;x++)
		{
			label = error[x]+'Label';
			document.getElementById(label).style.color='#ff0000';
		}
		return false;
	}
	document.pressemitteilungen.region.disabled = false;
	document.pressemitteilungen.bundesland.disabled = false;
	document.pressemitteilungen.removeChild(document.pressemitteilungen.bundeslandGesamt);
	document.pressemitteilungen.removeChild(document.pressemitteilungen.deutschlandGesamt);

	return true;
}

function removeIntelliRegion(){
	if(document.getElementById('intelliRegion')){
		document.pressemitteilungen.removeChild(document.pressemitteilungen.intelliRegion);
	}
}



// tooltipp im formular fuer pressemitteilungen ein und ausblenden
wmtt = null;

document.onmousemove = updateWMTT;



function updateWMTT(e) {
	x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
	y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
	if (wmtt != null) {
		wmtt.style.left = (x + 20) + "px";
		wmtt.style.top 	= (y + 20) + "px";
	}
}

function showWMTT(id) {
	wmtt = document.getElementById(id);
	wmtt.style.display = "block"
}

function hideWMTT() {
	wmtt.style.display = "none";
}


// formulat fuer pressemeldungen
// functionen fuer gesamtes bundesland und gesamt deiutschland.

function setBundeslandGesamt(){
	if(document.pressemitteilungen.bundeslandGesamt.checked == true){ //wenn aktiviert
		document.getElementById('region').style.backgroundColor = "#EBEAEB";
		document.pressemitteilungen.region.disabled = true;	//keine region mehr auswaehlbar. der wert wird beim auswaehlen des bundeslandes gesetzt
		document.pressemitteilungen.deutschlandGesamt.disabled = true;
		document.pressemitteilungen.bundesland.disabled = false;
        if (document.pressemitteilungen.bundesland.selectedIndex > 1) {
            var myValue = document.pressemitteilungen.bundesland.options[document.pressemitteilungen.bundesland.selectedIndex].value;
            var myValueArray = myValue.split("###");
            document.pressemitteilungen.region.value = myValueArray[1]+" gesamt";
        }
		document.pressemitteilungen.bundesland.removeChild(document.pressemitteilungen.bundesland.options[1]);
		if(document.getElementById('intelliRegion')){
			document.pressemitteilungen.removeChild(document.pressemitteilungen.intelliRegion);
		}
	}else{
		document.pressemitteilungen.region.disabled = false;
		document.pressemitteilungen.region.value = "";
		document.getElementById('region').style.backgroundColor = "#FFFFFF";
		document.pressemitteilungen.deutschlandGesamt.disabled = false;
		var newOption = new Option('alle Bundesländer','99');
		document.pressemitteilungen.bundesland.insertBefore(newOption, document.pressemitteilungen.bundesland.options[1]);
	}

}

function setDeutschlandGesamt(){
	if(document.pressemitteilungen.deutschlandGesamt.checked == true){
		document.pressemitteilungen.bundesland.selectedIndex = 1;
		document.pressemitteilungen.bundesland.disabled = true;
		document.pressemitteilungen.bundeslandGesamt.disabled = true;
		document.pressemitteilungen.region.value = "Deutschland";
		document.pressemitteilungen.region.disabled = true;
		document.getElementById('region').style.backgroundColor = "#EBEAEB";

		if(document.getElementById('intelliRegion')){
			document.pressemitteilungen.removeChild(document.pressemitteilungen.intelliRegion);
		}
	}else{
		document.pressemitteilungen.bundesland.disabled = false;
		document.pressemitteilungen.bundesland.selectedIndex = 0;
		document.pressemitteilungen.bundeslandGesamt.disabled = false;
		document.pressemitteilungen.region.disabled = false;
		document.pressemitteilungen.region.value = "";
		document.getElementById('region').style.backgroundColor = "#FFFFFF";
	}
}

//setzt das feld region auf das gewaehlte bundesland
function setRegionToBundeslandGesamt(){
	if(document.pressemitteilungen.bundeslandGesamt.checked == true){ //wenn aktiviert
		document.pressemitteilungen.region.disabled = false;
        if (document.pressemitteilungen.bundesland.selectedIndex > 0){
            var myValue = document.pressemitteilungen.bundesland.options[document.pressemitteilungen.bundesland.selectedIndex].value;
            var myValueArray = myValue.split("###");
            document.pressemitteilungen.region.value = myValueArray[1]+" gesamt";
        } else {
            document.pressemitteilungen.region.value = '';
        }
		document.pressemitteilungen.region.disabled = true;
	}else{
		if(document.pressemitteilungen.region.value.indexOf("gesamt")>-1){
			document.pressemitteilungen.region.value = "";
		}
	}
}

function shutIntelliRegion(){
	if(document.getElementById('intelliRegion')){
		document.pressemitteilungen.removeChild(document.pressemitteilungen.intelliRegion);
	}
	document.getElementById('intelliRegionClose').style.display = "none";
}



/*********************************************
/      routenplaner
/********************************************/
function routeVal()
{
	var plzValue = document.route.szip.value;
	if (document.route.sstreet.value == "Strasse und Nr.")
	{
		document.route.sstreet.value = '';
	}
	if (document.route.scity.value == "-Ort-")
	{
		document.route.scity.value = "";
	}
	if (document.route.szip.value == "" || document.route.szip.value == "PLZ" || isNaN(document.route.szip.value) == true)
	{
		alert ("Bitte geben Sie eine Start PLZ ein.");
		document.route.szip.value == "";
		document.route.szip.focus();
		return false;
	}

	else
	{
		var plz = document.route.szip.value.length;
		if (document.route.szip.value != "" && plz < 5)
		{
			var eingabe = confirm('Die Eingabe einer nicht vollständigen PLZ kann zu unerwarteten Ergebnissen führen.\n\nTrotzdem fortfahren?');
			if (eingabe == true)
			{
				document.route.szip.value = plzValue;
				return true;
			}
			else
			{
				return false;
			}
		}
		return true;
	}
}


// lageplan anzeigen oder nicht

function lageplan(host,kid,map){
	map = map?map:'google';
	if(document.getElementById('lageplan').style.display == 'none'){
		document.getElementById('lageplan').style.display = 'block';
		if(map == 'google'){
			if(top.frames.lageplanIframe.location != host+'googleMap.php?id='+kid){
				top.frames.lageplanIframe.location = host+'googleMap.php?id='+kid;
			}
		}else{
			if(top.frames.lageplanIframe.location != host+'map24Map.php?id='+kid){
				top.frames.lageplanIframe.location = host+'map24Map.php?id='+kid;
			}
		}
	}else{
		document.getElementById('lageplan').style.display = 'none';
	}
}
function mask(end,middle,start,subject){
    var one ='mai';
    var two='lto:';
    var three='?Subject=';
    //start,middle,end,subject;
    var putogether= one+two+start+middle+end+three+subject;
    document.location.href=eval('"'+putogether+'"');
    window.status=putogether;
}