var loaded = false;
var hasWord = false;
var _quiz = true;
function playAt(value){
	player.sendEvent('SEEK', value);
	player.sendEvent('PLAY', 'true');		
//	player.sendEvent('VOLUME', 50);
}

function stopNow(){
	timeID = 0
//	player.sendEvent('VOLUME', 0);
	player.sendEvent('PLAY', 'false');			
	//player.sendEvent('VOLUME', 50);
	playing = false
	//alert("stopping");
}
function stopNowRandom(){
//	player.sendEvent('VOLUME', 0);
	player.sendEvent('PLAY', 'false');			
//	player.sendEvent('VOLUME', 50);
	
	if (!_quiz) // dictation practice or quiz??
		timeID = setTimeout("randomGenerator()", delay* 1000);
}


var multiplier = 1;

function init(){
	
}

/********/

if (document.all) { 
	docObj = "document.all."
	styleObj = ".style"
	ie =true
}
else
{
	docObj = "document."  
	styleObj = ""
	ie =false
}
function choose(value){

	document.getElementById("correctletter").innerHTML = generateHeader(letterIndex * multiplier) + letterArray[letterIndex] + "</a>";
	document.getElementById("correctword").innerHTML = generateHeaderPlay(letterIndex  * multiplier + 1) + wordArray[letterIndex]  + "</a>";
	if (value == letterIndex){
		document.getElementById("answerright").innerHTML = "<img src='/images/check.gif' width='16' height='25'>";
		removeLetter(currentIndex)
		document.getElementById("wrongletter").innerHTML = ""
		document.getElementById("wrongword").innerHTML = ""
		document.getElementById("answerleft").innerHTML = ""
		document.getElementById("complete").innerHTML =  "";
		randomGenerator()
	}
	else{
		missed++;
		document.getElementById("answerright").innerHTML = "<img src='/images/arrow2.gif' width='11' height='13'>";
		document.getElementById("answerleft").innerHTML = "<img src='/images/x3.gif' width='11' height='13'>";
		document.getElementById("wrongletter").innerHTML = generateHeader(value * multiplier) + letterArray[value] + "</a>"
		document.getElementById("wrongword").innerHTML = generateHeaderPlay(value  * multiplier + 1) + wordArray[value] +"</a>"
		document.getElementById("complete").innerHTML =  "";
		setTimeout("randomGenerator()", delay*1000);
	 }
}
function choose2(one, two){
	if (one == letterIndex || two == letterIndex)
		choose(letterIndex);
	else choose(one)
}
function removeLetter(currentIndex){
		tempArray = currentArray.slice(0, currentIndex);
		tempArray2 = currentArray.slice(currentIndex + 1, currentArray.length);
		currentArray = tempArray.concat(tempArray2);
}
currentvalue = -1;
function playSound( value){
	if (clearid != -1)
		window.clearTimeout(clearid)
	//if (currentvalue != value){

		currentvalue = value;
		toPlay= times[ value];
		if (timeID != 0)
			window.clearTimeout(timeID)
		playAt(toPlay)
		stop = times[value + 1] - toPlay;
		timeID = setTimeout("stopNow()", stop *1000 );
}
function play(evt,  value){

	playSound( value)
	value = value - 1;
	value = value/2
	popUp(evt,"A"+value)
}

function popUp(evt, ggg) { 
	id = ggg
	if (ie){
		if (document.body.clientHeight < evt.y + 60){
			xy = parseInt(evt.y) - 60
		}
		else xy = parseInt(evt.y)
		if (document.body.clientWidth < evt.x + 151){
			xc = parseInt(evt.x) - 150
		}
		else xc = parseInt(evt.x)
		popUpWin = eval(docObj + ggg + styleObj)
		 popUpWin.top = xy + 23 + document.body.scrollTop
		popUpWin.left = Math.max(2, xc) + 5 
		popUpWin.visibility = "visible"  
		popUpWin.status = ""
	}
    else{
        if (window.innerWidth < evt.pageX + 310){
			xc = evt.pageX - 301
		}
		else xc = evt.pageX
		if (window.innerHeight  + window.pageYOffset < evt.pageY + 50){
			xy = evt.pageY - 40
	
		}
		else xy = evt.pageY  + 30
		document.getElementById(id).style.top = xy;
		document.getElementById(id).style.left = xc +3; 
		document.getElementById(id).style.visibility = 'visible'
	}
}

