


function photo_loop () {
	if (!photo_loop.element) photo_loop.element = document.getElementById( photo_loop.element_id );
	if (!photo_loop.element) return;

	photo_loop.slide -= photo_loop.distance;
	if ( Math.abs( photo_loop.slide ) > photo_loop.width ) photo_loop.slide = 0;
	photo_loop.element.style.backgroundPosition = photo_loop.slide +'px 50%';
}
photo_loop.element_id = 'panorama';
photo_loop.slide = 0;
photo_loop.width = 2323;
photo_loop.timer = null;
photo_loop.element = null;
photo_loop.interval = 1000/30;	//20
photo_loop.distance = 1;

photo_loop.start = function (e) {
	if (e) e.stopPropagation();
	if (photo_loop.timer) return;
	photo_loop.timer = setInterval(photo_loop, parseInt( photo_loop.interval ));
};
photo_loop.stop  = function (e) {
	if (e) e.stopPropagation();
	if (!photo_loop.timer) return;
	clearInterval(photo_loop.timer);
	photo_loop.timer = null;
};
photo_loop.start_timeout = function (e) {
	if (e) e.stopPropagation();
	photo_loop.start_timer && clearTimeout(photo_loop.start_timer);
	photo_loop.start_timer =    setTimeout(photo_loop.start, 100);
};
photo_loop.stop_timeout = function (e) {
	if (e) e.stopPropagation();
	photo_loop.start_timer && clearTimeout(photo_loop.start_timer);
	photo_loop.start_timer =    setTimeout(photo_loop.stop, 100);
};
photo_loop.speedup = function (e) {
	if (e) e.stopPropagation();
	if (photo_loop.distance <= 10) photo_loop.distance ++;
	(photo_loop.distance) ? photo_loop.start() : photo_loop.stop();
};
photo_loop.speeddown = function (e) {
	if (e) e.preventDefault();
	if (photo_loop.distance > -10) photo_loop.distance --;
	(photo_loop.distance) ? photo_loop.start() : photo_loop.stop();
}
photo_loop.start();

// jquery ?
if (window.$) $(function () {
	$(document).mouseover(photo_loop.start_timeout)
	           .mouseout (photo_loop.stop_timeout);
	$('#'+ photo_loop.element_id)
		.mouseover(photo_loop.stop)
		.mouseout (photo_loop.start)
		.click    (photo_loop.speedup)
		.bind('contextmenu', photo_loop.speeddown);
});

