// CONFIG VARIABLES
// =================

var dtxtrTermSubmitRequestURL = "http://www.dtxtrapp.com/Glossarysrv.asmx/submitTerm";
var dtxtrGlossaryRequestURL = "http://www.dtxtrapp.com/Glossarysrv.asmx/getSection";
var dtxtrQuizRequestURL = "http://www.dtxtrapp.com/Glossarysrv.asmx/getRandom";
var dtxtrTermLookupRequestURL = "http://www.dtxtrapp.com/Glossarysrv.asmx/getTerm";
	
var dtxtrQuizQuestionCount = 10;
var dtxtrQuizCorrectCount = 0;
var dtxtrQuizTerms;
		



// DEBUG
//	dtxtrTermLookupRequestURL = "termtest.xml";

function dtxtrTermSubmitTerm(theTerm, theDef) {
	
	//alert("[dtxtrGlossaryRequestTermsForLetter]: Getting Terms for "+theLetter);
	//alert("[dtxtrGlossaryRequestTermsForLetter]: Requesting from "+dtxtrGlossaryRequestURL);
	var glossarySubmitRequest = new Ajax.Request(dtxtrTermSubmitRequestURL,
														{
															method:"get",
															parameters: {Term:theTerm, Definition:theDef},
															
															onSuccess: function(transport){
																var response = transport.responseText || false;
																
																if(response == false) alert("[dtxtrTermSubmitTerm]: Response not XML?");
																else {
																	
																	//alert("[dtxtrGlossaryRequestTermsForLetter]: Response is OK:\n"+transport.responseXML);
																	var jsonStr = xml2json(transport.responseXML)
																	
																	jsonStr = "{"+jsonStr.substr(11);

																	var jsonObj = jsonStr.evalJSON();
																																			
																	//Check to see if a term is defined, i.e. no results are found
																	if(typeof(jsonObj.Glossary.GlossaryEntry)=="undefined"){
																		//If nothing is returned, add our "empty" element to the jsonString and call jsonStr.evalJSON
																	jsonStr = jsonStr.substr(0,jsonStr.length-3)+',"GlossaryEntry" : {"Term": "'+theTerm+'" , "Definition" : "Sorry, No entries for '+theTerm+'"}}}';										
																	
																	var jsonObj = jsonStr.evalJSON();
																	}
																																			
																		dtxtrTermSubmitParseAndReplace(jsonObj.Glossary.GlossaryEntry);
																}
															},
															onException: function(theInstance,theException) { alert("DEBUG: Exception!\n"+theException);
														 },
															onFailure: function(){ alert("DEBUG: Failed to connect to script:\n"+dtxtrGlossaryRequestURL) }
														});
	
}

function another(){
	$("dtxtrTermSubmitResultsCopy").innerHTML ="";
	$("addTermForm").show();
}

function dtxtrTermSubmitParseAndReplace(theTerm) {
	
	//alert("[dtxtrGlossaryParseAndReplace]: Definition Count = "+theArray.length);
	var stringy = "<p><strong>Thanks for your response.<"+"/strong><"+"/p><p>"+theTerm.Definition +"<br /><a href=\"javascript:another()\">Add Another Term<"+"/a><"+"/p>";
	//Hide the original panel
	$("addTermForm").hide();
	$("dtxtrTermSubmitResultsCopy").innerHTML = stringy;
	
	if($("dtxtrTermLookupInput")) {
		try {
			$("dtxtrTermLookupInput").value = "Enter a TXT Phrase";
			$("dtxtrTermLookupInput").className = "inactive";
		} catch(e) {
			alert("[dtxtrTermSubmitParseAndReplace 1]: "+e.name);
		}
	} 
	
	if($("dtxtrTermSubmitInput") && $("dtxtrDefSubmitInput")){
	
		try {
			$("dtxtrTermSubmitInput").value = "";
			$("dtxtrDefSubmitInput").value = "";
		} catch(e) {
			alert("[dtxtrTermSubmitParseAndReplace 2]: "+e.name);
		}

	}
}
	











