// load sound support
soundManager.url = 'scripts/soundmanager2/';
soundManager.flashVersion = 9;
soundManager.debugMode = false;
soundManager.useConsole = true;
soundManager.consoleOnly = true;
soundManager.waitForWindowLoad = false;
soundManager.allowPolling = true; 
soundManager.nullURL = 'scripts/soundmanager2/null.mp3';
soundManager.defaultOptions.volume = 100;
soundManager.onload = function()
{
	soundManager.createSound('puchiPop','sounds/41860_pop.mp3');
	soundManager.createSound('puchiGong','sounds/13786_gong.mp3');
	soundManager.createSound('puchiDone','sounds/864_final.mp3');	
	soundManager.createSound('puchiFail','sounds/42706_toilet.mp3');
}

var showCredits = function()
{
	$('message').update('<div onclick="$(\'message\').hide();"><h1>おみくじプチ</h1><br />ウォルフ〜WoLF <a href="http://worufu.desu.at/" target="_new">ホームページ</a><br /><br />♪ <a href="http://www.freesound.org/">freesound.org</a><br />使用されたファイル<br /><a href="http://www.freesound.org/samplesViewSingle.php?id=864">864</a>, <a href="http://www.freesound.org/samplesViewSingle.php?id=13786">13786</a>, <a href="http://www.freesound.org/samplesViewSingle.php?id=41860">41860</a>, <a href="http://www.freesound.org/samplesViewSingle.php?id=42706">42706</a><br /><br />⌘ <a href="http://www.schillmania.com/projects/soundmanager2/">flash soundmanager2</a><br /><br />⌘ <a href="http://www.prototypejs.org/">prototype JS</a><span style="float: right; cursor: pointer; margin: 10px;">[x]</span></div>');
	$('message').show();
}

var PuchiGame = Class.create(
{
	// game configuration
	columns: 11,	// number of columns
	rows: 7,		// number of rows
	seconds: 30,	// seconds until game end
	kamis: 7,		// number of gods to find
	
	// game status variables
	puchis: null,
	started: false,
	timer: null,
	secondCount: 0,
	kamiIndices: [],
	
	initialize: function()
	{
		// fill canvas
		$('restart').hide();
		$('message').hide();
		this.puchis = this.columns * this.rows;
		this.printPuchis();
		$('puchiCanvas').update('');
		this.kamiIndices = this.randomKamiIndices();
		var count = 0;
		for(var x = 0; x < this.rows; x++)
		{
			for(var y = 0; y < this.columns; y++)
			{
				var kami = '';
				for(var i = 0; i < this.kamiIndices.length; i++)
				{
					if(this.kamiIndices[i] == count)
						var kami = ' kami';
				}
				$('puchiCanvas').update( $('puchiCanvas').innerHTML + '<div class="puchi'+kami+' puchi'+(Math.floor(Math.random()*3)+1)+'"></div>' );
				count++;
			}
			$('puchiCanvas').update( $('puchiCanvas').innerHTML + '<div style="clear: left;"></div>' );
		}
		
		// add action listeners
		$$('div.puchi').each(
			function(puchi)
			{
				puchi.pop = function()
				{
					if(puchiGame.started)
					{
						if(!this.hasClassName('popped'))
						{
							this.addClassName('popped');
							this.addClassName('popped'+(Math.floor(Math.random()*3)+1))
							var kami = false;
							if(this.hasClassName('kami'))
							{
								this.addClassName('kami'+puchiGame.kamis);
								kami = true;
							}
							puchiGame.popPuchi(this, kami);
						}
					}
					else if(puchiGame.secondCount < 1)
					{
						$('message').update('<h1>出版物の開始</h1>');
						$('message').show();
					}
				};
				puchi.observe('click', function(event) { event.stop(); this.pop(); } );
				puchi.observe('mouseover', function() { if($('berserk').checked) { this.pop(); }; if(!this.hasClassName('popped')) { this.setOpacity(0.5); } });
				puchi.observe('mouseout', function() { this.setOpacity(1); })
			}
		); 
	},
	
	randomKamiIndices: function(o)
	{
		var o = [];
		for(i = 0; i < (this.columns*this.rows); i++)
			o[i] = i;
		for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		var indices = [];
		for(i = 0; i < this.kamis; i++)
			indices[i] = o[i];
		return indices;
	},
	
	countUp: function()
	{
		if(this.secondCount+1 >= this.seconds)
		{
			this.stop();
//			soundManager.stopAll();
			soundManager.play('puchiFail');
			janKenGame = new JanKen('message');
		}
		this.secondCount++;
		this.printPuchis();
	},
	
	printPuchis: function()
	{
		var text = '';
		var seconds = this.seconds;
		if(!this.started && this.secondCount < 1)
			text += '<a href="#" onclick="puchiGame.start(); $(this).hide(); return false;"><span style="text-decoration: blink;">&rarr;</span> 開始 </a> ';
		seconds = this.seconds-this.secondCount;
		if(seconds < 10)
			seconds = '0'+seconds;
		text += '<span id="time">00:'+seconds+'</span> &nbsp; <strong>七福神 '+this.kamis+'</strong>';
		$('count').update(text);
	},
	
	popPuchi: function(puchi, isKami)
	{
		this.puchis -= 1;
		if(isKami)
		{
			this.kamis--
//			soundManager.stopAll();
			soundManager.play('puchiGong');
		}
		else
		{
			soundManager.play('puchiPop');
		}
		if(0 == this.kamis)
		{
//			soundManager.stopAll();
			soundManager.play('puchiDone');
			this.stop();
			$('message').update('<h1>大吉</h1>');
			$('message').show();
			$('restart').update('<br /><br /><br /><br /><a href="index.php" onclick="puchiGame = new PuchiGame(); return false;">試みの新しいゲーム </a>');
			$('restart').show();
		}
		this.printPuchis();
	},
	
	stop: function()
	{
		this.started = false;
		window.clearInterval(this.timer);
	},
	
	start: function()
	{
		$('message').hide();
		this.started = true;
		this.timer = window.setInterval("puchiGame.countUp()", 1000);
	}
});

document.observe('dom:loaded', function () { puchiGame = new PuchiGame(); });

