//Globale Variabeln
var aws_currentWord;
var aws_currentWord_NormalCase;
var aws_currentTime;
var aws_currentTimer;
var aws_holdMessage = 0;
var aws_description;

window.onload = initAjaxWordSearch;

//Spiel initialiseren
function initAjaxWordSearch() {
	$('aws_newgame').onclick=awsPrepareNewGame;
	$('aws_helpme').onclick=awsHelpMe;
	$('aws_solution').onclick=awsShowSolution;
	$('aws_helpme').disabled=true;
	$('aws_solution').disabled=true;
	//awsClearBoard();

	//Schwierigkeitsgrad beim Laden der Seite auf 'leicht' setzen 
	$('grad').value = '0';
	
	//Class für Status-Div auf 'staterot' setzen
	$('aws_state').className = 'staterot';

	//Hier diverse TooTips vorbereiten
	var slider_handle = $("handle");
	var hint_letter = $("hint_letter");
	var hint_solution = $("hint_solution");
	
	// the span exists!  on focus, show the hint
	slider_handle.onmouseover = function () {
		this.parentNode.getElementsByTagName("span")[0].style.display = "inline";
	}
	hint_letter.onmouseover = function () {
		$("css_hint_letter").style.display = "inline";
	}
	hint_solution.onmouseover = function () {
		$("css_hint_solution").style.display = "inline";
	}

	// when the cursor moves away from the field, hide the hint
	slider_handle.onmouseout = function () {
		this.parentNode.getElementsByTagName("span")[0].style.display = "none";
	}
	hint_letter.onmouseout = function () {
		$("css_hint_letter").style.display = "none";
	}
	hint_solution.onmouseout = function () {
		$("css_hint_solution").style.display = "none";
	}
	
	$('aws_tolist').innerHTML='<span style="font-style:italic;font-size:16px; color:#444;background:#ccc;padding:4px;">Auf &quot;Neues Spiel&quot; klicken und die Buchstaben mit der Maus in diesen Kasten ziehen!</span>';
}

//Beide Spielfelder leeren
function awsClearBoard() {
	$('aws_fromlist').innerHTML="";
	$('aws_tolist').innerHTML="";
}

//Vorbereitungen f&uuml;r ein neues Spiel treffen
function awsPrepareNewGame()
{
  awsStopTime(); 
	$('aws_state').className = 'staterot';
	if(Element.visible($('css_hint_wordinfo'))){new Effect.Fade($('css_hint_wordinfo'),{duration: 2, from: 0.7, to:0});};
  $('aws_state').innerHTML = '<img src="grafix/ajax-loader.gif" alt="Loading" /> Wort wird geladen...';
  awsClearBoard();
  awsGetWord();
}

//Einzelnes Wort vom Server laden
function awsGetWord() 
{
	var myDate = new Date();
	var myTime = myDate.getTime();
  var myAjax = new Ajax.Request(
    'php/getWord.php?grad='+$('grad').value+'&rand='+myTime, 
		{
      method: 'GET', 
      onComplete: function(xmlHttpRequest) {
      	if ($('grad').value != '2') {
        	aws_currentWord_NormalCase = xmlHttpRequest.responseText;
        	aws_currentWord = aws_currentWord_NormalCase.toUpperCase();
        	//alert(aws_currentWord_NormalCase);
        } else{
        	temp_currenWord = xmlHttpRequest.responseText;
        	
				  var items = temp_currenWord.split("__");
				  if(items.length > 0) {
      			aws_currentWord_NormalCase = items[0];
					  aws_currentWord = items[0].toUpperCase();
					  aws_description = items[1];
				  }
        }
        awsStartNewGame();
      }
    }
  );
}

//Neues Spiel starten
function awsStartNewGame()
{ 
	var aws_currentLetters=aws_currentWord.toArray();
	aws_currentLetters.sort(awsRandomizeArray);
	aws_currentLetters.each(awsAddLetterToFromList);
	Sortable.create('aws_fromlist',{containment:['aws_fromlist','aws_tolist'], dropOnEmpty:true, overlap:'horizontal', constraint:false});
	Sortable.create('aws_tolist',{containment:['aws_tolist','aws_fromlist'], dropOnEmpty:true, overlap:'horizontal', constraint:false, onUpdate:awsWordChanged});
  if(Element.visible($('aws_fromlist'))){Element.hide($('aws_fromlist'));new Effect.Appear($('aws_fromlist'),{duration: 2});}else{Element.show($('aws_fromlist'));};
	$('aws_helpme').disabled=false;
	$('aws_solution').disabled=false;
	
	awsStartTime();
	
	function awsRandomizeArray(letterA,letterB)
	{
		return Math.round(Math.random())-0.5;
	}

}

function awsStartTime() {
  aws_currentTime = 0;
  aws_currentTimer=window.setInterval("awsTimer()", 1000);
}

function awsStopTime() {
  window.clearInterval(aws_currentTimer);
}

function awsTimer()
{
	aws_currentTime++;
	if (aws_holdMessage == 1) {
		aws_holdMessage = 0;
	} else {
		$('aws_state').innerHTML = "Zeit: "+aws_currentTime + " Sekunden";
	}
}

function awsAddLetterToFromList(letter, index)
{
	awsCreateListItem('aws_fromlist', letter, index);
}

function awsCreateListItem(parent, text, index)
{
	var myLi = document.createElement('li');
	$(parent).appendChild(myLi);
	var myText = document.createTextNode(text);
	myLi.appendChild(myText); 
	//myLi.setAttribute('onmouseup', 'Effect.Appear(this,{duration: 2})');
	myLi.setAttribute('id',parent+'_'+index);
}