function dtxtrTermLookupGetTerm(theTerm) {
		
		//alert("[dtxtrGlossaryRequestTermsForLetter]: Getting Terms for "+theLetter);
		//alert("[dtxtrGlossaryRequestTermsForLetter]: Requesting from "+dtxtrGlossaryRequestURL);
		var glossaryRequest = new Ajax.Request(dtxtrTermLookupRequestURL,
															{
																method:"get",
																parameters: {Term:theTerm},
																
																onSuccess: function(transport){
																	var response = transport.responseText || false;
																	
																	if(response == false) alert("[dtxtrGlossaryRequestTermsForLetter]: Response not XML?");
																	else {
																		
																		//alert("[dtxtrGlossaryRequestTermsForLetter]: Response is OK:\n"+transport.responseXML);
																		var jsonStr = xml2json(transport.responseXML)
																		
																		jsonStr = "{"+jsonStr.substr(11);

																		var jsonObj = jsonStr.evalJSON();
																																				
																		//Check to see if a term is defined, i.e. no results are found
																		if(typeof(jsonObj.Glossary.GlossaryEntry)=="undefined"){
																			//If nothing is returned, add our "empty" element to the jsonString and call jsonStr.evalJSON
																		jsonStr = jsonStr.substr(0,jsonStr.length-3)+',"GlossaryEntry" : {"Term": "'+theTerm+'" , "Definition" : "Sorry, No entries for '+theTerm+'"}}}';										
																		
																		var jsonObj = jsonStr.evalJSON();
																		}
																																				
																			dtxtrTermLookupParseAndReplace(jsonObj.Glossary.GlossaryEntry);
																	}
																},
																onException: function(theInstance,theException) { alert("DEBUG: Exception!\n"+theException);
															 },
																onFailure: function(){ alert("DEBUG: Failed to connect to script:\n"+dtxtrGlossaryRequestURL) }
															});
		
	}
	
	
	function dtxtrTermLookupParseAndReplace(theTerm) {
		
		//alert("[dtxtrGlossaryParseAndReplace]: Definition Count = "+theArray.length);
		var stringy = "<div class=\"termresponse\"><strong>"+theTerm.Term+"<"+"/strong> = "+theTerm.Definition +"</div>";

		$("dtxtrTermLookupResultsCopy").innerHTML = stringy;
		try{
		$("dtxtrTermLookupInput").value = "Enter a TXT Phrase";
		$("dtxtrTermLookupInput").className = "inactive";
		}catch(e){
			alert(e.name);
		}
	}









// DEBUG
//dtxtrGlossaryRequestURL = "testxml.xml";

function dtxtrGlossaryLetterClick(theElement) {
	
	var query = theElement.innerHTML;

	//alert("[dtxtrGlossaryLetterClick]: Getting Terms for "+query);
	
	dtxtrGlossaryRequestTermsForLetter(query);

}
function dtxtrGlossaryNumSymClick(theElement) {
	
	var query = '#';

	//alert("[dtxtrGlossaryLetterClick]: Getting Terms for "+query);
	
	dtxtrGlossaryRequestTermsForLetter(query);

}		


