window.addEvent('domready', function()
{

	//var game = $('game');
	var container = $('container');
	var listener = $('listener');
	var myDate = new Date();
	
	var mySlide3 = new Fx.Slide('container', {duration: 500} );
	
	//var ajax_url = 'http://localhost/google/ajax.php';
	//var ajax_url = 'http://new.speedtyping.net/google/ajax.php';
	var ajax_url = 'http://www.speedtyping.net/google/ajax.php';
	//var ajax_url = 'http://storage1.speedtyping.net/google/ajax.php';
	//var ajax_url = 'http://mi0ng.x10hosting.com/google/ajax.php';
	//var ajax_url = '/google/ajax.php';
	var ajax = new Ajax(ajax_url, {
		method: 'get',
		onComplete: function() {
			
			//alert('inside completed!');
			if( fetchWords == 1 )
			{
				setWords( this.response.text );
				//alert('after set words!');
				fetchWords = 0;
			}
			else if( fetchTemplate == 1 )
			{
				//alert('inside fetch template!');
				fetchWords = 1;
				fetchTemplate = 0;
				container.setHTML(this.response.text);
				//alert('before send again');
				ajax.send( ajax_url,'t=0');
			}
			else
			{
				//alert('inside else');
				container.setHTML('<center>'+this.response.text+'</center>');
				listener.fireEvent('backin');
				//alert('end of else');
			}
		},
		onCancel: function() {
			// Do something
			alert('ajax did not complete');
		},
		onRequest: function() {
			//alert(this.url);
		}
	});
	
	//mySlide3.hide();
	
	$('listener').addEvents({
		
		'backin': function() {
			$('floater').setStyle('display', 'none');
			mySlide3.slideIn();
		},
		'reload_listeners': function() {
			
			txt.addEvents({
				'focus': function() {
					
					if( start == 0 )
					{
						txt.value = '';
					}
				},
				'keyup': function(event) {
				
					var event = new Event(event);	
					
					if( start == 0 )
					{
						start = 1;
						interval = timerFunction.periodical(1000);
					}
				
					if ( event.key == 'space' || event.key == 'enter' )
					{						
						txt.fireEvent('check');
					}
					else if( event.key == 'backspace' )
					{
						backspaces++;
						score = score - 1;
					}
				},
				'correct': function(text) {
					
					txt.value = '';
					//log.setHTML(text);
					
					fx.start({
						'background-color': ['#008CFF', '#fff']
						//'opacity': [1, 0]
					});
				},
				'wrong': function(text) {
					
					txt.value = '';
					//log.setHTML(text);
					
					fx.start({
						'background-color': ['#FF0000', '#fff']
						//'opacity': [1, 0]
					});
				},
				'check': function(text) {
					
					if ( txt.value.trim() == wordarray[counter].trim() )
					{
						txt.fireEvent('correct', wordarray[counter]);
						match++;
						score = score + (wordarray[counter].length*2);
					}
					else
					{
						txt.fireEvent('wrong', wordarray[counter]);
						notmatch++;
						nmt = nmt + (wordarray[counter].length);
						score = score - (wordarray[counter].length);
					}
					counter++;
					nextWord();
				},
				'showtime': function(text) {
					
					timerEffect.start({
						'background-color': ['#000', '#fff']
						//'opacity': [1, 0]
					});
				}
			});
			
			var fx = new Fx.Styles(txt, {
				duration: 1000,
				wait: false,
				transition: Fx.Transitions.Quad.easeOut
			});
			
			var timerEffect = new Fx.Styles(timer, {
				duration: 1000,
				wait: false,
				transition: Fx.Transitions.Quad.easeOut
			});
		},
		'changeGoogleAd': function(text) {
			var iframes = $$('iframe');
			
			iframes.each(function(tab, i) {
				//alert( tab.name );
				if( tab.name == 'google_ads_frame' )
				{
					var src = tab.src.split('&rsnd=')[0];
					//hidden.innerHTML = src+'<br />'+tab.src;
					src = src + "&rsnd="+myDate.getTime();// + new Date().getTime();
					tab.src = src;
				}
				
			});
		},
		'changeAd': function(text) {
			
			var iframes = $$('.ads iframe');
			iframes.each(function(tab, i) {
				
				var src = tab.src.split('&mytime=')[0];				
				src = src + "&mytime="+myDate.getTime();
				tab.src = src;
				
			});
		},		
		'restart': function( text ) {
			
			interval = $clear(interval);
			txt.disabled = true;
			
			// Clear curLine, nexLine, counters
			counter = 0;
			match = 0;
			notmatch = 0;

			lineCount = 1;	
			start = 0;
			
			backspaces = 0;
			score = 0;
			tracker = '';
			nmt = 0;
			
			words = '';
			
			hidden.innerHTML = '';
			
			// Reset timer
			timeleft = 60;
			timer.innerHTML = timeleft;
			
			// Reset ad
			listener.fireEvent( 'changeAd' );
			
			// fetch new content
			//ajax.send( ajax_url,'t=0');	
			container.setHTML('');
			mySlide3.slideOut().chain(function(){
				$('floater').setStyle('display', 'block');
				container.setHTML(getTemplate());
				fetchWords = 1;				
				ajax.send( ajax_url,'t=0&timer='+myDate.getTime());
				
			});
		},
		'sendScore': function(text) {
						
			var name = text.replace(/ /g,"%20");
			listener.fireEvent('changeAd');
			mySlide3.slideOut().chain( function() {
				$('floater').setStyle('display', 'block');
				//alert('t=1&i='+tracker+'&s='+score+'&n='+name+'&k='+backspaces+wordarray[counter]+nmt+'&v='+match+'pad'+counter);
				ajax.send( ajax_url,'t=1&i='+tracker+'&s='+score+'&n='+name+'&k='+backspaces+wordarray[counter]+nmt+'&v='+match+'pad'+counter);
				
			});
			
		},
		'viewScore': function(text) {

			mySlide3.slideOut().chain( function() {
				container.setHTML('');
				listener.fireEvent('changeAd');
				mySlide3.slideOut().chain(function(){
					$('floater').setStyle('display', 'block');
					ajax.send( ajax_url,'t=2&k='+text+'&tstamp='+myDate.getTime());
				});
				
			});
			
		}
	});
	
	
	// Load New Game
	$('newGame').addEvent('click', function(e){
		e = new Event(e);
		if( start != 1 )
		{
			container.setHTML('');
			listener.fireEvent('changeAd');
			mySlide3.slideOut().chain(function(){
				$('floater').setStyle('display', 'block');
				//fetchTemplate = 1;
				fetchWords = 1;
				container.setHTML(getTemplate());
				//alert('t=0&tstamp='+myDate.getTime());
				ajax.send( ajax_url,'t=0&tstamp='+myDate.getTime());
				//alert('after request');
				//container.setHTML(game.innerHTML);
				//mySlide3.slideIn();
			});
		}
		else
		{
			listener.fireEvent('restart');
		}
		e.stop();
	});
	
	// Hi Scores All Time
	$('hiAll').addEvent('click', function(e){
		e = new Event(e);
		container.setHTML('');
		listener.fireEvent('changeAd');
		mySlide3.slideOut().chain(function(){
			$('floater').setStyle('display', 'block');
			ajax.send( ajax_url,'t=2&k=all'+'&tstamp='+myDate.getTime());
		});
		e.stop();
	});
	
	// Hi Scores Last Week
	$('hiWeek').addEvent('click', function(e){
		e = new Event(e);
		container.setHTML('');
		listener.fireEvent('changeAd');
		mySlide3.slideOut().chain(function(){
			$('floater').setStyle('display', 'block');
			ajax.send( ajax_url,'t=2&k=week'+'&tstamp='+myDate.getTime());
		});
		e.stop();
	});
	
	// Hi Scores Today
	$('hiToday').addEvent('click', function(e){
		e = new Event(e);
		container.setHTML('');
		listener.fireEvent('changeAd');
		mySlide3.slideOut().chain(function(){
			$('floater').setStyle('display', 'block');
			ajax.send( ajax_url,'t=2&k=day'+'&tstamp='+myDate.getTime());
		});
		e.stop();
	});
	
	//viewCredits
	$('viewCredits').addEvent('click', function(e){
		e = new Event(e);
		container.setHTML('');
		listener.fireEvent('changeAd');
		mySlide3.slideOut().chain(function(){
			$('floater').setStyle('display', 'block');
			container.setHTML($('credits').innerHTML);
			$('floater').setStyle('display', 'none');
			mySlide3.slideIn();
		});
		e.stop();
	});
	
	var list = $$('#idList li');
	list.each(function(element) {
	 
		var fx2 = new Fx.Styles(element, {duration:200, wait:false});
	 
		element.addEvent('mouseenter', function(){
			fx2.start({
				//'margin-left': 5,
				'background-color': '#666',
				'color': '#ff8'
			});
		});
	 
		element.addEvent('mouseleave', function(){
			fx2.start({
				//'margin-left': 0,
				'background-color': '#333',
				'color': '#888'
			});
		});
	 
	});
	
	
	// Ready the needed variables for the game
	var txt = $('myTextarea'), timer = $('timer'), hidden = $('hidden');
	var prev = $('prev'), cur = $('cur'), nex = $('nex'), nextLine = $('nextLine');
	var words = '';	
	
	var counter = 0;
	var match = 0;
	var notmatch = 0;
	var nmt = 0;
	var timeleft = 60;
	
	var wordsPerLine = 5;
	var lineCount = 1;	
	var interval;
	var start = 0;
	
	var backspaces = 0;
	var score = 0;
	var tracker = '';
	var fetchWords = 0;
	var fetchTemplate = 0;
	
	timer.innerHTML = timeleft;
	
	function getTemplate() {
	
		var output = '<div><!-- spacer --><br /></div>';
		output += '<div id="curLine"><span id="prev"></span>&nbsp;<span id="cur"></span>&nbsp;<span id="nex"></span></div>';
		output += '<div id="nextLine"></div>';
		output += '<div id="inner_demo">';
		output += '<div id="timer"><!-- spacer --></div>';
		output += '<textarea id="myTextarea" name="textarea" cols="50" cols="1"></textarea>';
		output += '</div>';
		output += '<div id="hidden"><!-- hidden --></div><br />';
		
		return output;
	}
	
	function setWords( text ) {
		words = text.split('&')[0].trim();
		tracker = text.split('&')[1].trim();
		wordarray = words.split(' ');
		loadFirstTwo();
		//txt.value = 'Type here...';
		txt.disabled = false;
		txt.focus();
		//container.setHTML(game.innerHTML);
		//game.setHTML('');
		listener.fireEvent('reload_listeners');
		listener.fireEvent('backin');
	};
	
	function loadFirstTwo() {
	
		var tempPrev = '', tempNex = '', tempNexLine = '&nbsp;';	
		txt = $('myTextarea');
		timer = $('timer');
		hidden = $('hidden');
		prev = $('prev');
		cur = $('cur');
		nex = $('nex');
		nextLine = $('nextLine');
		
		for( i=(0+(lineCount-1)*wordsPerLine); i<(wordsPerLine*lineCount); i++)
		{
			if( i < counter )
			{
				tempPrev += wordarray[i];
				tempPrev += '&nbsp;';
			}
			else if( i == counter )
			{
				cur.innerHTML = wordarray[i];
				//$('cur').innerHTML = wordarray[i];
			}
			else
			{
				tempNex += wordarray[i];
				tempNex += '&nbsp;';
			}
		}
		
		prev.innerHTML = tempPrev;
		nex.innerHTML = tempNex;
		
		for( i=(0+(lineCount)*wordsPerLine); i<(wordsPerLine*(lineCount+1)); i++)
		{
			tempNexLine += wordarray[i];
			tempNexLine += '&nbsp;';
		}
		
		nextLine.innerHTML = tempNexLine;
		timer.innerHTML = timeleft;
	};
	
	function timerFunction() {
		
		timeleft--;
		txt.fireEvent('showtime');
		timer.innerHTML = timeleft;		
		if( timeleft <= 0 )
		{
			interval = $clear(interval);
			$('myTextarea').disabled = true;
			
			// Slide the game form out
			mySlide3.slideOut().chain( function() {
				
				// Then Slide the submit score form in
				var submitform = '<span class="text">';
				submitform += 'Your score is '+score+'.<br /><br />';
				submitform += 'Name: <input type="text" name="name" id="name" /> <br /><br />';
				submitform += '<input class="button2" type="button" name="Submit" value="Submit Score" onclick="listener.fireEvent(\'sendScore\', $(\'name\').value);">&nbsp;';
				submitform += '<input class="button2" type="button" name="Restart" value="Play Again" onclick="$(\'listener\').fireEvent(\'restart\');">';
				submitform += '</span>';
				
				container.setHTML(submitform);
				$('name').focus();
				mySlide3.slideIn();
			
			});
		}
	};
	
	function nextWord() {
		
		var tempPrev = '', tempNex = '', tempNexLine = '&nbsp;';
		
		if( (counter % wordsPerLine) == 0 )
			lineCount++;
			
		if( counter != (0+(lineCount-1)*wordsPerLine))
			tempPrev = '&nbsp;';
		
		for( i=(0+(lineCount-1)*wordsPerLine); i<(wordsPerLine*lineCount); i++)
		{
			if( i < counter )
			{
				tempPrev += wordarray[i];
				if( (i + 1) < counter )
				{
					tempPrev += '&nbsp;';
				}
			}
			else if( i == counter )
				cur.innerHTML = wordarray[i];
			else
			{
				tempNex += wordarray[i];
				tempNex += '&nbsp;';
			}
		}
		
		prev.innerHTML = tempPrev;
		nex.innerHTML = tempNex;
		
		for( i=(0+(lineCount)*wordsPerLine); i<(wordsPerLine*(lineCount+1)); i++)
		{
			tempNexLine += wordarray[i];
			tempNexLine += '&nbsp;';
		}
		
		nextLine.innerHTML = tempNexLine;
	};

});