// JavaScript Documentvar intervalVerId = null;

var intervalVerId = null;
var intervalHorId = null;
var maxRange = null;
var element = null;
var defaultDelta = 10;
var defaultTime = 250;
var speedTime = 20;
var eventMouseDown = false;

/*scroll vertical*/
function scrollUp(container) {
	if(eventMouseDown) return;
	if(container == null) return;
	element = container.down(0);
	if(!element.style.top) element.style.top = "0px";
	maxRange = element.offsetHeight - container.offsetHeight;
	if(maxRange > 0)
		intervalVerId = setInterval("assignUp();", defaultTime);
}

function scrollDown(container) {
	if(eventMouseDown) return;
	if(container == null) return;
	element = container.down(0);
	if(!element.style.top) element.style.top = "0px";
	maxRange = element.offsetHeight - container.offsetHeight;
	if(maxRange > 0)
		intervalVerId = setInterval("assignDown();", defaultTime);
}

function scrollUpAtSpeed(container, timeRange) {
	if(container == null) return;
	eventMouseDown = true;
	stopScroll();
	element = container.down(0);
	if(!element.style.top) element.style.top = "0px";
	maxRange = element.offsetHeight - container.offsetHeight;
	if(typeof timeRange == "undefined")
		timeRange = speedTime;
	if(maxRange > 0) {
		intervalVerId = setInterval("assignUp();", timeRange);
	}
}

function scrollDownAtSpeed(container, timeRange) {

	if(container == null) return;
	eventMouseDown = true;
	stopScroll();
	element = container.down(0);
	if(!element.style.top) element.style.top = "0px";
	maxRange = element.offsetHeight - container.offsetHeight;
	if(typeof timeRange == "undefined")
		timeRange = speedTime;
	if(maxRange > 0) {
		intervalVerId = setInterval("assignDown();", timeRange);
	}
}

function stopScroll() {
	clearInterval(intervalVerId);
}

function stopScrollAtSpeed() {
	eventMouseDown = false;
	clearInterval(intervalVerId);
}

function assignUp() {
	var top = parseInt(element.style.top);
	if(top < 0 && Math.abs(top) <= defaultDelta)
		element.style.top = "0px";
	else if(top < 0 && Math.abs(top) > defaultDelta)
		element.style.top = (top  + defaultDelta) + "px";
}

function assignDown() {
	var top = parseInt(element.style.top);
	if((maxRange - Math.abs(top)) <= defaultDelta)
		element.style.top =  -maxRange + "px";
	else
		element.style.top = (top - defaultDelta) + "px";
}

//-----------------------------------------------------------

/*scroll horizontal*/

//not type: use for onmouseover and onmouseout; type="normal" use for onclick*/
function scrollLft(container, type) {
	if(eventMouseDown) return;
	if(container == null) return;
	element = container.down(0);
	if(!element.style.left) element.style.left = "0px";
	maxRange = element.offsetWidth - container.offsetWidth;
	if(maxRange > 0) {
		if(typeof type != "undefined" || type == "normal")
			assignLeft(20);
		else
			intervalHorId = setInterval("assignLeft(0);", defaultTime);
	}
}

function scrollRight(container, type) {
	if(eventMouseDown) return;
	if(container == null) return;
	element = container.down(0);
	if(!element.style.left) element.style.left = "0px";
	maxRange = element.offsetWidth - container.offsetWidth;
	if(maxRange > 0) {
		if(typeof type != "undefined" || type == "normal")
			assignRight(20);
		else
			intervalHorId = setInterval("assignRight(0);", defaultTime);
	}
}

//by speed-time - use for onmousedown and onmouseup
function scrollLeftAtSpeed(container, timeRange) {
	if(container == null) return;
	eventMouseDown = true;
	stopHorScroll();
	element = container.down(0);
	if(!element.style.left) element.style.left = "0px";
	maxRange = element.offsetWidth - container.offsetWidth;
	if(typeof timeRange == "undefined")
		timeRange = speedTime;
	if(maxRange > 0) {
		intervalHorId = setInterval("assignLeft(0);", timeRange);
	}
}

function scrollRightAtSpeed(container, timeRange) {
	if(container == null) return;
	eventMouseDown = true;
	stopHorScroll();
	element = container.down(0);
	if(!element.style.left) element.style.left = "0px";
	maxRange = element.offsetWidth - container.offsetWidth;
	if(typeof timeRange == "undefined")
		timeRange = speedTime;
	if(maxRange > 0) {
		intervalHorId = setInterval("assignRight(0);", timeRange);
	}
}

function stopHorScroll() {
	clearInterval(intervalHorId);
}

function stopHorScrollAtSpeed() {
	eventMouseDown = false;
	clearInterval(intervalHorId);
}

function assignLeft(delta) {
	var left = parseInt(element.style.left);
	if(left < 0) {
		var newDelta = defaultDelta;
		if(delta > 0)
			newDelta = delta;
		if(Math.abs(left) <= newDelta)
			element.style.left = "0px";
		else
			element.style.left = left + newDelta + "px";
	}
}

//setInterval("assignRight();", timeRange); + assignRight(delta) -> scrollRightAtSpeed(...) ko chay
function assignRight(delta) {
	var left = parseInt(element.style.left);
	if(maxRange > 0) {
		var newDelta = defaultDelta;
		if(delta > 0)
			newDelta = delta;
		if((maxRange - Math.abs(left)) <= newDelta)
			element.style.left = -maxRange + "px";
		else
			element.style.left = left - newDelta + "px";
	}
}

function moveLeftLimit(container) {
	if(container == null) return;
	var element = container.down(0);
	element.style.left = "0px";
}

function prevHor(container, delta) {
	if(container == null || delta < 0) return;
	var element = container.down(0);
	if(!element.style.left) element.style.left = "0px";
	var left = parseInt(element.style.left);
	if(left < 0) {
	   	if(Math.abs(left) <= delta)
			element.style.left = "0px";
		else
			element.style.left = left + delta + "px";
	 }
}

function nextHor(container, delta) {
	if(container == null || delta < 0) return;
	var element = container.down(0);
	if(!element.style.left) element.style.left = "0px";
	var maxRange = element.offsetWidth - container.offsetWidth;
	var left = parseInt(element.style.left);
	if((maxRange - Math.abs(left)) > 0) {
		if((maxRange - Math.abs(left)) <= delta)
			element.style.left = -maxRange + "px";
		else
			element.style.left = left - delta + "px";
	}
}

function moveRightLimit(container) {
	if(container == null) return;
	var element = container.down(0);
	var maxRange = element.offsetWidth - container.offsetWidth;
	if(maxRange > 0)
		element.style.left = -maxRange + "px";
}

