var viewer = null;
var currentX = null;
var currentY = null;
var zoomFactor = 451 / 7800;
var zoomRect = null;
var referencePoint = {x: 1500-600, y: 1200-300}

if(!document.getElementById)
{
	document.getElementById = function(id)
	{
		return document.all[id];
	}
}

window.onload = function()
{
	viewer = new SliceViewer("sliceView");
	viewer.setImagePath("images/asia", "all-flat_", ".jpg");
	viewer.createSlices(300, 300, 28, 26);
	viewer.onClick = onLocate;
	viewer.onChange = onChangePosition;
	if(currentX && currentY)
	{
		var pos = viewer.calculateInnerPosition(currentX, currentY, referencePoint.x, referencePoint.y);
		viewer.setInnerPosition(pos.x, pos.y);
	}
	viewer.show();
/*
*/
//	loadSpots();
	loadLocations();
	
	if(typeof loadSlideShow != "undefined")
		loadSlideShow();
}

function moveZoomRectangle(x, y)
{
	if(!zoomRect)
		zoomRect = new DynamicElement('zoomRect');
		
	if(!zoomRect.elm)
		return;
	
	var zoomX = 10+Math.round(x * zoomFactor)-10;
	var zoomY = 10+Math.round((y-1770) * zoomFactor)-8;
	if( typeof slideShowSize != "undefined" )
	{
		var rectSize = zoomRect.getSize();
		zoomX -= rectSize.width / 2;
		zoomY -= rectSize.height / 2;
	}
		
	zoomRect.setPosition(zoomX, zoomY);
	zoomRect.show();
}

function hideZoomRectangle()
{
	if(!zoomRect)
		return;
	
	zoomRect.hide();
}

function zoom(e)
{
	if(!e) e = window.event;
	var pos = SliceViewer.getCoordinatesByMouseEvent(e);
	if( typeof slideShowSize != "undefined")
	{
		var rectSize = zoomRect.getSize();
		//zoomX -= rectSize.width / 2;
		pos.y -= rectSize.height / 2;
	}
	var zoomX = Math.round(pos.x / zoomFactor)+10;
	var zoomY = Math.round(pos.y / zoomFactor)+1770+8;
	moveMapTo(zoomX, zoomY, true);
}

function createNote(text, x, y)
{
	var note = new DynamicElement();
	note.setHtml('<div class="note">'+text+'</div>');
	note.setPosition(x, y);
	
	return note;
}

function onLocate(e)
{
	moveMapTo(e.x, e.y);
}

function onChangePosition(e)
{
	if( typeof slideShowSize != "undefined")
		var pos = e.sender.getPosition(slideShowSize.width / 2, slideShowSize.height / 2);
	else
		var pos = e.sender.getPosition(referencePoint.x, referencePoint.y);
	moveZoomRectangle(pos.x, pos.y);
}

function moveMapTo(x, y, disableAnimation, referenceX, referenceY, onFinished)
{
	if(referenceX)
		referencePoint.x = referenceX;
	if(referenceY)
		referencePoint.y = referenceY;
		
	if(!viewer)
	{
		currentX = x;
		currentY = y;
		return;
	}
		
	var dist = viewer.calculateDistance(x, y, referencePoint.x, referencePoint.y);
	if(dist > 4000)
		disableAnimation = true;
		
	viewer.moveToReference(x, y, referencePoint.x, referencePoint.y, (disableAnimation === true ? false : true), onFinished);
}

function loadUrl(url, force)
{
	getJsRequest().load(url, {type: 'content'});
	
	return true;
}

function showLocation(id)
{
	getJsRequest().load('locations.php?location='+id, {type: 'command'});
	
	return true;
}

function onContentLoad(job, content)
{
	if(job.parameters.type == 'content')
		setContent(content);
}

function setContent(contentHtml)
{
	document.getElementById("content").innerHTML = contentHtml;
}

var request;
function getJsRequest()
{
	if( !request )
	{
		request = JsRequest.create();
		request.onLoad = onContentLoad;
	}
	
	return request;
}

