//--------------------------------------------//
// ADG javascript panorama and aspect viewer. //
//   Albatross Design Group Inc. 12/21/2004   //
//--------------------------------------------//

var interval = 20;
var sensitivity = 0.1;

function ADGMouse(e) {
	if (!e) e=window.event;  if (!e) return [0,0]; 
	if (typeof(e.pageX  )=='number') return [e.pageX  ,e.pageY  ];
	if (typeof(e.clientX)=='number') return [e.clientX,e.clientY];
	return [0,0]; 
}

function createObject(width,height,aspect,url) {
	var content = ''
	content	+= '<table cellspacing=0 cellpadding=0 border=0><tr>\n'
	if (!aspect)
	content	+= ' <td><img src="'+url+'" galleryimg="no"></td>\n'
	content	+= ' <td><img src="'+url+'" galleryimg="no"></td>\n'
	content	+= '</tr></table>\n'

	if (document.layers) {
		content = ''
			+'<ilayer'  
		  +' width="' +width +'"'
		  +' height="'+height+'"'
			+'>\n'	
			+' <layer'  
		  +'  width="' +width +'"'
		  +'  height="'+height+'"'
		  +'  clip="0,0,'+width+','+height+'"'
			+' >\n'	
			+'  <layer'  
		  +'   width="' +width +'"'
		  +'   height="'+height+'"\n'
			+'   onmouseover="ADGOver(this,'+width+','+height+','+aspect+',\''+url+'\');"\n'
			+'  >\n'	
			
			+ content
			
			+'  </layer>\n'	
			+' </layer>\n'	
			+'</ilayer>\n';	
	} else {
		content = ''
			+'<div style="position:relative;' 
			+' overflow:hidden;'
			+' width:'  + width +'px;'
			+' height:' + height+'px;'
			+'">\n'
			
			+' <div style="position:absolute;'
			+'  left:0px;top:0px;'
			+'  width:'  + width  +'px;'
			+'  height:' + height +'px;'
			+'  clip:rect(0px '+width +'px '+height+'px 0px);'
			+' ">\n'
			
			+'  <div style="position:absolute;left:0px;top:0px;'
			+'   width:'  +width +'px;'
			+'   height:' +height+'px;'
			+'   "\n'
			+' onmouseover="ADGOver(this,'+width+','+height+','+aspect+',\''+url+'\');"\n'
			+' ondragstart  ="return false;"'
			+' onselectstart="return false;"'
			+'   >\n'

			+ content
			
			+'  </div>\n'
			+' </div>\n'
			+'</div>\n'
	}		
	
	document.write(content);
}
function createPanorama(width,height,url) {
	return createObject(width,height,0,url);
}
function createAspect(width,height,url) {
	return createObject(width,height,1,url);
}
function ADGOver(layer,width,height,aspect,url) {
	if (window.curTimer) return true;
	if (layer.captureEvents) layer.captureEvents(Event.MOUSEDOWN); 
	layer.onmousedown=ADGStart;
	layer.aspect = aspect;
	window.curLayer	= layer;
	
	if (!layer.curImage) {
		layer.curWidth  = width;
		layer.curHeight = height;
		layer.curImage  = new Image();
		layer.curImage.src = url;
	}	
	return false;
}

function ADGStart(e) {
	if (document.captureEvents) 
		document.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP); 
	
	window.storeMOUSEMOVE = document.onmousemove; 
	window.storeMOUSEUP		= document.onmouseup; 
	document.onmousemove  = ADGMove; 
	document.onmouseup    = ADGMove; 
	
	if (document.all||document.getElementById)
		document.body.style.cursor = "move";
	
	if (this.setCapture) this.setCapture();	
	
	window.curVelocity		= [0,0];
	window.curMouse				= ADGMouse(e);
	window.curTimer				= window.setInterval("onTimer()",interval);
	return false;
}
	
function ADGMove(e){
	if (!window.curTimer) return true;
	
	var ms = ADGMouse(e); 
	window.curVelocity[0] = window.curMouse[0]-ms[0]; 
	window.curVelocity[1] = window.curMouse[1]-ms[1]; 

	if (!e) e = window.event; 	
	if (e && e.type && e.type.toLowerCase()=='mouseup') { 
		if (document.all||document.getElementById) document.body.style.cursor = "";
		document.onmousemove = window.storeMOUSEMOVE; 
		document.onmouseup   = window.storeMOUSEUP; 
		if (document.releaseCapture) document.releaseCapture();
		if (window.curTimer) clearInterval(window.curTimer); window.curTimer = null;
	}
}

function onTimer() {
	if (!window.curTimer) return;
	
	var layer = window.curLayer; 
	if (!layer.curOffset) layer.curOffset = [0,0];
	layer.curOffset[0] += sensitivity*window.curVelocity[0];
	layer.curOffset[1] += sensitivity*window.curVelocity[1];
	
	var x = layer.curOffset[0];
	var y = layer.curOffset[1];
	
	if (layer.curImage) {
		var w = layer.curImage.width;
		var h = layer.curImage.height;
		
		if (layer.aspect) { 
			x = 20*x; y = 0;
			if (w<layer.curWidth) x = 0; else {
				while (x<-w) x += w;
				while (x> 0) x -= w;
			}
			x -= x%layer.curWidth;
		} else {
			if (w<layer.curWidth ) x = 0; else {
				while (x<-w) x += w;
				while (x> 0) x -= w;
			}	
			if (h<layer.curHeight) y = 0;  else {
				h -= layer.curHeight;
				while (y<-h) y  =-h;
				while (y> 0) y  = 0;
			}	
			layer.curOffset[0] = x;
			layer.curOffset[1] = y;
		}		
	}	
	
	if (document.layers) {
		layer.left = x;
		layer.top  = y;
	} else {
		layer.style.left = x;
		layer.style.top  = y;
	}		
}
