/*Start of Dropdown menu used for video categories + shows //uses prototype */
var DDMenuController = function() {
  var that = this;
  var index = null;
  var mouseOverList = false;
  var list = null;

  function setIndex(n){ index=n; }
  function showList(){
    if($$('ul.cnnShowList')[index].hasClassName('showList') && (mouseOverList==false)) {
	   document.body.onmousedown = null;
	   $$('ul.cnnShowList')[index].removeClassName('showList');      //hide the list
       //if the parent of this list has a scroll in it, hide it as well
       try{ $$('ul.cnnShowList')[index].next('.cnnCtrls_scroll').style.display = "none"; } catch(e){}
       list.style.display="block";                                     //enable the button
    }
    else {
  	   list.style.display="none";  					                 //disable the button
       try{ $$('ul.cnnShowList')[index].next('.cnnCtrls_scroll').style.display = "block"; popularVids.controls(); } catch(e){}
	   $$('ul.cnnShowList')[index].addClassName('showList');         //show the list
	   document.body.onmousedown = showList;
    }
  }
  function setMouseOvers(){
    Event.observe($$('ul.cnnShowList')[index],'mouseover',function() { mouseOverList = true; });
    Event.observe($$('ul.cnnShowList')[index],'mouseout',function() { mouseOverList = false; });
    try{
      Event.observe($$('.cnnCtrls_scroll')[0],'mouseover',function(){ mouseOverList = true; });
      Event.observe($$('.cnnCtrls_scroll')[0],'mouseout',function(){ mouseOverList = false; });
    }catch(e){}
  }
  this.init = function(el, i) {
    setIndex(i);
    setMouseOvers();
    list = el;
    Event.observe(el, 'click', function(event){ showList(); Event.stop(event); } );
    return this;
  };
}
var DDmenu = function() {
  var ddMenus = [];
  this.init = function(){
    $$('.cnnvideo_showSelect .cnnCtrls_down a.toggleList').each(function(value,index) {
      ddMenus[index] = new DDMenuController().init(value,index);
    });
    return ddMenus;
  };
  return this;
}

try{ var ddMenus = new DDmenu().init(); } catch(e){}

var popularVidsController = function(){
  var slider = null;
  var loaded = 0;
  var processing = 0;
  var scrollInterval = null;
  function setProcessing(n){ processing = n; }
  function setLoaded(n){ loaded=n; }

    //wheel code is from http://www.aldenta.com/examples/script.aculo.us/slider-mouse-wheel.html
  function wheel(event){
    var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) {
		  delta = event.wheelDelta/120;
			if (window.opera) delta = -delta;
		} else if (event.detail) {
	    delta = -event.detail/3;
		}
  	if(delta<0){ scrollUp();  }
    else if(delta>0){ scrollDown();  }
	if (event.preventDefault) event.preventDefault();
    	event.returnValue = false;
  }
  function scrollUp(){ slider.setValue( slider.value+.1 ); }
  function scrollDown(){ slider.setValue( slider.value-.1 ); }
  function stopScroll(){
    if(scrollInterval != null) {
      clearInterval(scrollInterval);
      scrollInterval=null;
    }
  }
    function scrollVertical(value, element, slider) {
        element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
    }
	  // mouse wheel code is from http://adomas.org/javascript-mouse-wheel/
  this.controls = function(){
    if(loaded==0) {
        setLoaded(1);
        try{
			slider = new Control.Slider('cnnCtrls_progHandle', 'cnnCtrls_progbar', {
				axis: 'vertical',
				onSlide: function(v){ try{ scrollVertical(v, $('cnnShowList'), slider); } catch(err){} },
				onChange: function(v){ try{ scrollVertical(v, $('cnnShowList'), slider); } catch(err){} }
			});
        }catch(e){ }
        // mozilla
	  Event.observe('cnnShowList', 'DOMMouseScroll', wheel);
      Event.observe('cnnCtrls_prog', 'DOMMouseScroll', wheel)
	    // IE/Opera
      try{ Event.stopObserving('cnnShowList', 'mousewheel', wheel); }catch(e){}
      try{ Event.stopObserving('cnnCtrls_prog', 'mousewheel', wheel); }catch(e){}
	  Event.observe('cnnShowList', 'mousewheel', wheel);
      Event.observe('cnnCtrls_prog', 'mousewheel', wheel);
    }
  };
  this.init = function() {
    if( ( loaded == 0 ) && ( processing == 0 ) ) {
      setProcessing(1);
      Event.observe($('cnnCtrls_up'), 'mousedown', function(event){ scrollInterval = setInterval(scrollDown, 50 ); Event.stop(event); } );
      Event.observe($('cnnCtrls_down'), 'mousedown', function(event){ scrollInterval = setInterval(scrollUp, 50 ); Event.stop(event); } );
      Event.observe($('cnnCtrls_up'), 'mouseup', function(event){ stopScroll(); Event.stop(event); } );
      Event.observe($('cnnCtrls_down'), 'mouseup', function(event){ stopScroll(); Event.stop(event); } );
      setProcessing(0);
     }
     return this;
  };
  return this;
}
try{ var popularVids = new popularVidsController().init(); }catch(e){}
