//SimShell
var interfaceWidth = 0;
var interfaceHeight = 53;

//SimPlayer
var pageMenuHighlightColor = "#ffcc66";
var pageMenuOverColor = "#cccccc";
var pageMenuDisabledColor = "#cccccc";
var pageMenuBlockOverColor = "";
var searchButtonGray = "";


// this variable is needed because the buttons, once cloned and removed cannot be removed again. 
// see moveButtons(), where it is incremented after one execution
var movedButtonsCounter = 0;


function SetInterface(){
	Track("SetInterface()");
	
	//Initialize the interface
	if (contentWidth == null){
		var temp = setContentSize.value.split("x");
		contentWidth = parseInt(temp[0]);
		contentHeight = parseInt(temp[1]);
		editMode = "course";	//Workaround for an issue with the SetInterface() causing to look for course.xml
	} else {
		if (editMode == "none"){
			ProcessCourseXML();
		} else {
			var temp = setContentSize.value.split("x");
			contentWidth = parseInt(temp[0]);
			contentHeight = parseInt(temp[1]);
		}
	}
	interfaceWidth = parseInt(West.currentStyle.width) + parseInt(East.currentStyle.width);
	interfaceHeight = parseInt(North.currentStyle.height) + parseInt(South.currentStyle.height);
	browserWidth = document.body.offsetWidth - 4;
	browserHeight = document.body.offsetHeight - 4;
	mouseStartPosX = parseInt(Control.currentStyle.left) + parseInt(ControlHelp.currentStyle.left) - 20;
	mouseStartPosY = parseInt(Control.currentStyle.top) + parseInt(ControlHelp.currentStyle.top) - 12;
	mousePosX = mouseStartPosX;
	mousePosY = mouseStartPosY;
	
	//Small routine to get the page menu highlight and mouse-over colors from the CSS file
	var temp = PageMenuList.className;	//Store the correct classname
	PageMenuList.className = "PageMenuHighlight";
	pageMenuHighlightColor = PageMenuList.currentStyle.backgroundColor;
	PageMenuList.className = "PageMenuOver";
	pageMenuOverColor = PageMenuList.currentStyle.backgroundColor;
	PageMenuList.className = "PageMenuDisabled";
	pageMenuDisabledColor = PageMenuList.currentStyle.color;

	// next set vars so menu block rollOver color is accessable
   PageMenuList.className = "PageMenuBlockOver";
   pageMenuBlockOverColor = PageMenuList.currentStyle.backgroundColor;

	PageMenuList.className = temp;		//Return the PageMenuList to the correct classname

	defaultProgressBarWidth = ProgressBackground.currentStyle.width;
   progressBackgroundWidthRatio = Number(browserWidth/parseInt(ProgressBackground.currentStyle.width));
	
	ResizeInterface();
	
	//Set the interface images to be loaded for the correct skin...
	controlHelpUp = currentSkin + "/help_up.png";
	controlHelpOver = currentSkin + "/help_over.png";
	controlCloseUp = currentSkin + "/close_up.png";
	controlCloseOver = currentSkin + "/close_over.png";
	controlNextUp = currentSkin + "/forward_up.png";
	controlNextOver = currentSkin + "/forward_over.png";
	controlPlayUp = currentSkin + "/play_up.png";
	controlPlayOver = currentSkin + "/play_over.png";
	controlPauseUp = currentSkin + "/pause_up.png";
	controlPauseOver = currentSkin + "/pause_over.png";
	controlBackUp = currentSkin + "/back_up.png";
	controlBackOver = currentSkin + "/back_over.png";
	controlFlowchartUp = currentSkin + "/flowchart_up.png";
	controlFlowchartOver = currentSkin + "/flowchart_over.png";
	controlSoundUp = currentSkin + "/sound_up.png";
	controlSoundOver = currentSkin + "/sound_over.png";
	controlSearchUp = currentSkin + "/search_up.png";
	controlSearchOver = currentSkin + "/search_over.png";
	controlSearchGray = currentSkin + "/search_gray.png";// gray state button for search button
   
   // added by Fred 1/23 for skin4 
   controlShowNtbUp = currentSkin + "/showtext_up.png";
   controlShowNtbOver = currentSkin + "/showtext_over.png";
  // alert("controlShowNtbOver is "+controlShowNtbOver)


	shellTOCUp = currentSkin + "/toc_up.png";
	shellTOCOver = currentSkin + "/toc_over.png";
	shellPrevTopicGray = currentSkin + "/prevtopic_g.png";
	shellPrevTopicUp = currentSkin + "/prevtopic_up.png";
	shellPrevTopicOver = currentSkin + "/prevtopic_over.png";
	shellNextTopicGray = currentSkin + "/nexttopic_g.png";
	shellNextTopicUp = currentSkin + "/nexttopic_up.png";
	shellNextTopicOver = currentSkin + "/nexttopic_over.png";
	pagemenuOver = currentSkin + "/pagemenu_over.png";
	pagemenuUp = currentSkin + "/pagemenu_up.png";
	dividerImg = currentSkin + "/divider.png";
	msgBoxContinueUp = currentSkin + "/msgbox_continue_up.png";
	msgBoxContinueOver = currentSkin + "/msgbox_continue_over.png";

	MessageBoxContinue.src = msgBoxContinueUp;
	MessageBoxContinue.alt = LanguageElement(28);
	IntroContinue.src = msgBoxContinueUp;
	IntroContinue.alt = LanguageElement(28);
	MCQuestionContinue.src = msgBoxContinueUp;
	MCQuestionContinue.alt = LanguageElement(28);
	ControlSearch.src = controlSearchUp;
	ControlSearch.alt = LanguageElement(24);
	ControlSound.src = controlSoundUp;
	ControlSound.alt = LanguageElement(12);
	ControlBack.src = controlBackUp;
	ControlBack.alt = LanguageElement(11);
	ControlPause.src = controlPauseUp;
	ControlPause.alt = LanguageElement(10);
	ControlPlay.src = controlPlayUp;
	ControlPlay.alt = LanguageElement(9);
	ControlNext.src = controlNextUp;
	ControlNext.alt = LanguageElement(8);
	ControlHelp.src = controlHelpUp;
	ControlHelp.alt = LanguageElement(7);
	ControlClose.src = controlCloseUp;
	ControlClose.alt = LanguageElement(6);
	ControlFlowchart.src = controlFlowchartUp;
	ControlFlowchart.alt = LanguageElement(23);
	ControlFlowchart.style.visibility = "hidden";
   ControlPageList.src = pagemenuUp;
   ControlPageList.alt = LanguageElement(40); 
   ControlShowNtb.src = controlShowNtbUp;
   ControlShowNtb.alt = LanguageElement(41);

	Divider1.src = dividerImg;
	Divider2.src = dividerImg;
	Divider3.src = dividerImg;
	Divider4.src = dividerImg;
	Divider5.src = dividerImg;
	Divider6.src = dividerImg;
	Divider7.src = dividerImg;
	Divider8.src = dividerImg;
	Divider9.src = dividerImg;
	Divider77.src = dividerImg;
	Divider1.style.visibility = "visible";
	Divider2.style.visibility = "visible";
	Divider3.style.visibility = "visible";
	Divider4.style.visibility = "visible";
	Divider5.style.visibility = "visible";
	Divider6.style.visibility = "visible";
	Divider77.style.visibility = "visible";
	
	ShowFullFlow.innerHTML = LanguageElement(22);
	
	if (parent.frames.length > document.frames.length){
		ShellTOC.src = shellTOCUp;
		ShellTOC.alt = LanguageElement(13);
		ShellBack.src = shellPrevTopicUp;
		ShellBack.alt = LanguageElement(14);
		ShellNext.src = shellNextTopicUp;
		ShellNext.alt = LanguageElement(15);
		Divider7.style.visibility = "inherit";
		ShellTOC.style.visibility = "inherit";
		ShellBack.style.visibility = "inherit";
		ShellNext.style.visibility = "inherit";
		
		var standAlone = true;		//If the shell is in standalone mode, we don't need to show the shell controls..
		
		try {
			standAlone = eval(parent.standAlone);
		} catch(e) {
			standAlone = true;
		}

		if (standAlone){
			ShellControl.style.visibility = 'hidden';
		} else {
			ShellControl.style.visibility = 'visible';
		}

 	} else {
		ShellControl.style.visibility = 'hidden';
 	}

	var preload = new Array();
	preload[1] = new Image(); preload[1].src = msgBoxContinueOver;
	preload[2] = new Image(); preload[2].src = currentSkin + "/mouse_-1.gif";
	preload[3] = new Image(); preload[3].src = currentSkin + "/mouse_0.gif";
	preload[4] = new Image(); preload[4].src = currentSkin + "/mouse_1.gif";
	preload[6] = new Image(); preload[6].src = controlHelpOver;
	preload[7] = new Image(); preload[7].src = controlCloseOver;
	preload[8] = new Image(); preload[8].src = controlNextOver;
	preload[9] = new Image(); preload[9].src = controlPlayOver;
	preload[10] = new Image(); preload[10].src = controlPauseOver;
	preload[11] = new Image(); preload[11].src = controlBackOver;
	preload[12] = new Image(); preload[12].src = controlSoundOver;
	preload[13] = new Image(); preload[13].src = controlSearchOver;
	preload[14] = new Image(); preload[14].src = controlFlowchartOver;
	preload[15] = new Image(); preload[15].src = shellTOCOver;
	preload[16] = new Image(); preload[16].src = shellPrevTopicOver;
	preload[17] = new Image(); preload[17].src = shellNextTopicOver;
	preload[18] = new Image(); preload[18].src = shellPrevTopicGray;
	preload[19] = new Image(); preload[19].src = shellNextTopicGray;
   preload[20] = new Image(); preload[20].src = pagemenuOver;
   preload[21] = new Image(); preload[21].src = pagemenuUp;
   preload[22] = new Image(); preload[22].src = controlShowNtbOver;
   preload[23] = new Image(); preload[23].src = controlShowNtbUp;
   preload[24] = new Image(); preload[24].src = controlSearchGray;


  	MouseImage.src = currentSkin + "/mouse_0.gif";
	
	moveButtons();
	ActivateButtons(simMode);
	
	window.onresize = ResizeInterface;
}

