var objDrag;
var sliderItemWidth = 56;  /* if you change this value, make sure you do the same in the CSS */
var sliderItemCount;
var curDateBox = 10;

function timelineConstr() {
	objDrag = new Object();
	objDrag.zIndex = 0;

	// initiate dates
	for (sliderItemCount=0; ge('si_'+sliderItemCount) != null; sliderItemCount++) {
		// do nothing
	}
	sliderItemCount--;
	ge('si_' + curDateBox).style.fontWeight = 'bold';

	//attach drag listeners
	attachDragListeners();

}
function attachDragListeners() {

	var objSlider = ge('slider');

	if (window.addEventListener) { // moz
		objSlider.addEventListener('mousedown', dragStart, false);
	}
	else { // ie
		objSlider.attachEvent('onmousedown', dragStart);
	}
}
function dragStart(e) {
	e[e_moz] ? objDrag.elNode = e[e_moz] : objDrag.elNode = e[e_ie];

	// cursor position
	var cur_x;

	if (e[e_moz]) {
		cur_x = e.clientX + window.scrollX;
	}	
	else {
		cur_x = e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
	}

	// save start position
	objDrag.cursorStartX = cur_x;
	objDrag.elStartLeft = parseInt(objDrag.elNode.style.left, 10);
	isNaN(objDrag.elStartLeft) ? objDrag.elStartLeft = 600 : '';

	// update zindex
	objDrag.elNode.style.zIndex = ++objDrag.zIndex;


	// add event listeners
	if (e[e_moz]) {
		document.addEventListener('mousemove', dragBegin, true);
		document.addEventListener('mouseup', dragStop, true);
		e.preventDefault();
	}
	else {
		document.attachEvent('onmousemove', dragBegin);
		document.attachEvent('onmouseup', dragStop);
		e.cancelBubble = true;
		e.returnValue = false;
	}
}
function dragBegin(e) {
	var x;
	var si;

	if (e[e_moz]) {
		x = e.clientX + window.scrollX;
	}
	else {
		x = e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
	}	

	// check if its out of limits
	if ((objDrag.elStartLeft + x - objDrag.cursorStartX) < 0) {
		objDrag.elNode.style.left = "0px";
	}
	else if ((objDrag.elStartLeft + x - objDrag.cursorStartX) > 610) {
		objDrag.elNode.style.left = "610px";
	}
	else {
		objDrag.elNode.style.left = (objDrag.elStartLeft + x - objDrag.cursorStartX) + "px";
	}
	si = Math.floor(objDrag.elNode.style.left.replace(/px/,'') / sliderItemWidth);
	if (si != curDateBox) {
		// change look of year
		ge('si_'+curDateBox).style.fontWeight = 'normal';
		ge('si_'+si).style.fontWeight = 'bold';

		// change content
		ge('sic_'+curDateBox).style.display = 'none';
		ge('sic_'+si).style.display = '';

		curDateBox = si;
	}
	

	if (e[e_moz]) { 
		e.preventDefault();
	}
	else {
		e.cancelBubble = true;
		e.returnValue = false;
	}
}

function dragStop(e) {
	if (e[e_moz]) {
		document.removeEventListener('mousemove', dragBegin, true);
		document.removeEventListener('mouseup', dragStop, true);
	}
	else {
		document.detachEvent('onmousemove', dragBegin);
		document.detachEvent('onmouseup', dragStop);
	}
}