function dtxtrGlossaryRequestTermsForLetter(theLetter) {
	
	//alert("[dtxtrGlossaryRequestTermsForLetter]: Getting Terms for "+theLetter);
	//alert("[dtxtrGlossaryRequestTermsForLetter]: Requesting from "+dtxtrGlossaryRequestURL);
	var glossaryRequest = new Ajax.Request(dtxtrGlossaryRequestURL,
														{
															method:"get",
															parameters: {Section:theLetter},
															
															onSuccess: function(transport){
																var response = transport.responseText || false;
															
																if(response == false) alert("[dtxtrGlossaryRequestTermsForLetter]: Response not XML?");
																else {
																	
																	//alert("[dtxtrGlossaryRequestTermsForLetter]: Response is OK:\n"+transport.responseXML);
																	var jsonStr = xml2json(transport.responseXML)
																	jsonStr = "{"+jsonStr.substr(11);
																		
																	var jsonObj = jsonStr.evalJSON();																			
															
																	//Event.observe(window,'load',dtxtrGlossaryParseAndReplace(jsonObj.Glossary.GlossaryEntry));
																dtxtrGlossaryParseAndReplace(jsonObj.Glossary.GlossaryEntry);																			

																}
														
															},
															onException: function(theInstance,theException) { alert("DEBUG: Exception!\n"+theException.message); },
															onFailure: function(){ alert("DEBUG: Failed to connect to script:\n"+dtxtrGlossaryRequestURL) }
														});
	
}


function dtxtrGlossaryParseAndReplace(theArray) {
	
	//alert("[dtxtrGlossaryParseAndReplace]: Definition Count = "+theArray.length);
		

	$("dtxtrGlossaryDefinitions").update("");
	try{
	var newTR;
	var newTH;
	var newTD;
	var alt = false;
	
	for(var i=0;i<theArray.length;i++) {
	
		//start filter for adult words
		if (theArray[i].Definition.indexOf("#@&!") == -1) {
		
			newTR = document.createElement("TR");
			newTH = document.createElement("TH");
			newTD = document.createElement("TD");
			
			newTH.innerHTML = theArray[i].Term;
			newTD.innerHTML = theArray[i].Definition;
			
			if(alt == true) newTR.className = "alt";
			
			newTR.appendChild(newTH);
			newTR.appendChild(newTD);
			$("dtxtrGlossaryDefinitions").appendChild(newTR);
			
			alt = !alt;
		
		//end filter for adult words
		}

		
	}
	
		}catch (e){
			alert(e.toString);
		}
	

}

	
	
	
	
	
	
	
	


// DEBUG
//dtxtrQuizRequestURL = "testquiz.xml";

function dtxtrQuizLetterClick(theElement) {
	
	var query = theElement.innerHTML;

	//alert("[dtxtrQuizLetterClick]: Getting Terms for "+query);
	
	dtxtrQuizRequestTermsForLetter(query);

}


function dtxtrQuizPopulateQuiz() {
	
	//alert("[dtxtrQuizRequestTermsForLetter]: Getting Terms for "+theLetter);
	//alert("[dtxtrQuizRequestTermsForLetter]: Requesting from "+dtxtrQuizRequestURL);
	var glossaryRequest = new Ajax.Request(dtxtrQuizRequestURL,
														{
															method:"get",
															parameters: {Limit:dtxtrQuizQuestionCount},
															
															onSuccess: function(transport){
																var response = transport.responseText || false;
																
																if(response == false) alert("[dtxtrQuizRequestTermsForLetter]: Response not XML?");
																else {
																	
																	//alert("[dtxtrQuizRequestTermsForLetter]: Response is OK:\n"+transport.responseXML);
																	var jsonStr = xml2json(transport.responseXML)
																	jsonStr = "{"+jsonStr.substr(11);
																	
																	var jsonObj = jsonStr.evalJSON();
																	dtxtrQuizTerms = jsonObj.Glossary.GlossaryEntry;
																	
																	dtxtrQuizParseAndReplace(dtxtrQuizTerms);
																	
																}
															},
															onException: function(theInstance,theException) { alert("DEBUG: Exception!\n"+theException); },
															onFailure: function(){ alert("DEBUG: Failed to connect to script:\n"+dtxtrQuizRequestURL) }
														});
	
}


