var viewerInterface = {

currentTour: "",

titleText: "",

locationID: "",

player: "",

scene: "",

krpano: "",

currentThumb: "",

changethumb: function (scene){
	viewerInterface.currentThumb = scene;
	document.getElementById("hc_preview").src = scene.getElementsByTagName("img")[0].src;
	var progress = hcUtilities.getElementsByClassName('hc_percentComplete', scene);
	var overlay = document.getElementById("hc_progress");
	if(progress.length != 0){
		overlay.style.display = "block";
		overlay.style.height = (180 - progress[0].innerHTML*180) + "px";	
	} else {
		overlay.style.display = "none"; 
	}
},

createTourObject: function(type, width, height, data, cls, id, flashvars, imgsrc, imgalt){
  var o = "<object data=\"" + data + "\" width=\"" + width + "\" height=\"" +
    height + "\" type=\"" + type + "\" id=\"" + id + "\" class=\"" + cls + 
    "\">\n\t<param name=\"movie\" value=\"PurePlayer.swf\" />\n" +
    "\t<param name=\"allowScriptAccess\" value=\"sameDomain\" />\n" +
    "\t<param name=\"allowFullScreen\" value=\"true\" />\n" +
    "\t<param name=\"flashVars\" value=\"" + flashvars + "\" />\n" +
    "<img src=\"" + imgsrc + "\" alt=\"" + imgalt + "\" />\n" +
    "</object>\n";
  
  document.getElementById("hc_placeholder").innerHTML = o;

},

loadPano: function(pano){
	document.location.hash = "#" + pano;
	viewerInterface.updateCurrentTour(
		document.getElementById(pano).getElementsByTagName("a")[0]);
	viewerInterface.changethumb(document.getElementById(pano));
},
 
updateCurrentTour: function (sourcenode){
	var description = document.getElementById("hc_description");
	var sceneTitle = description.getElementsByTagName('h2')[0];
	var sourceimg = sourcenode.parentNode.getElementsByTagName("img")[0];
	var sourcedesc = sourcenode.parentNode.getElementsByTagName("div")[0];
	var sourcetitle = sourcenode.parentNode.getElementsByTagName("h2")[0];
	var scene = sourcenode.href.substr(sourcenode.href.indexOf("#") + 1);
	viewerInterface.scene = scene;
	
	if(viewerInterface.player == "pureplayer"){
		var prefix = viewerInterface.locationID + "/movies/" + 
			sourcenode.href.substr(sourcenode.href.indexOf("#") + 1);
		var flashvars = "panorama=ivp.php%3Fxpath%3D" + prefix + 
		"&hidegui=true&gui=gui_nologo.ivu&quality=200";
	
		viewerInterface.createTourObject("application/x-shockwave-flash", 640,
			481, "PurePlayer.swf", "hc_plugin", "hc_movie", flashvars, 
			sourceimg.src, sourceimg.alt);
	} else if(viewerInterface.player == "krpano"){
		var krpano = document.getElementById("hc_movie");
		viewerInterface.krpano = krpano; 
		krpano.call("action(loadtourscene," + scene + ");");
// IE doesn't like these lines since it treats alternate content as an attribute
//		krpano.getElementsByTagName("img")[0].src = sourceimg.src;
//		krpano.getElementsByTagName("img")[0].alt = sourceimg.alt;
	} else if(viewerInterface.player == "fpp"){
		var prefix = viewerInterface.locationID + "/movies/" + 
			sourcenode.href.substr(sourcenode.href.indexOf("#") + 1);
		var flashvars = "xml_file=" + prefix + "_fpp.xml";
		viewerInterface.createTourObject("application/x-shockwave-flash", 640,
			481, "fpp.swf", "hc_plugin", "hc_movie", flashvars, 
			sourceimg.src, sourceimg.alt);		
	}
	
	if (this.currentTour){
		this.currentTour.parentNode.getElementsByTagName('h2')[0].innerHTML = sceneTitle.innerHTML;
		this.currentTour.innerHTML = sceneTitle.innerHTML;
	}
	this.currentTour.className = "";
	sourcenode.className = "hc_currentTour";
	this.currentTour = sourcenode;
	
	if(sourcedesc.innerHTML.length != 0){
		description.getElementsByTagName('div')[0].innerHTML = sourcedesc.innerHTML;
	}
	sceneTitle.className = sceneTitle.className.replace(/scene:\w*/, 'scene:' + scene);
	
	sceneTitle.innerHTML = sourcetitle.innerHTML;
	document.title = viewerInterface.titleText +  " :: " + sourcetitle.innerHTML;
},
 
resetPreview: function (){
	this.changethumb(this.currentTour.parentNode);
},

addHandlersToNav: function() {
	try {
		var movielist = document.getElementById("hc_movielist")
			.getElementsByTagName("ul")[0].getElementsByTagName("li");
		for(var i = 0; i < movielist.length; i++){
			var link = movielist[i].getElementsByTagName("a")[0];
			hcUtilities.addListener(link, function(el, ev) {viewerInterface.updateCurrentTour(el)}, "onclick");
			hcUtilities.addListener(link, function(el, ev) {viewerInterface.resetPreview()}, "onmouseout");
			hcUtilities.addListener(link, function(el, ev) {viewerInterface.changethumb(el.parentNode)}, "onmouseover");
		}
	} catch (e){
		return false;
	}
},

parseParams: function(){
	viewerInterface.player = "krpano"
	if(document.location.search) {
		var params = document.location.search.substr(1).split("&");	
		for(var i = 0; i < params.length; i++){
			var param = params[i].split("=");
			viewerInterface[param[0]] = param[1];
		}
	}
	if(!viewerInterface.locationID){
		var params = document.location.pathname.split("/");
		viewerInterface.locationID = params[params.length - 1];
	}
},

initTour: function(){
	if(!viewerInterface.ready){
		viewerInterface.init();
	}
	if(document.location.hash){
		viewerInterface.updateCurrentTour(
		document.getElementById(
		document.location.hash.substr(1)).getElementsByTagName("a")[0]);
	} else {
		viewerInterface.updateCurrentTour(document.getElementById("hc_movielist")
		.getElementsByTagName("ul")[0].getElementsByTagName("li")[0]
		.getElementsByTagName("a")[0]);
	}
	viewerInterface.changethumb(viewerInterface.currentTour.parentNode);
},

init: function(){
	if(!viewerInterface.ready){
		viewerInterface.parseParams();
		viewerInterface.addHandlersToNav();
		viewerInterface.titleText = document.title;
		viewerInterface.ready = true;
	
		if(viewerInterface.player != "krpano"){
			viewerInterface.initTour();
		}
	}

}
}

hcUtilities.addListener(window, viewerInterface.init, "onload");
