var d;
var answerStr;
function FBQuestion_Type()
{
	this.Type="FillBlank";
	this.PuncMethod;
	this.CaseMethod;
	this.SpaceMethod;
	this.Name;
	this.RightAnswers = new Array();
	this.RightFeedbacks = new Array();
	this.WrongAnswers = new Array();
	this.WrongFeedbacks = new Array();
	this.DefaultFeedback;
}
function MCQuestion_Type()
{
	this.Type="MultipleCorrect";
	this.Name;
	this.Answers = new Array();
	this.RightFeedback;
	this.WrongFeedback;
}
function SCQuestion_Type()
{
	this.Type="SingleCorrect";
	this.Name;
	this.RightAnswer;
	this.Feedbacks = new Array();
}

function GCQuestion_Type()
{
	this.Type="GraphicalChoice";
	this.Name;
	this.RightAnswer;
	this.Feedbacks = new Array();
}

function IMQuestion_Type()
{
	this.Type="ItemMatch";
	this.Name;
	this.Answers = new Array();
	this.RightFeedback;
	this.WrongFeedback;
}
function ProcessAnswer(qid)
{
	answerStr = '';
	//d=window.open("Answer_Feedback.htm", "Answer_Feedback", "resizable=yes,scrollbars=yes,width=400,height=350").document;
	//d.write('<body bgcolor="#fffbf0" onLoad="self.focus()">');
	answerStr += '<body bgcolor=\"#fffbf0\" onLoad=\"self.focus()\">';
	if (qid.Type=="FillBlank") ProcessFillBlank(qid); 
	if (qid.Type=="ItemMatch") ProcessItemMatch(qid); 
	if (qid.Type=="SingleCorrect") ProcessSingleCorrect(qid); 
	if (qid.Type=="MultipleCorrect") ProcessMultipleCorrect(qid); 
	if (qid.Type=="GraphicalChoice") ProcessGraphicalChoice(qid); 
	SendFooter();
        //alert(answerStr);
	d=window.open("Answer_Feedback.htm", "Answer_Feedback", "resizable=yes,scrollbars=yes,width=400,height=350");
}
function SendRight(Message)
{
	//d.write('<center>');
	answerStr += '<center>\n';
	//d.write('<table width="75%" border=4 cellpadding=2>');
	answerStr += '<table width=\"75%\" border=4 cellpadding=2>\n';
	//d.write('<tr align="center" valign="middle"><td><img src="../sunt.gif"  width=80 height=80></td>');
	answerStr += '<tr align=\"center\" valign=\"middle\"><td><img src=\"../sunt.gif\"  width=80 height=80></td>\n';
	//d.write('<td>'+Message+'</td></tr>');
	answerStr += '<td>'+Message+'</td></tr>\n';
	//d.write('</table>');
	answerStr += '</table>\n';
}
function SendWrong(Message, Hint)
{
	var Alignment;
	if (Hint.length>120) 
		Alignment="Left"; 
	else 
		Alignment="Center";
	//d.write('<center>');
	answerStr += '<center>\n';
	//d.write('<table width="75%" border=4 cellpadding=2>');
	answerStr += '<table width=\"75%\" border=4 cellpadding=2>\n';
	//d.write('<tr align="'+Alignment+'" valign="middle"><td><img src="../raint.gif"  width=80 height=80></td>');
	answerStr += '<tr align=\"'+Alignment+'\" valign=\"middle\"><td><img src=\"../raint.gif\"  width=80 height=80></td>\n';
	//d.write('<td>'+Message+'</td></tr>');
	answerStr += '<td>'+Message+'</td></tr>\n';
	//d.write('<tr align="'+Alignment+'" valign="middle"><td><img src="../keyt.gif"  width=80 height=80></td>');
	answerStr += '<tr align=\"'+Alignment+'\" valign=\"middle\"><td><img src=\"../keyt.gif\"  width=80 height=80></td>\n';
	//d.write('<td>Hint: '+Hint+'</td></tr>');
	answerStr += '<td>Hint: '+Hint+'</td></tr>\n';
	//d.write('</table>');
	answerStr += '</table>\n';
}
function SendFooter()
{
	//d.write('<br><br>');
	answerStr += '<br><br>\n';
	//d.write('<center>');
	answerStr += '<center>\n';
	//d.write('<form name = formClose>');
	answerStr += '<form name = \"formClose\">\n'
	//d.write('<table><tr valign=middle border=0><td>');
	answerStr += '<table><tr valign=\"middle\" border=0><td>\n';
	//d.write('<input type=text name= "CloseMessage" value   = "Click to close -->"Size    = 15>');
	answerStr += '<input type=text name= \"CloseMessage\" value   = \"Click to close -->\" Size = 15>\n'
	//d.write('</td><td>');
	answerStr += '</td><td>\n';
	//d.write('<input type = button value   = "Close" onClick = self.close()>');
	answerStr += '<input type = button value   = \"Close\" onClick = self.close()>\n' ;
	//d.write('</td></table>');
	answerStr += '</td></table>\n';
	//d.write('</form>');
	answerStr += '</form>\n';
	//d.write('</center>');
	answerStr += '</center>\n';
	//d.write('<SCRIPT>');
	answerStr += '<SCRIPT>\n';
	//d.write('window.document.formClose.CloseMessage.focus();');
	answerStr += 'window.document.formClose.CloseMessage.focus();\n';
	//d.write('window.document.formClose.CloseMessage.blur();');
	answerStr += 'window.document.formClose.CloseMessage.blur();\n';
	//d.write("\</SCRIPT\>");
	answerStr += '</SCRIPT>\n';
	//d.write('</center>');
	//d.write('</center>');
	//d.close();
}
function FixGrammar (String, qid)
{
	var c;
	var i=1;

	while (String.charAt(i)==' ') {
		String=String.substring(i+1, String.length+1);
		i++;
	}
	while (String.charAt(String.length)==' '){
		String=String.substring(0, String.length);
		i++;
	}
	if (qid.SpaceMethod=="SINGLE")  

		for (i=0;i<String.length;i++)
			if (String.charAt(i)==' '){
				if (String.charAt(i+1)==' '){
 					String=String.substring(0,i) +
					String.substring(i+1,String.length);
					i--;
				}
			}
	if (qid.SpaceMethod=="NONE"){
		for (i=0;i<String.length;i++)
			if (String.charAt(i)==' '){
				String=String.substring(0,i)+
				String.substring(i+1,String.length)
				i--;
			}
	}			
	if (qid.CaseMethod=="N") String=String.toLowerCase();

 
	
 	if (qid.PuncMethod=="NONE")
            for (i = 0;i<String.length;i++){
			c=String.charAt(i);
			if (   c=='!' || c=='@' || c=='#' || c=='$' || c=='%'
			    || c=='^' || c=='&' || c=='*' || c=='(' || c==')'
			    || c=='~' || c=='`' || c=='_' || c=='-' || c=='='
			    || c=='+' || c=='{' || c=='[' || c=='}' || c==']' 
			    || c==';' || c==':' || c=='\'' || c=='"' || c==',' 
			    || c=='<' || c=='.' || c=='>' || c=='/' || c=='?' 
			    || c=='\\' || c=='|' || c=='^' || c=='^' || c=='^'){

				String=String.substring(0,i)+
					 String.substring(i+1,String.length);
				i--;
			}
	}
    	return(String);
 
}
function ProcessFillBlank(qid)  
{

	var Answer=self.document[qid.Name+"form"][qid.Name+"Element"].value;
	var FoundAnswer=0;
	Answer=FixGrammar(Answer, qid);
	for (i=0;i<qid.RightAnswers.length;i++) {
		if (Answer==qid.RightAnswers[i]) {
			FoundAnswer=1;
			SendRight(qid.RightFeedbacks[i]);
			break;
		}
	}


	if (FoundAnswer==0)
		for (i=0;i<qid.WrongAnswers.length;i++) {
			if (FixGrammar(Answer, qid)==qid.WrongAnswers[i]) {
				FoundAnswer=1;
				SendWrong('Sorry that is incorrect.',qid.WrongFeedbacks[i]);
				break;
			}
		}
	if (FoundAnswer==0)
		SendWrong('Sorry, that is incorrect.',qid.DefaultFeedback);
}	
function ProcessItemMatch (qid)
{
	var AnswerForm=self.document[qid.Name+"form"];
	var RightCount=0;
	var i;
	for (i=0;i<qid.Answers.length;i++){
		if (FixGrammar(AnswerForm[qid.Name+i].value, qid)==qid.Answers[i])
			RightCount++;
	}
	if (RightCount==qid.Answers.length) 
			SendRight (qid.RightFeedback);
	else
		if (RightCount==1)
			SendWrong ('Sorry, that is incorrect', 'You matched 1 item correctly.\n'+qid.WrongFeedback);
		else
			SendWrong ('Sorry, that is incorrect', 'You matched '+RightCount+' item(s) correctly.\n'+qid.WrongFeedback);

}
function ProcessMultipleCorrect (qid)
{
	var AnswerForm=self.document[qid.Name+"form"];
	var AnswerCorrect=1;
	var i;

	for (i=1;i<qid.Answers.length;i++){
		if (qid.Answers[i]==1)
			if (AnswerForm[qid.Name+"Element"+i].checked==0)
				AnswerCorrect=0;
			else;
		else
			if (AnswerForm[qid.Name+"Element"+i].checked==1)
				AnswerCorrect=0;
	}
	if (AnswerCorrect==1) 
		SendRight (qid.RightFeedback);
	else
		SendWrong ('Sorry, that is incorrect', qid.WrongFeedback);

}
function ProcessSingleCorrect (qid)
{
	var Answer=-1;
	if (self.document[qid.Name+"form"][qid.Name+"Element"][(qid.RightAnswer)].checked==1)
		SendRight (qid.Feedbacks[qid.RightAnswer]);
	else {
		for (i=0;i<qid.Feedbacks.length;i++)
			if (self.document[qid.Name+"form"][qid.Name+"Element"][i].checked==1){
				Answer=i;
				i=qid.Feedbacks.length;
			}
		if (Answer==-1)  
			SendWrong ('Sorry, that is incorrect', 'No answer was submitted.  Please try again');
		else 
			SendWrong ('Sorry, that is incorrect', qid.Feedbacks[Answer])
	}
}

