/*** JavaScript-funktionen f�r die Promobil Stellplatz-DB
*    erstellt von B. Hanisch am 12.11.08
***/
/* Variablen f�r Start-Seite initialisieren */
var HTTP_GET_VARS = new Array();
var centerLat = 50.780444;
var centerLng = 9.180081;
var startZoom = 4;
var map;
var mapbreite;
var maphoehe;
var mapbounds;
var breitekachel = 95;
var hoehekachel = 95;
var kachelarray = new Array();
var kachelneu;
var marker;
var baseIcon;
var clusterIcon;
var clusterIconStart;
var clusterIconStartklein;

var markerOptions;
var clusterOptions;
var clusterOptionsStart;
var clusterOptionsStartklein;

var markerManager;
var clusterManager;

var bounds;
var is_clicked=0;
var xmlHttp = null;
var xmlHttpListe = null;
//muss gleich dem limit bei der db abfrage sein
var anzahl_listenelement = 2;
var anzahl_jumplist_eintraege = 5;

var sucheZoomlat = "";
var sucheZoomlng = "";
var sucheZoom;

var url_str = location.protocol + '//' + location.host + '/typo3conf/ext/atlas_kanu/res/img/';

function searchLocations(address) {
	geocoder = new GClientGeocoder();
	geocoder.getLatLng(address, function(latlng) {
		//alert(address + ': ' + latlng.lat() + ' - ' + latlng.lng() );
		if(typeof latlng != 'undefined' && latlng != null){
			$("#mailformlat").attr("value", latlng.lat());
			$("#mailformlng").attr("value", latlng.lng());
		}
		$("#loadGooglePoint").parent().removeClass("loading");		
	});
}

/*** Funktion initialisiert die Start-Map ***/
function init(){
	retrieve_Parameter();
	
    map = new GMap2(document.getElementById("map"));
    
	//map.zoomIn();
	if(HTTP_GET_VARS.length > 0 ){
		sucheZoomStufe();				
	}
	else{
		map.setCenter(new GLatLng(centerLat, centerLng), startZoom);
	}
	
    map.addControl(new GLargeMapControl());
   	map.addControl(new GMapTypeControl());
	//map.enableContinuousZoom();
	map.enableScrollWheelZoom();
	var size = map.getSize();

    mapbreite = size.width;
    maphoehe = size.height;
	mapbounds = map.getBounds();
	 
	//alert(mapbounds.getNorthEast());
	//alert(mapbounds.getSouthWest());

	create_icon();
	create_cluster();
	create_cluster_startseite();
	create_cluster_startseite_klein();
	
	xmlHttp = create_xmlHttp();
	xmlHttpListe = create_xmlHttp();

	retrieve_kacheln();
	retrieve_Markers();
			
	GEvent.addListener(map, 'zoomend', function(){
		if(is_clicked == 1){
			is_clicked = 0;
		}
		else {
			mapbounds = map.getBounds();
			retrieve_kacheln();
			retrieve_Markers();
		}
	});
	
	GEvent.addListener(map, 'dragend', function(){
		//alert(map.getCenter());
		if(is_clicked == 1){
			is_clicked == 0;
		}
		else{	
			mapbounds = map.getBounds();
			retrieve_kacheln();
			retrieve_Markers();
		}
	});
	
	GEvent.addListener(map, 'movestart', function(){
		is_clicked = 0;
	});

	GEvent.addListener(map, 'click', function(){
		map.closeInfoWindow();
		is_clicked = 0;
	});

	GEvent.addListener(map, 'infowindowopen', function(){
		is_clicked=1;
	});
}

/*** ermittelt die GET-Parameter der URL ***/
function retrieve_Parameter(){
	var parameter = window.location.search.substr(1,document.location.search.length);
	//alert(parameter);
	var Ergebnis = parameter.search(/skip.+/);
	//alert(Ergebnis);

	//da er id=41 (Seitenid) findet, erstellt er neues Object, somit ist alert(HTTP_GET_VARS.length); > 0
	// && parameter != 'id=42' //sollte gehen, wenn alles über realurl läuft
	if(parameter != '' && Ergebnis == -1){
		HTTP_GET_VARS[0] = new Object();
		var arr_angebote = new Array();
		var zaehler_i = 0;
	
		gArr = parameter.split('&');
		for(i=0; i<gArr.length; ++i){
			value='';
			
			vArr=gArr[i].split('=');
			
			if(vArr.length>1){
				value=vArr[1];
				vArr[0] = decodeURI(vArr[0]);
				if(vArr[0] == "tx_atlasbase_guide[offer][]" || vArr[0] == "tx_atlasbase_guide[fleet][]"){
					arr_angebote[zaehler_i] = value;
					zaehler_i++;
				}
				else{
					if(vArr[0] != "submit-button"){
						HTTP_GET_VARS[0][unescape(vArr[0])] = unescape(decodeURI(value));
					}
				}
			}
		}
		if(zaehler_i > 0){
			HTTP_GET_VARS[0]['angebote'] = arr_angebote;
		}
	}
}

