// JavaScript Document

function getInfo(id, state) {
	var arrFeatures = tree.getAllChecked();
	arrFeatures = arrFeatures.split(",");
	/*console.log(arrFeatures);
	for (var key in arrFeatures) {
		console.log(key);	
	}*/
	// var arrParams = id.split("_");
	// GLog.write("id: " + id + " state: " + state + " " + arrParams[0] + " " + arrParams[1] + " " + arrParams[2]);
	// console.log("id: " + id + " state: " + state + " " + arrParams[0] + " " + arrParams[1] + " " + arrParams[2]);
	// console.log(tree.getAllChecked());
	// if (state) {
		geoSearch(arrFeatures); // arrParams[0] + "_" + arrParams[1],arrParams[2]);
	// }
}

function setInfo(feature) {
	// console.log("setInfo");
	tree.setCheck(feature, true);
	getInfo(feature,true);
}

function djPopUp(title,url,cache) {
	try {
		 diag.destroyRecursive();
	} catch(e) {
	}
	diag = new dijit.Dialog;
	if (cache) {
		diag.refreshOnShow = true;
	} else {
		diag.refreshOnShow = false;
	}
	if (title != '') {
		diag.titleNode.innerHTML = title;
	}
	diag.setHref(url);
	diag.show();
}

function showAddress(address) {
	geocoder.getLatLng(address,function(point) {
		if (!point) {
			// console.log(address + " nicht gefunden!");
		} else {
			map.setCenter(point, 13);
		}
	});
}

function submitSearch(event) {
		if (event && event.which == 13) {
			// showAddress(document.forms['frmAdress'].adress.value)
			regioSearch(document.forms['frmAdress'].adress.value)
		} else { return true; }
	}
function radioWert(rObj) {
    for (var i=0; i<rObj.length; i++) if (rObj[i].checked) return rObj[i].value;
    return false;
  }
  
function selectWert(sObj) {
	with (sObj) return options[selectedIndex].value;
}
  
function addPlaner(poi_id) {
	var poiArr = dojo.cookie("planPoi");
	console.log(poiArr)
	if (poiArr) {
		poiArr += "|";
	} else {
		poiArr = "";
	}
	poiArr += poi_id;
	dojo.cookie("planPoi",poiArr,"{path:'/de/'; domain:''; expires:0}");
	diag.hide();
	djPopUp('mein Reisef&uuml;hrer','reisefuehrer.php',true);
}

function removePlaner(poi_id) {
	var poiStr = dojo.cookie("planPoi");
	var poArr = new Array();
	var newStr = "";
	poiArr = poiStr.split("|");
	var first = true;
	for (i=0; i<poiArr.length; i++) {
		if (poiArr[i] != poi_id) {
			if (!first) {
				newStr += "|";
			}
			newStr += poiArr[i];
			first = false;
		}
	}
	dojo.cookie("planPoi",newStr,"{path:'/de/'; domain:''; expires:0}");
	diag.refresh();
}

function emptyPlaner() {
	var kw = {
		url: "/emptyplaner.php",
		handleAs:"text",
		load: function(response){
			// console.log(response);
		},
		error: function(data){
			console.log("postxhr: An error occurred: " + data);
		},
		timeout: 20000
	};
	
	dojo.xhrPost(kw);
	
	dojo.cookie("planPoi","",{expires: -1});
}


function TileToQuadKey ( tx, ty, zl){
	var quad;
	quad = "";
	for (var i = zl; i > 0; i--){
		var mask = 1 << (i - 1);
		var cell = 0;
		if ((tx & mask) != 0)
			cell++;
		if ((ty & mask) != 0)
			cell += 2;
		quad += cell;
	}
	return quad;
}

function FensterOeffnen (Adresse) {
  	Fenster1 = window.open(Adresse, "Regioeintrag", "width=530,height=628,scrollbars=yes");
  	Fenster1.focus();
}

function getRoute(fromAddress, toAddress) {
	if ((fromAddress == -1) || (toAddress == -1)) {
		return false;
	}
	
	var arrWayp = new Array();
	
	var url = "/php/get_route.php";
	
	var arrFrom = fromAddress.split("|");
	var arrTo = toAddress.split("|");
	
	url += "?ort_von=" + arrFrom[4] + "&ort_nach=" + arrTo[4];
	
	document.getElementById('suchergebnis').innerHTML = '<br/><img src="/global/images/ajax-loader.gif" width="32" height="32"> wird geladen...';
	document.getElementById("status").innerHTML = 'Route von ' + arrFrom[3] + ' nach ' + arrTo[3] + ' wird berechnet...';
	
	var d = dojo.xhrGet({
		url: url,
		handleAs: "json",
		load: function(data,args){
			document.getElementById("status").innerHTML = data['items'] + " Streckenabschnitte gefunden...";
			document.getElementById('suchergebnis').innerHTML = "<h2>Routing</h2>";
			console.log(data['count']);
			if (data['count'] > 24) {
				document.getElementById('suchergebnis').innerHTML += "Auf der gew&uuml;nschten Route liegen zu viele Burgen. Die Route wird nur bis zur 24. Burg entlang der Burgenstra&szlig;e berechnet.<br/><br/>";	
			}
			document.getElementById('suchergebnis').innerHTML += "<ul>";
			dojo.forEach(data['items'], function(obj, num){
				arrWayp.push(obj['poi_name'] + "@" + obj['poi_northing_wgs84'] + ", " + obj['poi_easting_wgs84']);
				if (obj['poi_kategorie'] != "155") {
					document.getElementById('suchergebnis').innerHTML += "<li>" + obj['poi_name'] + "</li>";
				}
		    });
			
			document.getElementById('suchergebnis').innerHTML += "</ul>";

			gdir.loadFromWaypoints(arrWayp, {avoidHighways: true});
			document.getElementById("status").innerHTML = "regio-city";
		},
		error: function(error,args){
			console.warn("getRoute ",error);
		}
	});
}

