/**
 * @author hmraz
 */

var bObj;
var gmap;
var gmapLoaded = false;
var curMarkers = new Array();
var baseUrl = "http://me.get24.at/familienwinter08/";

// Uebersetzungen
var trans = new Array();
trans["DE"] = new Array("Familienfreundliche Kärnten Card Betriebe",
						"Familien-Gastgeber",
						"Regionsauswahl");
trans["EN"] = new Array("family friendly Kärnten Card sights",
						"family friendly accomodation",
						"select a region");
trans["IT"] = new Array("",
						"Alberghi famiglia",
						"Regione");

// Icons KaeCi
var baseIconKc = new GIcon();
baseIconKc.iconSize = new GSize(30, 28);
baseIconKc.shadowSize = new GSize(49, 31);
baseIconKc.iconAnchor = new GPoint(16, 18);
var loIconKc = new GIcon(baseIconKc);
loIconKc.image = baseUrl + "img/wurschtl_30x28.png";
loIconKc.shadow = baseUrl + "img/wurschtl_schatten_49x31.png";

var hiIconKc = new GIcon(baseIconKc);
hiIconKc.image = baseUrl + "img/wurschtl_hi_30x28.png";
hiIconKc.shadow = baseUrl + "img/wurschtl_hi_schatten_49x31.png";

// Icons Baerenbetriebe
var baseIcon = new GIcon();
baseIcon.iconSize = new GSize(29, 31);
baseIcon.shadowSize = new GSize(47, 31);
baseIcon.iconAnchor = new GPoint(14, 22);


var loIcon = new GIcon(baseIcon);
loIcon.image = baseUrl + "img/baer29x31.png";
loIcon.shadow = baseUrl + "img/baer47x31_schatten.png";

var hiIcon = new GIcon(baseIcon);
hiIcon.image = baseUrl + "img/baer29x31_hi.png";
hiIcon.shadow = baseUrl + "img/baer47x31_schatten_hi.png";

// Regionenarray anlegen und -bilder laden
var rids = [202, 206, 209, 210, 211, 213, 214, 217, 218];
var regionen = new Array();
regionen[0] = createRegObject(0, baseUrl + "img/ktn-raw.gif");
for (var i in rids) {
	regionen[rids[i]] = createRegObject(rids[i], baseUrl + "img/ktn-" + rids[i] + ".gif");
}

