function Fensterweite () {
  if (window.innerWidth) {
    return Math.max(1000,window.innerWidth);
  } else if (document.body && document.body.offsetWidth) {
    return Math.max(1000,document.body.offsetWidth);
  } else {
    return 0;
  }
}

function Fensterhoehe () {
  if (window.innerHeight) {
    return window.innerHeight;
  } else if (document.body && document.body.offsetHeight) {
    return document.body.offsetHeight;
  } else {
    return 0;
  }
}

var overview = true;

function zoom(action) {
	var krpano = document.getElementById("krpanoSWFObject");

	if (krpano.get('plugin[action_pending].alpha') != 0) return false;
	
	if (!overview)
	krpano.call("action(overview,"+previews[0][2]+","+previews[0][3]+","+previews[0][4]+");");
	
	if (action == 0)	{
		overview = true;
		return false;
	}
	
	overview = false;
	
	if (previews[action])
	krpano.call("action(zoom,"+previews[action][2]+","+previews[action][3]+","+previews[action][4]+");");
	
	return false;
}

function display(width,height,hfov) {
	var krpano = document.getElementById("krpanoSWFObject");
 
	if (typeof krpano.get == 'function') {
	if (krpano.get('view.fov') != 90) {

		if (document.getElementById("story"))
		document.getElementById("story").krpano = krpano;
		if (document.getElementById("video"))
		document.getElementById("video").krpano = krpano;
		if (document.getElementById("objekte"))
		document.getElementById("objekte").krpano = krpano;
		
		document.getElementById("location_switch").krpano = krpano;
		
		if (document.getElementById("krpanoDIV").className == "")
		document.getElementById("krpanoDIV").className=krpano.get('view.fov');
		
		var ratio = document.getElementById("krpanoDIV").className;
		
		var window_x = new Number(Fensterweite());
		var window_y = new Number(Fensterweite()*ratio);
	
		var view_fov_x = new Number(krpano.get('view.fov')*hfov/ratio);
		var view_fov_y = new Number(krpano.get('view.fov')*hfov);
		
		var view_res_x = new Number(krpano.get('view.fov')*width/ratio);
		var view_res_y = new Number(krpano.get('view.fov')*height/ratio);
		
		var view_res_xy = view_res_x*view_res_y;
		
		if (view_res_xy > 1000) {view_res_xy=view_res_xy/1000/1000;document.getElementById('res_xy_desc').innerHTML = 'Megapixel';}
		if (view_res_xy > 100) {view_res_xy=view_res_xy/1000;document.getElementById('res_xy_desc').innerHTML = 'Gigapixel';}
		
		var view_res_xy = new Number(view_res_xy);
		
		var zoom = new Number(Fensterweite()/view_res_x*100);
		
		var view_hlookat = new Number(krpano.get('view.hlookat'));
		var view_vlookat = new Number(krpano.get('view.vlookat'));
		var view_fov = new Number(krpano.get('view.fov'));
		
		document.getElementById('fov_x').innerHTML = view_fov_x.toFixed(2);
		document.getElementById('fov_y').innerHTML = view_fov_y.toFixed(2);

		document.getElementById('res_x').innerHTML = view_res_x.toFixed(0);
		document.getElementById('res_y').innerHTML = view_res_y.toFixed(0);
		
		document.getElementById('res_xy').innerHTML = view_res_xy.toFixed(2);
		
		//document.getElementById('window_x').innerHTML = window_x.toFixed(0);
		//document.getElementById('window_y').innerHTML = window_y.toFixed(0);
		document.getElementById('zoom').innerHTML = zoom.toFixed(2);
		
		document.getElementById('x_hlookat').innerHTML = view_hlookat.toFixed(8);
		document.getElementById('x_vlookat').innerHTML = view_vlookat.toFixed(8);
		document.getElementById('x_fov').innerHTML = view_fov.toFixed(8);
		
		//document.getElementById('ctrl_zoom_color').style.width=((0.2361131920479358/Math.sqrt(Math.sqrt(krpano.get('view.fov'))))*45)+'px';
		document.getElementById('ctrl_zoom_color').style.width=(zoom/100*45)+'px';
	}}
}

function hlookat(delta) {
	var krpano = document.getElementById("krpanoSWFObject");
	if (krpano)	{
		krpano.call('tween(view.hlookat,'+(krpano.get('view.hlookat')+delta)+',0.5,linear);');	
	}
	return false;
}

function vlookat(delta) {
	var krpano = document.getElementById("krpanoSWFObject");
	if (krpano)	{
		krpano.call('tween(view.vlookat,'+(krpano.get('view.vlookat')+delta)+',0.5,linear);');	
	}
	return false;
}

function zoomin(delta) {
	var krpano = document.getElementById("krpanoSWFObject");
	if (krpano)	{
		if ((krpano.get('view.fov')+delta) > 0)
		krpano.call('tween(view.fov,'+(krpano.get('view.fov')+delta)+',0.5,linear);');
	}
	return false;
}

