Here's a JavaScript that might be able to help you out. http://jsfiddle.net/HZSVE/3/
Instead of doing pixel wise scrolling it takes the inner elements of the marquee and, appends the first element to the bottom for scrolling down or inserts the last element to the beginning for scrolling up.
var vmElm = document.getElementById("vmarquee");
var vmBtnDown = document.getElementById("vmdown");
var vmBtnUp = document.getElementById("vmup");
var startTime = 2000;
var scrollTime = 500;
var scrollDown = true;
var paused = false;
vmElm.onmousemove = function() {
paused=true;
};
vmElm.onmouseout = function() {
paused=false;
};
vmBtnDown.onclick = function() {
scrollDown = true;
};
vmBtnUp.onclick = function() {
scrollDown = false;
};
function vmScroll() {
if(!paused) {
var par = vmElm;
var elms = par.getElementsByTagName("div");
var elm;
if(scrollDown) {
elm = elms[0];
par.removeChild(elm);
par.appendChild(elm);
} else {
elm = elms[elms.length - 1];
par.removeChild(elm);
par.insertBefore(elm, elms[0]);
}
}
setTimeout(vmScroll, scrollTime);
}
setTimeout(vmScroll, startTime);