var castleroute = [];
var ovnum, ovmaxNum;

function showCastleRoute(fromAddress, toAddress, pan) {
	if ((fromAddress == -1) || (toAddress == -1)) {
		return false;
	}
	var url = "http://cableconnect.mediatouch-webserver.de/php/get_line_burgenstrasse.php";
	
	
	var arrFrom = fromAddress.split("|");
	var arrTo = toAddress.split("|");
	
	if (pan) {
		document.getElementById('suchergebnis').innerHTML = '<br/><img src="/global/images/ajax-loader.gif" width="32" height="32"> wird geladen...';
		document.getElementById("status").innerHTML = 'Route von ' + arrFrom[3] + ' nach ' + arrTo[3] + ' wird berechnet...';
	}
	url += "?from=" + arrFrom[0] + "&to=" + arrTo[0];
	// console.log("showCastleRoute", url);
	// console.log(fromAddress);
	delCastleRoute();
	
	var d = dojo.xhrGet({
		url: url,
		handleAs: "json",
		load: function(data,args){
			// console.log("load", data, args);
			// console.log(dojo.fromJson(data));
			ovnum = 0;
			ovmaxNum = 0;
			ovmaxNum = dojo.fromJson(data).length;
			
			var gesamtLaenge = 0;
			// console.log("ovmaxNum " + ovmaxNum);
			if (ovmaxNum > 0) {
				
				
				var bounds = new GLatLngBounds();
				dojo.forEach(dojo.fromJson(data), function(obj, num){
					// console.log("load", obj);
					var lineobj = obj;
					var objtoAdd = null;
					var points = [];
					var polylength = lineobj.length;
					
					document.getElementById("status").innerHTML = polylength + " Streckenabschnitte gefunden...";
					
					if (typeof lineobj[1][0] == "object") {
						var polycount = lineobj.length;
						objtoAdd = null;
						for (var z=1; z<polycount; z++) {
							var points = [];
							for (var x in lineobj[z]) {
								var point = new GLatLng(lineobj[z][x][0], lineobj[z][x][1]);
								points.push(point);
								bounds.extend(point);
							}
							var objtoAdd = new GPolyline(points, '#fbfa64', 10, 0.5);
						}
					} else {
						for (var i=1; i<polylength; i++) {
							var point = new GLatLng(lineobj[i][0], lineobj[i][1])
							points.push(point);
							bounds.extend(point);
						}
						var objtoAdd = new GPolyline(points, '#fbfa64', 10, 0.5);
					}
					castleroute[num] = [];
					castleroute[num] = objtoAdd;
					// map.addOverlay(objtoAdd);
					// console.log(objtoAdd.getLength());
					gesamtLaenge += objtoAdd.getLength();
					
					
				});
				
				if (pan) {
					// console.log("pan");
					map.setZoom(map.getBoundsZoomLevel(bounds));
					// setTimeout(function(){map.panTo(bounds.getCenter());}, 500);
					map.setCenter(bounds.getCenter());
				
					gesamtLaenge = "<h2>Route</h2><br/>Von: <strong>" + arrFrom[3] + "</strong><br/><br/>Nach: <strong>" + arrTo[3] + "</strong><br/><br/><br/>" + (Math.round(gesamtLaenge / 10) / 100) + " km";
					document.getElementById('suchergebnis').innerHTML = gesamtLaenge;
					document.getElementById("status").innerHTML = "regio-city";
				}
				// console.log(gesamtLaenge);
				setTimeout(function(){createOverlay();}, 2000);
			} else {
				alert("Die Route �ber die Burgenstra�e konnte nicht ermittelt werden!");	
			}
		}
		});
}

function createOverlay(){
	if (castleroute[ovnum]) {
		// console.log(ovnum);
		map.addOverlay(castleroute[ovnum]);
	}
	ovnum++;
	if (ovnum < ovmaxNum) {
		setTimeout(function(){createOverlay();}, 10);	
	} else {
		// console.log("ende");
		// ovnum = 0;
	}
}

function delCastleRoute() {
	var polyLen = castleroute.length;
	for (var i=0; i < polyLen; i++) {
		// console.log("removing " + i);
		map.removeOverlay(castleroute[i]);
		castleroute[i] = null;
	}
	// castleroute[] = null;
	castleroute = [];
}