function fullscreen() {
	var krpano = document.getElementById("krpanoSWFObject");
	if (krpano)	{
		try {
			krpano.call("action(openfs_show,openfs);");
		} catch (e) {
			alert(e);
		}
	}
	return false;
}

function help() {
	var krpano = document.getElementById("krpanoSWFObject");
	if (krpano)	{
		try {
			krpano.call("action(openfs_show,helptext);");
		} catch (e) {
			alert(e);
		}
	}
	return false;
}

function init(name,width,height,hfov,previews) {
	document.getElementsByTagName("body")[0].className = height/width;
	
	// display flash
	if (typeof(deconcept) !== 'undefined')
	{
		if (deconcept.SWFObjectUtil.getPlayerVersion().major >= 9)
		{
			var so = new SWFObject("site/pano/krpano.swf","krpanoSWFObject",Fensterweite()+"px",(Fensterweite()*height/width)+"px","9.0.28","#000000");
			so.addParam("allowFullScreen","true");

			so.addVariable("xml", "site/pano/"+name+".xml");	

			if (so.write("krpanoDIV")) { var mousewheelfixes = new SWFkrpanoMouseWheel(so);}
			
			document.getElementById('thumbnails').style.width = (Fensterweite())+'px';
		}
		else
		{
			document.getElementById("krpanoDIV").innerHTML = '<table ><tr valign="middle"><td><center>ERROR:<br/><br/>Adobe Flash Player 9 needed<br/><br/><br/><a href="http://www.adobe.com/go/getflashplayer/"  target="_blank"><IMG SRC="http://www.macromedia.com/images/shared/download_buttons/get_flash_player.gif" BORDER="1"/><'+'/a><br/>...click here to download...<br/><br/><br/><br/><'+'/center><'+'/td><'+'/tr><'+'/table>';
		}
	}
	else
	{
		document.getElementById("krpanoDIV").innerHTML = '<table ><tr valign="middle"><td><center>ERROR:<br/><br/>swfobject.js not found<br/><br/><'+'/center><'+'/td><'+'/tr><'+'/table>';
	}

	// display previews
	for (var i=0;i<previews.length;i++)
	document.getElementById("thumbnails").innerHTML += '<a class="preview" href="#" onclick="return zoom('+i+');"><img src="http://tiles1.dresden-26-gigapixels.com/site/img/preview_'+name+'/preview'+previews[i][0]+'.jpg"/><br/>'+previews[i][1]+'</a>';

	// set interval
	var aktiv = window.setInterval("display("+width+","+height+","+hfov+")", 300);
	
	// equip pano/language links
	for (var i=0;i<document.getElementById("panos").getElementsByTagName("a").length;i++) {
		var lang_link = document.getElementById("panos").getElementsByTagName("a")[i];
		var lang_link_href = lang_link.href;
		var lang = lang_link_href.match(/\.([a-z]{2})\./g);
		if (lang) {
			lang_link.language = lang[0].replace(/\./g,'');

			lang_link.onclick = function(e) {
				e = e || window.event;
				var target = e.srcElement || e.target;

				if (typeof target.language == "undefined") target = target.parentNode;
				else if (target.language == "") target = target.parentNode;
				
				if (
					(target.language == "it")
				) {
					alert('Language will be available soon!');
					return false;
				}

				document.cookie="language="+target.language;
			}
		}
	}
	
	if (document.getElementById("location_switch"))
	document.getElementById("location_switch").onclick = function (e) {
		e = e || window.event;
		var target = e.srcElement || e.target;
		
		if (typeof target.state == "undefined") target.state = "open";
		
		if (target.state == "closed") {
			target.krpano.call("action(show_location)");
			target.state = "open";
		} else {
			target.krpano.call("action(hide_location)");
			target.state = "closed";
		}

		
		return false;
	}
	if (document.getElementById("story"))
	document.getElementById("story").onclick = function (e) {
		e = e || window.event;
		var target = e.srcElement || e.target;
		target.krpano.call("action(show_slide,makingOf1)");
		return false;
	}
	if (document.getElementById("video"))
	document.getElementById("video").onclick = function (e) {
		e = e || window.event;
		var target = e.srcElement || e.target;
		target.krpano.call("action(start_video)");
		
		return false;
	}
	if (document.getElementById("objekte"))
	document.getElementById("objekte").onclick = function (e) {
		e = e || window.event;
		var target = e.srcElement || e.target;
		target.krpano.call("action(toggle_objects)");
		
		return false;
	}

}

function resize() {
	document.getElementById('krpanoSWFObject').style.width = Fensterweite()+"px";
	document.getElementById('krpanoSWFObject').style.height = (Fensterweite()*document.getElementsByTagName("body")[0].className)+"px";
	document.getElementById('thumbnails').style.width = (Fensterweite())+'px';
	document.getElementById('details').style.width = (Fensterweite())+'px';
}

function loadingComplete() {
	document.getElementById('loader').style.display="none";
}

window.onresize = resize;