/*** ermittelt die Geodaten der Kacheln ***/
function retrieve_kacheln(){
	var i=0;
	var x=0;
	var y=0;
	var hoeheangepasst = (maphoehe*breitekachel)/mapbreite;
		
	kachelneu = '{';
	while ((i+breitekachel) <= mapbreite){
       	while ((x+hoehekachel) <= maphoehe){
			//ecke links oben
			var nordwest = map.fromContainerPixelToLatLng(new GPoint(i,x));
			//marker = new GMarker(nordwest, markerOptions);
			//map.addOverlay(marker);
	
			//ecke rechts oben
			var nordost = map.fromContainerPixelToLatLng(new GPoint(i+breitekachel,x));
			//marker = new GMarker(nordost, markerOptions);
			//map.addOverlay(marker);
	
	
			// Ecke links unten
			var suedwest = map.fromContainerPixelToLatLng(new GPoint(i,x+hoehekachel));
			//marker = new GMarker(suedwest, markerOptions);
			//map.addOverlay(marker);
				
			// Ecke rechts unten
			//var suedost = map.fromContainerPixelToLatLng(new GPoint(i+breitekachel,x+hoehekachel));
			//marker = new GMarker(suedwest, markerOptions);
			//map.addOverlay(marker);
	
																
			kachelneu += '"p' + y + '":{"nordwestlat":'+ nordwest.lat() +', "nordwestlng":'+ nordwest.lng() +', "nordostlat":'+ nordost.lat() +', "nordostlng":'+ nordost.lng() +', "suedwestlat":'+ suedwest.lat() +', "suedwestlng":'+ suedwest.lng() +' },';
	
			x += hoehekachel;
			y++;
       	}
       	x=0;
	    i+=breitekachel;
	}
	kachelneu += ' "p":1}';
	//alert(kachelneu);
}

/*** erstellt ein neues Icon f�r alle Marker der Map ***/
function create_icon(){
	baseIcon = new GIcon();
    baseIcon.image = url_str + 'kanu_marker.png';
	baseIcon.iconSize = new GSize(47, 40);

	baseIcon.shadow = url_str + 'kanu_marker_schatten.png';
	baseIcon.shadowSize = new GSize(47, 40);

    baseIcon.iconAnchor = new GPoint(9, 34);
    baseIcon.infoWindowAnchor = new GPoint(15, 2);

	markerOptions = { icon:baseIcon };

}

/*** erstellt ein neues Icon f�r die Cluster der Map ***/
function create_cluster(){
	clusterIcon = new GIcon();
    clusterIcon.image = url_str + 'kanu_kachel.png';

	clusterIcon.iconSize = new GSize(90, 90);

	clusterIcon.shadow = "";
	clusterIcon.shadowSize = "";

    clusterIcon.iconAnchor = new GPoint(0, 0);
    clusterIcon.infoWindowAnchor = new GPoint(9, 2);

	clusterOptions = { icon:clusterIcon };

}

/*** erstellt ein neues Icon f�r die Cluster der Startseite ***/
function create_cluster_startseite(){
	clusterIconStart = new GIcon();
    clusterIconStart.image = url_str + 'cluster_startseite.png';

	clusterIconStart.iconSize = new GSize(78, 79);

	clusterIconStart.shadow = "";
	clusterIconStart.shadowSize = "";

    clusterIconStart.iconAnchor = new GPoint(0, 0);
    clusterIconStart.infoWindowAnchor = new GPoint(9, 2);

	clusterOptionsStart = { icon:clusterIconStart };

}

/*** erstellt ein neues Icon f�r die Cluster der Startseite ***/
function create_cluster_startseite_klein(){
	clusterIconStartklein = new GIcon();
    clusterIconStartklein.image = url_str + 'cluster_startseite_kleiner.png';

	clusterIconStartklein.iconSize = new GSize(61, 62);

	clusterIconStartklein.shadow = "";
	clusterIconStartklein.shadowSize = "";

    clusterIconStartklein.iconAnchor = new GPoint(0, 0);
    clusterIconStartklein.infoWindowAnchor = new GPoint(9, 2);

	clusterOptionsStartklein = { icon:clusterIconStartklein };

}

/*** erstellt ein AJAX-Object ***/
function create_xmlHttp(){
	var ajax;
	// Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
	if (typeof XMLHttpRequest != 'undefined') {
    	ajax = new XMLHttpRequest();
	}
	if (!ajax) {
    // Internet Explorer 6 und �lter
		if (window.ActiveXObject){
			try {
	       		ajax = new ActiveXObject("Msxml2.XMLHTTP.6.0");
	   		} catch(e) {
	       		try {
	           		ajax = new ActiveXObject("Microsoft.XMLHTTP");
	       		} catch(e) {
	           		ajax = null;
	       		}
	   		}
		}
	}
	return ajax;
}

/*** zeigt das Warte-Icon auf der Map ***/
function show_waitIcon(){
	window.setTimeout("", 2000);
	var divwait = document.getElementById("wait");
	divwait.style.display = 'block';

}

/*** verbirgt Warte-Icon auf der Map ***/
function hide_waitIcon(){
	var divwait = document.getElementById("wait");
	divwait.style.display = 'none';
}


