

function prepareScroll(id) {
	var obj = $(id);
	//alert(obj.scrollTop);
	var parent = obj.parentNode;
	obj.currente = null;
	Event.observe(obj, 'mousewheel', scrollmw.bind(obj)); 
	Event.observe(obj, 'DOMMouseScroll', scrollmw.bind(obj)); 
	obj.scrdir = obj.offsetHeight > obj.offsetWidth ? 'vert' : 'horiz';
}

function scrollmw(event) {
	if (event.wheelDelta) { /* IE/Opera. */
                delta = event.wheelDelta/120;
                /** In Opera 9, delta differs in sign as compared to IE.*/
                if (window.opera)
                        delta = -delta;
        } else if (event.detail) { /** Mozilla case. */
                /** In Mozilla, sign of delta is different than in IE.
                 * Also, delta is multiple of 3.*/
                delta = -event.detail/3;
        }
        //alert(delta);
        if (delta < 0) scrollNext(this);
        if (delta > 0) scrollPrev(this);
	Event.stop(event)	
}

function firstChild(obj) {
	for (var i=0; i<obj.childNodes.length; i++) {
		var t = obj.childNodes[i];
		if (t.nodeType == 1) {
			return t;
		}
	}
}

function nextSibling(obj) {
	next = obj.nextSibling; while (next && next.nodeType != 1 ) { next = next.nextSibling; }
	return next;
}
function prevSibling(obj) {
	prev = obj.previousSibling; while (prev && prev.nodeType != 1) { prev = prev.previousSibling; }
	return prev;
}

function scrollNext(obj) {
	obj = $(obj);
	if (!obj.currente) { 
		obj.currente = obj;
		obj.currente = firstChild(obj.currente);
		obj.currente = firstChild(obj.currente);
		obj.padx = obj.currente.offsetLeft;
		obj.pady = obj.currente.offsetTop;
	}
	//alert(obj.currente);
	next = nextSibling(obj.currente);
	//alert(next);
	if (next) {
		scrollTo(obj, next, scrollNext);
	}
}

function scrollPrev(obj) {
	obj = $(obj);
	if (!obj.currente) { 
		obj.currente = obj;
		obj.currente = firstChild(obj.currente);
		obj.currente = firstChild(obj.currente);
		obj.padx = obj.currente.offsetLeft;
		obj.pady = obj.currente.offsetTop;
	}
	//alert(obj.currente);
	prev = prevSibling(obj.currente);
	//alert(next);
	if (prev) {
		scrollTo(obj, prev, scrollPrev);
	}
}

function scrollVisible(id) {
	//alert('loop_item_'+id);
	var obj = $('vScrollee2');
	var item = $('loop_item_'+id)
	if (!item) { return; }
	var func = function(o) { o.doscroll=0; }
	if (!obj.currente) { 
		obj.currente = obj;
		obj.currente = firstChild(obj.currente);
		obj.currente = firstChild(obj.currente);
		obj.padx = obj.currente.offsetLeft;
		obj.pady = obj.currente.offsetTop;
	}
	scrollTo(obj, item, func);	
}

function scrollTo(obj, item, func) {

	if (obj.offsetHeight - item.offsetTop > obj.parentNode.offsetHeight + 10 ||
			obj.offsetWidth - item.offsetLeft > obj.parentNode.offsetWidth  ) {
		if (obj.scrdir == 'horiz') {
			new Effect.Move (obj, { x: -(item.offsetLeft - obj.padx), y: 0, mode: 'absolute', duration: 0.2, afterFinish: function(o) {if (obj.doscroll) {func(obj);}} });
		} else {
			new Effect.Move (obj, { x: 0, y: -(item.offsetTop - obj.pady), mode: 'absolute', duration: 0.2, afterFinish: function(o) {if (obj.doscroll) {func(obj);}} });
		}
		obj.currente = item;
		obj.maxscroll = 0;
	} else {
		if (obj.offsetHeight < obj.parentNode.offsetHeight) return;
		if (obj.scrdir == 'horiz') {
			new Effect.Move (obj, { x: (obj.parentNode.offsetWidth - obj.offsetWidth), 
			y: 0, mode: 'absolute', duration: 0.2});
		} else {
			new Effect.Move (obj, { x: 0, 
			y: (obj.parentNode.offsetHeight - obj.offsetHeight), mode: 'absolute', duration: 0.2});	
		}
		if (!obj.maxscroll || func!=scrollNext) { obj.currente = item; obj.maxscroll = 1;}
	}

}