function ActivateButtons(simMode){
	Track("ActivateButtons(" + simMode + ")");
	//alert("ActivateButtons(" + simMode + ")");
	ProgressBackground.style.cursor = "auto";
	ProgressBackground.title = "";
	ControlShowNtb.style.visibility = "visible";
	ControlSound.style.visibility = "visible";
	assignment_nw_side.style.display="block";
	assignment_sw_side.style.display="block";  
	assignment_w_filler.style.display="block";  
	assignment_ne_side.style.display="block";  
	assignment_se_side.style.display="block";   
	assignment_e_filler.style.display="block";
	MC_se_side.style.display = "block";
	MC_ne_side.style.display = "block";
	MC_sw_side.style.display = "block";
	MC_nw_side.style.display = "block";
	MC_top_filler.style.display = "block";
	MC_bottom_filler.style.display = "block";


	switch(simMode){
		case "demo":
			ControlBack.style.visibility = "visible";
			if (paused == false){
				ControlPause.style.visibility = "visible";
				ControlPlay.style.visibility = "hidden";
			} else {
				ControlPause.style.visibility = "hidden";
				ControlPlay.style.visibility = "visible";
			}
			ControlNext.style.visibility = "visible";
			ControlHelp.style.visibility = "hidden";
			ControlClose.style.visibility = "visible";
			ControlSearch.src = controlSearchUp;
			ControlSearch.onmouseover = setMouseOver;
			ControlSearch.onmouseout = setMouseOut;
			ControlSearch.style.cursor = "hand";
			ControlSearch.style.visibility = "visible";
			ControlSearchBox.style.backgroundColor = "#ffffff";
			ControlSearchBox.disabled = false;
			ControlSearchBox.style.visibility = "visible";
			Divider77.style.visibility = "visible";
			ProgressBackground.style.cursor = "hand";
			Divider8.style.visibility = "visible";
			Divider9.style.visibility = "visible";
			ControlPageList.style.visibility = "visible";
			break;
			
		case "ex":
			ControlBack.style.visibility = "visible";
			ControlPause.style.visibility = "hidden";
			ControlPlay.style.visibility = "hidden";
			ControlNext.style.visibility = "hidden";
			if(Assignment.currentStyle.visibility=="visible"){			
				ControlHelp.style.visibility = "visible";
			}
			else{
				Assignment.style.visibility = "visible";
				NarrativeTextBoxLabel.style.visibility = "visible";
				ControlHelp.style.visibility = "visible";
			}
			ControlClose.style.visibility = "visible";
			ControlSearch.src = controlSearchGray;
			ControlSearch.style.visibility = "visible";
			ControlSearch.onmouseover = "";
			ControlSearch.onmouseout = "";
			ControlSearch.style.cursor = "default";
			ControlSearchBox.style.visibility = "visible";
			ControlSearchBox.style.backgroundColor = "#CCCCCC";
			ControlSearchBox.disabled = true;
			//ControlSearch.style.visibility = "hidden";
			//ControlSearchBox.style.visibility = "hidden";
			Divider77.style.visibility = "hidden";
			Divider8.style.visibility = "visible";
			Divider9.style.visibility = "visible";
			ControlPageList.style.visibility = "visible";
			break;
			
		case "test":
			ControlBack.style.visibility = "hidden";
			ControlPause.style.visibility = "hidden";
			ControlPlay.style.visibility = "hidden";
			ControlNext.style.visibility = "hidden";
			ControlHelp.style.visibility = "hidden";
			ControlClose.style.visibility = "visible";
			ControlSearch.src = controlSearchGray;
			ControlSearch.onmouseover = "";
			ControlSearch.onmouseout = "";
			ControlSearch.style.cursor = "default";
			ControlSearch.style.visibility = "visible";
			ControlSearchBox.style.backgroundColor = "#CCCCCC";
			ControlSearchBox.disabled = true;
			ControlSearchBox.style.visibility = "visible";
			//ControlSearch.style.visibility = "hidden";
			//ControlSearchBox.style.visibility = "hidden";
			Divider77.style.visibility = "hidden";
			Divider8.style.visibility = "hidden";
			Divider9.style.visibility = "hidden";
			ControlPageList.style.visibility = "hidden";
			break;
			
		case "idle":
			ControlBack.style.visibility = "hidden";
			ControlPause.style.visibility = "hidden";
			ControlPlay.style.visibility = "hidden";
			ControlNext.style.visibility = "hidden";
			ControlHelp.style.visibility = "hidden";
			ControlClose.style.visibility = "visible";
			ControlSearch.style.visibility = "hidden";
			ControlSearchBox.style.visibility = "hidden";
			Divider77.style.visibility = "hidden";
			Divider8.style.visibility = "hidden";
			Divider9.style.visibility = "hidden";
			ControlPageList.style.visibility = "hidden";
			break;
			
	}
}
function setMouseOver(){
	this.src=controlSearchOver;
}

