if (opener!=null){
	var szQueryString = opener.location.search;
}

var gtrackstatus,API,gorigtime,ginitialcoursecomplete,gtrackdata

var gfinishtext = '<span class="congratulations"><br><br>Congratulations, you have finished this course. Click <a href="#" onclick="parent.OpenCertificate();return false" class="congratulations">here</a> to view and print your certificate of completion</SPAN>';

API = null;

function FSBranch()
  {	

	var szCompletion_String='';
	
	gorigtime = new Date().getTime();

	
	//if no query string, add ?.
	if (szQueryString==''){
		szQueryString='?'
	}
	
	API = FindAPI(self);

	if (API!=null){		
		//CourseDefinition.AddTracking();
		API.LMSInitialize("");
		var resultdata = API.LMSGetValue('cmi.suspend_data');
		gtrackstatus='online'
		DataLoaded(resultdata);	
		//main.location.href = szWBT_Start_Page
		//
		

		//main.location.href = szWBT_Start_Page;
	}
	//else if ((API==null)&&(szQueryString!='?')&&(navigator.appVersion.match('5.0')==null)){
   	 	//parent.ReadFrame.document.location.href = 'sendframe.html';
		//gtrackstatus='online'}
	else{
		gtrackstatus = 'offline';

		//CourseDefinition.AddTracking();

		main.location.href = szWBT_Start_Page;
	}
	
}

function FindAPI(hwndWindow)
  {

    if (hwndWindow == null)
      {
        return null;
      }
     else if (hwndWindow.API != null)
      {
        return hwndWindow.API;
      }
	 else if (hwndWindow.opener !=null){	 	
			return FindAPI(hwndWindow.opener);		
	 }
     else if(hwndWindow.parent == null)
      {
        return null;
      }
	 
     else
      {
        if (hwndWindow == hwndWindow.parent)
          {
            return null;
          }

        return FindAPI(hwndWindow.parent);
      }
  }
  

  function EndSession(){

	if (API!=null){
		API.LMSCommit("")
		API.LMSFinish("")
	}
	
	//close the browser windows

	if (opener!=null){
		opener.CloseWindow();
	}
		
	window.parent.top.close();					
	//return true;	
}

function Finalize_Course()
  {
      if (parent.ReadFrame.document.Link != null)
      {
        Save_Data();
        //API.LMSFinish();
      }
  }
  
  
function DataLoaded(inputdata){

	//get content of receive frame
	var results = null;
	
	if (inputdata!=''){
		var check = inputdata.match(/store_data=([\w+|,|:|;|-]+)/);

		if (check!=null){

			results = check[1];
			
		}
	}
	else{
		results = null;
	}

	//CourseDefinition.AddTracking(results);
	gtrackdata = results;

	//ginitialcoursecomplete = CourseDefinition.GetCompletion();
	
	//go to loaded page.
	main.location.href = szWBT_Start_Page;

}

function Save_Score(resultstring,result,score){

	//save score if a score has been passed in.
		
	if (API != null){
	
		//check that there is no current score.
		//if there is don't overwrite
		
		var cscore = API.LMSGetValue("cmi.core.score.raw");
		
		if ((cscore=="") || (cscore != null) || (cscore != " ")){
			API.LMSSetValue('cmi.core.score.raw',score)
		}
	}
		
	Save_Data(resultstring,result);

}

function Save_Data(resultstring,result){
	

	//add core lesson info
	//var resultstring = CourseDefinition.GetTracking();
	//var result = CourseDefinition.GetCompletion(8);

	if ((API == null)&&(gtrackstatus == "online")){
		var outputstring = '[core]\n';
		outputstring+='lesson_status='+result+'\n';
		outputstring+='[CORE_LESSON]\n';
		outputstring+='store_data='+resultstring;
		outputstring+='\n';
		
		//set content of sendframe to outputstring
		ReadFrame.document.theForm.Aicc_Data.value = outputstring;
		
		ReadFrame.document.getElementById('theForm').submit()
	}
	else if (API != null){

		//API functions here.	
		//save resultstring

		var outputstring='store_data='+resultstring;
		API.LMSSetValue('cmi.suspend_data',outputstring)

		var coursetime = GetTimeString();
		API.LMSSetValue('cmi.core.session_time',coursetime)

		if (result=='c'){
			SetCourseCompletionState("completed");
			ginitialcoursecomplete = 'c';
			
			//do completion task here.
			
		}
		else{
			SetCourseCompletionState("incomplete");
		}

		
		API.LMSCommit("")
	}
	
  		
}

