//
// SLOTMACHINE V1.0
// (c) 2006 by tricos media - www.tricos.com
// All rights reserved.
// No unauthorized copying and/or usage permitted!
//

var slotWidth;
var slotHeight=375;
var singleHeight=75;
var singleViewHeight=90;
var singleCount=Math.round(slotHeight/singleHeight);
var posArray=new Array();
var yOffset;
var animStep;
var s1pos;
var s2pos;
var s3pos;
var slotTimer;
var s1interval;
var s2interval;
var s3interval;
var stopAt1;
var stopAt2;
var stopAt3;
var stopAt1Pos;
var stopAt2Pos;
var stopAt3Pos;
var wheelStatus=new Array();
var randArray=new Array();
var randCounter;
var running=0;
var winPoints1;
var winPoints2;
var winPoints3;
var winPoints4;
var winPoints5;

function setPos(slot1, slot2, slot3)
{
	$('slot1').style.backgroundPosition='0px '+posArray[slot1]+'px';
	$('slot2').style.backgroundPosition='0px '+posArray[slot2]+'px';
	$('slot3').style.backgroundPosition='0px '+posArray[slot3]+'px';
}

function getSlotPos(w)
{
	s1p=$(w).style.backgroundPosition;
	s1res=s1p.split(" ");
	return parseInt(s1res[1])-yOffset;
}

function diff(a, b)
{
	if(a > b) return a-b;
	return b-a;
}

function animate()
{
	randCounter++;
	s1pos=s1pos+Math.round(randArray[randCounter]*s1interval);
	if(s1pos > slotHeight) s1pos=0;
	
	randCounter++;
	s2pos=s2pos+Math.round(randArray[randCounter]*s2interval);
	if(s2pos > slotHeight) s2pos=0;
	
	randCounter++;
	s3pos=s3pos+Math.round(randArray[randCounter]*s3interval);
	if(s3pos > slotHeight) s3pos=0;
	
	$('slot1').style.backgroundPosition='0px '+s1pos+'px';
	$('slot2').style.backgroundPosition='0px '+s2pos+'px';
	$('slot3').style.backgroundPosition='0px '+s3pos+'px';
	
	animStep++;
	
	// Slow one wheel
	if(animStep == 200) {
		randCounter++;
		var wheel=Math.round(randArray[randCounter]*3);
		if(wheel==1) {
			s1interval=10;
		} else if(wheel==2) {
			s2interval=10;
		} else if(wheel==3) {
			s3interval=10;
		}
	}
	
	
	// Slow second wheel
	if(animStep == 400) {
		
		// Slow all wheels
		s1interval=s2interval-5;
		s2interval=s2interval-5;
		s3interval=s2interval-5;
	
	
		randCounter++;
		var wheel=Math.round(randArray[randCounter]*2);
		if(wheelStatus[0]==5) {
			if(wheel==1) {
				s2interval=5;
			} else if(wheel==2) {
				s3interval=5;
			}
		}
		
		if(wheelStatus[1]==5) {
			if(wheel==1) {
				s1interval=5;
			} else if(wheel==2) {
				s3interval=5;
			}
		}
		
		if(wheelStatus[2]==5) {
			if(wheel==1) {
				s1interval=5;
			} else if(wheel==2) {
				s2interval=5;
			}
		}
	}
	
	if(s1interval < 0) s1interval=0;
	if(s2interval < 0) s2interval=0;
	if(s3interval < 0) s3interval=0;
	
	// Get current offset
	if(animStep>500)
	{
		var sp1=Math.abs(getSlotPos('slot1'));
		var sp2=getSlotPos('slot2');
		var sp3=getSlotPos('slot3');
		
		//s1interval
		
		if(diff(sp1, stopAt1Pos) > s1interval*(600-animStep)) {
			s1interval=0;
			$('slot1').style.backgroundPosition='0px '+stopAt1Pos+'px';
		}
		
		if(diff(sp2, stopAt2Pos) > s2interval*(600-animStep)) {
			s2interval=0;
			$('slot2').style.backgroundPosition='0px '+stopAt2Pos+'px';
		}
		
		if(diff(sp3, stopAt3Pos) > s3interval*(600-animStep)) {
			s3interval=0;
			$('slot3').style.backgroundPosition='0px '+stopAt3Pos+'px';
		}
		
		// s1interval
	}
	
	if(animStep == 600) { 
		window.clearInterval(slotTimer);
//		$('sm_start_bt').disabled=false;
		running=0;
		btOut();
		
		if(finishFunction != null) {
			eval('finishFunction();');
		}
		
		// Won?
		if(stopAt1 == stopAt2 && stopAt2 == stopAt3) {
			if(winFunction != null) {
				if(stopAt1 == 1) {
					var points=winPoints1;
				} else if(stopAt1 == 2) {
					var points=winPoints2;
				} else if(stopAt1 == 3) {
					var points=winPoints3;
				} else if(stopAt1 == 4) {
					var points=winPoints4;
				} else if(stopAt1 == 5) {
					var points=winPoints5;
				}
				eval('winFunction(stopAt1, stopAt2, stopAt3, points);');
			}
		}
	}
}

