﻿var mouseOffset = null;
var iMouseDown  = false;
var lMouseState = false;
var dragObject  = null;

// Demo 0 variables
var DragDrops   = [];
var curTarget   = null;
var lastTarget  = null;
var dragHelper  = null;
var tempDiv     = null;
var rootParent  = null;
var rootSibling = null;
var nImg        = new Image();

var stepIncrement = -150;	// The number of pixels that each step moves the window.
var stepIncrement2 = 150;
var stepIncrementImg = -100;	// The number of pixels that each step moves the window.
var stepIncrementImg2 = 100;
var stepDelay = 0;	// The number of milliseconds between steps.
var stepDelayImg = 10;	// The number of milliseconds between steps.
var limit = 6 * 1000;	// After 6 seconds the scroll is killed.

var running = false;
var running2 = false;
var runningImg = false;
var runningImg2 = false;
var ready = true;
var _endPos = 422;



function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
		}
	}
	return curleft;
}

/* Recursive scrolling method. Steps through the complete scroll. */
	
function scrollStep(to, dest, down, element) {
    if(element == 'pb-productsliderhandleimage') {
        alert(to + " " + dest+ " " +stepIncrement);
    }
	if(!running || (down && to <= dest) || (!down && to >= dest)) {
		stepIncrement = -150;
		document.getElementById(element).style.left = dest + "px";
		running = false;
		return;
	}

	if((down && to <= (dest - (2 * stepIncrement))) ||
	   (!down && to >= (dest - (2 * stepIncrement)))) {
		stepIncrement = stepIncrement * .55;
	}
    document.getElementById(element).style.left = to + "px";
	
	// Assign the returned function to a public method.
	
	nextStep = callNext(+to + stepIncrement, dest, down, element);

	window.setTimeout(nextStep, stepDelay);
}

function scrollStep2(to, dest, down, element) {

	if(!running2 || (down && to >= dest) || (!down && to <= dest)) {
		stepIncrement2 = 150;
		document.getElementById(element).style.left = dest + "px";
		running2 = false;
		return;
	}

	if((down && to >= (dest - (2 * stepIncrement2))) ||
	   (!down && to <= (dest - (2 * stepIncrement2)))) {
		stepIncrement2 = stepIncrement2 * .55;
	}
    
    
    document.getElementById(element).style.left = to + "px";
	
	// Assign the returned function to a public method.
	
	nextStep2 = callNext2(+to + stepIncrement2, dest, down, element);

	window.setTimeout(nextStep2, stepDelay);
}

/* Create a closure so that scrollStep can be accessed by window.setTimeout(). */

function callNext(to, dest, down, element) {			   
	return function() { scrollStep(to, dest, down, element); };
}

function callNext2(to, dest, down, element) {

	return function() { scrollStep2(to, dest, down, element); };
}



function scrollStepImg(to, dest, down, element) {
	if(!runningImg || (down && to <= dest) || (!down && to >= dest)) {
		stepIncrementImg = -100;
		document.getElementById(element).style.left = dest + "px";
		runningImg = false;
		return;
	}

	if((down && to <= (dest - (2 * stepIncrementImg))) ||
	   (!down && to >= (dest - (2 * stepIncrementImg)))) {
		stepIncrementImg = stepIncrementImg * .55;
	}
    
    document.getElementById(element).style.left = to + "px";
	
	// Assign the returned function to a public method.
	
	nextStep = callNextImg(+to + stepIncrementImg, dest, down, element);

	window.setTimeout(nextStep, stepDelayImg);
}

function scrollStepImg2(to, dest, down, element) {

	if(!runningImg2 || (down && to >= dest) || (!down && to <= dest)) {
		stepIncrementImg2 = 100;
		document.getElementById(element).style.left = dest + "px";
		runningImg2 = false;
		return;
	}

	if((down && to >= (dest - (2 * stepIncrementImg2))) ||
	   (!down && to <= (dest - (2 * stepIncrementImg2)))) {
		stepIncrementImg2 = stepIncrementImg2 * .55;
	}
    
    
    document.getElementById(element).style.left = to + "px";
	
	// Assign the returned function to a public method.
	
	nextStep2 = callNextImg2(+to + stepIncrementImg2, dest, down, element);

	window.setTimeout(nextStep2, stepDelayImg);
}

/* Create a closure so that scrollStep can be accessed by window.setTimeout(). */

function callNextImg(to, dest, down, element) {			   
	return function() { scrollStepImg(to, dest, down, element); };
}

function callNextImg2(to, dest, down, element) {

	return function() { scrollStepImg2(to, dest, down, element); };
}






Number.prototype.NaN0=function(){return isNaN(this)?0:this;}

function CreateDragContainer(){
	var cDrag        = DragDrops.length;
	DragDrops[cDrag] = [];
	for(var i=0; i<arguments.length; i++){
		var cObj = arguments[i];
		DragDrops[cDrag].push(cObj);
		cObj.setAttribute('DropObj', cDrag);
		for(var j=0; j<cObj.childNodes.length; j++){

			// Firefox puts in lots of #text nodes...skip these
			if(cObj.childNodes[j].nodeName=='#text') continue;

			cObj.childNodes[j].setAttribute('DragObj', cDrag);
		}
	}
}

