var baseurl = "http://service.tagesschau.de/wetter/unwetter/";
var ajaxurl = "http://service.tagesschau.de:8080/getPixelInfo";

var elem = "";

function initunwetter() {
	elem = $("karte");
	elem.allow = 1;
	elem.allow2 = 1;
	elem.k = 'brd';
	elem.title = "";
	Event.observe(elem, 'mouseup', stopscroll.bindAsEventListener(elem));
	Event.observe(elem, 'mouseout', hidetooltip.bindAsEventListener(elem));
	Event.observe(elem, 'mousemove', rohandler.bindAsEventListener(elem));
	Event.observe(elem, 'mousedown', ajaxhandler.bindAsEventListener(elem));
	gettooltipdata();
	setInterval("gettooltipdata()", 1500);

	var elem3 = $("unwetterUL");
	var elem4 = $("unwetterNavi");
	var elem5 = $("unwetterText");
	if (elem3.getHeight() > elem5.getHeight() + 3) elem4.setStyle({'display':'block'});
	else elem4.setStyle({'display':'none'});

}

function stopscroll() {
	clearInterval(window.scrolling);
}
function allowro() {
	elem.allow2 = 1;
	clearTimeout(elem.ro);
}
function hidetooltip() {
	$("tooltip").setStyle({"display":"none"});
	$("tooltip").innerHTML = "";
}

function rohandler (evt) {
	if (typeof elem == 'object') {
		elem.epx = Event.pointerX(evt);
		elem.epy = Event.pointerY(evt);
	}
}

function gettooltipdata() {
	if (elem.epx == null || elem.epy == null) return;
	if (elem.epx == elem.lastx && elem.epy == elem.lasty) return;
	elem.lastx = elem.epx;
	elem.lasty = elem.epy;
	var p = Position.cumulativeOffset(elem);
	this.myx = elem.epx - p[0];
	this.myy = elem.epy - p[1];
	elem.csspx = "" + (elem.epx + 8) + "px";
	elem.csspy = "" + (elem.epy + 12) + "px";
	new Ajax.Request(ajaxurl + '?k='+elem.k+'karte_out&x='+this.myx+'&y=' + this.myy, {
		method:'get',
		onComplete: function(transport){
			container = transport.responseText.evalJSON();
			var region = "";
			var regions = {"sued": "zu den südlichen Bundesländern", "ost": "zu den östlichen Bundesländern", "west": "zu den westlichen Bundesländern", "nord": "zu den nördlichen Bundesländern", "nordsee":"zur Nordsee", "ostsee":"zur Ostsee"};
			if (container['regionname'].split("_")[0] == "region") {
				region = regions[container['regionname'].split("_")[1].toLowerCase()];
			} else if (container['regionname'] != "") {
				region = container['regionname'];
			} 
			if (region != "") {
				$("tooltip").innerHTML = region;
				$("tooltip").setStyle({"display":"block", "left": elem.csspx, "top": elem.csspy});
				clearTimeout(elem.hidett);
				elem.hidett = setTimeout("hidetooltip()", 3000);
			} else hidetooltip();
		}
	});
}


function ajaxhandler (evt, x, y) {
	var p = Position.cumulativeOffset(elem);
	elem.curleft = p[0]; 	// find offset position of element
	elem.curtop  = p[1];
	if (elem.allow == 1) {
    	if (typeof evt == "object") {
    		this.myx = Event.pointerX(evt) - this.curleft;
    		this.myy = Event.pointerY(evt) - this.curtop;
    	} else {
    		var pos = document.location.hash.substr(2).split(",");
			this.myx = pos[0];
    		this.myy = pos[1];
			clearTimeout();
    	}
    	elem.allow = 0;
		new Ajax.Request(ajaxurl + '?k='+elem.k+'karte_out&x='+this.myx+'&y=' + this.myy, {
				method:'get',
				onComplete: function(transport){
					container = transport.responseText.evalJSON();
					elem.allow = 1;
					var elem2 = $("landkreis");
					var elem3 = $("unwetterUL");
					var elem4 = $("unwetterNavi");
					var elem5 = $("unwetterText");
					elem3.style.top = 0;
					elem5.removeClassName("ie7hack");
					if (container['regionname'] == "") {
						elem2.innerHTML = "Wetterwarnungen";
						elem3.innerHTML = "<li><p>Sie haben keinen Landkreis ausgewählt. </p><p>Wenn Sie auf einen eingefärbten Landkreis auf der Karte klicken, wird Ihnen die entsprechende Warnung angezeigt.</p></li>";
						elem4.setStyle({'display':'none'});
					} else if (container['regionname'].split("_")[0] == "region") {
						var region = container['regionname'].split("_")[1].toLowerCase();
						setregion(region);
						hidetooltip();
					}
					else{
						elem2.innerHTML = container['regionname'] + "<br />";
						var warn = "";
						for(var i = 0; i < container['warnungen'].length; i++) {
							warn += container['warnungen'][i];
						}
						if (i == 0) warn = "<li><p>Es liegen keine Wetterwarnungen vor.</p></li>";
							
						elem3.innerHTML = warn;
						if (elem3.getHeight() > elem5.getHeight()) elem4.setStyle({'display':'block'});
						else elem4.setStyle({'display':'none'});
						setivwpixel(escape(container['regionname']));
					}
					
					},
				onException: function (e) 
					{ 
					//alert (e);
					}      
		});
    }
}