/*** f�gt einen Marker der Map hinzu ***/
function add_Marker(lat,lng, id, land, img, plz, ort, titel, strasse, url){
	var marker = new GMarker(new GLatLng(lat,lng), markerOptions);
	map.addOverlay(marker);

	var cont = document.createElement("div");
	cont.style.fontFamily = "Verdana,Arial";
	cont.style.fontSize = "11px";
	cont.innerHTML = '<div class="tooltip-header"><a href="'+ url + '" target="_blank"><nobr>' + titel + '</nobr></a></div>';
	if(typeof img != 'undefined' && img != ''){
		tempVar = '<img class="tooltip-image" src="/uploads/pics/'+ img +'" style="width:90px;">';
	}
	else{
		tempVar = '';
	}

	if(typeof strasse != 'undefined'){
		tempVar += strasse + '<br/>';
	} 
	if(typeof plz != 'undefined'){
		tempVar += plz + ' ';
	} 
	if(typeof ort != 'undefined'){
		tempVar += ort;
	} 
	if(typeof land != 'undefined'){
		tempVar += '<br/>' + land;
	} 
	tempVar += '<br/>';
	cont.innerHTML += '<div>' + tempVar + '<a href="'+ url + '" target="_blank">mehr &raquo;</a></div>';
	
	GEvent.addListener(marker, "click", function() {
		map.closeInfoWindow();
		marker.openInfoWindowHtml(cont);
	});

	GEvent.addListener(marker, "mouseover", function() {
		map.closeInfoWindow();
		marker.openInfoWindowHtml(cont);
	});
}


/*** f�gt einen Cluster der Map hinzu ***/
function add_Cluster(nwlat,nwlng, nelat, nelng, swlat, swlng, anz){

	var marker = new GMarker(new GLatLng(nwlat,nwlng), clusterOptions);
	map.addOverlay(marker);
	//clusterManager.addMarker(marker,0,17); 
	
	var rechteck = new GLatLngBounds(new GLatLng(swlat, swlng), new GLatLng(nelat, nelng))
	//alert (rechteck);
	
	var zoomlevel = map.getBoundsZoomLevel(rechteck);
	//alert(zoomlevel);

	var centerrechteck = rechteck.getCenter();
	
	GEvent.addListener(marker, 'mouseover', function() {
		marker.openToolTip(anz);
	});

	GEvent.addListener(marker, 'mouseout', function() {
		marker.closeToolTip();
	});
	
	GEvent.addListener(marker, 'click', function() {
		map.setCenter(centerrechteck, zoomlevel);

	});
}

/*** Tooltip-Overlay-Object erzeugen **/
function ToolTip(marker, html, width){
	this.html_ = html;
	this.width_ = (width ? width + 'px' : 'auto');
	this.marker_ = marker;
}

//GOverlay Problem, wenn google.maps erst nach der eigenen js geladen wird
ToolTip.prototype = new GOverlay();

ToolTip.prototype.initialize = function(map) {
	var div = document.createElement("div");
	div.style.display = 'none';
	map.getPane(G_MAP_FLOAT_PANE).appendChild(div);
	
	this.map_ = map;
	this.container_ = div;
}

ToolTip.prototype.remove = function() {
	this.container_.parentNode.removeChild(
		this.container_);
}

ToolTip.prototype.copy = function() {
	return new ToolTip(this.html_);
}

ToolTip.prototype.redraw = function(force) {
	if (!force) return;
	
	var pixelLocation = this.map_.fromLatLngToDivPixel(
	this.marker_.getPoint());
	this.container_.innerHTML = this.html_;
	this.container_.style.position = 'relative';
	this.container_.style.left = (pixelLocation.x - 20) + "px";
	this.container_.style.top = (pixelLocation.y - 80) + "px";
	//this.container_.style.left = "px";
	//this.container_.style.top = (pixelLocation.y-70) + "px";

	this.container_.style.width = "141px";
	this.container_.style.height = "71px";

	this.container_.style.font ='11px/14px verdana, arial, sans';
	this.container_.style.border = 'none';
	this.container_.style.backgroundImage = 'url(' + url_str + 'tooltip.png)';
	this.container_.style.backgroundRepeat = 'no-repeat';
	this.container_.style.padding = '8px';
	this.container_.style.whiteSpace = 'nowrap';
	if(this.width_ != 'auto') 
		this.container_.style.overflow = 'hidden';
	this.container_.style.display = 'block';
} 

GMarker.prototype.ToolTipInstance = null;

GMarker.prototype.openToolTip = function(anz) {
	// don't show the tool tip if there is acustom info window
	if(this.ToolTipInstance == null) {
		var content = anz + " Anbieter.<br>Bitte klicken Sie hier<br>f&uuml;r Anbieter<br>in diesem Gebiet.";
		this.ToolTipInstance = new ToolTip(this,content)
		map.addOverlay(this.ToolTipInstance);
	}
}