function dtxtrQuizParseAndReplace(theArray) {
	
	//alert("[dtxtrQuizParseAndReplace]: Definition Count = "+theArray.length);

	//$("dtxtrQuizQuestions").innerHTML = "";
	
	var newTR;
	var newTextInput;
	var newTD;
	var newRow = true;
	try{
	for(var i=0;i<theArray.length;i++) {
		
		if(newRow == true) {
			newTR = document.createElement("TR");
			$("dtxtrQuizQuestions").appendChild(newTR);
		}
		
		newTD = document.createElement("TD");
			newTD.id = "dtxtrQuizQuestion"+i;
		newTextInput = document.createElement("INPUT");
			newTextInput.type = "text";
			newTextInput.name = "dtxtrQuizQuestionInput"+i;
			newTextInput.id = "dtxtrQuizQuestionInput"+i;
		newTD.appendChild(newTextInput);
		
		newTD.innerHTML += " = "+theArray[i].Definition;
		
		newTR.appendChild(newTD);
		
		newRow = !newRow;
	}
}catch(e){
	alert("[dtxtrQuizParseAndReplace 2]: "+e.name);
}	
	
	if(newRow == false) {
		// we need one more <td>
		newTD = document.createElement("TD");
		newTD.innerHTML = "&nbsp;";
		newTR.appendChild(newTD);
	}

}




function dtxtrQuizCheckAnswers() {

	$("dtxtrQuizSubmitButton").style.display = "none";

	dtxtrQuizCorrectCount = 0;

	//alert("[dtxtrQuizCheckAnswers 0]: dtxtrQuizTerms.length = "+dtxtrQuizTerms.length);

	for(var i=0;i<dtxtrQuizTerms.length;i++) {
		
		if($("dtxtrQuizQuestionInput"+i).value.toLowerCase() == dtxtrQuizTerms[i].Term.toLowerCase()) {
		
			try {
			$("dtxtrQuizQuestion"+i).innerHTML = "<strong>"+dtxtrQuizTerms[i].Term+"<"+"/strong> = "+dtxtrQuizTerms[i].Definition;
			$("dtxtrQuizQuestion"+i).innerHTML += "<span>Correct!<"+"/span>";
			$("dtxtrQuizQuestion"+i).className = "response correct";
			
			} catch(e) { window.alert("[dtxtrQuizCheckAnswers 1]: "+e.name); }
			
			dtxtrQuizCorrectCount++;
			
			
			
		} else {
			
			try {
			$("dtxtrQuizQuestion"+i).innerHTML = "<strong>"+$("dtxtrQuizQuestionInput"+i).value+"<"+"/strong> = "+dtxtrQuizTerms[i].Definition;
			$("dtxtrQuizQuestion"+i).innerHTML += "<span>Incorrect.  The correct answer is <strong>"+dtxtrQuizTerms[i].Term+"<"+"/strong><"+"/span>";
			$("dtxtrQuizQuestion"+i).className = "response incorrect";
			} catch(e) { window.alert("[dtxtrQuizCheckAnswers 1]: "+e.name); }
		}
	
	}

			$("dtxtrQuizAnswerCount").innerHTML = "You answered "+dtxtrQuizCorrectCount+" out of "+dtxtrQuizTerms.length+" correctly.<br> <a href=\"javascript:dtxtrResetQuiz()\">Take the quiz again!</a>";

}	


function dtxtrQuizReset() {
	$("dtxtrQuizQuestions").innerHTML = "";
	$("dtxtrQuizAnswerCount").innerHTML = "";
	dtxtrQuizPopulateQuiz();
	$("dtxtrQuizSubmitButton").style.display = "inline";
}


function dtxtrResetQuiz() {/*Added By Wyatt*/
		var rows = $("dtxtrQuizQuestions").childElements($("dtxtrQuizQuestions"));
		
			for( var i = 0; i<rows.length; i++){
				rows[i].hide();
				rows[i].remove();
			}	
			if ($("dtxtrQuizAnswerCount").innerHTML != "&nbsp;"){
				$("dtxtrQuizAnswerCount").innerHTML = "&nbsp;";
			}
			dtxtrQuizPopulateQuiz();
			$("dtxtrQuizSubmitButton").style.display = "inline";
			}
			
