// SOME GODDAMN NINJAS.
window.addEvent('domready', function() { 

// screw IE
if (!Browser.Engine.trident ){

	if ($chk($('kills'))){

		var ninjas = $$('.ninja');
		var ninjasTop = $$('.nTop');
		var ninjasRight = $$('.nRight');
		var ninjasBottom = $$('.nBottom');
		var ninjasLeft = $$('.nLeft');
		var kills = 0;
		var killCounter = $('kills');
		var awesomeKills = $('awesomeKills');	
		var alreadyClicked = false;
		var accuracy = $('accuracy');
		var accuracyClicks = 0;	
		var accuracyRatio = 0;

		//resets		
		killCounter.fade('hide');
		killCounter.setStyle('display', 'block');
	
		awesomeKills.fade('hide');
		awesomeKills.setStyle('display', 'block');
	
		accuracy.fade('hide');
		accuracy.setStyle('display', 'block');
	
		// this is for accuracy
		document.body.addEvent('click', function(){
			accuracyClicks++;
	
			// update ratio
			accuracyRatio = ((kills / accuracyClicks)*100).toInt();
			accuracy.getElement('span').set('text', accuracyRatio);
	
		});
	
		var countKills = function(){
			
		
			if (alreadyClicked == false){
				
				// update the kills
				alreadyClicked = true;
				kills++;
				killCounter.getElement('span').set('text', kills);
				killCounter.fade('in');
				accuracy.fade('in');
				
				// if it's special, be special
				if (!(kills%5))
				{
					if (kills==5){awesomeKills.getElement('span').set('text', 'YOU\'RE AWESOME!');}
					if (kills==10){awesomeKills.getElement('span').set('text', 'DOMINATION!');}
					if (kills==15){awesomeKills.getElement('span').set('text', 'AMAZING!');}
					if (kills==20){awesomeKills.getElement('span').set('text', 'GO OUTSIDE!');}
					if (kills==25){awesomeKills.getElement('span').set('text', 'STOP IT.');}				
					if (kills==30){awesomeKills.getElement('span').set('text', 'NO REALLY.');}
	
					awesomeKills.fade('show');
					(function(){
						awesomeKills.fade('out');
					}).delay('700');
				}
			}	
		} // countkills
		
				
		// counteract non-javscript hiding (hell YES triple negative! Take THAT.) and add counters to the ninjas
		ninjas.each(function(ninja, i){
			ninja.setStyle('display', 'block');
			ninja.addEvent('click', countKills);
		});	
	
		// hide the top ones:
		ninjasTop.each(function(item, index){
			item.setStyle('top', -item.getSize().y);
		});
		
		// hide the right ones:
		ninjasRight.each(function(item, index){
			item.setStyle('right', -item.getSize().x);
		});
		
		// hide the bottom ones:
		ninjasBottom.each(function(item, index){
			item.setStyle('bottom', -item.getSize().y);
		});
	
		// hide the left ones:
		ninjasLeft.each(function(item, index){
			item.setStyle('left', -item.getSize().x);
		});	
	
	
		function showRandomNinja(){
			
			var randomNinjaIndex = $random(0, ninjas.length-1);
			var currentNinja = ninjas[randomNinjaIndex];
			var ninjaDirection; // which way is it moving?
			var appearDuration = $random(100, 350);
			var hangAroundLength = $random(appearDuration+200, 2500);
			var timeBeforeNextNinja = $random(hangAroundLength+1000, 5000);	
			var movementFx = new Fx.Morph(currentNinja, {duration: appearDuration, transition: Fx.Transitions.Sine.easeOut});
	 		
	 		// positioning, get browser stuff!
	 		var randomPositionX = $random(0, (window.getSize().x - currentNinja.getSize().x));
			var randomPositionY = $random(0, (window.getSize().y - currentNinja.getSize().y)); 		
			
	
			// left
			if (currentNinja.hasClass('nLeft')) {
				currentNinja.setStyle('top', randomPositionY);
				movementFx.start({left: 0});
	
				(function(){
					movementFx.start({left: -currentNinja.getSize().x});
					alreadyClicked = false;
				}).delay(hangAroundLength);
			}
			
			// top
			else if (currentNinja.hasClass('nTop')) {
				currentNinja.setStyle('left', randomPositionX);
				movementFx.start({top: 0});
	
				(function(){
					movementFx.start({top: -currentNinja.getSize().y});
					alreadyClicked = false;
				}).delay(hangAroundLength);
			}
			
			// bottom
			else if (currentNinja.hasClass('nBottom')) {
				currentNinja.setStyle('left', randomPositionX);		
				movementFx.start({bottom: 0});
				
				(function(){
					movementFx.start({bottom: -currentNinja.getSize().y});
					alreadyClicked = false;			
				}).delay(hangAroundLength);
			}
			
			// right
			else if (currentNinja.hasClass('nRight')) {
				currentNinja.setStyle('top', randomPositionY);		
				movementFx.start({right: 0});
				
				(function(){
					movementFx.start({right: -currentNinja.getSize().x});
					alreadyClicked = false;
				}).delay(hangAroundLength);
			}
		
		
			// now wait for a while and do it again
			$clear(myPeriod);
			myPeriod = showRandomNinja.periodical(timeBeforeNextNinja);
		}
		
			var myPeriod = showRandomNinja.periodical(1000);
		
	}
	
// end screw IE
}

});


// end GODDAMN NINJAS.