GMarker.prototype.openToolTipStartseite = function(land) {
	// don't show the tool tip if there is acustom info window
	if(this.ToolTipInstance == null) {
		var content = "Bitte klicken Sie hier<br>um die Anbieter<br>in " + land + "<br>anzuzeigen.";
		this.ToolTipInstance = new ToolTip(this,content)
		map.addOverlay(this.ToolTipInstance);
	}
}


GMarker.prototype.closeToolTip = function() {
	if(this.ToolTipInstance != null) {
		map.removeOverlay(this.ToolTipInstance);
		this.ToolTipInstance = null;
	}
}

GMarker.prototype.closeToolTipStartseite = function() {
	if(this.ToolTipInstance != null) {
		map.removeOverlay(this.ToolTipInstance);
		this.ToolTipInstance = null;
	}
}

//*/
/*** legt den Ausschnitt/die Zoomstufe anhand des ausgew�hlten Landes fest ***/
function sucheZoomStufe(){
	//alert(HTTP_GET_VARS[0]['tx_atlasbase_guide[country]']);
	switch(HTTP_GET_VARS[0]['tx_atlasbase_guide[country]']){
		case '54': 
			//Deutschland
			sucheZoomstufeByRegion();
			//sucheZoomlat = "50.875311";
			//sucheZoomlng = "10.327148";
			//sucheZoom = 6;
			break;
		case '13': 
			//Oesterreich
			sucheZoomlat = "47.420654";
			sucheZoomlng = "13.392334";
			sucheZoom = 7;
			break;
		case '41':
			//Schweiz
			sucheZoomlat = "46.905246";
			sucheZoomlng = "8.360596";
			sucheZoom = 7;
			break;
		case '56':
			//Daenemark
			sucheZoomlat = "56.26392";
			sucheZoomlng = "10";
			sucheZoom = 7;
			break;
		case '72':
			//Frankreich
			sucheZoomlat = "47.33882269482199";
			sucheZoomlng = "2.17529296875";
			sucheZoom = 5;
			break;
		case '67':
			//Finnland
			sucheZoomlat = "63";
			sucheZoomlng = "25";
			sucheZoom = 5;
			break;
		case '186':
			//Schweden
			sucheZoomlat = "60.128161";
			sucheZoomlng = "18.643501";
			sucheZoom = 4;
			break;
		default:
			//Europa
			if(typeof HTTP_GET_VARS[0]['tx_atlasbase_guide[region]'] != "undefined" && HTTP_GET_VARS[0]['tx_atlasbase_guide[region]'] != ""){
				sucheZoomstufeByRegion();
			}
			else{
				sucheZoomlat = "50.780444";
				sucheZoomlng = "9.180081";
				sucheZoom = 4;
			}
			break;
	}
	var obj = new GLatLng(sucheZoomlat,sucheZoomlng);
	map.setCenter(new GLatLng(sucheZoomlat,sucheZoomlng), sucheZoom);
}
/*** legt den Ausschnitt/die Zoomstufe anhand des ausgew�hlten Bundeslandes fest ***/
function sucheZoomstufeByRegion(){
	
	if(typeof HTTP_GET_VARS[0]['tx_atlasbase_guide[region]'] != 'undefined'){
		switch(HTTP_GET_VARS[0]['tx_atlasbase_guide[region]']){
			case '80':
				//Baden Würtemberg
				sucheZoomlat = "48.687334";
				sucheZoomlng = "9.014282";
				sucheZoom = 8;
				break;
			case '81':
				//Bayern 
				sucheZoomlat = "48.741701";
				sucheZoomlng = "11.546631";
				sucheZoom = 7;
				break;
			case '86':
				//Hessen 
				sucheZoomlat = "50.520775";
				sucheZoomlng = "8.8166";
				sucheZoom = 8;
				break;
			case '89':
				//Rheinland-Pfalz
				sucheZoomlat = "49.93000812460691";
				sucheZoomlng = "7.481689453125";
				sucheZoom = 8;
				break;
			case '88':
				//Nordrhein-Westfalen
				sucheZoomlat = "51.91716758909015";
				sucheZoomlng = "7.8662109375";
				sucheZoom = 8;
				break;
			case '90':
				//Saarland
				sucheZoomlat = "49.44670029695473";
				sucheZoomlng = "7.1356201171875";
				sucheZoom = 9;
				break;
			case '79':
				//Niedersachsen
				sucheZoomlat = "52.928774525801366";
				sucheZoomlng = "9.239501953125";
				sucheZoom = 7;
				break;
			case '93':
				//Schleswig-Holstein
				sucheZoomlat = "54.149567212540525";
				sucheZoomlng = "10.1513671875";
				sucheZoom = 7;
				break;
			case '83':
				//Brandenburg
				sucheZoomlat = "52.35211857272093";
				sucheZoomlng = "13.6065673828125";
				sucheZoom = 8;
				break;
			case '82':
				//Berlin
				//gleich wie Brandenburg, weil keine Coordinaten
				sucheZoomlat = "52.35211857272093";
				sucheZoomlng = "13.6065673828125";
				sucheZoom = 8;
				break;
			case '91':
				//Sachsen
				sucheZoomlat = "51.15867686442365";
				sucheZoomlng = "13.5791015625";
				sucheZoom = 7;
				break;
			case '92':
				//Sachsen-Anhalt
				sucheZoomlat = "52.22779941887071";
				sucheZoomlng = "11.88720703125";
				sucheZoom = 7;
				break;
			case '87':
				//Mecklenburg-Vorpommern
				sucheZoomlat = "53.657661020298";
				sucheZoomlng = "12.711181640625";
				sucheZoom = 7;
				break;
			case '94':
				//Thüringen
				sucheZoomlat = "51.04830113331224";
				sucheZoomlng = "11.2060546875";
				sucheZoom = 8;
				break;
			case '84':
				//Bremen
				//gleich wie Niedersachsen, weil keine Coordinaten
				sucheZoomlat = "52.928774525801366";
				sucheZoomlng = "9.239501953125";
				sucheZoom = 7;
				break;
			case '85':
				//Hamburg
				//gleich wie Schleswig-Holstein, weil keine Coordinaten
				sucheZoomlat = "54.149567212540525";
				sucheZoomlng = "10.1513671875";
				sucheZoom = 7;
				break;
			default:
				//Deutschland
				sucheZoomlat = "50.875311";
				sucheZoomlng = "10.327148";
				sucheZoom = 6;
				break;
		}
	}
	else{
		//Deutschland
		sucheZoomlat = "50.875311";
		sucheZoomlng = "10.327148";
		sucheZoom = 6;
	}
}