function playLetter(){
	playSound(letterIndex * multiplier )
}

function copyOriginalArray(){
	size = originalArray.length;
	newArray = new Array()
	for (y = 0; y < size; y++){
		 newArray.push(originalArray[y]);
	}
	return newArray;
}

function randomize(){
	reorder = copyOriginalArray();
	currentValue = 0;
	oldButtonLocations = new Array()
	for (i = startValue; i < startValue + reorder.length; i++){
		id = "loc" + i;
		here = document.getElementById(id).innerHTML
		oldButtonLocations.push(here);	
	}
	while (reorder.length != 0){
			index = Math.floor(Math.random() * reorder.length);
			reorderIndex = reorder[index];
			id = "loc" + reorderIndex;
			//alert(id)
			document.getElementById(id).innerHTML = oldButtonLocations[currentValue];
			tempArray = reorder.slice(0, index);
			if (index == 0){
				reorder.shift();
			}
			else if (index == reorder.length){
				reorder.pop();
			}
			else{
				tempArray2 = reorder.slice(index + 1, reorder.length);
				reorder = tempArray.concat(tempArray2);
			}
			currentValue++;
	}
}



var timeID = 0


function next(){
	randomGenerator()
}


	
var originalArray = new Array();

var currentArray = originalArray.reverse();

var checkerid;

var playing = true;
 var letterIndex = -1;
var oldIndex = -2;

var id;
var clearid = -1;

function clearID(){
	currentvalue = -1;
}

function pd() {
	clearid = setTimeout("clearID()",200);
	document.getElementById(id).style.visibility =  "hidden"
}

function generateHeader(value){
	return "<a class='displayshape' onmouseover='playSound(" + value + ")'>";
}

function generateHeaderPlay(value){
	return "<a class='displayshape' onmouseover='play(event, " + value + ")' onmouseout='pd()' >";
}


function setDisplayedValues(letterIndex){
	let = letterArray[letterIndex];
	document.getElementById("letter").innerHTML = let
	if (hasWord)
		document.getElementById("word").innerHTML = wordArray[letterIndex];
}
var delay = 2;

function alphaQuiz(){
	set();
	_quiz = true;
	for (i = 0; i < groups; i++){
			active.push(true);
	}

	for (n = 0; n < total; n++){
		originalArray.push(n);
	}
	
}
var startValue = 0;
function alphaQuiz2(){
	_quiz = true;
	groups = 0;
	for (n = startValue; n < endValue; n++){
		originalArray.push(n);
	}
init()
}


function advance(){
	removeLetter(currentIndex);
	getLetterIndex(); //why is this called here? Try removing?
	randomGenerator();
	//pd()
	if (hidden){
			
			document.getElementById("show_button").disabled = false;
			document.getElementById("letter").style.visibility = "hidden";
			if (hasWord)
				document.getElementById("word").style.visibility = "hidden";
			document.getElementById("show_button").focus();
	}
}

function startShow(){
	set();
	_slideshow = true;
	for (i = 0; i < groups; i++){
		active.push(true);
	}
	for (n = 0; n < total; n++){
		originalArray.push(n);
	}
	document.getElementById("show_button").focus();
	if (document.getElementById("word") != null)
		hasWord= true;
	getLetterIndex();
	
	//randomGenerator();

}
function startShow2(){
	_slideshow = true;
	groups = 0;
	for (n = startValue; n < endValue; n++){
		originalArray.push(n);
	}
	document.getElementById("show_button").focus();
	getLetterIndex();
	init();
}


var _slideshow = false;
var letterIndex;
var currentIndex; 
var missed = 0;
function getLetterIndex(){
	totalcurrent = currentArray.length;
	
	if (totalcurrent == 0){
		currentArray = originalArray.reverse();
		for (z =0; z < groups; z++){
			if (!active[z]){
				remove(z);
			}
		}
		totalcurrent = currentArray.length;
		if (!_slideshow){
			if (missed == 0)
				document.getElementById("complete").innerHTML =  "<img src='../../images/goldenstar.gif' width='39' height='38'>";
			else if (missed == 1)
				 document.getElementById("complete").innerHTML =  "<img src='../../images/bluestar.gif' width='39' height='38'>";
			else 
				 document.getElementById("complete").innerHTML =  "<img src='../../images/redstar.gif' width='39' height='38'>";
		}
		missed = 0;
	}
	currentIndex = Math.floor(Math.random() * totalcurrent);
	letterIndex = currentArray[currentIndex];
	while (oldIndex == letterIndex & totalcurrent > 1){
		currentIndex = Math.floor(Math.random() * totalcurrent);
		letterIndex = currentArray[currentIndex];
	}
	oldIndex = letterIndex;
}