function startSlotmachine()
{
	if(running==1) return;
	running=1;
	$('smClickBt').src='slotmachine/skins/01/images/button_deact.gif';
	//$('sm_start_bt').disabled=true;
	randCounter=0;
	
	for(i=0; i<6000; i++)
	{
		randArray[randArray.length]=Math.random();
	}
	
	var url = 'http://'+location.hostname+'/points/slotmachine/AjaxSlotmachine.php';
	var pars = 'rnd=' + Math.random();
	var myAjax = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: startSlotmachine2 }); 
}

function startSlotmachine2(obj)
{
	response=obj.responseXML.getElementsByTagName('response');
	stopAt1=response[0].getElementsByTagName('s1')[0].childNodes[0].nodeValue;
	stopAt2=response[0].getElementsByTagName('s2')[0].childNodes[0].nodeValue;
	stopAt3=response[0].getElementsByTagName('s3')[0].childNodes[0].nodeValue;
	winPoints1=response[0].getElementsByTagName('w1')[0].childNodes[0].nodeValue;
	winPoints2=response[0].getElementsByTagName('w2')[0].childNodes[0].nodeValue;
	winPoints3=response[0].getElementsByTagName('w3')[0].childNodes[0].nodeValue;
	winPoints4=response[0].getElementsByTagName('w4')[0].childNodes[0].nodeValue;
	winPoints5=response[0].getElementsByTagName('w5')[0].childNodes[0].nodeValue;
	
	stopAt1Pos=(stopAt1*singleHeight)-singleHeight+yOffset;
	stopAt2Pos=(stopAt2*singleHeight)-singleHeight+yOffset;
	stopAt3Pos=(stopAt3*singleHeight)-singleHeight+yOffset;

	// Random stuff here
	animStep=0;
	s1pos=getSlotPos('slot1');
	s2pos=getSlotPos('slot2');
	s3pos=getSlotPos('slot3');
	
	
	s1interval=20;
	s2interval=20;
	s3interval=20;
	wheelStatus[0]=s1interval;
	wheelStatus[1]=s2interval;
	wheelStatus[2]=s3interval;
	
	slotTimer = window.setInterval("animate()", 5);

}

function btHover()
{
	if(running!=1) $('smClickBt').src='slotmachine/skins/01/images/button_over.gif';
}

function btOut()
{
	if(running!=1)  $('smClickBt').src='slotmachine/skins/01/images/button.gif'; 
}


function registerWinFunction(f)
{
	winFunction=f;
}

function registerFinishFunction(f)
{
	finishFunction=f;
}


function initSlotmachine()
{
	running=0;
	slotWidth=parseInt($('slot1').style.width);
	yOffset=Math.round((singleViewHeight-singleHeight)/2);
	
	for(i=0; i<=singleCount; i++)
	{
		posArray[posArray.length]=((i*singleHeight)-singleHeight)+yOffset;
	}

	//Event.observe($('sm_start_bt'), 'click', startSlotmachine);
	Event.observe($('smClickBt'), 'mouseover', btHover);
	Event.observe($('smClickBt'), 'mouseout', btOut);
	Event.observe($('smClickBt'), 'click', function() { if (running!=1) startSlotmachine(); });
	
	var xp1=Math.round(Math.random()*posArray.length-1);
	var xp2=Math.round(Math.random()*posArray.length-1);
	var xp3=Math.round(Math.random()*posArray.length-1);
	if(xp1 > posArray.length-1) xp1=posArray.length-1;
	if(xp2 > posArray.length-1) xp2=posArray.length-1;
	if(xp3 > posArray.length-1) xp3=posArray.length-1;
	
	/*
	alert('1' +posArray[xp1]);
	alert('2' +posArray[xp1]);
	alert('3' +posArray[xp1]);
	*/
	
	$('slot1').style.backgroundPosition='0px '+posArray[xp1]+'px';
	$('slot2').style.backgroundPosition='0px '+posArray[xp2]+'px';
	$('slot3').style.backgroundPosition='0px '+posArray[xp3]+'px';
	
	if($('slot1').style.backgroundPosition == '') {
		$('slot1').style.backgroundPosition='0px 0px';
	}
	
	if($('slot2').style.backgroundPosition == '') {
		$('slot2').style.backgroundPosition='0px 0px';
	}
	
	if($('slot3').style.backgroundPosition == '') {
		$('slot3').style.backgroundPosition='0px 0px';
	}
	
	
	new Effect.Appear($('sm_main'));
}



Event.observe(window, 'load', initSlotmachine);