/*** statische �bersicht von Europa ***/
function retrieve_overview(){

	//var m = new GMarker( new GLatLng(49.2236111111,13.5944444444), markerOptions);
	//map.addOverlay(m);
	if (xmlHttp) {
		xmlHttp.open("POST", '?eID=google', true);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.onreadystatechange = function () {
    		if (xmlHttp.readyState == 4) {
				var gesamtanzahl = xmlHttp.responseText;
				//var debug = document.getElementById("wait");
				//debug.innerHTML = gesamtanzahl + ' - Anzahl';
				//var liste = document.getElementById("kanuliste");
				//liste.innerHTML = "";
				var anzeige_anzahl = document.getElementById("anzahlkanu");
				if(gesamtanzahl  != ''){
					anzeige_anzahl.innerHTML = "Anzeige: " + gesamtanzahl + " Kanuvermieter";
				}							
			}
		};
		xmlHttp.send('&function=count');
	} //ende xmlHttp
	
	/*** Deutschland ***/
	var m = new GMarker(new GLatLng(53.0,6.5), clusterOptionsStart);
	map.addOverlay(m);
	GEvent.addListener(m, 'click', function() {
		map.setCenter(new GLatLng(50.875311,10.327148), 6);

	});
	GEvent.addListener(m, 'mouseover', function() {
		m.openToolTipStartseite('Deutschland');
	});

	GEvent.addListener(m, 'mouseout', function() {
		m.closeToolTipStartseite();
	});
	/*** Deutschland ***/

	/*** �sterreich ***/
	var oe = new GMarker(new GLatLng(49.2,11.952637), clusterOptionsStartklein);
	map.addOverlay(oe);
	GEvent.addListener(oe, 'click', function() {
		map.setCenter(new GLatLng(47.420654,13.392334), 7);

	});
	GEvent.addListener(oe, 'mouseover', function() {
		oe.openToolTipStartseite('&Ouml;sterreich');
	});

	GEvent.addListener(oe, 'mouseout', function() {
		oe.closeToolTipStartseite();
	});
	
	/*** �sterreich ***/
	

	/*** Schweiz ***/
	var ch = new GMarker(new GLatLng(47.9,6.8), clusterOptionsStartklein);
	map.addOverlay(ch);
	GEvent.addListener(ch, 'click', function() {
		map.setCenter(new GLatLng(46.84516443029276,8.41552734375), 7);

	});
	GEvent.addListener(ch, 'mouseover', function() {
		ch.openToolTipStartseite('Schweiz');
	});

	GEvent.addListener(ch, 'mouseout', function() {
		ch.closeToolTipStartseite();
	});
	
	/*** Schweiz ***/

	/*** Frankreich ***/
	var fr = new GMarker(new GLatLng(48.5,0.2), clusterOptionsStartklein);
	map.addOverlay(fr);
	GEvent.addListener(fr, 'click', function() {
		map.setCenter(new GLatLng(47.33882269482199, 2.17529296875), 6);

	});
	GEvent.addListener(fr, 'mouseover', function() {
		fr.openToolTipStartseite('Frankreich');
	});

	GEvent.addListener(fr, 'mouseout', function() {
		fr.closeToolTipStartseite();
	});
	/*** Frankreich ***/
	
	
	/*** Finnland ***/
	var fin = new GMarker(new GLatLng(63,23), clusterOptionsStartklein);
	map.addOverlay(fin);
	GEvent.addListener(fin, 'click', function() {
		map.setCenter(new GLatLng(63, 25), 5);

	});
	GEvent.addListener(fin, 'mouseover', function() {
		fin.openToolTipStartseite('Finnland');
	});

	GEvent.addListener(fin, 'mouseout', function() {
		fin.closeToolTipStartseite();
	});
	
	/*** Finnland ***/

	/*** Schweden ***/
	var sw = new GMarker(new GLatLng(60.128161,13.5), clusterOptionsStartklein);
	map.addOverlay(sw);
	GEvent.addListener(sw, 'click', function() {
		map.setCenter(new GLatLng(62, 17.5), 5);

	});
	GEvent.addListener(sw, 'mouseover', function() {
		sw.openToolTipStartseite('Schweden');
	});

	GEvent.addListener(sw, 'mouseout', function() {
		sw.closeToolTipStartseite();
	});
	
	/*** Schweden ***/

	/*** Norwergen ***/
	var n = new GMarker(new GLatLng(62,7), clusterOptionsStartklein);
	map.addOverlay(n);
	GEvent.addListener(n, 'click', function() {
		map.setCenter(new GLatLng(63, 9), 5);

	});
	GEvent.addListener(n, 'mouseover', function() {
		n.openToolTipStartseite('Norwegen');
	});

	GEvent.addListener(n, 'mouseout', function() {
		n.closeToolTipStartseite();
	});
	/*** Norwegen ***/

	hide_waitIcon();
}

