// JScript common to all scrollers....

// Lock the scroll
function freeze(id) {
	eval("frozen" + id + "=true;");
}

// Release the scroll
function melt(id) {
	eval("frozen" + id + "=false;");
}	

// On mouseover the scroller, trigger an automatic freeze
coverfreeze = function(id) {
	eval("frozenwas" + id + "=frozen" + id);
	if(eval("frozen" + id) == false) {
		freeze(id);
	}
}

covermelt = function(id) {
	if(eval("frozenwas" + id) == false) {
		melt(id);
	}
}

// Are we able to trigger a slide shift?
checkScrollManual = function(id,newframe,scrollx,scrolly) {
	if(eval("scrollinprogress" + id) != true) {
		eval("scrollinprogress" + id + "=true;");	
		eval("currentframe" + id + "=newframe;");
		moveScroll(id,scrollx,scrolly);		
	}
}

checkScroll = function(id,newframe,scrollx,scrolly) {
	if(eval("scrollinprogress" + id) != true && eval("frozen" + id) != true) {
		eval("scrollinprogress" + id + "=true;");	
		eval("currentframe" + id + "=newframe;");
		moveScroll(id,scrollx,scrolly);		
	}
}

// Move the slide by X/Y
moveScroll = function(id,scrollx,scrolly) {
	new Effect.Move($('innerscroll' + id), { 
		duration: 1.2,
		x: scrollx, 
		y: scrolly, 
		mode: 'relative', 
		afterFinish: function() { 
			eval("scrollinprogress" + id + "=false;"); 
		} 
	});		
}

// Force a slide Up
controlslideUp = function(id) {
	if(eval("frozen" + id) == true) {
		melt(id);
		slideUp(id);
		freeze(id);
	} else {
		slideUp(id);
	}
}

// Force a slide Down
controlslideDown = function(id) {
	if(eval("frozen" + id) == true) {
		melt(id);
		slideDown(id);
		freeze(id);
	} else {
		slideDown(id);
	}
}

// Move down a slide
slideDown = function(id) {					
	newframe = eval("currentframe" + id) + 1;
	if(newframe > eval("numberofframes" + id)) {
		newframe = 1;
		var scrolly = (0 - eval("scrollheight" + id)) * (eval("numberofframes" + id) - 1);
	} else {
		var scrolly = eval("scrollheight" + id);
	}			
	checkScroll(id,newframe,0,-scrolly);		
}

// Move up a slide
slideUp = function(id) {
	newframe = eval("currentframe" + id) - 1;
	if(newframe < 1) {
		newframe = eval("numberofframes" + id);
		var scrolly = (0 - eval("scrollheight" + id)) * (eval("numberofframes" + id) - 1);
	} else {
		var scrolly = eval("scrollheight" + id);
	}
	checkScroll(id,newframe,0,scrolly);					
}

// Trigger a vertical autoscroll
autoscrollv = function(id,delay) {
	setTimeout(function() { autoscrollv2(id,delay) }, delay);	
}

autoscrollv2 = function(id,delay) {
	slideDown(id);
	autoscrollv(id,delay);	
}

// Scroll vertically to the specified slide
leapTov = function(id,frameto) {

	if((eval("currentframe" + id) - frameto) < 1) {
		var scrolly = eval("scrollheight" + id) * (frameto - eval("currentframe" + id));
		checkScrollManual(id,frameto,0,-scrolly);
	}
	
	else {
		var scrolly = eval("scrollheight" + id) * (eval("currentframe" + id) - frameto);
		checkScrollManual(id,frameto,0,scrolly);			
	}		
	
}	

// Force a slide Left	
controlslideLeft = function(id) {
	if(eval("frozen" + id) == true) {
		melt(id);
		slideLeft(id);
		freeze(id);
	} else {
		slideLeft(id);
	}
}

// Force a slide Right
controlslideRight = function(id) {
	if(eval("frozen" + id) == true) {
		melt(id);
		slideRight(id);
		freeze(id);
	} else {
		slideRight(id);
	}
}

// Move right a slide
slideRight = function(id) {
	newframe = eval("currentframe" + id) + 1;
	if(newframe > eval("numberofframes" + id)) {
		newframe = 1;
		var scrollx = (0 - eval("scrollwidth" + id)) * (eval("numberofframes" + id) - 1);
	} else {
		var scrollx = eval("scrollwidth" + id);
	}			
	checkScroll(id,newframe,-scrollx,0);		
}

// Move left a slide
slideLeft = function(id) {
	newframe = eval("currentframe" + id) - 1;
	if(newframe < 1) {
		newframe = eval("numberofframes" + id);
		var scrollx = (0 - eval("scrollwidth" + id)) * (eval("numberofframes" + id) - 1);
	} else {
		var scrollx = eval("scrollwidth" + id);
	}
	checkScroll(id,newframe,scrollx,0);	
}

// Trigger a horizontal autoscroll
autoscrollh = function(id,delay) {
	setTimeout(function() { autoscrollh2(id,delay) }, delay);	
}

autoscrollh2 = function(id,delay) {
	slideRight(id);
	autoscrollh(id,delay);	
}

// Scroll horizontally to the specified slide
leapToh = function(id,frameto) {

	if((eval("currentframe" + id) - frameto) < 1) {
		var scrollx = eval("scrollwidth" + id) * (frameto - eval("currentframe" + id));
		checkScrollManual(id,frameto,-scrollx,0);
	}
	
	else {
		var scrollx = eval("scrollwidth" + id) * (eval("currentframe" + id) - frameto);
		checkScrollManual(id,frameto,scrollx,0);			
	}		
	
}	

// Force a slide Left (more than 1 container)	
controlslideLeftMultiple = function(id,id2) {
	if(eval("frozen" + id) == true) {
		melt(id);
		slideLeft(id);
		slideLeft(id2);
		freeze(id);
	} else {
		slideLeft(id);
		slideLeft(id2);
	}
}

// Force a slide Right (more than 1 container)
controlslideRightMultiple = function(id,id2) {
	if(eval("frozen" + id) == true) {
		melt(id);
		slideRight(id);
		slideRight(id2);
		freeze(id);
	} else {
		slideRight(id);
		slideRight(id2);
	}
}

// Scroll horizontally to the specified slide (more than 1 container)
leapTohMultiple = function(id,id2,frameto) {

	if((eval("currentframe" + id) - frameto) < 1) {
		var scrollx = eval("scrollheight" + id) * (frameto - eval("currentframe" + id));
		checkScrollManual(id,frameto,-scrollx,0);
		var scrollx = eval("scrollheight" + id2) * (frameto - eval("currentframe" + id2));
		checkScrollManual(id2,frameto,-scrollx,0);
	}
	
	else {
		var scrollx = eval("scrollheight" + id) * (eval("currentframe" + id) - frameto);
		checkScrollManual(id,frameto,scrollx,0);		
		var scrollx = eval("scrollheight" + id2) * (eval("currentframe" + id2) - frameto);
		checkScrollManual(id2,frameto,scrollx,0);			
	}		
	
}	