function scrollNext1(obj) {
	obj = $(obj);
	if (!obj.currente) { 
		obj.currente = obj;
		obj.currente = firstChild(obj.currente);
		obj.currente = firstChild(obj.currente);
		obj.padx = obj.currente.offsetLeft;
		obj.pady = obj.currente.offsetTop;
	}
	//alert(obj.currente);
	next = nextSibling(obj.currente);
	//alert(next);
	if (next) {
		if (obj.offsetHeight - next.offsetTop > obj.parentNode.offsetHeight + 10 ||
				obj.offsetWidth - next.offsetLeft > obj.parentNode.offsetWidth  ) {
			if (obj.scrdir == 'horiz') {
				new Effect.Move (obj, { x: -(next.offsetLeft - obj.padx), y: 0, mode: 'absolute', duration: 0.2, afterFinish: function(o) {if (obj.doscroll) {scrollNext(obj);}} });
			} else {
				new Effect.Move (obj, { x: 0, y: -(next.offsetTop - obj.pady), mode: 'absolute', duration: 0.2, afterFinish: function(o) {if (obj.doscroll) {scrollNext(obj);}} });
			}
			obj.currente = next;
		} else {
			if (obj.offsetHeight < obj.parentNode.offsetHeight) return;
			if (obj.scrdir == 'horiz') {
				new Effect.Move (obj, { x: (obj.parentNode.offsetWidth - obj.offsetWidth), 
				y: 0, mode: 'absolute', duration: 0.2});
			} else {
				new Effect.Move (obj, { x: 0, 
				y: (obj.parentNode.offsetHeight - obj.offsetHeight), mode: 'absolute', duration: 0.2});	
			}
			//if (!obj.maxscroll) { obj.currente = next; obj.maxscroll = 1;}
		}
	}
	//alert(next.offsetTop);
	//if (obj.doscroll) { scrollNext(obj); }

}

function scrollPrev1(obj) {
	obj = $(obj);
	if (!obj.currente) { 
		obj.currente = obj;
		obj.currente = firstChild(obj.currente);
		obj.currente = firstChild(obj.currente);
		obj.padx = obj.currente.offsetLeft;
		obj.pady = obj.currente.offsetTop;
	}
	//alert(obj.currente);
	prev = prevSibling(obj.currente);
	//alert(next);
	if (prev) {
		//obj.style.marginTop = "-"+(prev.offsetTop - obj.pady)+"px";
		//obj.style.marginLeft = "-"+(prev.offsetLeft - obj.padx)+"px";
		if (obj.scrdir == 'horiz') {
			new Effect.Move (obj, { x: -(prev.offsetLeft - obj.padx), y: 0, mode: 'absolute', duration: 0.2, afterFinish: function(o) {if (obj.doscroll) {scrollPrev(obj);}} });
		} else {
			new Effect.Move (obj, { x: 0, y: -(prev.offsetTop - obj.pady), mode: 'absolute', duration: 0.2, afterFinish: function(o) {if (obj.doscroll) {scrollPrev(obj);}} });
		}
		obj.currente = prev;
		//obj.maxscroll = 0;
	}
	//alert(next.offsetTop);
	
}

sfHover = function() {
  var sfEls = document.getElementById("menu").getElementsByTagName("LI");
  for(var i=0; i<sfEls.length; i++) {
    sfEls[i].onmouseover = function() {
      this.className += " over";
    }
    sfEls[i].onmouseout = function() {
      this.className = this.className.replace("over", "");
    }
  }
}

if (!window.onloadlist) { window.onloadlist = "";}
window.onloadlist += "sfHover();";
window.onloadlist += "prepareScroll('vScrollee1');";
window.onloadlist += "prepareScroll('vScrollee2');";
//window.onloadlist += "prepareScroll('vScrollee3');";
window.onloadlist += "prepareScroll('vScrollee4');";
//window.onloadlist += "prepareScroll('vScrollee5');";
//window.onloadlist += "prepareScroll('vScrollee6');";
//window.onloadlist += "prepareScroll('vScrollee7');";
window.onloadlist += "prepareScroll('vScrollee8');";
//window.onloadlist += "prepareScroll('vScrollee9');";
window.onloadlist += "enableTooltips();";

window.onload = function() { eval(window.onloadlist); }









