// Mouse Event Functions
// mouse events for the Drag object and Scroll2 object
// 19991007

// Copyright (C) 1999 Dan Steinman
// Distributed under the terms of the GNU Library General Public License
// Available at http://www.dansteinman.com/dynapi/

function initMouseEvents() {
	if (is.ns) document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
	document.onmousedown = mouseDown;
	document.onmousemove = mouseMove;
	document.onmouseup = mouseUp;
}

function mouseDown(e) {
	if ((is.ns && e.which!=1) || (is.ie && event.button!=1)) return true
	var x = (is.ns)? e.pageX : event.x+document.body.scrollLeft
	var y = (is.ns)? e.pageY : event.y+document.body.scrollTop
	if (is.ns && e.target!=document) routeEvent(e)

	if (self.myscroll) {
		m = myscroll;
		gpa=getPosAction(x,y,m);
		if (m.useH && gpa==1) m.ltImg.down();
		if (m.useH && gpa==2) m.rtImg.down();
		if (m.useV && gpa==1) m.upImg.down();
		if (m.useV && gpa==2) m.dnImg.down();
		if (m.useH && (gpa==4 || gpa==3)) m.barH.mousedown(toScrollCordX(x,m.x,m.barW),toScrollCordY(y,m.y,m.barW)-m.h+m.arrowH);
		if (m.useV && (gpa==4 || gpa==3)) m.barV.mousedown(toScrollCordX(x,m.x,m.barW)-m.w+m.arrowH,toScrollCordY(y,m.y,m.barW+m.boxH/2));
		if (gpa==4) return false;
	}	

	if (self.myscroll2) {
		m = myscroll2;
		gpa=getPosAction(x,y,m);
		if (m.useH && gpa==1) m.ltImg.down();
		if (m.useH && gpa==2) m.rtImg.down();
		if (m.useV && gpa==1) m.upImg.down();
		if (m.useV && gpa==2) m.dnImg.down();
		if (m.useH && (gpa==4 || gpa==3)) m.barH.mousedown(toScrollCordX(x,m.x,m.barW),toScrollCordY(y,m.y,m.barW)-m.h+m.arrowH);
		if (m.useV && (gpa==4 || gpa==3)) m.barV.mousedown(toScrollCordX(x,m.x,m.barW)-m.w+m.arrowH,toScrollCordY(y,m.y,m.barW+m.boxH/2));
		if (gpa==4) return false;
	}
	
	if (Scroll && ScrollTestActive()) 
		return false;
	else 
		if (Drag && drag.mouseDown(x,y)) 
			return false;
		else 
			return true;

}

function mouseMove(e) {
	var x = (is.ns)? e.pageX : event.x+document.body.scrollLeft
	var y = (is.ns)? e.pageY : event.y+document.body.scrollTop
	if (is.ns && e.target!=document) routeEvent(e)
	
	if (self.myscroll) {
		m = myscroll;
		if (m.useH && m.barH.mouseIsDown) {m.barH.mousemove(toScrollCordX(x,m.x,m.barW),toScrollCordY(y,m.y,m.barW)-m.h+m.arrowH); return false; }
		if (m.useV && m.barV.mouseIsDown) {m.barV.mousemove(toScrollCordX(x,m.x,m.barW)-m.w+m.arrowH,toScrollCordY(y,m.y,m.barW+m.boxH/2)); return false; }
	}
	
	if (self.myscroll2) {
		m = myscroll2;
		if (m.useH && m.barH.mouseIsDown) {m.barH.mousemove(toScrollCordX(x,m.x,m.barW),toScrollCordY(y,m.y,m.barW)-m.h+m.arrowH); return false; }
		if (m.useV && m.barV.mouseIsDown) {m.barV.mousemove(toScrollCordX(x,m.x,m.barW)-m.w+m.arrowH,toScrollCordY(y,m.y,m.barW)); return false; }
	}
	
	if (Scroll && ScrollTestActive()) 
		return false;
	else 
		if (Drag && drag.mouseMove(x,y))
			return false;
		else 
			return true;
}

function mouseUp(e) {
	var x = (is.ns)? e.pageX : event.x+document.body.scrollLeft
	var y = (is.ns)? e.pageY : event.y+document.body.scrollTop
	if (is.ns && e.target!=document) routeEvent(e)
	
	if (self.myscroll) {
		m = myscroll;
		if (m.useH) { m.ltImg.up(); m.rtImg.up(); m.barH.mouseup();}
		if (m.useV) { m.upImg.up(); m.dnImg.up(); m.barV.mouseup();}
	}
	
	if (self.myscroll2) {
		m = myscroll2;
		if (m.useH) { m.ltImg.up(); m.rtImg.up(); m.barH.mouseup();}
		if (m.useV) { m.upImg.up(); m.dnImg.up(); m.barV.mouseup();}
	}

	if (Drag && drag.mouseUp(x,y))
		return false;
	else 
		return true;
}

function toScrollCordX(x,mx,mw) {
	return(x-posl-mx-mw);
}

function toScrollCordY(y,my,mw) {
	return(y-post-my-mw);
}

function getPosAction(x,y,m) {

	if (m.useV) {
		if ((x>=m.x+posl+m.w)&&(x<=m.x+posl+m.w+m.barW)&&(y>=m.y+post+0)&&(y<=m.y+post+m.arrowH)) {
			//top vertical button
			return(1);
		}
		
		if ((x>=m.x+posl+m.w)&&(x<=m.x+posl+m.w+m.barW)&&(y>=m.y+post+m.h-m.arrowH)&&(y<=m.y+post+m.h)) {
			//bottom vertical button
			return(2);
		}
			
		if ((x>=m.x+posl+m.w)&&(x<=m.x+posl+m.w+m.barW)&&(y>=m.y+post+m.barV.boxlyr.y+m.arrowH)&&(y<=m.y+post+m.barV.boxlyr.y+m.boxH+m.arrowH)) {
			//vertical scroll box
			return(3);
		}
		
		if ((x>=m.x+posl+m.w)&&(x<=m.x+posl+m.w+m.barW)&&(y>=m.y+post+m.arrowH)&&(y<=m.y+post+m.h-m.arrowH)) {
			//vertical scroll area
			return(4);
		}
		
	}
		
	if (m.useH) {
		if ((x>=m.x+posl+0)&&(x<=m.x+posl+0+m.arrowH)&&(y>=m.y+post+m.h)&&(y<=m.y+post+m.h+m.barW)) {
			//left horizontal button
			return(1);
		}
		
		if ((x>=m.x+posl+m.w-m.arrowH)&&(x<=m.x+posl+m.w)&&(y>=m.y+post+m.h)&&(y<=m.y+post+m.h+m.barW)) {
			//right horizontal button
			return(2);
		}
			
		if ((x>=m.x+posl+m.barH.boxlyr.x+m.arrowH)&&(x<=m.x+posl+m.barH.boxlyr.x+m.boxH+m.arrowH)&&(y>=m.y+post+m.h)&&(y<=m.y+post+m.h+m.barW)) {
			//horizontal scroll box
			return(3);
		}
		
		if ((x>=m.x+posl+m.arrowH)&&(x<=m.x+posl+m.w-m.arrowH)&&(y>=m.y+post+m.h)&&(y<=m.y+post+m.h+m.barW)) {
			//horizontal scroll area
			return(4);
		}
		
	}
	
	return(0);

}

Drag = null
Scroll = null
