// JavaScript Document

// Housekeeping...
var isMsie = (document.all && navigator.userAgent.indexOf('msie')!=-1)? true: false;

var arItem = new Array ("subMap", "map", "Magnifier");
var arXmin = new Array ( -1306, 0	, 1);
var arYmin = new Array ( -2438, 0	, 1);
var arXmax = new Array ( 1306, 0	, 210);
var arYmax = new Array ( 2438, 0	, 110);
var arXstart = new Array ( 0, 0	, 0);
var arYstart = new Array ( -870, 0	, 120);

var picRatio = 10; 
// rough move of 2448/36


var movingPicture = 0; // index of item for moving

// Define the function
if  (document.getElementById){

(function(){
		//Stop Opera selecting anything whilst dragging.
		if (window.opera){ document.write("<input type='hidden' id='Q' value=' '>"); }

		var n = 500; var dragok = false; var y,x,dx,dy, dmx, dmy, d; var vPic, objPic; var vPicAbs = 0;

		function move(e){
			if (!e) e = window.event;
			if (dragok){ 
					var deltaX =  e.clientX - x ; var deltaY =  e.clientY - y ;
					if (!objPic) objPic = document.getElementById(arItem[movingPicture]);
				}

			// restrict based on location of ...
			if ( (dmy + deltaY) <= arYmin[2] ) deltaY = arYmin[2] - dmy;
			else if ( (dmy + deltaY) > arYmax[2] ) deltaY= arYmax[2] - dmy;

			if ( (dmx + deltaX) <= arXmin[2] ) {deltaX = arXmin[2] - dmx;}
			else if ( (dmx + deltaX) > arXmax[2] ) deltaX= arXmax[2]- dmx;

			document.getElementById('subMap').style.left = dx - (deltaX * picRatio) + "px";
			document.getElementById('subMap').style.top  = dy - (deltaY * picRatio) + "px";

			if (document.getElementById("Magnifier"))
			{
				document.getElementById('Magnifier').style.left = dmx + deltaX + "px";
				document.getElementById('Magnifier').style.top  = dmy + deltaY + "px";
			}

		  	return false;
			}

	function down(e) {

		// Define event and object
		if (!e) e = window.event;
		var temp = (typeof e.target != "undefined")?e.target:e.srcElement;
		if (temp.tagName != "HTML"|"BODY" && temp.className != "dragclass" && temp.className != "magnifyclass"){
			temp = (typeof temp.parentNode != "undefined")?temp.parentNode:temp.parentElement;
	 		}

		if (temp.className == "dragclass" || temp.className == "magnifyclass" ){

			if (window.opera){ document.getElementById("Q").focus(); }

			objPic = document.getElementById(arItem[movingPicture]);
			mObjPic = document.getElementById('subMap');

			dragok = true;
			temp.style.zIndex = n++;
			d = temp;
			dx = (objPic.style.left == "") ? arXstart[0] : parseInt(mObjPic.style.left);
			dy = (objPic.style.top == "")  ? arYstart[0] : parseInt(mObjPic.style.top);
			if (document.getElementById("Magnifier"))
			{	dmx =  parseInt(document.getElementById("Magnifier").style.left);
				dmy = parseInt(document.getElementById("Magnifier").style.top);
			}

			x = e.clientX;
			y = e.clientY;
		 	document.onmousemove = move;
	 		return false;
 		}
	}

	function up(){
		dragok = false; vPic = false;
//		objPic = document.getElementById("subMap");

		document.onmousemove = null;
	}

	document.onmousedown = down;
	document.onmouseup = up;
})(); }

// ***************************************************************************
var ravelX, ravelY;
function fMapRavel(dx,dy)
{
	ravelX = dx; ravelY = dy;
	if ( typeof(vMapRavel) != "undefined") {clearInterval(vMapRavel);}
	vMapRavel = setInterval("fMapRavelDo(" + dx + "," + dy + ")", 1);
}
function fMapRavelDo(dx,dy)
{
	var xx = document.getElementById('map');

	if (dx!=0) {
		if ( (parseInt(xx.style.width)==0 && dx > 0) || (parseInt(xx.style.width)>=500 && dx < 0) ) {clearInterval(vMapRavel); return;}
		xx.style.width = (parseInt(xx.style.width) - dx) + "px";
	}	
	if (dy!=0) {
		if ( (parseInt(xx.style.height)<=0 && dy > 0) || ( parseInt(xx.style.height) >= 350 && dy < 0) ) {clearInterval(vMapRavel); return;}
		xx.style.height = (parseInt(xx.style.height) - dy) + "px";

	}	
}

// ***************************************************************************
var opacityX, opacityTarget;
opacityX=100;
function fMapOpacity(x)
{
	opacityTarget = x;
	var dx = (opacityX - opacityTarget) / 10;
	if ( typeof(vMapOpacity) != "undefined") {clearInterval(vMapOpacity);}
	vMapOpacity = setInterval("fMapOpacityDo( " + dx + ")", 100);
}


function fMapOpacityDo(value) {
	var xx = document.getElementById('map');
	var aX = opacityX - value ;
	if ( aX == opacityTarget)  {
		xx.style.opacity = opacityTarget/100;
		xx.style.filter = 'alpha(opacity=' + opacityTarget + ')';
		opacityX = opacityTarget;
		clearInterval(vMapOpacity); 
		return;}
	xx.style.opacity = aX/100;
	xx.style.filter = 'alpha(opacity=' + aX + ')';
	opacityX = aX; 
}


function getUrlVars()
{
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for(var i = 0; i < hashes.length; i++)
	{ hash = hashes[i].split('='); vars.push(hash[0]); vars[hash[0]] = hash[1];}
	return vars;
}

if (!Array.prototype.indexOf)
{
  Array.prototype.indexOf = function(elt /*, from*/)
  {
    var len = this.length;

    var from = Number(arguments[1]) || 0;
    from = (from < 0) ? Math.ceil(from) : Math.floor(from);
    if (from < 0) from += len;

    for (; from < len; from++)
    { if (from in this && this[from] === elt) return from; }
    return -1;
  };
}


