function _id(id){
    try{ return document.getElementById(id); }catch(e){ return undefined; }
}
function getElementPosition(el){
    var x=0; var y=0;
    while(el.offsetParent){
        x+=el.offsetLeft; y+=el.offsetTop;
        el=el.offsetParent;
    }
    x+=el.offsetLeft; y+=el.offsetTop;
    return { x:x, y:y };
}
window.compatibilizeEvent=function(e){
    if (e.srcElement && !e.target) {
        e.charCode=(e.type=="keypress")? e.keyCode : 0;
        e.isChar=(e.charCode>0);
        e.eventPhase=2;
        e.preventDefault=e.preventDefault || function(){
            this.returnValue=false;
        };
        e.stopPropagation=e.stopPropagation || function(){
            this.cancelBubble=true;
        };
        if(e.type=="mouseout"){
            e.relatedTarget=e.toElement;
        }else if(e.type=="mouseover"){
            e.relatedTarget=e.fromElement;
        }
        e.target=e.srcElement;
        e.time=(new Date).getTime();
        e.pageX=e.clientX+document.body.scrollLeft;
        e.pageY=e.clientY+document.body.scrollTop;
    }
    return e;
}
window.EventObject=function(){
    if (window.event) {
        return compatibilizeEvent(window.event);
    } else {
        return EventObject.caller.arguments[0];
    }
}
window.addListener=function(o, e, h){
    try{
        o.attachEvent("on"+e, h);
    }catch(a){
        o.addEventListener(e, h, false);
    }
}
window.removeListener=function(o, e, h){
    try{
        o.detachEvent("on"+e, h);
    }catch(a){
        o.removeEventListener(e, h, false);
    }
}
document.addListener=function(e, h){
    addListener(document, e, h);
}
document.removeListener=function(e, h){
    removeListener(document, e, h);
}
_rolando={};
_rolando.intervalo=false;
_rolando.dir=0;
_rolando.vel=20;
_rolando.outerObj=false;
_rolando.innerObj=false;
function rolagem(){
    var visW=_rolando.outerObj.offsetWidth;
    var contW=_rolando.innerObj.offsetWidth;
    var pos=_rolando.innerObj.posAtual;
    // hack para larguras no mozilla
    if(navigator.appName.toLowerCase().indexOf("netscape")>-1){
        contW-=pos;
    }
    var newPos=pos-(_rolando.dir*_rolando.vel);
    var maxPos=-(contW-visW);
    newPos=(newPos>0)? 0 : newPos;
    newPos=(newPos<maxPos)? maxPos : newPos;
    _rolando.innerObj.style.marginLeft=newPos+"px";
    _rolando.innerObj.posAtual=newPos;
}
function rolar(oOb, iOb, dir, vel){
    if(_rolando.intervalo){
        clearInterval(_rolando.intervalo);
        _rolando.intervalo=false;
    }
    if(dir==0 || iOb.offsetWidth < oOb.offsetWidth){
        return;
    }
    vel=vel||20;
    _rolando.dir=dir;
    _rolando.vel=vel;
    _rolando.outerObj=oOb;
    _rolando.innerObj=iOb;
    if(iOb.posAtual===undefined){
        iOb.posAtual=getElementPosition(oOb).x-getElementPosition(iOb).x;
    }
    rolagem();
    window._rolando.intervalo=setInterval(rolagem, 50);
}


var _f=function(){
    var e=EventObject();
    if(e.target.tagName && e.target.getAttribute("rolagem")){
        var att=e.target.getAttribute("rolagem").replace(/ /g, "").split(",");
        var outerObj=document.getElementById(att[0]);
        var innerObj=document.getElementById(att[1]);
        var vel=att[3];
        switch(att[2]){
            case "esq":
                dir=-1;
                break;
            case "dir":
                dir=1;
                break;
            default:
                dir=0;
        }
        e.preventDefault();
        //e.stopPropagation();
        rolar(outerObj, innerObj, dir, vel);
    }
}
document.addListener("mousedown", _f);

var _f=function(){
    rolar(null, null, 0);
}
document.addListener("mouseup", _f);