function getPosition(e){
	var left = 0;
	var top  = 0;
	while (e.offsetParent){
		left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
		top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
		e     = e.offsetParent;
	}


	left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
	top  += e.offsetTop  + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);

	return {x:left, y:top};

}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

function writeHistory(object, message){
	if(!object || !object.parentNode || !object.parentNode.getAttribute) return;
	var historyDiv = object.parentNode.getAttribute('history');
	if(historyDiv){
		historyDiv = document.getElementById(historyDiv);
		historyDiv.appendChild(document.createTextNode(object.id+': '+message));
		historyDiv.appendChild(document.createElement('BR'));

		historyDiv.scrollTop += 50;
	}
}

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function mouseMove(ev){
try{
	ev         = ev || window.event;

	/*
	We are setting target to whatever item the mouse is currently on

	Firefox uses event.target here, MSIE uses event.srcElement
	*/
	var target   = ev.target || ev.srcElement;
	var mousePos = mouseCoords(ev);

    left = parseInt(document.getElementById('eventsDisplay').style.left.replace('px', ''));
    width = parseInt(document.getElementById('eventsDisplay').style.width.replace('px', ''));

	if(dragObject){
		//dragObject.style.position = 'absolute';
		sliderPos = mousePos.x  - 92 - findPos(document.getElementById('pb-productslidertrack'));
		if(sliderPos >= 0 && sliderPos <= _endPos) {
			oldLeft = parseInt(dragObject.style.left.replace('px', ''));			
            var move = sliderPos /_endPos * (width - 618);
            document.getElementById('eventsDisplay').style.left = "-" + move+"px";
			dragObject.style.left     = sliderPos + "px";
		}
		else if(sliderPos < 0) {
			dragObject.style.left     = 0 + "px";
			document.getElementById('eventsDisplay').style.left = "0px";
		}
		else if(sliderPos > _endPos) {
			dragObject.style.left     = _endPos + "px";
			document.getElementById('eventsDisplay').style.left = "-" + (width -618) + "px";
		}
	}

	// track the current mouse state so we can compare against it next time
	lMouseState = iMouseDown;

	// this prevents items on the page from being highlighted while dragging
	if(curTarget || dragObject) return false;
}catch(err){}
}

function mouseUp(ev){
	dragObject = null;
	iMouseDown = false;
}

function mouseDown(ev){
	ev         = ev || window.event;
	var target = ev.target || ev.srcElement;

	iMouseDown = true;
	if(target.onmousedown || target.getAttribute('DragObj')){
		return false;
	}
}

function makeDraggable(item){
	if(!item) return;
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}

function makeClickable(item){
	if(!item) return;
	item.onmousedown = function(ev){
		document.getElementById('ClickImage').value = this.name;
	}
}

function addDropTarget(item, target){
	item.setAttribute('droptarget', target);
}

document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup   = mouseUp;


window.onload = function(){
	makeDraggable(document.getElementById('pb-productsliderhandleimage'));
   // _endPos = findPos(document.getElementById('rightArrow')) - findPos(document.getElementById('pb-productslidertrack'))-134;
}



var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)
var tempX = 0
var tempY = 0

//var ready = true;
//function scroll() {
//    if(ready)
//    {
//        ready = false;
//        window.setTimeout("buttonReady()", 800);
//        left = parseInt(document.getElementById('eventsDisplay').style.left.replace('px', ''));
//        running = true;
//        scrollStep(left+stepIncrement, left-200, true, 'eventsDisplay');
//    }
//    
//}

//function scrollRight() {
//    if(ready)
//    {
//        ready = false;
//        window.setTimeout("buttonReady()", 800);
//        left = parseInt(document.getElementById('eventsDisplay').style.left.replace('px', ''));
//        if(left < 0) {
//            running2 = true;
//            scrollStep2(left+stepIncrement2, left+200, true, 'eventsDisplay');
//        }
//        else {
//            running2 = true;
//            scrollStep2(left+stepIncrement2, 0, true, 'eventsDisplay');
//        }
//    }
//}

function buttonReady() {
    ready = true;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
		}
	}
	return curleft;
}

