var mouseCheckInt
var updateScrubberInt
var scrollLeftRightInt
var scrollUpDownInt

var _root_xmouse
var _root_ymouse

var scrollTween


function startDrag(s,e) {
	
	this.mouse_down=1
	sender=s
	me=this
	
	key=s.name.split("_")[0]
	
	objInfo=scrollerConstraints[key]
	objInfo.click_x=e.getPosition(s).x	
	objInfo.click_y=e.getPosition(s).y	

	mouseCheckInt=setInterval("mouseChecker(sender,me,objInfo)",10)	
	s.captureMouse()
}


function endDrag(s,e) {
	this.mouse_down=0
	clearInterval(mouseCheckInt)
	s.releaseMouseCapture()
}


function mouseChecker(s,me,obj) {

	if(me.mouse_down) {

		if(obj.direction=="H") {
			new_val=_root_xmouse-obj.world_offset+obj.local_offset-obj.click_x
			calc_scroll_end=obj.track_length+obj.local_offset-s.width
			//equates to...
			//var calc_right_edge=(obj.track_length+obj.world_offset)-(obj.world_offset-obj.local_offset)-s.width
		
			val=((new_val-obj.start_scroll)/(obj.track_length-s.width))*100
			per=val/100
			canvas_prop="Canvas.Left"
		}
		else {
			new_val=_root_ymouse-obj.world_offset+obj.local_offset-obj.click_y
			calc_scroll_end=obj.track_length+obj.local_offset-s.height
		
			val=((new_val-obj.start_scroll)/(obj.track_length-s.height))*100
			per=val/100
			canvas_prop="Canvas.Top"			
		}
		
		if(new_val>obj.start_scroll && new_val<calc_scroll_end) {
			s[canvas_prop]=new_val
			s.findName(obj.container)[canvas_prop]=((obj.content_length - obj.mask_length)*per)*-1
		}
		else if(new_val<=obj.start_scroll) {
			s[canvas_prop]=obj.start_scroll
			s.findName(obj.container)[canvas_prop]=0
		}
		else if(new_val>=calc_scroll_end) {
			s[canvas_prop]=calc_scroll_end
			s.findName(obj.container)[canvas_prop]=-obj.content_length+obj.mask_length
		}
		
	}
	else {
		clearInterval(mouseCheckInt)
		s.releaseMouseCapture()
	}
}









function pressTrackBar(s,e,diff) {

	key=s.name.split("_")[0]
	obj=scrollerConstraints[key]
	
	scrubber=s.findName(key+"_Scrubber")
	
	if(e) { // if event came from trackbar press
		click_x=e.getPosition(s).x
		click_y=e.getPosition(s).y
	
		time_to_scroll = 1.0  //on track bar press - time for scroll bar animation
	}
	else { //else event came from mouse wheel
	
		time_to_scroll = 0.0001  //on mouse wheel scroll - time for scroll bar animation
		
		var scroll_amount=10
		
		if(diff>0) {
			click_y=(scrubber["Canvas.Top"]-obj.local_offset)-scroll_amount
		}
		else {
			click_y=(scrubber["Canvas.Top"]-obj.local_offset+scrubber.height)+scroll_amount
		}
				
		
		if(click_y<0) {
			click_y=0
		}
		else if(click_y>obj.track_length) {
			click_y=obj.track_length
		}
		//window.status=click_y+"-"+scrubber["Canvas.Top"]
	}
	
	
	if(obj.direction=="H") {
		click_prop=click_x
		canvas_prop="Canvas.Left"
		scrubber_prop=scrubber.width
	}
	else {
		click_prop=click_y
		canvas_prop="Canvas.Top"
		scrubber_prop=scrubber.height
	}
	
	//handles muliptle trackbar clicks
	if(scrollTween) {
		scrollTween.stop()
	}
	
	if(click_prop < scrubber[canvas_prop]) {
		scrollTween = new Tween(new Object(),'st',Tween.strongEaseOut,scrubber[canvas_prop],(click_prop+obj.local_offset),time_to_scroll)
	}
	else {
		scrollTween = new Tween(new Object(),'st',Tween.strongEaseOut,scrubber[canvas_prop],(click_prop-scrubber_prop+obj.local_offset),time_to_scroll)
	}
	
	scrollTween.onMotionChanged = function(event){
		scrubber[canvas_prop] = event.target._pos
		
		new_val=event.target._pos

		if(obj.direction=="H") {
			val=((new_val-obj.start_scroll)/(obj.track_length-scrubber.width))*100
			canvas_prop="Canvas.Left"
		}
		else {
			val=((new_val-obj.start_scroll)/(obj.track_length-scrubber.height))*100
			canvas_prop="Canvas.Top"
		}
		var per=val/100
		s.findName(obj.container)[canvas_prop]=((obj.content_length - obj.mask_length)*per)*-1	
		
	}

	scrollTween.start()

}






//for static scrolling...