/*** F�hrt ein Neuladen des Banners und des Statistik-Pixels aus ***/
function updateBanner(){

	if(document.getElementById("leaderboard") != null){
		document.getElementById("leaderboard").innerHTML = document.getElementById("leaderboard").innerHTML;
	}
	if(document.getElementById("skyscraper") != null){
		document.getElementById("skyscraper").innerHTML = document.getElementById("skyscraper").innerHTML;
	}
	if(document.getElementById("bannerhpa") != null){
		document.getElementById("bannerhpa").innerHTML = document.getElementById("bannerhpa").innerHTML;
	}
	if(document.getElementById("bannerfullsize") != null){
		document.getElementById("bannerfullsize").innerHTML = document.getElementById("bannerfullsize").innerHTML;
	}
	if(document.getElementById("track") != null){
		document.getElementById("track").innerHTML = document.getElementById("track").innerHTML;
	}
}

/*** generiert Such-Parameter-String zur �bergabe an PHP-Script ***/
function create_parameter(){
	var parameter = '';
	if(typeof HTTP_GET_VARS[0]['tx_atlasbase_guide[country]'] != 'undefined' && HTTP_GET_VARS[0]['tx_atlasbase_guide[country]'] != 'Land'){
		parameter = '&country='+HTTP_GET_VARS[0]['tx_atlasbase_guide[country]'];
	}
	
	if(typeof HTTP_GET_VARS[0]['tx_atlasbase_guide[zip]'] != 'undefined' && HTTP_GET_VARS[0]['tx_atlasbase_guide[zip]'] != 'PLZ'){	
		parameter += '&zip='+HTTP_GET_VARS[0]['tx_atlasbase_guide[zip]'];
	}

	if(typeof HTTP_GET_VARS[0]['tx_atlasbase_guide[region]'] != 'undefined'){
		parameter += '&region='+ encodeURI(HTTP_GET_VARS[0]['tx_atlasbase_guide[region]']);
	}

	if(typeof HTTP_GET_VARS[0]['tx_atlasbase_guide[sword]'] != 'undefined' && HTTP_GET_VARS[0]['tx_atlasbase_guide[sword]'] != 'Volltextsuche'){
		parameter += '&sword='+ encodeURI(HTTP_GET_VARS[0]['tx_atlasbase_guide[sword]']);
	}
	
	if(typeof HTTP_GET_VARS[0]['angebote'] != 'undefined'){
		var arr_ang = HTTP_GET_VARS[0]['angebote'];
		var ang = arr_ang.join(",");
		parameter += '&angebote='+ang;
	}
	return parameter;
}

