// ------------------------------------------------------------------------------
// Init
// ------------------------------------------------------------------------------
// Event f&uuml;r Mousemove sensibilisieren
addLoadEvent(init_mousemove);
// Buttons erzeugen
addLoadEvent(create_dynamic_buttons);
// OffsetBasis berechnen falls notwendig
if (self.innerHeight) window.onresize = onresize_;
function onresize_(){ off_x = (self.innerWidth/2)-419;}


// ------------------------------------------------------------------------------
// Vars
// ------------------------------------------------------------------------------
// Radius
var r = 32;
// Offset Mouseposition
var off_x; 
var off_y;

// Quirks Modus des IE bestimmen
var docEl = (
             typeof document.compatMode != "undefined" && 
             document.compatMode        != "BackCompat"
            )? "documentElement" : "body";

// Browserspezifische Variablen
ie4				= navigator.appName == "Microsoft Internet Explorer" && !document.getElementById;
ns4				= document.layers ? 1 : 0;
dom				= document.getElementById ? 1 : 0;
mac				= navigator.platform == "MacPPC";
mo5				= navigator.userAgent.indexOf("Gecko") != -1;

var in_yesterday = false;
var in_now = false;



// ------------------------------------------------------------------------------
// init_mousemove
// ------------------------------------------------------------------------------
function init_mousemove() {
    if(document.layers) document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove =	onmousemove_;
	// Offset berechnen fals notwendig
	off_x = !self.innerHeight? 0: (self.innerWidth/2)-419;
	off_y = !self.innerHeight? 0: 229;
}

// ------------------------------------------------------------------------------
// onmousemove_
// ------------------------------------------------------------------------------
function onmousemove_(e) {
    // Maus-Position bestimmen
    var x   =  e? e.pageX : window.event.x;
	var y    =  e? e.pageY : window.event.y;
	
	// IE - Scrolling hinzurechenn
	//if (document.all && !document.captureEvents) {
	//    x    += document[docEl].scrollLeft;
	//    y    += document[docEl].scrollTop;
    //}
	
	// Translation Mouseposition 
	x = x-off_x;
	y = y-off_y;
	
	// ButtonCheck
	for (var i=0; i<labor_pos.length; i++){
		
		// button touched?
		in_now = in_circle(x,y,labor_pos[i]["x"],labor_pos[i]["y"],r);
		
		// show
		if (!labor_pos[i]["blow"]){
			if (in_now){
				getObjByID("btn_ring_"+labor_pos[i]["id"]).s.visibility = "visible";
				labor_pos[i]["blow"] = true;
			}

		// hide
		}else if (!in_now){
			getObjByID("btn_ring_"+labor_pos[i]["id"]).s.visibility = "hidden";
			labor_pos[i]["blow"] = false;
		
		}
	}

    // pass event
    if (document.layers) routeEvent(e);
}

// ------------------------------------------------------------------------------
// create_dynamic_buttons
// ------------------------------------------------------------------------------
var map;
function create_dynamic_buttons(){
	// Bilder laden
	var pic = new Image(); pic.src = "../pic/map/ring_o.png";
	// Map ermitteln
	map = getObjByID("map");
	// Button hinzuf&uuml;gen
	for (var i=0; i<labor_pos.length; i++){
		// Big ring
		map.appendChild(create_ring_button("btn_ring_"+labor_pos[i]["id"],
											labor_pos[i]["x"]-r,
											labor_pos[i]["y"]-r, 
											pic,
											labor_pos[i]["url"]));
	}
}

// ------------------------------------------------------------------------------
// create_dynamic_buttons
// ------------------------------------------------------------------------------
function create_ring_button(id,x,y,p,url){
	//alert(id+":"+x+":"+y+":"+p);
	// img erzeugen
	var my_img = document.createElement("img");
	// Stylerefferenz
	my_img.s = document.layers ? my_img : my_img.style;
	// Quelle setzen
	my_img.setAttribute("src", p.src);
	// Id setzen
	my_img.id = id;
	// Position setzen
	my_img.s.position = "absolute";
	my_img.s.left = x+"px";
	my_img.s.top = y+"px";
	// Visibility
	my_img.s.visibility = "hidden";

	// Cursor
	my_img.s.cursor = "pointer";
	// onklick
	if (url){
		eval('function gotourl() {parent.location = "'+url+'";}');
		my_img.onmouseup = gotourl;
	}
	// img zur&uuml;ckgeben
	return my_img;
}

// ------------------------------------------------------------------------------
// in_circle
// ------------------------------------------------------------------------------
function in_circle(x1,y1,x2,y2,r){
	// x,y berechnen
	var x = x2-x1;
	var y = y2-y1;
	// Distanz berechnen (Pytagoras)
	var d = Math.sqrt(Math.pow(x,2) + Math.pow(y,2));
	// isin
	return (d <= r)? true:false;
}