function utf8_encode ( str_data ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Webtoolkit.info (http://www.webtoolkit.info/)
    // *     example 1: utf8_encode('Kevin van Zonneveld');
    // *     returns 1: 'Kevin van Zonneveld'
 
    str_data = str_data.replace(/\r\n/g,"\n");
    var utftext = "";
 
    for (var n = 0; n < str_data.length; n++) {
        var c = str_data.charCodeAt(n);
        if (c < 128) {
            utftext += String.fromCharCode(c);
        } else if((c > 127) && (c < 2048)) {
            utftext += String.fromCharCode((c >> 6) | 192);
            utftext += String.fromCharCode((c & 63) | 128);
        } else {
            utftext += String.fromCharCode((c >> 12) | 224);
            utftext += String.fromCharCode(((c >> 6) & 63) | 128);
            utftext += String.fromCharCode((c & 63) | 128);
        }
    }
 
    return utftext;
}

function loadGoogleMap() {
	gmap = new GMap2(document.getElementById("mapgm"), {size:new GSize(400, 360)});
	gmap.addControl(new GLargeMapControl());
	gmap.addControl(new GOverviewMapControl());
	// map.enableDoubleClickZoom();
	// gmap.enableScrollWheelZoom();
}

function unloadGoogleMap() {
	GUnload();
}

function createRegObject (rid, imgsrc) {
	var o = new Object();
	o.img = new Image();
	o.img.src = imgsrc;
	return o;
}

function showRegion(rid) {
	document.getElementById("poilist").innerHTML = "";
	
	if (!gmapLoaded) {
		loadGoogleMap();

		if (!binDumm) {
			gmapLoaded = true;
		}
	}


	//alert("lat=" + regionen[rid].lat + " lon=" + regionen[rid].lon + " zoom=" + regionen[rid].zoom);

	blendToRegion();
	createRegLinks(rid);

	gmap.setCenter(new GLatLng(regionen[rid].lat, regionen[rid].lon), regionen[rid].zoom);
	loadPoi(rid);
}

function createRegLinks (rid) {
	var el = document.getElementById("reglinks");
	el.innerHTML = "<div class='mapbacklink'><a href='javascript:void(0);' onclick='blendFromRegion()' title='Regionsauswahl'><img src='"
				 + baseUrl + "img/ktnicon.gif' alt='K Icon' border='0'/><br/>Regionsauswahl</a></div>";
	el.innerHTML += "<h3>" + regionen[rid].name + "</h3>";
}

function hiRegion(rid) {
	document.images["map-ktn"].src = regionen[rid].img.src;
	document.getElementById("reg_" + rid).className = "hi";
}

function loRegion(rid) {
	document.images["map-ktn"].src = regionen[0].img.src;
	document.getElementById("reg_" + rid).className = "lo";
}

function init () {
	bObj = new JSONscriptRequest(baseUrl + "lib/regionen.json.php?callback=regLoaded");
	bObj.buildScriptTag();
	bObj.addScriptTag();
}

function regLoaded (content) {
	var myx = content;

	var d = document.getElementById("mapoverviewregionen");
	var s = '';

	for (var i=0; i < myx.regionen.length; i++) {
		// In das Regionen-Array schreiben:
		regionen[myx.regionen[i].id].name = myx.regionen[i].name;
		regionen[myx.regionen[i].id].lat = myx.regionen[i].lat;
		regionen[myx.regionen[i].id].lon = myx.regionen[i].lon;
		regionen[myx.regionen[i].id].zoom = myx.regionen[i].zoom;

		// Listitems erzeugen:
		s += "<li id='reg_" + myx.regionen[i].id + "'><a href='javascript: void(0);' onmouseover='hiRegion(" + myx.regionen[i].id
			+ ")' onmouseout='loRegion(" + myx.regionen[i].id
			+ ")' onclick='showRegion(" + myx.regionen[i].id
			+ ")'>" + myx.regionen[i].name + "</a></li>";
	}

	d.innerHTML = "<ul>" + s + "</ul>";
	bObj.removeScriptTag();
}

function loadPoi (rid) {

	if (!regionen[rid].kc) {
		bObj = new JSONscriptRequest(baseUrl + "lib/poi.json.php?callback=poiLoaded&rid=" + rid + "&lang=" + lang + "&laid=" + laid);
		bObj.buildScriptTag();
		bObj.addScriptTag();
	} else {
		gmap.clearOverlays();

		var poiList = "<table class='poi'><tr><th>Familien-Gastgeber</th></tr><tr>";

		// Kaernten Card Betriebe ausgeben
		/*for (var i=0; i < regionen[rid].kc.length; i++) {

			// Marker erzeugen
			var m = createMarker(new GLatLng(regionen[rid].kc[i].lat, regionen[rid].kc[i].lon)
										, rid, i, regionen[rid].kc[i].url, true);

			// Im Poi-Array referenzieren
			regionen[rid].kc[i].loMarker = m[0];
			regionen[rid].kc[i].hiMarker = m[1];

			// ...und zur map hinzufuegen
			gmap.addOverlay(m[0]);
			gmap.addOverlay(m[1]);
			m[1].hide();

			// Listitems:
			poiList += "<li class='lo' id='kc_" + i + "' onmouseover='hiPoi(" + rid + ", " + i + ", true);' "
					 + "onmouseout='loPoi(" + rid + ", " + i + ", true);'><a href='" + regionen[rid].kc[i].url
					 + "' target='blank' title='" + regionen[rid].kc[i].name + "'>"
					 + regionen[rid].kc[i].name + "</a></li>";
		}*/

		poiList += "<td><ul class='bb'>";

		// Baeren-Betriebe ausgeben
		for (var i=0; i < regionen[rid].bb.length; i++) {

			// Marker erzeugen
			var m = createMarker(new GLatLng(regionen[rid].bb[i].lat, regionen[rid].bb[i].lon)
										, rid, i, regionen[rid].bb[i].url, false);

			// Im Poi-Array referenzieren
			regionen[rid].bb[i].loMarker = m[0];
			regionen[rid].bb[i].hiMarker = m[1];

			// ...und zur map hinzufuegen
			gmap.addOverlay(m[0]);
			gmap.addOverlay(m[1]);
			m[1].hide();

			// Listitems:
			poiList += "<li class='lo' id='bb_" + i + "' onmouseover='hiPoi(" + rid + ", " + i + ", false);' "
					 + "onmouseout='loPoi(" + rid + ", " + i + ", false);'><a href='" + regionen[rid].bb[i].url
					 + "' target='blank' title='" + regionen[rid].bb[i].name + "'>"
					 + regionen[rid].bb[i].name + "</a></li>";
		}
		poiList += "</ul></td></tr></table>";

		// Punkteliste ausgeben:
		document.getElementById("poilist").innerHTML = poiList;

	}
}

function poiLoaded (content) {
	var myp = content;

	regionen[myp.rid].kc = new Array();
	/*for (var i=0; i < myp.kc.length; i++) {
		regionen[myp.rid].kc.push(myp.kc[i]);
	}*/

	regionen[myp.rid].bb = new Array();
	for (var i=0; i < myp.bb.length; i++) {
		regionen[myp.rid].bb.push(myp.bb[i]);
	}

	if (regionen[myp.rid].kc.length > 0 || regionen[myp.rid].bb.length > 0) {
		loadPoi(myp.rid);
	}
	bObj.removeScriptTag();
}

function createMarker (point, rid, idx, url, kc) {
	var marker, markerHi, n;
	if (kc) {
		n = regionen[rid].kc[idx].nameutf8;
		marker = new GMarker(point, {title:n, icon:loIconKc, url:url});
		markerHi = new GMarker(point, {title:n, icon:hiIconKc, url:url});
	} else {
		n = regionen[rid].bb[idx].nameutf8;
		marker = new GMarker(point, {title:n, icon:loIcon, url:url});
		markerHi = new GMarker(point, {title:n, icon:hiIcon, url:url});
	}

	var markerArray = new Array();



	GEvent.addListener(marker, "click", function() {
		//document.location.href = marker.url;
		window.open(url);
	});

	GEvent.addListener(marker, "mouseover", function() {
		hiPoi(rid, idx, kc);
	});

	GEvent.addListener(marker, "mouseout", function() {
		loPoi(rid, idx, kc);
	});

	GEvent.addListener(markerHi, "click", function() {
		//document.location.href = marker.url;
		window.open(url);
	});

	GEvent.addListener(markerHi, "mouseover", function() {
		hiPoi(rid, idx, kc);
	});

	GEvent.addListener(markerHi, "mouseout", function() {
		loPoi(rid, idx,kc);
	});

	markerArray.push(marker);
	markerArray.push(markerHi);

	return markerArray;
}

function hiPoi (rid, idx, isKc) {
	
	// ListItem
	var li = (isKc)? "kc_" + idx : "bb_" + idx;
	document.getElementById(li).className = "hi";
		
	// Marker
	if (isKc) {
		regionen[rid].kc[idx].loMarker.hide();
		regionen[rid].kc[idx].hiMarker.show();		
	} else {
		regionen[rid].bb[idx].loMarker.hide();
		regionen[rid].bb[idx].hiMarker.show();		
	}

}

function loPoi (rid, idx, isKc) {
	// ListItem
	var li = (isKc)? "kc_" + idx : "bb_" + idx;
	document.getElementById(li).className = "lo";

	// Marker
	if (isKc) {
		regionen[rid].kc[idx].hiMarker.hide();
		regionen[rid].kc[idx].loMarker.show();		
	} else {
		regionen[rid].bb[idx].hiMarker.hide();
		regionen[rid].bb[idx].loMarker.show();		
	}

}

function blendToRegion () {
	document.getElementById("mapoverview").style.display = "none";
	document.getElementById("mapregion").style.display = "block";
	/*
	new Effect.SlideUp('mapoverview');
	new Effect.SlideDown('mapregion');
	*/
}

function blendFromRegion () {

	document.getElementById("mapoverview").style.display = "block";
	document.getElementById("mapregion").style.display = "none";

	/*
		new Effect.SlideUp('mapregion');
		new Effect.SlideDown('mapoverview');

	*/
	if (binDumm) {
		unloadGoogleMap();
	}
}
