if ( sci.isHere )
{
	sci.game = new Object;
	sci.game.loop = function()
	{
		// Check cat movement
		sci.game.cat.move();
		sci.game.fish.move();
		sci.game.mice.move();
		sci.game.cheese.move();
		sci.game.scoreboard.setScore();
	}
	sci.game.keydown = function(e)
	{
		if ( e.keyCode == 37 && sci.game.interval  ) { sci.game.cat.direction = 'l'; return false;}
		if ( e.keyCode == 39 && sci.game.interval  ) { sci.game.cat.direction = 'r'; return false; }
		if ( e.keyCode == 32 && sci.game.interval ) { return false; }
	}
	sci.game.keyup = function(e)
	{
		if ( e.keyCode == 37 || e.keyCode == 39 ) { sci.game.cat.direction = ''; }
		if ( e.keyCode == 32 && sci.game.interval ) { sci.game.fish.fire() }
	}
	sci.game.overlap = function( a, b )
	{
		return( ( ( a.offsetLeft + 5 ) < ( b.offsetLeft + b.offsetWidth - 5 ) ) &&
				( ( b.offsetLeft + 5 ) < ( a.offsetLeft + a.offsetWidth - 5 ) ) &&
				( ( a.offsetTop + 5 )  < ( b.offsetTop + b.offsetHeight - 5 ) ) &&
				( ( b.offsetTop + 5 ) < ( a.offsetTop + a.offsetHeight - 5 ) ) );
	}
	sci.game.stop = function()
	{
		clearInterval( sci.game.interval );
		sci.game.interval = false;
		if ( confirm( 'Game Over! Play Again?' ) )
		{
			window.location = window.location + '';
        }
	}
	sci.game.newLevel = function( )
	{
	    if ( sci.game.interval ) { clearInterval( sci.game.interval ); }
		sci.game.interval = false;
	    sci.game.placeMice()
		sci.game.mice.direction = 'r';
		sci.game.mice.speed = 5 + ( Math.floor( sci.game.level / 5 ) );
		sci.game.cheese.maxcheese = 5 + ( Math.floor( sci.game.level / 3 ) );
		sci.game.mice.firechance = 0.005 + ( 0.001 * sci.game.level );
		if ( sci.game.level > 1 )
		{
			alert( 'Level ' + sci.game.level  + ' ' + ( sci.game.level - 1 ) * 100 + ' point bonus!' );
		}
		sci.game.interval = setInterval( 'sci.game.loop()', 100 );
	}
	sci.game.placeMice = function()
	{
		for ( var y = 0; y < 4; y++ )
		{
			for ( var x = 0; x < 5; x++ )
			{
				var mouse = document.createElement( 'DIV' );
				mouse.className = 'mouse';
				mouse.style.top = 10 + ( y * 60 ) + 'px';
				mouse.style.left = 10 + ( x * 92 ) + 'px';
				sci.game.mousespace.appendChild( mouse );
				sci.game.mice[sci.game.mice.length] = mouse;
			}
		}	
	}
	sci.game.create = function()
	{	
	    addEvent( document.getElementById( 'startbutton' ), 'click', function() {
		   this.parentNode.removeChild( this );
		   sci.game.newLevel();
	    } );
		sci.game.level = 1;
		sci.game.gamespace = document.getElementById( 'gamespace' );
		sci.game.catspace = document.getElementById( 'catspace' );
		sci.game.fishspace = document.getElementById( 'fishspace' );
		sci.game.mousespace = document.getElementById( 'mousespace' );
		sci.game.cheesespace = document.getElementById( 'cheesespace' );
		sci.game.scoreboard = document.getElementById( 'scoreboard' );
		sci.game.scoreboard.scorearea = sci.game.scoreboard.getElementsByTagName('SPAN')[0];
		sci.game.scoreboard.score = 0;
		sci.game.scoreboard.setScore = function()
		{
			this.scorearea.innerHTML = this.score;
		}
		sci.game.cheese = new Object;
		sci.game.cat = document.getElementById( 'cat' );
		sci.game.cat.direction = '';
		sci.game.cat.speed = 10;
		sci.game.cat.move = function()
		{
			d = this.direction;
			if ( ! d ) { return }
			var m = sci.game.cat.speed;
			var b = 0;
			if ( d == 'l' ) { m = -m; b = -104; }
			if ( d == 'l' && this.offsetLeft <= 10 ) { m = 0 }
			if ( d == 'r' && this.offsetLeft >= 490 ) { m = 0 }
			this.style.left = ( this.offsetLeft + m ) + 'px';
			this.style.backgroundPosition = b + 'px 0px'; 
		}
		sci.game.fish = document.getElementById( 'fish' );
		sci.game.fish.move = function()
		{
			if ( this.offsetLeft < 0 ) { return }
			if ( this.offsetTop <= 10 ) 
			{
				this.style.left = '-30px';
			}
			this.style.top = ( this.offsetTop - 15 ) + 'px';
		}
		sci.game.fish.fire = function()
		{
			if ( this.offsetLeft > 0 ) { return }
			this.style.left = ( sci.game.cat.offsetLeft + 40 ) + 'px';
			this.style.top = '485px';
		}
		sci.game.mice = new Array;
		sci.game.mice.move = function()
		{
			var d = sci.game.mice.direction;
            var change = false;
			var mice = 0;
			var m = sci.game.mice.speed;
			if ( d == 'l' ) { m = -sci.game.mice.speed }
			for ( var i = 0; i < sci.game.mice.length; i++ )
			{
				var mouse = sci.game.mice[i];
				if ( mouse != null ) 
				{
					mouse.style.left = ( mouse.offsetLeft + m ) + 'px';
					if ( d == 'l' && mouse.offsetLeft <= 10 ) { change = true }
					if ( d == 'r' && mouse.offsetLeft >= 508 ) { change = true }
					if ( sci.game.overlap( mouse, sci.game.fish ) ) 
					{ 
						mouse.parentNode.removeChild( mouse );
						sci.game.mice[i] = null;
						sci.game.fish.style.left = '-30px';
						sci.game.scoreboard.score += 10;
					}
					else
					{
						mice++;
					}
					if ( sci.game.overlap( mouse, sci.game.cat ) )
					{
						sci.game.stop();
					}
					if ( Math.random() < sci.game.mice.firechance 
					&& sci.game.cheese.pieces.length < sci.game.cheese.maxcheese )
					{
						sci.game.cheese.fire( mouse );
					}
					
				}
			}
			if ( ! mice )
			{
				sci.game.scoreboard.score += ( sci.game.level * 100 );
				sci.game.level++;
				sci.game.newLevel();
			}
			else if ( change )
			{
				for ( var i = 0; i < sci.game.mice.length; i++ )
				{
					var mouse = sci.game.mice[i];
					if ( mouse == null ) { continue }
					mouse.style.top = ( mouse.offsetTop + 10 ) + 'px';
					if ( d == 'l' ) { mouse.style.backgroundPosition = '0px 0px' }
					if ( d == 'r' ) { mouse.style.backgroundPosition = '-82px 0px' }
				}
				sci.game.mice.direction = d == 'l' ? 'r' : 'l';
			}
		}

		sci.game.cheese.pieces = new Array;
		sci.game.cheese.speed = 7;
		sci.game.cheese.maxcheese = 5;
		sci.game.cheese.fire = function( mouse )
		{
			var ch = document.createElement( 'DIV' );
			ch.className = 'cheese';
			sci.game.cheesespace.appendChild( ch );
			ch.style.top = ( mouse.offsetTop + 50 ) + 'px';
			ch.style.left = ( mouse.offsetLeft + 23 ) + 'px'; 
			sci.game.cheese.pieces[sci.game.cheese.pieces.length] = ch;
		}
		sci.game.cheese.move = function()
		{
			var newCheese = new Array;
			for ( var i = 0; i < sci.game.cheese.pieces.length; i++ )
			{
				var ch = sci.game.cheese.pieces[i];
				if ( ch.offsetTop <= 530 )
				{
					ch.style.top = ( ch.offsetTop + sci.game.cheese.speed ) + 'px';
					if ( sci.game.overlap( ch, sci.game.cat ) )
					{
						sci.game.stop();
					}
					newCheese[newCheese.length] = ch;
				}
				else
				{
					ch.parentNode.removeChild( ch );
				}
			}
			sci.game.cheese.pieces = newCheese;
		}
	}
   	
	addEvent( window, 'load', sci.game.create );
	addEvent( document, 'keydown', sci.game.keydown );
	addEvent( document, 'keyup', sci.game.keyup );
	
}