function addEvent( obj, type, fn ) {
  if ( obj.attachEvent ) {
	obj['e'+type+fn] = fn;
	obj[type+fn] = function(){obj['e'+type+fn]( window.event );}
	obj.attachEvent( 'on'+type, obj[type+fn] );
  } else
	obj.addEventListener( type, fn, false );
}
function removeEvent( obj, type, fn ) {
  if ( obj.detachEvent ) {
	obj.detachEvent( 'on'+type, obj[type+fn] );
	obj[type+fn] = null;
  } else
	obj.removeEventListener( type, fn, false );
}
			

var PanelController = function () {
	var panel;
	var controlbar;
	var controls = [];
	var currentPanel = 1;
	var scrollPanel = true;
	var scrollRate;

	return {
		init: function (panel, control, rate) {
			panel = document.getElementById(panel);
			controlbar = document.getElementById(control);
			scrollRate = rate;
			
			controls = controlbar.getElementsByTagName('span');
			
			for (var i=1; i<=controls.length; i++) {
				var head = document.getElementById('head_'+i);
				var foot = document.getElementById('foot_'+i);
				var list = document.getElementById('list_'+i);
				
				addEvent(head, 'mouseover', PanelController.lockRotate);
				addEvent(foot, 'mouseover', PanelController.lockRotate);
				// addEvent(list, 'click', PanelController.lockRotate);
				addEvent(head, 'mouseout', PanelController.unlockRotate);
				addEvent(foot, 'mouseout', PanelController.unlockRotate);
				// addEvent(list, 'mouseout', PanelController.unlockRotate);
			}
			
			setTimeout('PanelController.rotate()', scrollRate);
		},
		switchToPanel: function(x) {
			currentPanel = x;
			
			for (var i=1; i<=controls.length; i++) {
				var head = document.getElementById('head_'+i);
				var foot = document.getElementById('foot_'+i);
				
				if ( i == currentPanel ) {
					head.className = '';
					foot.className = '';
				} else {
					head.className = 'hiddenPanel';
					foot.className = 'hiddenPanel';
				}	
			}
			return false;
		},
		getPanelCount: function () {
			return controls.length;
		},
		next: function () {
			if ( currentPanel + 1 <= PanelController.getPanelCount() )
				PanelController.switchToPanel(currentPanel+1);
			else
				PanelController.switchToPanel(1);
				
			return false;
		},
		rotate: function () {
			if ( scrollPanel ) {
				this.next();
			}
			setTimeout('PanelController.rotate()', scrollRate);
		},
		lockRotate: function () {
			scrollPanel = false;
		},
		unlockRotate: function () {
			scrollPanel = true;
		}
	};
}();

addEvent(window, 'load', function () {
	PanelController.init('panels', 'controls', 5000);
});