function SetCourseCompletionState(status){
	
	if (API != null){
		API.LMSSetValue('cmi.core.lesson_status',status);
	}
	else{
		//completion state under HACP set with every write.
	}
}

function AddZero(input){
	output='';
	input = input.toString();
	
	if (input.length==1){
		output = '0' + input}
	else{
		output = input
	}

	return output;
}


function GetTimeString(){
	
	var wtime = new Date();
	
	var endtime = wtime.getTime();
	
	var timediff = (endtime - gorigtime);
	wtime.setTime(timediff);

	var outputstring = AddZero(wtime.getUTCHours())+':'+AddZero(wtime.getUTCMinutes())+':'+AddZero(wtime.getUTCSeconds())  ;
	return outputstring;
}

function setcompletionstate (szState)
  {
    //set the completionstate of current unitnum and/or lessonnum to 
    //state passed into the function.
    //"c" is complete.
    
    CourseDefinition.SetCompletion(glid,szState)
		
	if (gtrackstatus=='online'){	
		Save_Data();
	}
	
	//DrawUnitGraphics(null,'lessons')
  }



function getcompletionstate (nUnit, nModule, nLesson)
  {
    //get the completion state for the unitnum/lessonnum
	return (CourseDefinition.GetCompletion(nUnit,nModule,nLesson));
	
  }
  

var sim_numq;
var sim_numc;

function ResetSimScores(){

	//reset simulation tracking variables
	sim_numq=0;
	sim_numc=0;

}


function AddSimScore (responsetype){
	
	//increment sim_numq
	if (sim_numq==null){
		return false;
	}
	
	sim_numq++;

	if (responsetype=='c'){
	
		sim_numc++;
		
	}
	

}	



function ReturnSimScores (mode){

	//return the results of the simulation practice exercise.

	if (mode == 'ints'){
		return (sim_numc + ' ' + sim_numq);}
	else if (mode == 'percent'){
		return (sim_numc / sim_numq) * 100;
	}

}

function DisplaySimResults (){

	perc = ReturnSimScores ('percent');
	
	if (ContentController==null){
		return false
	}
	
	fbobj= main.document.getElementById('feedback');
	promptobj = main.document.getElementById('prompt1');
	grobj = main.document.getElementById('graphic1');

	//if (perc >= parent.gnpass){
	
	if (perc >= 70){

		resulttext = 'Excellent performance! Your score on this assessment was '+parseInt(perc)+'%.<br><br> You’ve demonstrated a good knowledge of the material covered in this Assessment.';
		
		//set prompt text
		//prompttext = 'Click Main Menu to select a new topic';
		
		//play correct audio
		//show correct graphic
		grobj.innerHTML = '<img src="../../graphics/shared/passman.jpg">';
		setcompletionstate('c');					
	}
	else{
		resulttext = 'Your score on this assessment was ' + parseInt(perc) + '%.<br> This indicates that you may want to spend additional time studying some of the material covered in this Assessment.'
		grobj.innerHTML = '<img src="../../graphics/shared/failman.jpg">';					
	}
	
	var result = CourseDefinition.GetCompletion(8);
					
	if (result=='c'){
		//add more text to output field
		resulttext += gfinishtext;
	}
		
	fbobj.innerHTML = resulttext;
	
	if (promptobj!=null){
		promptobj.style.visibility="visible";
	}
}