function pressTrackBarStatic(s,e) {

	key=s.name.split("_")[0]
	obj=scrollerConstraints[key]
	
	scrubber=s.findName(key+"_Scrubber")
	
	var click_x=e.getPosition(s).x
	var click_y=e.getPosition(s).y
	
	if(obj.direction=="H") {
		click_prop=click_x
		canvas_prop="Canvas.Left"
		scrubber_prop=scrubber.width
	}
	else {
		click_prop=click_y
		canvas_prop="Canvas.Top"
		scrubber_prop=scrubber.height
	}
	
	if(click_prop < scrubber[canvas_prop]) {
		scrubber[canvas_prop]=click_prop+obj.local_offset
	}
	else if(click_prop > (scrubber[canvas_prop] + scrubber_prop-obj.local_offset) ) {
		scrubber[canvas_prop]=click_prop-scrubber_prop+obj.local_offset
	}	
		
	updatePanel(scrubber[canvas_prop],s,obj)
}









function scrollerArrowPress(s,e) {

	this.mouse_down=1		
	sender=s
	me=this	
	
	var key=s.name.split("_")[0]
	obj=scrollerConstraints[key]	
	
	if(obj.direction=="H") {
		scrollLeftRightInt=setInterval("scrollLeftRight(sender,me)",10)
	}
	else {
		scrollUpDownInt=setInterval("scrollUpDown(sender,me)",10)
	}
	
	s.captureMouse()
}


function scrollerArrowRelease(s,e) {

	this.mouse_down=0
	sender=s
	me=this	
	
	clearInterval(scrollLeftRightInt)
	clearInterval(scrollUpDownInt)
	
	s.releaseMouseCapture()
}


function scrollLeftRight(s,me) {

	var key=s.name.split("_")[0]
	var btn_name=s.name.split("_")[1]
	
	obj=scrollerConstraints[key]
	
	scrubber=s.findName(key+"_Scrubber")
	
	var scroll_amount=obj.scroll_amount
	
	if(btn_name=="Left") {
	
		var pre_check=scrubber["Canvas.Left"]-scroll_amount
		
		if(pre_check>obj.local_offset) {
			scrubber["Canvas.Left"]=scrubber["Canvas.Left"]-scroll_amount
		}
		else {
			scrubber["Canvas.Left"]=obj.local_offset
		}
	}
	else {
		var calc_right_edge=obj.track_length+obj.local_offset-scrubber.width
		
		var pre_check=scrubber["Canvas.Left"]+scroll_amount
		
		if(pre_check<calc_right_edge) {
			scrubber["Canvas.Left"]=scrubber["Canvas.Left"]+scroll_amount
		}
		else {
			scrubber["Canvas.Left"]=calc_right_edge
		}
	}
	
	updatePanel(scrubber["Canvas.Left"],s,obj)
}










function scrollUpDown(s,me) {

	var key=s.name.split("_")[0]
	var btn_name=s.name.split("_")[1]
	
	obj=scrollerConstraints[key]
	
	scrubber=s.findName(key+"_Scrubber")
	
	var scroll_amount=obj.scroll_amount
	
	if(btn_name=="Up") {
	
		var pre_check=scrubber["Canvas.Top"]-scroll_amount
		
		if(pre_check>obj.local_offset) {
			scrubber["Canvas.Top"]=scrubber["Canvas.Top"]-scroll_amount
		}
		else {
			scrubber["Canvas.Top"]=obj.local_offset
		}
	}
	else {
		var calc_bottom_edge=obj.track_length+obj.local_offset-scrubber.height
		
		var pre_check=scrubber["Canvas.Top"]+scroll_amount
		
		if(pre_check<calc_bottom_edge) {
			scrubber["Canvas.Top"]=scrubber["Canvas.Top"]+scroll_amount
		}
		else {
			scrubber["Canvas.Top"]=calc_bottom_edge
		}
	}
	
	updatePanel(scrubber["Canvas.Top"],s,obj)
}







function updatePanel(new_val,s,obj) {

	var scroll_width=s.findName(obj.container).width
	key=s.name.split("_")[0]
	
	scrubber=s.findName(key+"_Scrubber")
	
	//duplicate code as in "mouseChecker", should consolidate into new function
	if(obj.direction=="H") {
		val=((new_val-obj.start_scroll)/(obj.track_length-scrubber.width))*100
		canvas_prop="Canvas.Left"
	}
	else {
		val=((new_val-obj.start_scroll)/(obj.track_length-scrubber.height))*100
		canvas_prop="Canvas.Top"
	}
	var per=val/100
	s.findName(obj.container)[canvas_prop]=((obj.content_length - obj.mask_length)*per)*-1
}






function whenMouseMoves(s, e) {
	
    _root_xmouse = e.getPosition(null).x
    _root_ymouse = e.getPosition(null).y
    
    //window.status=_root_xmouse+" - "+_root_ymouse
}







// MouseWheel code from http://adomas.org/javascript-mouse-wheel/

if (window.addEventListener) {
      // DOMMouseScroll is for mozilla.
	window.addEventListener('DOMMouseScroll', mouseWheelChange,true)
}
// IE/Opera.
window.onmousewheel = document.onmousewheel = mouseWheelChange



function mouseWheelChange(event) {

    var delta = 0;
    if (!event) { // For IE.
        event = window.event;
    }

    if (event.wheelDelta) { //IE/Opera.
        delta = event.wheelDelta
        // In Opera 9, delta differs in sign as compared to IE.
        if (window.opera) {
            delta = -delta;
        }
    }
    else if (event.detail) { // Mozilla case.
        // In Mozilla, sign of delta is different than in IE.
        delta = -event.detail
        
    }
	
	var s=main.findName("myScroller1_TrackBar")
	var e=null	
	
	pressTrackBar(s,e,delta)
	
    event.returnValue = false;
}


