if ( sci.isHere )
{
	sci.game = new Object;
    sci.game.running = false;
	sci.game.setup = function()
	{	
	    sci.game.endgame = document.getElementById( 'endgame' );
		sci.game.endgame.start = function()
		{
			sci.addClass( this, 'hidden' );
			sci.game.start();
		};
		addEvent( sci.game.endgame, 'click', sci.game.endgame.start );
		var r = new RegExp( '(c[0-9][0-9])' );
		sci.game.cards = sci.getElementsByClass( 'card' );
		for ( var i = 0; i < sci.game.cards.length; i++ )
		{
			var card = sci.game.cards[i];
			var res = card.className.match( r );
			card.game = sci.game;
			card.flipped = true
			card.value = res[1];
			card.flip = function() {
				if ( ! this.game.running )
				{
					this.game.start();
				}
				else
				{
					if ( this.game.fliplist.length < 2 && ! this.flipped )
					{
						this.flipped = true;
						sci.swapClass( this, 'cd', this.value );
						if ( this.game.fliplist.length && this.game.fliplist[0].value == this.value )
						{
							this.game.fliplist.length = 0;
							this.game.endCheck();
						}
						else
						{
							this.game.fliplist[this.game.fliplist.length] = this;
							if ( this.game.fliplist.length == 2 )
							{
								setTimeout( sci.game.clear, 1000 ); 
							}
						}
					}
				}
			}
			card.back = function()
			{
				this.flipped = false;
				sci.swapClass( this, this.value, 'cb' );
			}
			addEvent( card, 'click', function() { this.flip() } );		
		}
		sci.game.message = document.getElementById( 'message' );
	}
	sci.game.clear = function()
	{
		sci.game.fliplist[0].back();
		sci.game.fliplist[1].back();
		sci.game.fliplist.length = 0;
	}
	sci.game.endCheck = function()
	{
		var r = false;
		for ( var i = 0; i < sci.game.cards.length; i++ )
		{
			if ( ! sci.game.cards[i].flipped ) { r = true; break; }
		}
		sci.game.running = r;
		if ( ! sci.game.running )
		{
			var endtime = new Date();
			var time = Math.floor( ( endtime.getTime() - sci.game.starttime.getTime() ) / 1000 );
			var dtime = '';
			if ( time > 60 )
			{
				var min = Math.floor( time / 60 );
				time = time - ( min * 60 );
				if ( min > 60 )
				{
					var hour = Math.floor( min / 60 );
					min = min - ( hour * 60 );
					dtime = hour + " hour" + ( ( hour > 1 || hour == 0 )? 's ' : ' ' );
				}
				dtime = dtime + min + " minute" + ( ( min > 1 || min == 0 )  ? 's ' : ' ' ); 
			}
			dtime = dtime + time + " second" + ( ( time > 1 || time == 0 ) ? 's' : '' );
			document.getElementById( 'time' ).innerHTML = dtime;
			sci.removeClass( sci.game.endgame, 'hidden' );
		}
	}
	sci.game.start = function()
	{
		sci.game.running = true;
		sci.removeClass( sci.game.message, 'hidden' );
		for ( var i = 0; i < sci.game.cards.length; i++ )
		{
			sci.game.cards[i].back();
		}
		for ( var i = 0; i < 100; i++ )
		{
			var pa = Math.floor( Math.random() * sci.game.cards.length );
			var pb = Math.floor( Math.random() * sci.game.cards.length );
			var va = sci.game.cards[pa].value;
			sci.game.cards[pa].value = sci.game.cards[pb].value;
			sci.game.cards[pb].value = va;
		}
		sci.game.fliplist = [];
		sci.addClass( sci.game.message, 'hidden' );
		sci.game.starttime = new Date();
	}
	addEvent( window, 'load', sci.game.setup );
}