function randomGenerator(){
		getLetterIndex();
		
		toPlay= times[letterIndex *multiplier ];
		//alert("toPlay" + toPlay);
		playAt(toPlay)
		stop = times[letterIndex *multiplier + 1] - toPlay;
   		if (timeID != 0)
			window.clearTimeout(timeID)
		//alert("stop" + stop);
		timeID = setTimeout("stopNowRandom()", stop * 1000);
		if (_slideshow){
			document.getElementById("letter").innerHTML = generateHeader(letterIndex * multiplier) + letterArray[letterIndex] + "</a>";
			if (hasWord)
				document.getElementById("word").innerHTML = generateHeaderPlay(letterIndex  * multiplier + 1) + wordArray[letterIndex]  + "</a>";
		}
}



function isAvailable(value){

	return active[value];

}

function remove(group){
	if (useDiscreteElements){
		var array = range(group);
		var temp = new Array()
		if (array.length == 0){
			//remove everything that's not in the other ranges
			for (i = 1; i < range.length; i++){
				array = range[i];
				for (z =0; z < array.length; z++){
					var index = array[z];
					value = currentArray[index];
					temp.push(value);
				}
			}
		}
		else{
			start = 0;
			for (i; i < array.length; i++){
				value = array[i];
				for (z = start; z < value; z++){
					toSave = currentArray[z];
					temp.push(toSave);
				}
				start = z + 1; // skip over the current one 
			}
		}
		currentArray = temp;
	}
	else{
		if (group == 0){
			start = 0;
		}
		else{
			start = range[group - 1];
		}
		end = range[group]
		var temp = new Array()
		for (i = 0; i < currentArray.length; i++){
			value = currentArray[i];
			if (value < start ||  value >= end){
				temp.push(value)
			
			}
			else{
				
				jj = "letter" + value	
				if (!_slideshow)
					document.getElementById(jj).style.visibility = "hidden"
	
			}
		}
		currentArray = temp;
	}
}
function show(){
		document.getElementById("letter").style.visibility = "visible";
		if (hasWord)
			document.getElementById("word").style.visibility = "visible";
		document.getElementById("advance").focus();
		document.getElementById("show_button").disabled = "true";
		//alert(getElementByID("show_button"));
}
var hidden = true;
function hide(elem){

		if (!elem.checked){
			hidden = true;
			document.getElementById("show_char").innerHTML = "<input type='submit' id='show_button' name='Submit' value='Show Character' onClick='show()'>";
			document.getElementById("show_char").style.visibility = "visible";
			document.getElementById("letter").style.visibility = "hidden";
			if (hasWord)
				document.getElementById("word").style.visibility = "hidden";
			document.getElementById("show_button").focus();
		}
		else{
			hidden = false;
			document.getElementById("letter").style.visibility = "visible";
			if (hasWord)
				document.getElementById("word").style.visibility = "visible";
			document.getElementById("show_char").innerHTML = "";
			document.getElementById("show_char").style.visibility = "hidden";
			document.getElementById("advance").focus();
		}
}

function addRanges(start, finish){
	for (i = start; i < finish; i++){
		currentArray.push(i);	
	}
}

function add(group){
	if  (group == 0){
		addRanges(0,range[group]);
		for (i = 0; i < range[group]; i++){
			jj = "letter" + i;
			document.getElementById(jj).style.visibility = "visible"
		}
	}
	else {
			if (group == 0){
				start = 0;
			}
			else  start = range[group-1];
			addRanges(start, range[group]);
			for (i = start; i < range[group]; i++){
				jj = "letter" + i;
				if (!_slideshow)
				document.getElementById(jj).style.visibility = "visible"
			}

	}

}
active = new Array();
function changeGroup(element){

	if (element.checked){
	
		active[element.value] = true;
		add(element.value);		
	}
	else{

		active[element.value] = false;
		// check to see that at least one group is active
		activated = false;
		for (i = 0; i < active.length; i++){
			if (active[i] == true)
				activated = true;
		}
		if (!activated){
			active[element.value] = true;
			element.checked = true;
			return;		
		}
		remove(element.value);	
		randomGenerator();
	}

}