var setMap = function(c) {
	LazyLoad.js(basepath + '_/scripts/libs/src/googlemaps.js', function() {
		googlemaps.createDataList = googlemaps.createDataList.createInterceptor(function() {
			return (false);
		});
		if (typeof googlemaps != 'undefined') {
			if (googlemaps.mapsloaded) {
				initGmap(c);
			} else {
				recon.on('googlemapsLoaded', function() {
					initGmap(c);
				});
			}
		};
	});
};
var initGmap = function(c) {
	var config = {
		id : c,
		pois : '',
		navi : '',
		kml : [],
		options : {
			backgroundColor : '#ffffff',
			zoom : 17,
			mapTypeId : google.maps.MapTypeId.ROADMAP,
			disableDefaultUI : false,
			center : new google.maps.LatLng('50.320566', '11.902676'),
			disableDoubleClickZoom : false,
			draggable : true,
			keyboardShortcuts : true,
			mapTypeControl : true,
			navigationControl : true,
			scaleControl : true,
			scrollwheel : false,
			navi : 1
		}
	};
	googlemaps.init(config);
	google.maps.event.clearListeners(googlemaps.maps[c], 'dragstart');
	google.maps.event.clearListeners(googlemaps.maps[c], 'dragend');
	google.maps.event.clearListeners(googlemaps.maps[c], 'bounds_changed');
	google.maps.event.addListener(googlemaps.maps[c], 'bounds_changed', function() {
		googlemaps.redrawClusters(c);
	});
	google.maps.event.addListener(googlemaps.markers[c][0], 'click', function(event) {
		googlemaps.infoWindow.close();
		googlemaps.infoWindow.open(googlemaps.maps[c], googlemaps.markers[c][0]);
		var html = googlemaps.markers[c][0]._data.customtext;
		html += '<hr><div><input type="text" style="width:136px;" id="gmaps_saddr"><input type="button" value="Route berechnen" id="startroute" style="margin-top:5px;" onclick="calcRoute(this, \'' + c + '\'); return(false);"></div>';
		googlemaps.infoWindow.setContent(html);
	})
};
var dialog, calcRoute = function(btn, c) {
	var startroutebtn = Ext.get(btn);
	if (startroutebtn) {
		var v = Ext.getDom('gmaps_saddr').value, pos = googlemaps.infoWindow.getPosition(), ds = new google.maps.DirectionsService(), geocoder = new google.maps.Geocoder(), directionsDisplay = new google.maps.DirectionsRenderer({
			hideRouteList : true,
			draggable : true
		});
		directionsDisplay.setMap(googlemaps.maps[c]);
		geocoder.geocode({
			address : v
		}, function(GeocoderResult, GeocoderStatus) {
			if (GeocoderStatus == google.maps.DirectionsStatus.OK) {
				var origin = GeocoderResult[0].geometry.location;
				var map = googlemaps.maps[c];
				ds.route({
					destination : pos,
					origin : origin,
					provideRouteAlternatives : true,
					travelMode : google.maps.DirectionsTravelMode.DRIVING
				}, function(GeocoderResult, GeocoderStatus) {
					if (GeocoderStatus == google.maps.DirectionsStatus.OK) {
						if (!dialog) {
							var dirid = Ext.id();
							var dlgbody = Ext.DomHelper.append(document.body, {
								tag : 'div',
								id : dirid
							});
							dialog = new Ext.BasicDialog(dlgbody, {
								autoTabs : false,
								width : 450,
								height : 500,
								shadow : true,
								minWidth : 450,
								minHeight : 250,
								proxyDrag : true
							});
							dialog.addKeyListener(27, dialog.hide, dialog);
							dialog.addButton('Druckansicht', function() {
								var url = 'http://maps.google.de/maps?saddr=' + GeocoderResult.routes[0].legs[0].start_address + '&daddr=' + GeocoderResult.routes[0].legs[0].end_address + '&pw=1&z=' + map.getZoom();
								var cf = {
									name : 'printgoogle',
									width : 800,
									height : 600,
									scrollbars : 'yes',
									resizable : 'yes',
									left : 0,
									top : 0,
									toolbar : 'no',
									menubar : 'no'
								};
								owin(url, cf);
							}, this);
							dialog.addButton('Schlie&szlig;en', dialog.hide, dialog);
							dialog.on('hide', function() {
								directionsDisplay.setMap(null);
								directionsDisplay.setPanel(null);
							}.createDelegate(this));
						};
						dialog.show();
						dialog.alignTo(map.getDiv(), 'tl-tr');
						dialog.adjustViewport(Ext.lib.Dom.getViewWidth() - 10, Ext.lib.Dom.getViewHeight());
						dialog.onResize.defer(50, dialog);
						directionsDisplay.setDirections(GeocoderResult);
						directionsDisplay.setPanel(dialog.body.dom);
						googlemaps.infoWindow.close();
					}
				});
			}
		});
	};
};
var showWebCam = function() {
	var jetzt = new Date();
	var Zeit = jetzt.getTime()
	var url = "http://webcam.stadthof.org/fhh-webcam/aok/fhhcam.jpg?" + Zeit;
	var box = Ext.MessageBox.show({
		title : 'Freiheitshalle Hof',
		msg : 'Loading',
		modal : false,
		width : 800,
		height : 480,
		animEl : Ext.get('webcam'),
		fn : function() {
			Ext.MessageBox.hide();
		}
	});
	var txt = '<div style="width:800px; height: 480px; overflow-x:hidden; overflow-y:hidden; text-align:center;"><img id="webcamPic" src="' + url + '" width="640"></div>';
	txt += '<div style="text-align:center; margin-top:20px;" class="webcamtime">';
	var wcs = Number(new Date().format('H00')), remaining = 15;
	if (wcs > 2100) {
		wcs = 2100;
	};
	for (wcs; wcs >= 700; wcs -= 100) {
		remaining--;
		txt += '<a href="#" onclick="setWebcam(\'' + (wcs < 1000 ? '0' + wcs : wcs) + '\'); return(false);">' + (wcs < 1000 ? '0' + (wcs / 100) : wcs / 100) + ':00</a>';
	};
	if (remaining > 0) {
		wcs = 2100;
		for (remaining; remaining > 0; remaining--) {
			txt += '<a href="#" onclick="setWebcam(\'' + (wcs < 1000 ? '0' + wcs : wcs) + '\'); return(false);">' + (wcs < 1000 ? '0' + (wcs / 100) : wcs / 100) + ':00</a>';
			wcs -= 100;
		}
	};
	txt += '</div>';
	txt += '<div style="margin-top:20px; margin-left:80px; width:650px;">Es wird alle 5 Minuten ein neues Bild erzeugt. Die Bilder der letzten 24 Stunden des Zeitraumes von 7 bis 21 Uhr stehen im 60-Minuten-Takt durch Anklicken der Uhrzeit unterhalb des Bildes zur Verf&uuml;gung.</div>';
	txt += '<div style="margin-top:20px; margin-left:80px; width:650px;"><b>Sponsoren:</b> Wir bedanken uns f&uuml;r die &Uuml;berlassung der Ger&auml;te und des Kamerastandortes recht herzlich.</div>';
	txt += '<div style="height:100px; margin-left:80px; width:650px;">';
	txt += '<div style="margin-top:20px; width:216px; float:left;">Die Kamera befindet sich auf dem Geb&auml;ude der AOK Hof<br><br><img src="' + basepath + '__/images/aok.png" border ="0" alt="" width="71" height="40"></div>';
	txt += '<div style="margin-top:20px; width:216px; float:left;">Die verwendete Hardware ist eine Leihgabe der Firma<br><br><img src="' + basepath + '__/images/steinwald.png" border ="0" alt="" width="155" height="34"></div>';
	txt += '<div style="margin-top:20px; width:216px; float:left;">Die &Uuml;bertragung der Bilder per UMTS erfolgt durch<br><br><img src="' + basepath + '__/images/vodafone.png" border ="0" alt="" width="72" height="49"></div>';
	txt += '</div>';
	Ext.MessageBox.updateText(txt);
	Ext.MessageBox.getDialog().center();
};
var bgloaded = 0;
runOnLoad(function() {
	var webcam = Ext.get('webcam');
	if (webcam) {
		Ext.Msg.maxWidth = 1280;
		webcam.on('click', showWebCam);
	};
	var bgslide = Ext.get('bgslide');
	if (bgslide) {
		var images = {}, t = new Date().clearTime().format('dmy');
		for ( var z = 1; z <= 5; z++) {
			images['img' + z] = new Image();
			Ext.get(images['img' + z]).on('load', function() {
				bgloaded++;
				if (bgloaded == 6) {
					fade();
				}
			});
			images['img' + z].src = '/__/images/bg/FH_Background_' + z + '.jpg?_dc=' + t;
			var div = Ext.DomHelper.append(bgslide, {
				tag : 'div',
				id : 'bgdiv' + z,
				html : '&nbsp;',
				style : 'background-image: url(/__/images/bg/FH_Background_' + z + '.jpg?_dc=' + t + ');'
			}, true);
			div.setOpacity(0);
		};
		images['img' + z] = new Image();
		Ext.get(images['img' + z]).on('load', function() {
			bgloaded++;
			if (bgloaded == 6) {
				fade();
			}
		});
		images['img' + z].src = '/__/images/bg/FH_Background_1.jpg?_dc=' + t;
		var div = Ext.DomHelper.append(bgslide, {
			tag : 'div',
			id : 'bgdiv' + z,
			html : '&nbsp;',
			style : 'background-image: url(/__/images/bg/FH_Background_1.jpg?_dc=' + t + ');'
		}, true);
		div.setOpacity(0);
	};
	if (Ext.isIE7 || Ext.isIE8) {
		Ext.get(document.body).addClass('IEredraw');
		Ext.get(document.body).removeClass('IEredraw');
	}
});
var curr = 1, reset = false;
var fade = function() {
	if (reset) {
		for ( var z = 2; z <= 6; z++) {
			Ext.get('bgdiv' + z).setOpacity(0);
		}
	};
	Ext.get('bgdiv' + curr).shift({
		opacity : 1,
		duration : 2,
		callback : function() {
			curr++;
			if (curr > 6) {
				curr = 2;
				reset = true;
			} else {
				reset = false;
			};
			window.setTimeout(window.fade, 6000);
		}
	});
};
Ext.onReady(function() {
	var s = Ext.get('headnavistart') || Ext.get('headnavi'), subnavs = {}, spinner, bdlistener = false, opts = {
		lines : 12, // The number of lines to draw
		length : 5, // The length of each line
		width : 2, // The line thickness
		radius : 5, // The radius of the inner circle
		color : '#fff', // #rgb or #rrggbb
		speed : 1, // Rounds per second
		trail : 60, // Afterglow percentage
		shadow : true
	};
	if (s) {
		var isHome = s.id === 'headnavihome';
		if (s.select('ul.headnavsubsUL').getCount() == 0) {
			s.dom.style.background = 'url("' + basepath + '__/images/headnavibgstart.png") repeat-x scroll left bottom transparent';
		};
		if (!isHome) {
			s.select('ul.headnavsubsUL').each(function(el) {
				el.addClass('static');
				subnavs[document.location.href.split('?')[0] + '?_lyb=f392028368fd4ea8e7121a01d048acc9'] = el;
			});
		};
		LazyLoad.js(basepath + '__/scripts/spin.min.js', function() {
			Ext.Ajax.autoAbort = true;
			s.select('li[class^=li_headnav]').each(function(li) {
				li.on('mouseover', function(ev, el) {
					if (!bdlistener) {
						Ext.fly(document.body).on('mouseover', function(ev, el) {
							if (ev.within(s) || ev.target == s.dom) {
								return;
							};
							s.select('ul.headnavsubsUL').each(function(el) {
								el.hide();
								s.dom.style.background = 'url("' + basepath + '__/images/headnavibgstart.png") repeat-x scroll left bottom transparent';
							});
							s.select('ul.headnavsubsUL').each(function(el) {
								if (el.hasClass('static')) {
									el.show();
									s.dom.style.background = 'url(' + basepath + '__/images/headnavi.gif) top left repeat-x';
								};
							});
							Ext.fly(document.body).removeAllListeners();
							bdlistener = false;
							if (Ext.isIE7 || Ext.isIE8) {
								Ext.get(document.body).addClass('IEredraw');
								Ext.get(document.body).removeClass('IEredraw');
							}
						});
						bdlistener = true;
					};
					var url = el.href + '?_lyb=f392028368fd4ea8e7121a01d048acc9';
					if (subnavs[url]) {
						if (spinner) {
							spinner.stop();
						};
						s.select('ul.headnavsubsUL').each(function(el) {
							el.hide();
							s.dom.style.background = 'url("' + basepath + '__/images/headnavibgstart.png") repeat-x scroll left bottom transparent';
						});
						subnavs[url].show();
						s.dom.style.background = 'url(' + basepath + '__/images/headnavi.gif) top left repeat-x';
						if (Ext.isIE7 || Ext.isIE8) {
							Ext.get(document.body).addClass('IEredraw');
							Ext.get(document.body).removeClass('IEredraw');
						}
						return;
					} else {
						// spinner = new Spinner(opts).spin(s.dom);
				};
				Ext.Ajax.request({
					url : url,
					success : function(req) {
						// spinner.stop();
						s.select('ul.headnavsubsUL').each(function(el) {
							el.hide();
							s.dom.style.background = 'url("' + basepath + '__/images/headnavibgstart.png") repeat-x scroll left bottom transparent';
						});
						var o = decode(req.responseText);
						if (isObject(o) && o.html) {
							var n = Ext.DomHelper.insertFirst(s, o.html, true);
							subnavs[url] = n;
							s.dom.style.background = 'url(' + basepath + '__/images/headnavi.gif) top left repeat-x';
						};
						if (Ext.isIE7 || Ext.isIE8) {
							Ext.get(document.body).addClass('IEredraw');
							Ext.get(document.body).removeClass('IEredraw');
						}
					}
				});
			}	);
			});
		});
	};
	var anim = Ext.get('anim');
	if (anim) {
		runOnLoadFinish(function() {
			LazyLoad.js([
				basepath + '__/scripts/anim.js',
				basepath + '__/scripts/div.js'
			], function() {
				LazyLoad.css(basepath + '__/styles/anim.css', function() {
					var start = window.start.createSequence(function() {
						anim.fadeIn();
					});
					start();
				});
			});
		});
	}
});
runOnLoadFinish(function() {
	var sl = Ext.get('slider');
	if (sl) {
		var sld = sl.down('div');
		sld.setHeight(330);
	};
});
var setWebcam = function(t) {
	var webcampic = Ext.getDom('webcamPic');
	webcampic.src = 'http://webcam.stadthof.org/fhh-webcam/aok/fhhcam_' + t + '.jpg?_dc=' + getUniqueID();
};
Ext.Element.prototype.setOpacity = function(opacity, animate) {
	if (!animate || !Ext.lib.Anim) {
		var s = this.dom.style;
		if (Ext.isIE7 || Ext.isIE8) {
			s.zoom = 1;
			s.filter = (s.filter || '').replace(/alpha\([^\)]*\)/gi, "") + (opacity == 1 ? "" : "alpha(opacity=" + opacity * 100 + ")");
		} else {
			s.opacity = opacity;
		}
	} else {
		this.anim({
			opacity : {
				to : opacity
			}
		}, this.preanim(arguments, 1), null, .35, 'easeIn');
	}
	return this;
}