function getMouseXY(e) {
    if (IE) { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.body.scrollLeft
    } else {  // grab the x-y pos.s if browser is NS
        tempX = e.pageX
    }  
    if (tempX < 0) {tempX = 0}
    tempX = tempX - findPos(document.getElementById('pb-productslidertrack')) - 92;
    left = parseInt(document.getElementById('eventsDisplay').style.left.replace('px', ''));

    if(tempX > 0 && tempX < _endPos) {	
        oldLeft = parseInt(document.getElementById('pb-productsliderhandleimage').style.left.replace('px', ''));
        document.getElementById('pb-productsliderhandleimage').style.left = tempX +"px";

        if(oldLeft < tempX) {
            running = true;
            width = parseInt(document.getElementById('eventsDisplay').style.width.replace('px', ''));
            var move = (tempX - oldLeft)/_endPos * (width - 618);
            if(left-move < 618 - width) {
                scrollStep(left+stepIncrement, 618-width, true, 'eventsDisplay');
            }
            else {
                scrollStep(left+stepIncrement, left-move, true, 'eventsDisplay');
            }
        }
        else {
            if(left < 0) {
                running2 = true;
                width = parseInt(document.getElementById('eventsDisplay').style.width.replace('px', ''));
                var move = (oldLeft - tempX)/_endPos * (width - 618);
                if(left+move > 0) {
                    scrollStep2(stepIncrement2, 0, true, 'eventsDisplay');
                }
                else {
                    scrollStep2(left+stepIncrement2, left+move, true, 'eventsDisplay');
                }
            }
            else {
                running = true;
                scrollStep2(stepIncrement2, 0, true, 'eventsDisplay');
            }
        }
    }
    else if(tempX <= 0) {
        document.getElementById('pb-productsliderhandleimage').style.left = "0px";
        running2 = true;
        scrollStep2(left+stepIncrement2, 0, true, 'eventsDisplay');
    }
    else if(tempX > _endPos) {
        document.getElementById('pb-productsliderhandleimage').style.left = _endPos+"px";
        running = true;
        width = parseInt(document.getElementById('eventsDisplay').style.width.replace('px', ''));
        width = 618 - width;
        scrollStep(left+stepIncrement, width, true, 'eventsDisplay');

    }
}


function moveRight() {


try
{

    if(ready &&  $get("home3promos"))
    {
        ready = false;
        window.setTimeout("buttonReady()", 800);

        eventLeft = parseInt(document.getElementById('eventsDisplay').style.left.replace('px', ''));
        eventWidth = parseInt(document.getElementById('eventsDisplay').style.width.replace('px', ''));
        sliderLeft = parseInt(document.getElementById('pb-productsliderhandleimage').style.left.replace('px', ''));
        
        if (eventWidth + eventLeft  < 1236) {
            newLeft = 618 - eventWidth ;
            running = true;
            scrollStep(eventLeft+stepIncrement, newLeft, true, 'eventsDisplay');
            scrollStepImg2(sliderLeft, _endPos, true, 'pb-productsliderhandleimage');
            //document.getElementById('pb-productsliderhandleimage').style.left = _endPos+"px";
        }
        else {
            newLeft = Math.floor(eventLeft/206)*206 - 618;
            running = true;
            scrollStep(eventLeft+stepIncrement, newLeft, true, 'eventsDisplay');
            newSliderLeft = (eventLeft-newLeft)/(eventWidth-618) * _endPos + sliderLeft;
            if(newSliderLeft > _endPos) 
                newSliderLeft = _endPos;
            runningImg2 = true;
            scrollStepImg2(sliderLeft, newSliderLeft, true, 'pb-productsliderhandleimage');
            //document.getElementById('pb-productsliderhandleimage').style.left = newSliderLeft + "px";
        }
    }
}catch(err){}
}

function moveLeft() {
try{
    if(ready)
    {
        ready = false;
        window.setTimeout("buttonReady()", 800);

        eventLeft = parseInt(document.getElementById('eventsDisplay').style.left.replace('px', ''));
        eventWidth = parseInt(document.getElementById('eventsDisplay').style.width.replace('px', ''));
        sliderLeft = parseInt(document.getElementById('pb-productsliderhandleimage').style.left.replace('px', ''));
        if (- eventLeft  < 618) {
            running2 = true;
            scrollStep2(eventLeft+stepIncrement2, 0, true, 'eventsDisplay');
            runningImg = true;
            scrollStepImg(sliderLeft, 0, true, 'pb-productsliderhandleimage');
            //document.getElementById('pb-productsliderhandleimage').style.left = "0px";
        }
        else {
            newLeft = Math.ceil(eventLeft/206)*206 + 618;
            running2 = true;
            scrollStep2(eventLeft+stepIncrement2, newLeft, true, 'eventsDisplay');
            newSliderLeft = sliderLeft - (-eventLeft+newLeft)/(eventWidth-618) * _endPos;
            if(newSliderLeft < 0)
                newSliderLeft = 0;
            runningImg = true;
            scrollStepImg(sliderLeft, newSliderLeft, true, 'pb-productsliderhandleimage');
            //document.getElementById('pb-productsliderhandleimage').style.left = newSliderLeft + "px";
        }
    }
}catch(err){}
}

function resetEventsPos()
{
    document.getElementById('eventsDisplay').style.left = "0px";
    document.getElementById('pb-productsliderhandleimage').style.left = "0px";
}
function resetClass(objDiv)
{

 $("#categoricalNav a").removeClass('categoricalNavItemActive');
 $("#"+objDiv+" a").addClass('categoricalNavItemActive');


}

//moved from index.aspx by ming on 11 oct
$(document).ready(function()
{
	if (navigator.appName == "Microsoft Internet Explorer") 
	{
		$("#pb-productsliderhandleimage").css("filter", "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src=\'images/draggableKnob.png\')");
	}
	else
	{
		$("#pb-productsliderhandleimage").css("background", "transparent url(images/draggableKnob.png) no-repeat scroll 10%");
	}
 });
 
