var g_loadedScriptId;
var g_viewer;
var g_vsKey = "vid";

function apiAddPlayerWithScript(scriptId, map, urlOverride)
{
	if (!Exists(scriptId)) return;

	var initialScriptId = scriptId;
	var queryStringScriptId = findSearchParameter(g_vsKey);
	if (urlOverride && queryStringScriptId != null)
	{
		initialScriptId = queryStringScriptId;
		g_loadedScriptId = initialScriptId;
	}
	
	if (!Exists(map))
	{
		map = null;
	}
	g_viewer = EveryScape.installViewer(
						 {container:"PlayerContainer", type:"FULL", map:map},
						 {script: {scriptId: initialScriptId } },
						 {}
	);
	EveryScape.Application.bind( "evtTask", g_viewer, apiEvtTaskHandler );
}

function apiAddPlayerWithPanorama(panoramaId, map)
{
	if (!Exists(panoramaId)) return;
	
	if (!Exists(map))
	{
		map = null;
	}
	g_viewer = EveryScape.installViewer(
						 {container:"PlayerContainer", type:"FULL", map:map},
						 {panorama: {panoramaId: panoramaId } },
						 {}
	);
}

function apiAddPlayerWithPanoramaAndRotate360(panoramaId, map)
{
                if (!Exists(panoramaId)) return;
                
                if (!Exists(map))
                {
                                map = null;
                }
                g_viewer = EveryScape.installViewer(
                                                                                                 {container:"PlayerContainer", type:"FULL", map:map},
                                                                                                 {panorama: {panoramaId: panoramaId } },
                                                                                                 {}
                );
                EveryScape.Application.bind( "evtPanoramaImage", g_viewer, function() { g_viewer.pan({panSpeed:'low'}); } );
}

function apiAddPlayerWithPanoramaAndRotate360ver2(panoramaId,phi,theta,map)
{
                if (!Exists(panoramaId)) return;
		    if (!Exists(phi)) return;
                
                if (!Exists(map))
                {
                                map = null;
                }
                g_viewer = EveryScape.installViewer(
                                                                                                 {container:"PlayerContainer", type:"FULL", map:map},
                                                                                                 {panorama: {panoramaId: panoramaId }, lookDirection: {phi: phi, theta: theta} },
                                                                                                 {}
                );
                EveryScape.Application.bind( "evtPanoramaImage", g_viewer, function() { g_viewer.pan({panSpeed:'low'}); } );
}

function apiLoadScript(scriptId)
{
	if (!Exists(g_viewer) || !Exists(scriptId)) return;
	
	g_viewer.unloadScript();
	g_loadedScriptId = scriptId;
	var scriptInfo = {script: {scriptId:scriptId}}
	g_viewer.loadScript(scriptInfo);               
}

function apiEvtTaskHandler (e)
{
	if ( e.status.errorCode != 0 || e.data === null) return;

	var type = e.data[0];
	switch (type)
	{
		case "emailScript":
		{
			var wl = window.location;
			var url = wl.protocol+"//"+wl.host+wl.pathname;
			if (Exists(g_loadedScriptId))
			{
				url += "?" + g_vsKey + "=" + g_loadedScriptId;
			}
			var emailLink = "mailto:?subject=" + escape("Take a look at what EveryScape has to offer!");
			emailLink += "&body=" + escape(url)	
			window.location = emailLink;
			break;
		}
	}
}