function setMouseOut(){
	this.src=controlSearchUp;
}

function ResizeInterface(){
	Track("ResizeInterface()");
	if (parent.frames.length > document.frames.length){
		var titleRects = parent.courseTitleTOC.getClientRects();
		var titleHeight = Number((titleRects[0].bottom-titleRects[0].top));
		parent.courseTitleTOC.style.top = Number(parseInt(parent.lToc.currentStyle.height) - titleHeight) - 20;
	//alert(parent.courseTitleTOC.currentStyle.top+" titleHeight is "+titleHeight)
	}
	browserWidth = document.body.offsetWidth - 4;
	browserHeight = document.body.offsetHeight - 4;
	
	if (browserWidth > 0 && browserHeight > 0){
		
		if (browserWidth - interfaceWidth > 50){
			Playground.style.width = (browserWidth - interfaceWidth);
		} else {
			Playground.style.width = 50;
		}
		
		if (browserHeight - interfaceHeight > 50){
			Playground.style.height = (browserHeight - interfaceHeight);
		} else {
			Playground.style.height = 50;
		}

		if (parseInt(Playground.currentStyle.width) > contentWidth * zoomFactor){
			Content.style.left = Math.round(Playground.clientWidth - contentWidth * zoomFactor) / 2;
		} else {
			Content.style.left = "0px";
		}
		
		if (parseInt(Playground.currentStyle.height) > contentHeight * zoomFactor){
			Content.style.top = Math.round(Playground.clientHeight - contentHeight * zoomFactor) / 2;
		} else {
			Content.style.top = "0px";
		}
		
		if (contentWidth * zoomFactor > parseInt(Playground.currentStyle.width) || contentHeight * zoomFactor > parseInt(Playground.currentStyle.height)){
			Playground.style.overflowX = 'auto';
			Playground.style.overflowY = 'auto';
		} else {
			Playground.style.overflowX = 'hidden';
			Playground.style.overflowY = 'hidden';
		}
		
		mouseStartPosX = parseInt(Control.currentStyle.left) + parseInt(ControlHelp.currentStyle.left) - 20;
		mouseStartPosY = parseInt(Control.currentStyle.top) + parseInt(ControlHelp.currentStyle.top) - 12;
	}
}