/*** ermittelt Marker des Kartenausschnitts aus DB ***/
function retrieve_Markers(){
	var anz_suchparameter = HTTP_GET_VARS.length;
	var points;
	var kacheln;

	var anzahl_ausschnitt;
	var gesamtanzahl;
	
	map.clearOverlays();	

	//markerManager.clearMarkers();
	//clusterManager.clearMarkers();

	//wenn gesucht wurde
	if(anz_suchparameter > 0){
		
		//Per AJAX die Marker holen
		if (xmlHttp) {
	
			var param = create_parameter();
			//alert(param);
			
			xmlHttp.open("POST", '?eID=google', true);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			//xmlHttp.setRequestHeader("Content-length", params.length);
			//xmlHttp.setRequestHeader("Connection", "close");
		
			xmlHttp.onreadystatechange = function () {
        		if (xmlHttp.readyState == 4) {
					document.getElementById("wait").style.display = 'none';
					
					var jscript = xmlHttp.responseText;
					//var debug = document.getElementById("wait");
					//debug.innerHTML = jscript +' DEBUG';
					eval(jscript);
					
					var anzeige_anzahl = document.getElementById("anzahlkanu");
					var anzeige_anzahl_liste = document.getElementById("anzahlkanuliste");
	
					if(typeof anzahl_suche != 'undefined' && typeof gesamtanzahl  != 'undefined'){
						anzeige_anzahl.innerHTML = "Anzeige: " + anzahl_suche + " von " + gesamtanzahl + " Kanuvermietern";
						//if(anzahl_suche > 0)
						//anzeige_anzahl_liste.innerHTML = "Anzeige: " + anzahl_suche + " von " + gesamtanzahl + " Kanuvermietern";
					}							
					
					//Einzelne Punkte der Karte erzeugen
					if(typeof points != 'undefined'){
						for (i in points) {
							add_Marker(points[i].lat,points[i].lng,points[i].id,points[i].land,points[i].imgbubble, points[i].plz, points[i].ort,points[i].title, points[i].strasse, points[i].url);
						}
					}
					if(anzahl_suche == 0){
						var report1 = document.getElementById("kanuliste");
						report1.innerHTML = '<div style="font-size:11px;">Die von Ihnen gesuchten Begriffe ergaben keine Treffer.</div>';
					}
					//Artikelliste generieren
					if(typeof anzahl_suche != 'undefined' && anzahl_suche > 0){
						get_verleihguideliste(0, anzahl_suche);
					}
				}
				else if(xmlHttp.readyState == 1){
					show_waitIcon();			
				}
   			};
			xmlHttp.send('&function=search' + param);
		} //ende xmlHttp
	}
	//wenn Map mit Start-Zoom aufgerufen wird	
	else if(map.getZoom() <= 4){
		retrieve_overview();
	}
	else{
		//Per AJAX die Marker holen
		if (xmlHttp) {
			var params = "kacheln="+kachelneu;
			xmlHttp.open("POST", '?eID=google', true);
			xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			//xmlHttp.setRequestHeader("Content-length", params.length);
			//xmlHttp.setRequestHeader("Connection", "close");
		
			xmlHttp.onreadystatechange = function () {
				if (xmlHttp.readyState == 4) {
					document.getElementById("wait").style.display = 'none';
	
					if (xmlHttp.status == 200) {
	
						var jscript = xmlHttp.responseText;
						//var debug = document.getElementById("wait");
						//debug.innerHTML = jscript +' DEBUG';
						eval(jscript);
						var anzeige_anzahl = document.getElementById("anzahlkanu");
						var anzeige_anzahl_liste = document.getElementById("anzahlkanuliste");
	
						if(typeof anzahl_ausschnitt != 'undefined' && typeof gesamtanzahl  != 'undefined'){
							anzeige_anzahl.innerHTML = "Anzeige: " + anzahl_ausschnitt + " von " + gesamtanzahl + " Kanuvermietern";
							//anzeige_anzahl_liste.innerHTML = "Anzeige: " + anzahl_ausschnitt + " von " + gesamtanzahl + " Kanuvermietern";
						}							
						//Cluster erzeugen
						if(typeof kacheln != 'undefined'){
							for (i in kacheln) {
								add_Cluster(kacheln[i].nwlat,kacheln[i].nwlng, kacheln[i].nelat,kacheln[i].nelng, kacheln[i].swlat,kacheln[i].swlng, kacheln[i].anzahlpoi);
							}
						}
					
						//Einzelne Punkte der Liste erzeugen
						if(typeof points != 'undefined'){
							for (i in points) {
								add_Marker(points[i].lat,points[i].lng,points[i].id,points[i].land,points[i].imgbubble, points[i].plz, points[i].ort, points[i].title, points[i].strasse, points[i].url);
							}
						}
					
						//Artikelliste generieren
						if(typeof anzahl_ausschnitt  != 'undefined' && anzahl_ausschnitt > 0){
							//get_verleihguideliste(0, anzahl_ausschnitt);
							//updateBanner();
						}
					}
				}
				else if(xmlHttp.readyState == 1){
					show_waitIcon();				
				}
   			};
   			xmlHttp.send('&function=getMarkers&' + params);
		} //ende xmlHttp
	} //ende Zoomlevel
}