function switchlayers (newlayer) {
	var all = $$("#warnungscontainer div.switchable");
	for (var i = 0; i < all.length; i++) {
		all[i].setStyle({'display':'none'});
	}
	$(newlayer + "div").setStyle({'display':'block'});

	var all = $$("#umschalter li");
	for (var i = 0; i < all.length; i++) {
		all[i].removeClassName("on");
		all[i].removeClassName("preon");
		if (all[i + 1] == $(newlayer)) all[i].addClassName("preon");
	}
	$(newlayer).addClassName("on");
	if (newlayer == 'infolayer') {
		switchinfolayers('infowarnsystem');
		document.location.hash = "textinfo";
	}
}

function switchinfolayers (newlayer) {
	var all = $$("#infolayerdiv div.article");
	for (var i = 0; i < all.length; i++) {
		all[i].setStyle({'display':'none'});
	}
	$(newlayer + "div").setStyle({'display':'block'});
	var all = $$("#infonav li");
	for (var i = 0; i < all.length; i++) {
		all[i].removeClassName("on");
	}
	$(newlayer).addClassName("on");
}

function setregion(k) {
	elem.k = k;
	elem.src = baseurl + 'karten/'+k+'.jpg?' + new Date().getTime();
	var elem2 = $("landkreis");
	var elem3 = $("unwetterUL");
	var elem4 = $("unwetterNavi");
	elem2.innerHTML = "Wetterwarnungen";
	elem3.innerHTML = "<li><p>Sie haben keinen Landkreis ausgewählt. </p><p>Wenn Sie auf einen eingefärbten Landkreis auf der Karte klicken, wird Ihnen die entsprechende Warnung angezeigt.</p></li>";
	elem4.setStyle({'display':'none'});
	setregionlinks();
	if (k == 'brd') switchlayers("lage24");
	else switchlayers("lageregional");
	setregionalelage();
	setivwpixel(k);
}

function setivwpixel(k) {
	var pix = $("ivwpixel");
	pix.src = "http://tagessch.ivwbox.de/cgi-bin/ivw/FP/tagesschau/tagesschau;page=/flash/wetter/unwetterwarnungen/" + k + +'?r='+escape(document.referrer) + '&t=' + new Date().getTime();
}


function setregionalelage() {
	var ids = null;
	var regnav = $$("#lageregionaldiv #regnav li");
	for (var i = 0; i < regnav.length; i++) {
		regnav[i].removeClassName("on");
	}
	switch(elem.k) {
		case "nord":
			ids = new Array('DWHG', 'DWHH', 'DWPH');
			$("regnav" + elem.k).addClassName("on");
			break;
		case "ost":
			ids = new Array('DWLG', 'DWLH', 'DWLI', 'DWPG', 'DWPH');
			$("regnav" + elem.k).addClassName("on");
			break;
		case "sued":
			ids = new Array('DWMG', 'DWSG');
			$("regnav" + elem.k).addClassName("on");
			break;
		case "west":
			ids = new Array('DWEH', 'DWOH', 'DWOI');
			$("regnav" + elem.k).addClassName("on");
			break;		
		default:
			ids = new Array('DWEH', 'DWHG', 'DWHH', 'DWLG', 'DWLH', 'DWLI', 'DWMG', 'DWOH', 'DWOI', 'DWPG', 'DWPH', 'DWSG');
			$("regnavbrd").addClassName("on");
			break;
	}

	var all = $$("#lageregionaldiv ul.reg");
	for (var i = 0; i < all.length; i++) {
		all[i].setStyle({'display':'none'});
	}
	for (var i = 0; i < ids.length; i++) {
		if (e = $(ids[i])) {
			e.setStyle({'display':'block'});
		}
	}

}
function setregionlinks() {
	switch(elem.k) {
		case "nord":
		case "ost":
		case "west":
		case "sued":
		case "nordsee":
		case "ostsee":
			var html = '<ul><li title="zur Deutschlandkarte" class="brd" href="#" onmouseup="setregion(\'brd\');"></li></ul>';
			break;
		default:
			var html = '<ul>';
			html += '<li title="zu den n&ouml;rdlichen Bundesl&auml;ndern" class="land" onmouseup="setregion(\'nord\');"></li>';
			html += '<li title="zu den westlichen Bundesl&auml;ndern" class="land" onmouseup="setregion(\'west\');"></li>';
			html += '<li title="zu den &ouml;stlichen Bundesl&auml;ndern" class="land" onmouseup="setregion(\'ost\');"></li>';
			html += '<li title="zu den s&uuml;dlichen Bundesl&auml;ndern" class="land" onmouseup="setregion(\'sued\');"></li>';
			html += '<li title="zur Nordsee" class="land" onmouseup="setregion(\'nordsee\');"></li>';
			html += '<li title="zur Ostsee" class="land" onmouseup="setregion(\'ostsee\');"></li>';
			html += '</ul>';
			break;
	}
	var elemlinks = $("kartenlinks");
	elemlinks.innerHTML = html;

}

function scrolldir(arg, init) {
	if (init) {
		window.scrolling = window.setInterval("scrolldir('"+arg+"')", 50);
	}	
	if (window.scrolling) {
		var elem3 = $("unwetterUL");
		var elem4 = $("unwetterText");
		var t = parseInt(elem3.getStyle('top'));
		var b = parseInt(elem3.getHeight());
		var b2 = parseInt(elem4.getHeight());
		var t2 = t;
		if (arg == "down") t2 += 3;
		else if (t + b < b2) t2 = t;
		else if (arg == "up") t2 -= 3;
		
		if (t2 > 0 ) t2 = 0;
		
		
		elem3.style.top = '' + t2 + 'px';
	}
	
}