function GraphicalChoiceSetup (qid, choice, alt)
{

	qid.Response = choice;
	var obj;
	obj = eval("document." + qid.Name + "form." + qid.Name + "choice");
	obj.value = alt;
}

function ProcessGraphicalChoice (qid)
{
	d=window.open("", "Answer_Feedback", "resizable=yes,scrollbars=yes,width=400,height=350").document;
	d.write('<body bgcolor="#fffbf0" onLoad="self.focus()">')
	if (qid.Response == qid.RightAnswer)
		
		SendRight (qid.Feedbacks[qid.RightAnswer]);
	else {
		SendWrong ('Sorry, that is incorrect', qid.Feedbacks[qid.Response])
	}
	SendFooter();
}

//This is the stand alone version.
//It does not use codebase.
//It does not use the courseCode variable.
function playAudio(clipFileName, autoStart, audioBackgroundColor, audioBackgroundImage, courseCode, LessonOrCourse)
{
   parent.audioframe.document.write("<html>\n");
 
   if (LessonOrCourse == "L")
   {
      parent.audioframe.document.write("<body bgcolor=\"" +          audioBackgroundColor + "\" background=\"../" +          audioBackgroundImage + "\">");
   }
   else
   //LessonOrCourse should equal C
   {
     parent.audioframe.document.write("<body bgcolor=\"" +          audioBackgroundColor + "\" background=\"" +          audioBackgroundImage + "\">");
   }

   if (clipFileName != "") {
      parent.audioframe.document.write("<center>\n");
      parent.audioframe.document.write("<applet\n");
      parent.audioframe.document.write("align=baseline\n");
      parent.audioframe.document.write("code=SWAudio.class\n");
      parent.audioframe.document.write("id=SWAudio\n");
      parent.audioframe.document.write("height=21\n");
      parent.audioframe.document.write("width=102>");
      parent.audioframe.document.write("\n");
      parent.audioframe.document.write("<PARAM NAME=\"autoplay\" VALUE=\"" + autoStart + "\">\n");
      parent.audioframe.document.write("<PARAM NAME=\"controls\" VALUE=\"true\">\n");
      parent.audioframe.document.write("<PARAM NAME=\"soundfile\" VALUE=\"" +  clipFileName + "\">\n");
      parent.audioframe.document.write("</applet>\n");
      parent.audioframe.document.write("</center>\n");
   }
   parent.audioframe.document.write("</body>\n");
   parent.audioframe.document.write("</html>\n");
   parent.audioframe.document.close();
}