/*** generiert die JumpList ***/
function create_Jumplist(anzahl, skip, beschriftung, position){
	
	//Gesamt-Anzahl der Seiten, welche in der Jumplist dargestellt werden k�nnen
	var pages = Math.ceil(anzahl/anzahl_listenelement);
	//alert("Seiten: "+pages);
	
	//Ermitteln, ab welchem Eintrag die Jumplist beginnen soll
	if(skip >= (anzahl_listenelement*anzahl_jumplist_eintraege)){
		var seite_start = ((skip+anzahl_listenelement)/anzahl_listenelement)-anzahl_jumplist_eintraege;
	}
	else{
		var seite_start = 0;
	}
	
	var divclass = "";
	var prev = "";
	var next = "";
	
	if(position == 'jumplisttop'){
		divclass = "reiter_l2 nicht_drucken";
	}
	else{
		divclass = "reiter_l2 reiter_l2_unten";
	}
	
	var element = '<div class="' + divclass + '"><strong>' + beschriftung + '</strong><p>';

	for(i=0; i < anzahl_jumplist_eintraege && i < pages; i++){
		//erstes Element
     	if(i == 0){
			if(((seite_start+i)*anzahl_listenelement) == skip){
				element += '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i)*anzahl_listenelement) + ',' + anzahl + ')" class="first aktiv">' + (seite_start+i+1) + '</a>';
				//weiter-Button generieren
				next = '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i+1)*anzahl_listenelement) + ',' + anzahl + ')" class="next"></a>';
			}
			else{
				element += '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i)*anzahl_listenelement) + ',' + anzahl + ')" class="first">' + (seite_start+i+1) + '</a>';
			}
		}
		else{
			//Aktives Element
			if(((seite_start+i)*anzahl_listenelement) == skip){
				element += '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i)*anzahl_listenelement) + ',' + anzahl + ')" class="aktiv">' + (seite_start+i+1) + '</a>';

				//zurueck-Button generieren
				prev = '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i-1)*anzahl_listenelement) + ',' + anzahl + ')" class="prev"></a>';

				//weiter-Button generieren
				next = '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i+1)*anzahl_listenelement) + ',' + anzahl + ')" class="next"></a>';
			}
			else {
				element += '<a href="#liste" onclick="get_verleihguideliste(' + ((seite_start+i)*anzahl_listenelement) + ',' + anzahl + ')">' + (seite_start+i+1) + '</a>';
			}
		}
		
		//Maximum ist erreicht, wenn es weitere Seiten gibt wird der Weiter-Button ausgegeben
		if(i == (anzahl_jumplist_eintraege-1) && i < pages){
			element += '</p><div>' + prev + '<span>bl&auml;ttern</span>' + next +'</div></div>';
		}
		else if(i == (anzahl_jumplist_eintraege-1) && i >= pages){
			element += '</p></div>';
		}
		else if(i == (pages-1)){
			element += '</p></div>';
		}
	}
	return element;
}

/*** generiert die Liste der Stellpl�tze ***/
function get_verleihguideliste(skip, anzahl){
	var writeListe = document.getElementById("kanuliste");
	var liste = "";
	var points;
	
	//obere Jumplist
	liste += create_Jumplist(anzahl, skip, "Kanuvermieter", "jumplisttop");
	
	//Per AJAX die Stellpl�tze f�r die aktuelle Seite holen
	if (xmlHttpListe) {
		var mapsw = mapbounds.getSouthWest();
		var mapne = mapbounds.getNorthEast();

		//wenn gesucht wurde, die Parameter aus dem Formular uebergeben
		if(HTTP_GET_VARS.length > 0){
			var params = create_parameter();
			params += "&start="+skip;
			params += "&limit="+anzahl_listenelement;
			//alert (params);
			xmlHttpListe.open("POST", '?eID=google', true);
			xmlHttpListe.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		}
		else{ 
			var params = "nordostlat="+mapne.lat()+"&nordostlng="+mapne.lng()+"&suedwestlat="+mapsw.lat()+"&suedwestlng="+mapsw.lng()+"&start="+skip+"&limit="+anzahl_listenelement;
			//alert(params);
			xmlHttpListe.open("POST", '?eID=google', true);
			xmlHttpListe.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		}
		
		xmlHttpListe.onreadystatechange = function () {
        	if (xmlHttpListe.readyState == 4) {
				var jscript = xmlHttpListe.responseText;
				//var debug = document.getElementById("wait");
				//debug.innerHTML = jscript +' DEBUG';
				eval(jscript);

				//Listeneintraege erzeugen
				if(typeof points != 'undefined'){
					liste += '<span class="leerraum_2px">&nbsp;</span>';

					for (i in points) {
						liste += '<div class="box_links marginbottom_2px highlight nicht_drucken">';
						
						if(typeof points[i].imgliste != 'undefined'){
							liste += '<a href="' + points[i].url + '" target="_blank"><img class="bild" src="' + points[i].imgliste +'" width="150" alt="" title="" /></a>';
						}
						liste += '<div class="text"><h2><a href="' + points[i].url + '" target="_blank">';
						if( points[i].title != ''){
						 	liste += points[i].title; 						
						}
						else{
							liste += 'Dies ist der Titel';
						}

						liste += '</a></h2><p class="mit_wertung">';
						if( typeof points[i].strasse != 'undefined'){
							liste += points[i].strasse + '<br/>';
						}
						liste += points[i].land + ' - ';
						liste += points[i].plz + ' ' + points[i].ort + '<br/>';
						//if(typeof points[i].termin != 'undefined' && points[i].termin != ''){
						//	liste += '<br>' + points[i].termin + '<br/>';
						//}
						liste += '<b><a href="' + points[i].url + '" target="_blank">mehr &raquo;</a></b>';

						liste += '</p></div><br class="c"><br class="c"></div>';
					}
				}
				//untere Jumplist
				liste += create_Jumplist(anzahl, skip, " ", "jumplistbottom");
				//writeListe.innerHTML = liste;
			}
							
   		};
   		if(HTTP_GET_VARS.length > 0)
   			xmlHttpListe.send('&function=search&' + params);
   		else
   			xmlHttpListe.send('&function=getMarkerList&' + params);
	}
}

window.onload = init;
window.onunload = GUnload;