var pan_dir = "auto";

function ButtonPan(dir)
{
	PausePan();
	StartPan(dir);
}

function StartPan(dir)
{
	var pt = document.getElementById("ptviewer")
	switch(dir)
	{
		case "left":
			pt.startAutoPan(-pt.fov() / 45.0, 0, 1.0);
			break;
		case "right":
			pt.startAutoPan( pt.fov() / 45.0, 0, 1.0);
			break;
		case "up":
			pt.startAutoPan(0,  pt.fov() / 60.0, 1.0);
			break;
		case "down":
			pt.startAutoPan(0, -pt.fov() / 60.0, 1.0);
			break;
		case "in":
			pt.startAutoPan(0, 0, 1.0 / 1.02);
			break;
		case "out":
			pt.startAutoPan(0, 0, 1.02);
			break;
	}
	pan_dir = dir;
}

function StopPan()
{
	if (pan_dir != "" && pan_dir != "auto")
	{
		PausePan();
		pan_dir = "";
	}
}

function PausePan()
{
	if (pan_dir != "" && pan_dir != "auto")
	{
		var pt = document.getElementById("ptviewer")
		pt.stopAutoPan();
	}
}

function ResumePan()
{
	if (pan_dir != "" && pan_dir != "auto")
		ButtonPan(pan_dir);
}

function myMoveTo(p,t,f)
{
	var pt = document.getElementById("ptviewer")

	if (pt.getAutoPan())
	{
		if (pan_dir == "auto")
		{
			pt.stopAutoPan();
			pan_dir = "";
		}
		else
			return;
	}

	var dp,df1,df2;

	dp = Math.abs(p - pt.pan());
	if (dp > 180) dp = 360-dp;
	df1 = Math.abs(60.0 - pt.fov());
	df2 = Math.abs(f - 60.0);

	if (dp < 20)
	{
		pt.moveTo(p,t,f,5);
	}
	else
	{
		pt.moveTo(pt.pan(),0.0,60.0,df1/3);
		pt.waitWhilePanning();
		pt.moveTo(p,0.0,60.0,Math.floor(dp/5)+1);
		pt.waitWhilePanning();
		pt.moveTo(p,t,f,df2/3);
	}
}
