function rand(iA, iZ)
{
	var iA = parseInt(iA);
	var iZ = parseInt(iZ);
	return Math.floor(Math.random() * (iZ - iA + 1)) + iA;  
}

var Panorama = {

	setEvents: 0,
	dragged: 0,
	
	turnsCount: 16,
	step: 33,

	bottle: null,
	self: null,

	diff: 0,
	
	mouseXStart: 0,
	posXStart: 0,
	
	randInt: null,
	randMoveInt: null,
	randStartPos: 0,
	randEndPos: 0,
	randGoRight: 0,

	move: function(e)
	{
		Panorama.dragged = 1;
		
		if (Panorama.randInt) {
			clearInterval(Panorama.randInt);
		}
		
		var e = e || window.event;
		var temp = 0; 
		
		if (e.pageX) {
			temp = e.pageX;
		} else if (e.clientX) {
			temp = window.event.clientX;
		}

		if (!Panorama.posXStart) {
			Panorama.posXStart = Math.abs(parseInt(Panorama.self.style.left));
		}
		if (!Panorama.mouseXStart) {
			Panorama.mouseXStart = temp;	
		}

		if (temp) {
			if (temp < Panorama.mouseXStart) {
				var diff = Math.abs(Panorama.mouseXStart - temp);
				var diffPos = Panorama.posXStart + diff;
				if (diffPos < Panorama.diff) {
					Panorama.self.style.left = '-' + diffPos + 'px';
					Panorama.rotateBottle();
				}
			} else {
				var diff = Math.abs(Panorama.mouseXStart - temp);
				var diffPos = Panorama.posXStart - diff;
				if (diffPos > 0) {
					Panorama.self.style.left = '-' + diffPos + 'px';
					Panorama.rotateBottle();
				}
			}
		}
	},
		
	slide: function()
	{
		if (Panorama.dragged) {
			clearInterval(Panorama.randMoveInt);
			return;
		}
		
		var curPos = Math.abs(parseInt(Panorama.self.style.left));
		
		if (Panorama.randGoRight) {
			var step = Math.floor((curPos - Panorama.randEndPos) * 0.92);
			if ((curPos + step) > Panorama.randEndPos) {
				Panorama.self.style.left = '-' + step + 'px';
			} else if (curPos <= Panorama.randEndPos) {
				Panorama.self.style.left = '-' + Panorama.randEndPos + 'px';
				clearInterval(Panorama.randMoveInt);
				Panorama.randGoRight = 0;
				Panorama.randStartPos = 0;
				Panorama.randEndPos = Panorama.diff;
				
				Panorama.randMoveInt = setInterval(Panorama.slide, 10);
			}
			Panorama.rotateBottle();
		} 
		
		if (!Panorama.randGoRight) {
			var step = Math.ceil((Panorama.randEndPos - curPos) * 0.09);
			if ((curPos + step) < Panorama.randEndPos) {
				Panorama.self.style.left = '-' + (curPos + step) + 'px';
			} else {
				Panorama.self.style.left = '-' + Panorama.randEndPos + 'px';
				clearInterval(Panorama.randMoveInt);
				Panorama.randGoRight = 1;
				
				if (!Panorama.setEvents) {
					Panorama.setUpEvents();
				}
			}
			Panorama.rotateBottle();
		} 
	},

	setUpEvents: function()
	{
		Panorama.dragableArea.style.cursor = 'e-resize';

		addEvent(Panorama.dragableArea, 'mousedown', Panorama.drag);
		addEvent(document, 'mouseup', Panorama.dragOff);
		
		Panorama.setEvents = 1;
	},

	randomize: function()
	{
		Panorama.randStartPos = Math.abs(parseInt(Panorama.self.style.left));
		Panorama.randEndPos = 0;

		if (Panorama.randStartPos > Panorama.randEndPos) {
			Panorama.randGoRight = 1;
		}

		Panorama.randMoveInt = setInterval(Panorama.slide, 10);
	},

	dragOn: function(e)
	{
		var e = e || window.event;
		Panorama.move(e);
		
		addEvent(Panorama.dragableArea, 'mouseup', Panorama.dragOff);
		stopEvent(e);
	},
	
	drag: function(e)
	{
		var e = e || window.event;
		
		addEvent(Panorama.dragableArea, 'mousemove', Panorama.dragOn);
		addEvent(Panorama.dragableArea, 'mouseup', Panorama.dragOff);	
		stopEvent(e);
	},
	
	dragOff: function(e)
	{
		var e = e || window.event;

		Panorama.mouseXStart = 0;
		Panorama.posXStart = 0;

		removeEvent(Panorama.dragableArea, 'mousemove', Panorama.dragOn);
		removeEvent(Panorama.dragableArea, 'mouseup', Panorama.dragOff);
	},
		
	delayedInit: function()
	{
		Panorama.self.style.left = '0px';
		Panorama.randStartPos = 0;
		Panorama.randEndPos = Panorama.diff;
		Panorama.randMoveInt = setInterval(Panorama.slide, 10);
		
		Panorama.randInt = setInterval(Panorama.randomize, 8000);
	},
		
	init: function()
	{
		Panorama.self = $$('panorama');
		Panorama.dragableArea = $$('panorama-inner-wrap');
		Panorama.bottle = $$('bottle');

		var t1 = Panorama.self.clientWidth;
		var t2 = getWindowWidth();
		if (t1 > t2) {
			Panorama.diff = (t1 - t2);
			setTimeout(Panorama.delayedInit, 2600);
		}
	},
	
	rotateBottle: function(startPos)
	{
		//var oneRotateWidth = Math.floor(Panorama.diff / Panorama.step) + 1;
		var temp = Math.floor(Math.abs(parseInt($$('panorama').style.left) / Panorama.step));
		var turn = (Panorama.turnsCount - Math.floor(temp % Panorama.turnsCount)) + 1;

		if (turn > Panorama.turnsCount) {
			turn = 1;
		}
		if (turn < 1) {
			turn = Panorama.turnsCount;
		}
		
		Panorama.bottle.className = 'bottle-p' + turn;
	}
}

