var viewalltheHandle, viewalltheRoot, viewalltheThumb, viewalltheScroll;
var viewallthumbTravel, viewallratio;

var viewalldistanceFromLeft = 50;
var viewalldistanceFromTop = 240;
var viewallspotToStarDragDistanceFromLeft = 698;
var viewallscrollLength = 360;

//moved to productBrowse.jspx to determine viewallscrollPullBarDistanceFromLeft for area
//var viewallscrollPullBarDistanceFromLeft = 698;
var viewallbottomLimitOfScrollPullBarDistanceFromTop = 505;
/*note: heightOfTheThumb is duplicated in thumb div*/
var viewallheightOfTheThumb = 78;


//moved to productBrowse.jspx to determine viewallscrollPullBarDistanceFromLeft for area
//viewalltheScroll = new ypSimpleScroll("viewallscroll", viewalldistanceFromLeft, viewalldistanceFromTop, viewallspotToStarDragDistanceFromLeft, viewallscrollLength);

function intializeviewall() {

	viewalltheHandle = document.getElementById("viewallhandle");
	viewalltheRoot   = document.getElementById("viewallroot");
	viewalltheThumb  = document.getElementById("viewallthumb");
	//if the thumb is null we don't have a scroll bar and we don't want a 
		// javascript error.
	if ( viewalltheThumb === null ) {
		return;
	}
	
	//if not IE we need to narrow the thumb
	if ( !isIE() ) {
		viewalltheThumb.style.width = "11px";
	}
	
	if (viewalltheRoot.addEventListener)
        /** DOMMouseScroll is for mozilla. */
       viewalltheRoot.addEventListener('DOMMouseScroll', viewallwheel, false);

	viewalltheScroll.load();

	Drag.init(viewalltheHandle, viewalltheRoot);
	Drag.init(viewalltheThumb, null, viewallscrollPullBarDistanceFromLeft, viewallscrollPullBarDistanceFromLeft, viewalldistanceFromTop + 17, viewallbottomLimitOfScrollPullBarDistanceFromTop);

	// the number of pixels the thumb can travel vertically (max - min)
	viewallthumbTravel = viewalltheThumb.maxY - viewalltheThumb.minY;

	// the ratio between scroller movement and thumbMovement
	viewallratio = viewalltheScroll.scrollH / viewallthumbTravel;

	viewalltheThumb.onDrag = function(x, y) {
		viewalltheScroll.jumpTo(null, Math.round((y - viewalltheThumb.minY) * viewallratio));
	}
	
	// Make sure this scroll bar is displayed.
	var tableViewAllScrollBar = document.getElementById("viewAllScrollBar")
	var divViewAllThumb = document.getElementById("viewallthumb")
	
	tableViewAllScrollBar.style.display = "inline";
	divViewAllThumb.style.display = "inline";
}


/*Event Handling follows*/

// indicates whether the scroll bar should be moving currently
var viewallstop = true;
// timer for smooth motion scrolling
var viewallscrollTimer;
// delay between movement to make motion appear smooth
var viewalldelay = 10;



function viewallMouseOverDownArrow() {
	viewallstop = false;
	viewallscrollDown();
}

function viewallMouseOverUpArrow() {
	viewallstop = false;
	viewallscrollUp();
}

function viewallhandleMouseDown(event) {
	viewallstop = false;
	y = event.clientY
	var topOfThumb = parseInt(viewalltheThumb.style.top);
	var bottomOfThumb = topOfThumb + viewallheightOfTheThumb;
	if ( bottomOfThumb < y ) {
		viewallscrollDown(y - viewallheightOfTheThumb);
	} else if (  topOfThumb > y ) { 
		viewallscrollUp(y);
	}
	
}


// stops on mouse up
function viewallhandleMouseUp() {
	viewallclearTimer(viewallscrollTimer);	
}

// stops on mouse out
function viewallhandleMouseOut() {
	viewallclearTimer(viewallscrollTimer);	
}

// moves scroll up until scrollTimer is cleared
function viewallscrollUp(vertical) {
	if ( viewalltheThumb == null ) {
		return;
	}
	x = parseInt(viewalltheThumb.style.top);
	if (viewallstop 
		|| x <= viewalldistanceFromTop + 17
		|| vertical != null && x <= vertical ) {
		return;
	}
	
	x = x - 1;
	viewalltheThumb.onDrag(null, x);
	viewalltheThumb.style.top=x + "px";
	viewallscrollTimer = setTimeout('viewallscrollUp('+ vertical +')', delay);

}

// moves scroll down until scrollTimer is cleared
function viewallscrollDown(vertical) {
	if ( viewalltheThumb == null ) {
		return;
	}
	x = parseInt(viewalltheThumb.style.top);
	if (viewallstop 
		|| x >= viewallbottomLimitOfScrollPullBarDistanceFromTop
		|| vertical != null && x >= vertical ) {
		return;
	}
	
	x = x + 1;
	viewalltheThumb.onDrag(null, x);
	viewalltheThumb.style.top=x + "px";
	viewallscrollTimer = setTimeout('viewallscrollDown('+ vertical +')', delay);
}
	
// clears timer
function viewallclearTimer(timer) {
   	if (timer) clearTimeout(timer);
   	timer = null;
   	viewallstop = true;
}


/* Mouse wheel event handling */

/* wheels down smoothly.
amount is the number of pixels to move down.
*/
function viewallwheelDown(id, amount) {
	var target = document.getElementById(id);
	if ( target == null ) {
		return;
	}
	x = parseInt(target.style.top);
	if (x >= viewallbottomLimitOfScrollPullBarDistanceFromTop || amount == 0) {
		return;
	}
	
	x = x + 1;
	target.onDrag(null, x);
	target.style.top=x + "px";
	amount = amount - 1;
	viewallscrollTimer = setTimeout('wheelDown("'+ id +'", '+amount+')', delay);
}

/* wheels up smoothly
amount is the number of pixels to move up.
*/
function viewallwheelUp(id, amount) {
	var target = document.getElementById(id);
	if ( target == null ) {
		return;
	}
	x = parseInt(target.style.top);
	if (x <= viewalldistanceFromTop || amount == 0) {
		return;
	}
	
	x = x - 1;
	target.onDrag(null, x);
	target.style.top=x + "px";
	amount = amount - 1;
	viewallscrollTimer = setTimeout('wheelUp("'+ id +'", '+amount+')', delay);

}


/** This is high-level function.
 * It must react to delta being more/less than zero.
 */
function viewallhandle(id, delta) {
	    if ( delta < 0 ) {
			viewallwheelDown(id, Math.abs(delta) * 10);
		} else if ( delta > 0 ) {
			viewallwheelUp(id, delta * 10);
		}
}

/** Event handler for mouse wheel event.
 */
function viewallwheel(event){
        var delta = 0;
        if (!event) /* For IE. */
                event = window.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;
        }
        /** If delta is nonzero, handle it.
         * Basically, delta is now positive if wheel was scrolled up,
         * and negative, if wheel was scrolled down.
         */
 
        if (delta)
                viewallhandle("viewallthumb", delta);
                

	/** Prevent default actions caused by mouse wheel.
         * That might be ugly, but we handle scrolls somehow
         * anyway, so don't bother here..
         */
       if (event.preventDefault) {
                event.preventDefault();
		} 
        event.returnValue = false;
}
