
	var n_step = 10;
	var n_viewport = 450;
	var n_right_max;
	var s_direction = '';

	function initViewport() {

		n_right_max = n_graph_width;
//		n_right_max = n_graph_width - document.getElementById('spending_graph').offsetWidth;
//		document.getElementById('spending_graph').style.right = n_right_max + 'px';
	}

	function scrollGraph(s_direction_in) {

		if (document.getElementById('spending_graph')) {

			var o_graph = document.getElementById('spending_graph').style;

			if (s_direction_in != s_direction)
				s_direction = s_direction_in;

			if (o_graph) {

				if (s_direction == 'right') {
					var n_right = parseInt(o_graph.right) + n_step;
					o_graph.right = (n_right > n_right_max ? n_right_max : n_right) + 'px';
				}

				if (s_direction == 'left') {
					var n_right = parseInt(o_graph.right) - n_step;
					o_graph.right = (n_right < n_viewport ? n_viewport : n_right) + 'px';
				}

				if (s_direction != '')
					setTimeout('scrollGraph(s_direction);', 5);

			}

		}

	}

/*
	function getStyleObject(objectId) {
	    // cross-browser function to get an object's style object given its
	    if(document.getElementById && document.getElementById(objectId)) {
		// W3C DOM
		return document.getElementById(objectId).style;
	    } else if (document.all && document.all(objectId)) {
		// MSIE 4 DOM
		return document.all(objectId).style;
	    } else if (document.layers && document.layers[objectId]) {
		// NN 4 DOM.. note: this won't find nested layers
		return document.layers[objectId];
	    } else {
		return false;
	    }
	}
*/

	function showDetail(evt, id) {
		var mouse_x = (evt.pageX ? evt.pageX : evt.clientX) + 5;
		var mouse_y = (evt.pageY ? evt.pageY : evt.clientY) - document.getElementById('spending_' + id).offsetHeight;
		if (!self.pageYOffset) mouse_y = mouse_y + document.documentElement.scrollTop;

		var detail = document.getElementById('spending_' + id).style;
		detail.left = mouse_x + 'px';
		detail.top = mouse_y + 'px';
		detail.visibility = 'visible';
	}

	function hideDetail(evt, id) {
		document.getElementById('spending_' + id).style.visibility = 'hidden';
	}


	function showArticle(evt, id) {
		var mouse_x = (evt.pageX ? evt.pageX : evt.clientX) + 5;
		var mouse_y = (evt.pageY ? evt.pageY : evt.clientY) - document.getElementById('article_' + id).offsetHeight;

		var detail = document.getElementById('article_' + id).style;
		detail.left = mouse_x + 'px';
		detail.top = mouse_y + 'px';
		detail.visibility = 'visible';

	}

	function hideArticle(evt, id) {
		document.getElementById('article_' + id).style.visibility = 'hidden';
	}


	function handle(delta) {

		scrollGraph();

//		alert(s);
		//document.getElementById('delta').innerHTML = document.getElementById('delta').innerHTML + s;
	}

	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)
			n_step = 25;
			if (delta < 0)
				scrollGraph('left');
			else
				scrollGraph('right');

			scrollGraph('');
			n_step = 10;

//			handle(delta);
	        if (event.preventDefault)
	                event.preventDefault();
	        event.returnValue = false;
	}

	/* Initialization code. */
	if (window.addEventListener)
		window.addEventListener('DOMMouseScroll', wheel, false);
	window.onmousewheel = document.onmousewheel = wheel;

