var tokenizerPath = "pages/games/kirtan_blanks/tokenizer.php"; 
var numMissingWords = 10;
var triesLeft = 3;

var startTime;
var blankableWordsArr = []; // list of the words

$(function(){
	$.get(tokenizerPath,{kirtan:getUrlVars().kirtan},function(data){
		$("#kirtanBlanks").html(data);
		initWordBlanking();
	})
});

function initWordBlanking(){
	var $blanks = $("#kirtanBlanks .blankable_word");
	$blanks.each(function(index){
		blankableWordsArr.push(this);
	});
	randomize(blankableWordsArr);
	
	//find which one is smaller out of blankable words or missing words
	if(blankableWordsArr.length < numMissingWords){
		numMissingWords = blankableWordsArr.length;
	}
	
	var choicesArray = []; // choices of the blanks
	for(var i=0; i < numMissingWords; i++){
		var text = $(blankableWordsArr[i]).text();
		blankableWordsArr[i].rightWord = text;
		choicesArray.push("<option value='" + text + "'>" + text + "</option>");
	}
	choicesArray.sort();
	
	var optionsHtmlText = "<select onchange='invalidateChoices()'><option></option>" + choicesArray.join("") + "</select>";
	
	for(var i=0; i < numMissingWords; i++){
		blankableWordsArr[i].innerHTML = optionsHtmlText;
	}
	
	$("#checkAnswersButton").attr("value","Check Answers (" + triesLeft + " tries left)");
	
	//start counting the time
	startTime = new Date().getTime();
}

function randomize(arr){
	for(var i=0; i< arr.length; i++){
		var index = Math.floor(Math.random() * arr.length);
		if(index >= arr.length) continue; // skip it
		var temp = arr[i];
		arr[i] = arr[index];
		arr[index] = temp;
	}
}


function invalidateChoices(){
	var usedWordsArr = [];
	
	for(var i=0; i < numMissingWords; i++){
		var elem = blankableWordsArr[i].firstChild;
		var text = elem.options[elem.selectedIndex].text;
		if(text != ""){
			usedWordsArr.push(text);
		}
	}
	
	for(var i=0; i < numMissingWords; i++){
		var options = blankableWordsArr[i].firstChild.options;
		var possibleWords = []; // copy into temp array
		
		for (var j = 0; j < usedWordsArr.length; j++) {
			possibleWords.push(usedWordsArr[j]);
		}
		
		for(var j=0; j<options.length; j++){
			var foundOption = false;
			var value = options[j].value;
			
			for(var k=0; k<possibleWords.length; k++){
				if(possibleWords[k] == value){
					foundOption = true;
					possibleWords.splice(k,1);
					k--;
					options[j].style.display = "none";
				}
			}
			
			if(!foundOption){
				options[j].style.display = "";
			}
		}
	}
}


function checkAnswers(){
	var answersRight = 0;
	for(var i=0; i < numMissingWords; i++){
		var word = blankableWordsArr[i];
		var elem = blankableWordsArr[i].firstChild;
		var text = elem.options[elem.selectedIndex].text;
		if(text == word.rightWord){
			elem.disabled = true;
			answersRight++;
		}
	}
	
	if(answersRight == numMissingWords){
		$("#checkAnswersButton").attr("disabled","true");
		$("#checkAnswersButton").attr("value","Refresh Page To Try Again");
		doAllAnswersRight();
	}else{
		triesLeft--;
		$("#checkAnswersButton").attr("value","Check Answers (" + triesLeft + " tries left)");
		if(triesLeft==0){ // tries finished
			$("#checkAnswersButton").attr("disabled","true");
			$("#checkAnswersButton").attr("value","It took you more than 3 tries! Refresh page to try again");
		}
	}
	

}

function doAllAnswersRight(){
	var endTime = new Date().getTime();
	var secs = Math.round((endTime - startTime)/1000);
	var mins = (secs - (secs % 60))/60;
	secs = secs % 60;
	
	alert("Congratulations! All answers are correct.\n It took you "+ mins +" mins and "+ secs +" secs.");
}

// Read a page's GET URL variables and return them as an associative array.
function getUrlVars(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

    for(var i = 0; i < hashes.length; i++){
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }

    return vars;
}