//L&ouml;sung gefunden?
function awsWordChanged(item) 
{
	var letterNodesFrom = $('aws_fromlist').getElementsByTagName('li');
	var fromBox = $A(letterNodesFrom).pluck('innerHTML').join("");
	var letterNodes = $('aws_tolist').getElementsByTagName('li');
	var currentSolution = $A(letterNodes).pluck('innerHTML').join("");
	if (fromBox.length == 0) {
		if (currentSolution==aws_currentWord) {
		  awsWon();
		} else {
			awsNotOk();
		}
	}
}

//Anzeigen der L&ouml;sung
function awsShowSolution()
{
	awsClearBoard();
	awsStopTime();
	var aws_currentLetters=aws_currentWord.toArray();
	aws_currentLetters.each(awsAddLetterToToList);
  if(Element.visible($('aws_tolist'))){Element.hide($('aws_tolist'));new Effect.Appear($('aws_tolist'),{duration: 2});}else{Element.show($('aws_tolist'));};
	$('aws_state').className = 'stategruen';
	$('aws_state').innerHTML = "Das ist das gesuchte Wort.";
	
	//Element.hide($('css_hint_wordinfo'))
	//Erklärung des Fremdwortes anzeigen
	if($('grad').value <= '1') {
	  if(Element.visible($('css_hint_wordinfo'))){new Effect.Fade($('css_hint_wordinfo'),{duration: 2, from: 0.7, to:0});};
	} else {
		$('css_hint_wordinfo').innerHTML = '<span class="fett">' + aws_currentWord_NormalCase + '</span><br /><br /><span class="kursiv">' + aws_description + '</span><br /><br /><a href="javascript:;" onclick="Effect.Fade(this.parentNode,{duration: 2, from: 0.7, to:0})" title="Information ausblenden">Schlie&szlig;en</a>';
	  if(Element.visible($('css_hint_wordinfo'))){Element.hide($('css_hint_wordinfo'));new Effect.Appear($('css_hint_wordinfo'),{duration: 2});}else{Element.show($('css_hint_wordinfo'));};
	}

	//Button 'Lösungswort zeigen' und 'Hilf mir!' deaktivieren	
	$('aws_helpme').disabled=true;
	$('aws_solution').disabled=true;
}

//Buchstaben zu aws_tolist hinzuf&uuml;gen
function awsAddLetterToToList(letter, index)
{
	awsCreateListItem('aws_tolist', letter, index);
}

//Lösung wurde gefunden
function awsWon() 
{
  awsStopTime();
  $('aws_helpme').disabled=true;
  $('aws_solution').disabled=true;
	$('aws_state').className = 'stategruen';
  $('aws_state').innerHTML = 'Richtig! Sie ben&ouml;tigten '+aws_currentTime+' Sekunden.';
	if(Element.visible($('aws_state'))){new Effect.Shake($('aws_state'));};
	
	//Erklärung des Fremdwortes anzeigen
	if($('grad').value <= '1') {
	  if(Element.visible($('css_hint_wordinfo'))){new Effect.Fade($('css_hint_wordinfo'),{duration: 2, from: 0.7, to:0});};
	} else {
		$('css_hint_wordinfo').innerHTML = '<span class="fett">' + aws_currentWord_NormalCase + '</span><br /><br /><span class="kursiv">' + aws_description + '</span><br /><br /><a href="javascript:;" onclick="Effect.Fade(this.parentNode,{duration: 2, from: 0.7, to:0})" title="Information ausblenden">Schlie&szlig;en</a>';
	  if(Element.visible($('css_hint_wordinfo'))){Element.hide($('css_hint_wordinfo'));new Effect.Appear($('css_hint_wordinfo'),{duration: 2});}else{Element.show($('css_hint_wordinfo'));};
	 }
}

//Alle Buchstaben wurden verschoben, Lösung wurde nicht gefunden
function awsNotOk() 
{
	//Anzeige der nachfolgenden Nachricht eine Sekunde länger
	aws_holdMessage = 1;
  $('aws_state').innerHTML = 'Das war leider nicht das gesuchte Lösungswort!';
  //alert('Das war leider nicht das gesuchte Lösungswort!');
}

//Zeigt eine kleine Hilfe an...
function awsHelpMe() 
{
	if($('grad').value <= '1') {
		$('css_hint_wordinfo').innerHTML = '<span class="fett">Tipp:</span><br /><br /><span class="kursiv">Der erste Buchstabe ist ein <span class="one_letter">' + aws_currentWord_NormalCase.substr(0, 1) + '</span> und der letzte Buchstabe ist ein <span class="one_letter">' + aws_currentWord_NormalCase.substr((aws_currentWord.length - 1), 1) + '</span></span><br /><br /><a href="javascript:;" onclick="Effect.Fade(this.parentNode,{duration: 2, from: 0.7, to:0})" title="Information ausblenden">Schlie&szlig;en</a>';
	  if(Element.visible($('css_hint_wordinfo'))){Element.hide($('css_hint_wordinfo'));new Effect.Appear($('css_hint_wordinfo'),{duration: 2});}else{Element.show($('css_hint_wordinfo'));};
	} else {
		$('css_hint_wordinfo').innerHTML = '<span class="fett">Die Bedeutung des Fremdwortes:</span><br /><br /><span class="kursiv">' + aws_description + '</span><br /><br /><a href="javascript:;" onclick="Effect.Fade(this.parentNode,{duration: 2, from: 0.7, to:0})" title="Information ausblenden">Schlie&szlig;en</a>';
	  if(Element.visible($('css_hint_wordinfo'))){Element.hide($('css_hint_wordinfo'));new Effect.Appear($('css_hint_wordinfo'),{duration: 2});}else{Element.show($('css_hint_wordinfo'));};
	}
}