// ------------------------------------------------------------------------------
// Labordaten
// ------------------------------------------------------------------------------
var labor_pos = new Array();
function addLaborToMap(name, url, x, y){
	labor_pos.push({ name: name, id: "labor_pos_"+x+y, url:url, x:x, y:y, blow: false });
}

// ToDo: addLaborToMap Benutzen

// Gkäsernes Labor
labor_pos[0] 			= new Object();
labor_pos[0]["name"] 	= "Gkäsernes Labor";
labor_pos[0]["id"] 		= "gl";
labor_pos[0]["url"] 	= "l_gl.html";
labor_pos[0]["x"] 		= 459;
labor_pos[0]["y"] 		= 286;
labor_pos[0]["blow"] 	= false;

// BrauLAB
labor_pos[1] 			= new Object();
labor_pos[1]["name"] 	= "BrauLAB";
labor_pos[1]["id"] 		= "braulab";
labor_pos[1]["url"] 	= "l_braulab.html";
labor_pos[1]["x"] 		= 369;
labor_pos[1]["y"] 		= 437;
labor_pos[1]["blow"] 	= false;


// UniLab
labor_pos[2] 			= new Object();
labor_pos[2]["name"] 	= "UniLab";
labor_pos[2]["id"] 		= "unilab";
labor_pos[2]["url"] 	= "l_unilab.html";
labor_pos[2]["x"] 		= 485;
labor_pos[2]["y"] 		= 481;
labor_pos[2]["blow"] 	= false;

// Museum f&uuml;r Naturkunde
labor_pos[3] 			= new Object();
labor_pos[3]["name"] 	= "Museum f&uuml;r Naturkunde";
labor_pos[3]["id"] 		= "mfn";
labor_pos[3]["url"] 	= "l_mfn.html";
labor_pos[3]["x"] 		= 386;
labor_pos[3]["y"] 		= 310;
labor_pos[3]["blow"] 	= false;

// PhyLab
labor_pos[4] 			= new Object();
labor_pos[4]["name"] 	= "PhyLab";
labor_pos[4]["id"] 		= "phylab";
labor_pos[4]["url"] 	= "l_physlab.html";
labor_pos[4]["x"] 		= 198;
labor_pos[4]["y"] 		= 552;
labor_pos[4]["blow"] 	= false;

// HMU
labor_pos[5] 			= new Object();
labor_pos[5]["name"] 	= "Blick in die Materie";
labor_pos[5]["id"] 		= "hmi";
labor_pos[5]["url"] 	= "l_hmi.html";
labor_pos[5]["x"] 		= 242;
labor_pos[5]["y"] 		= 608;
labor_pos[5]["blow"] 	= false;

// Geolab
labor_pos[6] 			= new Object();
labor_pos[6]["name"] 	= "GeoLab";
labor_pos[6]["id"] 		= "geolab";
labor_pos[6]["url"] 	= "l_geolab.html";
labor_pos[6]["x"] 		= 288;
labor_pos[6]["y"] 		= 728;
labor_pos[6]["blow"] 	= false;

// Natlab
labor_pos[7] 			= new Object();
labor_pos[7]["name"] 	= "NatLab";
labor_pos[7]["id"] 		= "natlab";
labor_pos[7]["url"] 	= "l_natlab.html";
labor_pos[7]["x"] 		= 361;
labor_pos[7]["y"] 		= 705;
labor_pos[7]["blow"] 	= false;

// MicroLAB
labor_pos[8] 			= new Object();
labor_pos[8]["name"] 	= "MicroLAB";
labor_pos[8]["id"] 		= "microlab";
labor_pos[8]["url"] 	= "l_microlab.html";
labor_pos[8]["x"] 		= 434;
labor_pos[8]["y"] 		= 742;
labor_pos[8]["blow"] 	= false;

// Desy
labor_pos[9] 			= new Object();
labor_pos[9]["name"] 	= "Desy";
labor_pos[9]["id"] 		= "Desy";
labor_pos[9]["url"] 	= "l_desy.html";
labor_pos[9]["x"] 		= 613;
labor_pos[9]["y"] 		= 635;
labor_pos[9]["blow"] 	= false;

// DLR School Lab
labor_pos[10] 			= new Object();
labor_pos[10]["name"] 	= "DLR School Lab";
labor_pos[10]["id"] 	= "dlr";
labor_pos[10]["url"] 	= "l_dlr.html";
labor_pos[10]["x"] 		= 596;
labor_pos[10]["y"] 		= 562;
labor_pos[10]["blow"] 	= false;

// MathExperience
addLaborToMap("Projektlabor", "l_projektlabor.html", 281, 446);

// MathExperience
addLaborToMap("MathExperience", "l_math_experience.html", 243, 502);

// Biologie trifft Technik
addLaborToMap("Biologie trifft Technik", "l_biologie_trifft_technik.html", 511, 722);

// MathExperience
addLaborToMap("Unex", "l_unex.html", 681, 823);

// MathExperience
addLaborToMap("Science on Tour Lausitz", "l_science_lausitz.html", 612, 950);
