﻿var ErraticObject = new Class ({
	Implements: [Options, Events], 
	options: {
		containerPool: '',
		background: '',
		specificContainer: '',
		objClass: '', 
		fadeDuration: 1000,
		waitDuration: 1000
	},
	initialize: function (options) {
		this.setOptions(options);
		this.container = this.getContainer();
		this.object = this.createErraticObject();
		//console.log(this.object);
		this.initTweens();
		this.animateObject();
	},
	getContainer: function() {
		var container;
		if (this.options.specificContainer) {
			container = this.options.specificContainer;
		} else {
			container = this.options.containerPool[Math.floor(Math.random()*this.options.containerPool.length)];
		}
		return container;
	},
	toElement: function(){
		return this.object;
	},
	createErraticObject: function () {
		//console.log(this.options.specificContainer.getStyle('background-image'));
		var obj = new Element('span', {
			'class':this.options.objClass, 
			styles:{
				background:this.options.specificContainer.getStyle('background-image')	
			}
		});
		obj.inject(this.container);
		
		var objChild = new Element('span', {
			'class':this.options.objClass+'Child'
		})
		objChild.inject(obj);
		
		return obj;
	},
	initTweens:function () {
		this.objectTween = new Fx.Tween(this.object, {
			link:'chain', 
			duration:this.options.fadeDuration
		}).set('opacity',0)
	}, 
	animateObject: function () {
		//console.log(this.object);
		this.objectTween.start('opacity',1)
						.wait(this.options.waitDuration)
						.start('opacity',0)
						.chain(function(){
							this.animateObject();
						}.bind(this));
	}
});








/* ----------------------------------------------------------- JACKPOT ----------------------------------------------------------- */

/*
finds the highest Stake that is lower= 20Eur (eurMax) 
*/
function findHighestStake(maxStakeEur, ratio){
	var posVal = new Array(1,2,3,4,5);
	var factor = 1;
	var currPos = 0;
	var highFactor;
	var highPosition;
	
	if(posVal[0]*ratio*factor >= maxStakeEur){
		while(posVal[currPos]*ratio*factor >= maxStakeEur){
			if(currPos == 0){
				currPos = posVal.length-1;
				factor = factor/10;
			}else{
				currPos--;
			}
			highFactor = factor;
			highPosition = currPos;
		}
	}
	else{
		while(posVal[currPos]*ratio*factor <= maxStakeEur){
			highFactor = factor;
			highPosition = currPos;
			if(currPos == posVal.length-1){
				currPos = 0;
				factor = factor*10;
			}else{
				currPos += 1;
			}
		}
	}
	return posVal[highPosition]*highFactor;
}

	/*  
		berechnet den Wert eines Supergames
		kleinster Wert im Schema ... 1, 2, 5, 10, 20 ,50,...
		der in der jeweiligen Whrung mindestens EUR 8 wert ist
	*/
	 
function supergameValue(sgValueEur,ratio,highestStake){
	var currPos = 0;
	var factor = 1;
	var posSgVal = new Array(1,2,5);
	
	while(posSgVal[currPos]*ratio*factor <= sgValueEur){
		if(currPos == posSgVal.length-1){
			currPos = 0;
			factor = factor*10;
		}else{
			currPos++;
		}
	}
	if(highestStake <= posSgVal[currPos]*factor){
		return new Array(posSgVal[currPos]*factor,'sg');
	}else{
		return new Array((posSgVal[currPos]*factor),'mg')
	}
}