function moveButtons(){
 // move ControlSearch and other buttons from Control element to document element.
	Track("moveButtons(). movedButtonsCounter = " + movedButtonsCounter);
	if(movedButtonsCounter == 0){
		try {		
			var newSearchbox = document.getElementById("ControlSearchBox").cloneNode(true);
			Control.removeChild(document.getElementById("ControlSearchBox"));
			moverDiv.appendChild(newSearchbox);
	
			var newSearchButton = document.getElementById("ControlSearch").cloneNode(true);
			Control.removeChild(document.getElementById("ControlSearch"));
			moverDiv.appendChild(newSearchButton);
		
			var newSoundButton =  document.getElementById("ControlSound").cloneNode(true);
			Control.removeChild(document.getElementById("ControlSound"));
			moverDiv.appendChild(newSoundButton);
	
			var newNTBButton =  document.getElementById("ControlShowNtb").cloneNode(true);
			Control.removeChild(document.getElementById("ControlShowNtb"));
			moverDiv.appendChild(newNTBButton);

			var newMsg =  document.getElementById("Messagebox").cloneNode(true);
			Content.removeChild(document.getElementById("Messagebox"));
			moverDiv.appendChild(newMsg);
	
			moverDiv.style.visibility = "visible";
			movedButtonsCounter++;
		}
		catch(e){}     
	}
}