function ShowLogin() 
{
	var w,d;
	document.write("<html><body><center><h1>Awaiting login...</h1></center></body></html>");
	w=window.open("", "Login", "menubar=no,resizable=no,scrollbars=no,width=300,height=300");
	d=w.document;
	var UserID;

	d.write("<html>");
	d.write("<head>");
	d.write("<scr" + "ipt language=\"JavaScript\" src=\"JavaFile.js\"></scr" + "ipt>");
	d.write("<scr" + "ipt language=\"javascript\">");
	d.write("function LoginUser()");
	d.write("{");
	d.write("	var UserID;");
	d.write("	var Password;");
	d.write("	UserID=document.Login.UserID.value;");
	d.write("	Password=document.Login.Password.value;");
	d.write("	var r;");
	d.write("	r=opener.top.engine.MobileLearningEngine.DoLogin(UserID, Password, document.Login.CourseCode.value);");
	d.write("	if (r) {");
	d.write("		WriteCookie (\"MLELOGIN\", UserID + '|' + Password, '', \"\",\"/\");");
	d.write("		//alert('cookie set');");
	d.write("		opener.history.go(-1);");
	d.write("		opener.focus();");
	d.write("		window.close();");
	d.write("	} else {");
	d.write("	     window.focus();");
	d.write("	}");
	d.write("}");
	d.write("</scr" + "ipt>");

	d.write("</head>");
	d.write("<body>");
	d.write("");
	d.write("<form name=Login>");
	d.write("Enter Userid:<input type=text name=UserID><br>");
	d.write("Enter Password: <input type=password name=Password><br>");
	d.write("<input type=hidden name=CourseCode value=\"MF99\">");
	d.write("<input type=button onclick=\"LoginUser();\" value=\"Login\">");

	d.write("</form>");
	d.write("</body>");
	d.write("</html>");
	d.close();


}

function CheckLogin(CourseCode, LessonNumber)
{	
    var r;
    var AuthInfo;
    r = ReadCookie('MLELOGIN');
    if (!r) 
    {
	ShowLogin();
    } else {
	AuthInfo = r.split("|");
	if (top.engine.MobileLearningEngine.DoLogin(AuthInfo[0], AuthInfo[1], CourseCode))
	{
	   if (LessonNumber!='') 
	   {
		top.engine.MobileLearningEngine.StoreTime(CourseCode,LessonNumber);
	   };
	} else {
		ShowLogin();
	}
    }		
}

