var durationHide = 0.3;
var durationShow = 0.3;
var durationSlide = 0.3;

var openNav = -1;

var hideSubnav = function(i){
    new Effect.BlindUp('subnav_'+i, {duration: durationHide, queue: {position: 'end', scope:('subnav_'+i)}});
}
var showSubnav = function(i){
    //$('subnav_' + i).show();
   // var func = new Function('checkHide('+i+');');
   
	new Effect.BlindDown('subnav_'+i, {duration: durationShow, queue: {position:'end', scope:('subnav_'+i)}});
	
}

var checkHide = function(i){
	if(i != currentNav){
		hideSubnav(i);
	}
}



var slidePointerTo = function(i, target){
        var leftA = getLeftOffset(pointerObject, 4);
        var leftB = getLeftOffset(target, 3);
        var actualLeft = parseInt(pointerObject.style.left);
        var destB = leftB + (target.offsetWidth / 2)
        var zeroA = leftA - actualLeft + (pointerObject.offsetWidth / 2)
        var dest = destB-zeroA
        var func = new Function('showSubnav('+i+');');
        new Effect.Morph('javascript_pointer', {style:('left:'+dest+'px;'), afterFinish: func, queue:{position:'end',scope:'slider'}, duration: durationSlide});
}

var blindDownSpeed = 0.5;
var currentNav = 0;
var destinationNav = 0;
var pointerTimer = -1;
var pointerInterval = 100;
var pointerTarget;
var pointerObject = -1;
var pointerLeft = 0;
var pointerMaxSpeed = 80;
var pointerCurrentSpeed = 0;
var pointerAccel = 8;
var getLeftOffset = function(e, depth){
    
    if(e && depth > 0){
        return e.offsetLeft + getLeftOffset(e.offsetParent, depth -1);
      } else {
return 0;
}
}
var pointerFunc = function(){
    if(currentNav != destinationNav){
    currentNav = -1;
        var leftA = getLeftOffset(pointerObject, 4);
        var leftB = getLeftOffset(pointerTarget, 3);
        var destA = leftA + (pointerObject.offsetWidth / 2)
        var destB = leftB + (pointerTarget.offsetWidth / 2)
        var diff = destA - destB;
        var dist = Math.abs(diff);
        var dir = dist / diff;
        if (diff * pointerCurrentSpeed < 0){
            pointerCurrentSpeed = 0;
        }
        pointerCurrentSpeed += pointerAccel * dir;
        var currentSpeed = Math.abs(pointerCurrentSpeed);
        if(currentSpeed > pointerMaxSpeed){
            pointerCurrentSpeed = pointerMaxSpeed * dir;
            currentSpeed = Math.abs(pointerCurrentSpeed);
        }
        if(dist < currentSpeed) {
            pointerLeft -= diff;
            currentNav = destinationNav;
            clearInterval(pointerTimer);
            showSubnav(currentNav);
            pointerCurrentSpeed = 0;
            pointerTimer = -1;
        }   else {
            pointerLeft -= pointerCurrentSpeed;
        }
        pointerObject.style.left = pointerLeft + 'px';
    }
}




var pointerTo = function(i, target){
    if(pointerObject == -1){
        pointerObject = $('javascript_pointer');
    }
    if(currentNav != i){
    	clearQueue('slider');
      slidePointerTo(i, target);
      hideSubnav(currentNav);
        //var queue = Effect.Queues.get('subnav');
        //var size = queue.effects.size();
        //queue.each(function(e){e.cancel();});
    
       // showSubnav(i);
        currentNav = i;
        
        
 		//alert(queue.effects.size());
   }
   }    
   
   var clearQueue = function(name){
       Effect.Queues.get(name).each(function(e){e.cancel();});
   } 	
        
       // alert(size);
//		queue.each(function(e) { alert(e.valueOf()); });

/*
        currentNav = -1;
        destinationNav = i;
        //showSubnav(destinationNav);
        pointerTarget = target;

        if(pointerTimer == -1){
           pointerTimer=setInterval(pointerFunc, pointerInterval);
           }
           */
 