function handlePageButtons(PageNr,total, mode){
	Track("handlePageButtons()");
	if (mode=="demo"){
		handleDemoPageButtons(PageNr,total);
		}
	else if	(mode=="ex"){
		handleExPageButtons(PageNr,total);
		}
	else if	(mode=="test"){
		handleTestPageButtons(PageNr,total);
		}
}

function handleDemoPageButtons(currPageNr,totalPages){
	if(currPageNr == totalPages-1){// on the last page
		ControlBack.style.visibility = "visible";
		ControlNext.style.visibility = "hidden";
		}
	if((currPageNr < totalPages-1)&&(currPageNr > 0)){
		ControlBack.style.visibility = "visible";
		ControlNext.style.visibility = "visible";
		}
	if((currPageNr == 0)&&(currPageNr < totalPages-1)){
		ControlBack.style.visibility = "visible";
		ContolNext.style.visibility = "visible";
		}
	if(totalPages-1 == 0){ // the first page is also the last page...
		ControlBack.style.visibility = "visible";
		ControlNext.style.visibility = "hidden";
		}
}

function handleExPageButtons(currPageNr,totalPages){
// next page is never available for exercises
	if(currPageNr == totalPages-1){// on the last page
		ControlBack.style.visibility = "visible";
		ControlNext.style.visibility = "hidden";
		}
	if((currPageNr < totalPages-1)&&(currPageNr > 0)){
		ControlBack.style.visibility = "visible";
		ControlNext.style.visibility = "hidden";
		}
	if((currPageNr == 0)&&(currPageNr < totalPages-1)){
		ControlBack.style.visibility = "visible";
		ContolNext.style.visibility = "hidden";
		}
	if(totalPages-1 == 0){ // the first page is also the last page...
		ControlBack.style.visibility = "visible";
		ControlNext.style.visibility = "hidden";
		}
}

function handleTestPageButtons(currPageNr,totalPages){
// page buttons are never visible in tests
	ControlBack.style.visibility = "hidden";
	ControlNext.style.visibility = "hidden";
}