// Copyright 2007 Oleg Soldatov. Scrolling Text Script
var panel = null;
var pos = 0; // position of text panel
var minPos = 0; // minimal up position
var timer = null;
var delayTimer = null;
var cycle = 0;
var down = false;
var speed = 4; // speed of scrolling
var step = 20;
var stepOnce = 80;
var running = false;

var arrowsPanel = null;
var upArrow = null;
var downArrow = null;
var isUp = true;
var isDown = false;

// set panel for scrolling and set minimal position
function preLoad(textPanel, min, arrows, up, down) {
    panel = textPanel;
    pos = 0;
    isUp = true;
    isDown = false;
    minPos = min;
    arrowsPanel = arrows;
    upArrow = up;
    downArrow = down;
    if (minPos < 0) {
    	$(arrowsPanel).add(downArrow).show();
    }
}

// Scroll text to up method
function scrollToUp() {
	down = false;
    clearTimeout(delayTimer);
    clearTimeout(timer);
    cycle = 0;
	if(!running) {	    
	    slideOnce(pos - stepOnce);
	} else {
		running = false;
		slideOnce(pos - stepOnce, 'linear');
	}
}

// Scroll text to down method
function scrollToDown() {
	down = false;
    clearTimeout(delayTimer);
    clearTimeout(timer);
    cycle = 0;
	if(!running) {	    
	    slideOnce(pos + stepOnce);
	} else {
		running = false;
		slideOnce(pos + stepOnce, 'linear');
	}
}

function slideOnce(newPos, easing) {
	if(easing == undefined) {
		easing = 'swing';
	}
	if (newPos < pos) {		
		if (newPos > minPos) {
	    	$(panel).animate({top: newPos + 'px'}, 600, easing);
	    	pos = newPos;
	    	if(isUp == true) {
        		$(upArrow).show();
        		isUp = false;
        	}
	    } else {
	    	$(panel).animate({top: minPos + 'px'}, 600, easing);
	    	pos = minPos;    	
	    	isDown = true;
	    	$(downArrow).hide();
	    	$(upArrow).show();
	    }
	} else if (newPos > pos) {
		if (newPos < 0) {
	    	$(panel).animate({top: newPos + 'px'}, 600, easing);
	    	pos = newPos;
	    	if(isDown == true) {
        		$(downArrow).show();
        		isDown = false;
        	}
	    } else {
	    	$(panel).animate({top: 0 + 'px'}, 600, easing);
	    	pos = 0;
	    	isUp = true;
	    	$(downArrow).show();
	    	$(upArrow).hide();
	    }
	}
}

function delayScrollToUp() {
    down = true;
    delayTimer = setTimeout("moveToUp()", 400);
}

function delayScrollToDown() {
    down = true;
    delayTimer = setTimeout("moveToDown()", 400);
}

function moveToUp() {
    if ((cycle < step) && (!isDown)) {
    	running = true;
        if (down == false) cycle ++;
        if (pos <= minPos) {
        	$(downArrow).hide();
        	$(upArrow).show();
        	isDown = true;
        	cycle = 0;
        	running = false;
        	return false;
        } else {
        	pos = pos - speed;
        	if(isUp == true) {
        		$(upArrow).show();
        		isUp = false;
        	}
        }
        panel.style.top = pos + "px";
        timer = setTimeout("moveToUp()", 1);
    }
    else cycle = 0;
}

function moveToDown() {
    if ((cycle < step) && (!isUp)) {
    	running = true;
        if (down == false) cycle ++;
        if (pos >= 0) {
        	$(upArrow).hide();
        	$(downArrow).show();
        	isUp = true;
        	cycle = 0;
        	running = false;
        	return false;
        } else {
        	pos = pos + speed;
        	if(isDown == true) {
        		$(downArrow).show();
        		isDown = false;
        	}
        }
        panel.style.top = pos + "px";
        timer = setTimeout("moveToDown()", 1);
    }
    else cycle = 0;
}

