	g_Player = new imPlayer(document.getElementById('playerContainer'));
	
	g_Player.onLoad = function(e) {		
			//alert('loaded player v' + e.version);			
			g_Player.setProperty('statsEnabled', false);			
			var res=g_Player.loadScene(imSceneType.Geo);
			//g_Player.loadPlugin('im.skin.orangey.VideoBar','plugins/IMGui.swf');
			var res=g_Player.loadPlugin('im.skin.classic.Playbar','plugins/IMGui.swf');
			
			ProxySetMapperTargetType(2);
			ProxySetMapperFlashTarget(g_Player);
			g_PlayerLoaded = true;
			checkForLoad();
			if (g_MapCount>1)
			{
				document.getElementById("maps").style.visibility = "visible"
			}
		}
		
		g_Player.onPluginLoaded = function(e)
		{
			setGuiPluginId(e.id);
			//hidePlaybar();
		}
		
		g_Player.onMediaLoaded = function(e)
		{
			//alert("onMediaLoaded(): url=" + e.url + ", type=" +e.type);
			// assume video for now.
			//debugOut('loaded media: ' + e.url,'type: ' + e.type);
			//debugOut('is video: ' + (e.type==imMediaProviderType.VideoProvider) );
			g_VideoLoaded=true;
			g_MediaDuration=0;
			if (g_Player.isMediaType(imMediaProviderType.VideoProvider))
			{			//e.duration e.width e.height
				clearNodes();
				g_Mapper.videoLoaded(e.url,e.width,e.height);
			}
			else if (g_Player.isMediaType(imMediaProviderType.StillProvider))
			{
				g_Mapper.stillLoaded(e.url);
				//makeRiverfrontLinks();
			}
			
			
		}
	
		g_Player.onMediaLoadFailed = function(e)
		{			
			//debugOut('failed to load media: ' + e.url);
			g_Mapper.playerError("LOAD_ERROR_YUCK", "Load Error on loading (for loading): " + e.url);		
			g_MediaDuration=0;	
		}

		g_Player.onCameraChange = function(e) {	
			g_Mapper.setTracerYaw(e.yaw);
			
    	}
    
		g_Player.onVideoEvent = function(e) {	
			var endThreshold = 2.0;
			if( e.type == imVideoEventType.TimeChanged )
			{
				g_Mapper.setTracerTime(e.time);
				if (g_MediaDuration !=0)
				{
					//alert("g_MediaDuration="+g_MediaDuration);
					if ((g_MediaDuration - e.time) < endThreshold)
					{					
						//alert("links!");	
						var mediaUrl = g_Player.getMediaProperty("url");
						showLinks(mediaUrl);
					}
					else
					{
						clearNodes();
					}
				}
			}
			if (e.type == imVideoEventType.DurationChanged)
			{
				
				//alert("mediaUrl = " + mediaUrl + ", newDuration = " + e.time);								
				g_MediaDuration = e.time;
			}
			
			if(e.type == "stream.playing"){
				//alert("We know when the video is complete and can change the display here");
				//alert(g_Player);
				$('.popup_links').hide();
			}
			
			
			//$('.popup_links').hide();
    }
    
    
    g_Player.onGeoNodeMouseOver = function(e)
	{		
		//alert('over: ' + e.id,player.getGeoNodeUserProperty(e.id,'name'));
		
	}
	
	g_Player.onGeoNodeMouseClick = function(e)
	{
		//alert('click: ' + e.id);
		browseToUrl(e.id);
		return false;
	}

    
    g_Player.onMediaClick = function(e)
	{
	   //	alert('[media clicked]');
		//debugOut("u: " + e.u + " v: " + e.v);
		//debugOut("x: " + x + " y: " + y); 
		//debugOut("ray pos: " + e.posX + " y: " + e.posY + " z: " + e.posZ);
		//debugOut("ray dir: " + e.dirX + " y: " + e.dirY + " z: " + e.dirZ);

		// Add node 10 meters out along click ray
		//x = e.posX + e.dirX * 10;
		//y = e.posY + e.dirY * 10;
		//var z = e.posZ + e.dirZ * 10;
		
		//var n = player.addGeoNode(imNodeType.GeoImage);
		//player.setGeoNodeProperty(n,'x',x);
		//player.setGeoNodeProperty(n,'y',y);
		//player.setGeoNodeProperty(n,'z',z);
		//player.setGeoNodeProperty(n,'scale',0.5);
		//player.setGeoNodeProperty(n,'projectionType',imNodeProjectionType.ViewPlane);
		//player.setGeoNodeProperty(n,'materialNormalUrl','../examples.data/icons/target.png');
		
	}
    
    
    g_Player.init('videos/');
    
    function clearNodes()
    {
    		
    		var node;
    		if (nodes.length)
    		{
	    		for (var i = 0; i < nodes.length; i++)
	    		{
	    			node = nodes[i];
	    			//alert("removing " + node.textNodeId + " and " + node.imgNodeId);
	    			g_Player.removeGeoNode(node.textNodeId);
	    			g_Player.removeGeoNode(node.imgNodeId);
	    			
	    		}
	    		nodes = null;
	    		nodes = new Array();
	    	}
    }
    
    function storeNode(imgNodeId,textNodeId,execString,name)
    {
    	var newObj=new Object();
    	
    	newObj.imgNodeId = imgNodeId;
    	newObj.textNodeId = textNodeId;
    	newObj.execString = execString;
    	newObj.name = name;
    	nodes[nodes.length]=newObj;
    }
    
    function nodeExists(name)
    {
    	var node;
  		for (var i = 0; i < nodes.length; i++)
  		{
  			node = nodes[i];
  			if (node.name == name)
  			{
  				return true;
  			}  			
  		}
		return false;  		
    }
    
    function browseToUrl(nodeId)
    {
    	var node;
  		for (var i = 0; i < nodes.length; i++)
  		{
  			node = nodes[i];
    		//alert("node.imgNodeId="+node.imgNodeId+", node.textNodeId="+node.textNodeId);
    		if ((node.imgNodeId == nodeId) || (node.textNodeId == nodeId))    		
    		{
    			//alert("same");
    			eval(node.execString);   				
    		}
    	}
    }
    
    function showLinks(movieName)
    {
    	//alert("movieName="+movieName);    	
    	
    	if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Matt_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Matt_FINAL_low_res.f4v")
    	{
    		//makeContinueLink("Angela_FINAL.f4v");
    		//alert("movieName("+movieName+")=Matt_FINAL.f4v");
    		makeRiverfrontLinks();
    	}
    	else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Angela_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Angela_FINAL_low_res.f4v")
		{	
			//makeContinueLink("Charles_FINAL.f4v");
			makeChaseHallLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Charles_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Charles_FINAL_low_res.f4v")
		{	
			//makeContinueLink("Bell_Tower_FINAL.f4v");
			makeHenryStudentCenterLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Bell_Tower_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Bell_Tower_FINAL_low_res.f4v")
		{
			//makeContinueLink("Statue_FINAL.f4v");
			makeBellTowerLinks();
		}		
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Statue_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Statue_FINAL_low_res.f4v")
		{
			//makeContinueLink("Amanda_FINAL.f4v");
			makeLibraryLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Amanda_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Amanda_FINAL_low_res.f4v")
		{
			//makeContinueLink("Breisith_Hall_FINAL.f4v");
			makeQuadLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Breisith_Hall_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Breisith_Hall_FINAL_low_res.f4v")
		{
			//makeContinueLink("Roth_Hall_FINAL.f4v");
			makeBreisethHallLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Roth_Hall_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Roth_Hall_FINAL_low_res.f4v")
		{
			//makeContinueLink("UCom_FINAL.f4v");
			makeRothHallLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/UCom_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/UCom_FINAL_low_res.f4v")
		{
			//makeContinueLink("Ryan_FINAL.f4v");
			makeUCOMLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Ryan_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Ryan_FINAL_low_res.f4v")
		{
			//makeContinueLink("Mascot_FINAL.f4v");
			makeMartsCenterLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Mascot_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Mascot_FINAL_low_res.f4v")
		{
			//makeContinueLink("Waller_Hall_FINAL.f4v");
			makeRalstonComplexLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Waller_Hall_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Waller_Hall_FINAL_low_res.f4v")
		{
			//makeContinueLink("Darte_FINAL.f4v");
			makeWallerMansionLinks();
		}
		else if (movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Darte_FINAL.f4v" || movieName == "http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Darte_FINAL_low_res.f4v")
		{
			makeDarteCenterLinks();
		}

    }
    
    function makeRiverfrontLinks()
    {
		$('#riverfront_links').fadeIn(500).show();
    	//makeBrowseNode3d(-5,-2,10,0,"Riverfront","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/riverfront.html");
    }
    
    
    function makeChaseHallLinks()
    {
    	$('#chase_hall_links').fadeIn(500).show();
    	//makeBrowseNode3d(0,-2,10,0,"Chase Hall","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/chase_hall.html");
    }
    
    function makeHenryStudentCenterLinks()
    {
    	$('#henry_student_center_links').fadeIn(500).show();
    	//makeBrowseNode3d(0,-2,10,0,"Henry Student Center","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/henry_student_center.html");
    }
    
    function makeBellTowerLinks()
    {
    	//alert("here");
    	$('#bell_tower_links').fadeIn(500).show();
    }
    
    function makeLibraryLinks()
    {
    	$('#farley_library_links').fadeIn(500).show();
    	//makeBrowseNode3d(-1,-2,10,0,"Eugene S. Farley Library","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/library.html");
    }
    
    function makeQuadLinks()
    {
    	$('#fenner_stark_links').fadeIn(500).show();
    	//makeBrowseNode3d(-5,-2,10,0,"Stark Learning Center","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/stark_learning_center.html");
    	//makeBrowseNode3d(2,4,10,0,"Fenner Quad","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/fenner_quad.html");
    }
    
    function makeBreisethHallLinks()
    {
    	$('#breseith_hall_links').fadeIn(500).show();
    	//makeBrowseNode3d(-1,-2,10,0,"Breseith Hall","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/breseith_hall.html");
    }
    
    function makeRothHallLinks()
    {
    	$('#roth_hall_links').fadeIn(500).show();
    	//makeBrowseNode3d(0,-2,10,0,"Roth Hall","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/roth_hall.html");
    } 
    
    function makeUCOMLinks()
    {
    	$('#ucom_links').fadeIn(500).show();
    	//makeBrowseNode3d(-1,-2,10,0,"UCOM","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/ucom.html");
    }
    
    function makeMartsCenterLinks()
    {
    	$('#marts_center_links').fadeIn(500).show();
    	//makeBrowseNode3d(-1,-2,10,0,"Marts Center","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/marts_center.html");
    }
    
    function makeRalstonComplexLinks()
    {
    	$('#ralston_complex_links').fadeIn(500).show();
    }
    
    function makeWallerMansionLinks()
    {
    	$('#waller_hall_links').fadeIn(500).show();
    	//makeBrowseNode3d(0,-2,10,0,"Waller Hall","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/waller_hall.html");
    }
    
    function makeDarteCenterLinks()
    {
    	$('#darte_center_links').fadeIn(500).show();
    	//makeBrowseNode3d(-1,-2,10,0,"Darte Center","http://dev.160over90.com/wilkes/WILK-902-26w/website/popups/darte_center.html");   	
    }
    
    
    function mapperSelectRoute(movieName)
    {
    	var list = g_Mapper.getChildObjectList();
    	for (var i in list)
    	{
    		var id = list[i];   //  g_Mapper.getObjectId(list[i]);
    		var type = g_Mapper.getObjectType(id);
    		if (type == "Route")
    		{
    			var props = g_Mapper.getProperties(id);    
    			for (var j in props)
    			{    				
    				if (props[j]._name == "_videoUrl")
    				{	
	    				if (props[j]._value==movieName)
		    			{	
		    				g_Mapper.selectObject(id);
		    				return;
		    			}
	    			}
    			}
    		}
    	}
    }
    
    // overriding callback from image link on map
    // to start a movie instead of browsing
    function OnBrowserLinkRequest(url, newWindow)
    {
    	startMovie(url);
    }
    
    function startMovie(movieName)
    {   
		// if (movieName.indexOf("_low_res") != -1)
		// {
		// 	var lowResLink = movieName.substring(0, movieName.indexOf("_low_res.f4v"));
		// 	lowResLink += ".f4v";
		//     $('#lowreslink').html("<a onclick='startMovie(\"" + lowResLink + "\")' href='#'>High-bandwidth User? View the High-Definition Videos here</a>");
		// }
		// 	   	else
		// {
		// 	var lowResLink = movieName.substring(0, movieName.indexOf(".f4v"));
		// 	lowResLink += "_low_res.f4v";
		//     $('#lowreslink').html("<a onclick='startMovie(\"" + lowResLink + "\")' href='#'>Having trouble viewing the video? Click here for the low-bandwidth version.</a>");
		// }
    	$('.popup_links').hide();
    	mapperSelectRoute(movieName);
    	SetFlashMovieSourceNonBridge(movieName,0,1);
		_gaq.push(['_trackEvent', 'Virtual Tour', 'Video Click', movieName]);
    }
    
    function makeContinueLink(nextVideoName)
    {
    	var launchString="startMovie('" + nextVideoName + "');";
    	create3dNode(0,-4,10,0,"Continue Tour",launchString);
    }
    
    function makeBrowseNode3d(x,y,z,rotationY,name,url)
    {
		var launchString="requestNewUrl('" + url + "',true);";
		create3dNode(x,y,z,rotationY,name,launchString);
    }
    
    function create3dNode(x,y,z,rotationY,name,launchString)
    {
  		//alert("make nodes");
  		if (nodeExists(name))
  		{
  			return;
  		}
  		
		var dotNode = g_Player.addGeoNode(imNodeType.GeoImage);
		//alert("imgView=" + dotNode.toString());
		g_Player.setGeoNodeProperty(dotNode,'rotationY',rotationY);
		g_Player.setGeoNodeProperty(dotNode,'z',z);
		g_Player.setGeoNodeProperty(dotNode,'y',y);
		g_Player.setGeoNodeProperty(dotNode,'x',x);		
		g_Player.setGeoNodeProperty(dotNode,'projectionType',imNodeProjectionType.ViewPlane);
		g_Player.setGeoNodeProperty(dotNode,'materialNormalUrl','points_icon.png');
		g_Player.setGeoNodeProperty(dotNode,'materialHoverUrl','points_icon_glow.png');
		
		var textNode = g_Player.addGeoNode(imNodeType.GeoScreenText,dotNode);
		//alert("imgView2=" + textNode.toString());
		g_Player.setGeoNodeProperty(textNode,'rotationY',rotationY);
		g_Player.setGeoNodeProperty(textNode,'z',0);
		g_Player.setGeoNodeProperty(textNode,'y',1);
		g_Player.setGeoNodeProperty(textNode,'x',0);
		g_Player.setGeoNodeProperty(textNode,'projectionType',imNodeProjectionType.ViewPlane);
		g_Player.setGeoNodeProperty(textNode,'text',name);
		
		
		storeNode(dotNode,textNode,launchString,name);
		

    }
    
	function Flash_Alert(msg)
	{
		alert(msg);
	}
	
	function checkForLoad()
	{
		//alert("check load, map, player, page=("+g_MapperLoaded+","+g_PlayerLoaded+","+g_PageLoaded+")");
		if ((g_MapperLoaded)&&(g_PlayerLoaded)&&(g_PageLoaded))
		{
			//alert("starting map");
			startMap(g_AutoLoadMapName);
			
		}
	}
	
	function OnMapLoaded()
	{
		//alert("OnMapLoaded");
		//startMovie("http://origin-qps.onstreammedia.com/origin/160over90/Wilkes_VT/Matt_FINAL.f4v");
	}
	
	function OnMapperInitialized()
	{
		//alert("mapper init");
		g_MapperLoaded = true;
		checkForLoad();
		
	}
	
	function onPageLoaded()
	{
		//alert("page loaded");
		g_PageLoaded = true;
		if (isIE)
		{
			g_Mapper.setActive(); // have to do this for ie otherwise it won't load until you mouseover it.
		}
		checkForLoad();
	}

	function onPageUnloaded()
    {
    	//clearNodes();
    	g_Player.popScene();
    }
