// JavaScript Document
var _register = new Array();
var _previous;

function loadContent(_xml_file) {
	var _layer =  outpostGetLayer("contentBody");
	try {
		if (window.ActiveXObject) {
			var xml;
			var xsl;

			try {
				xml = new ActiveXObject('Microsoft.XMLDOM');
				xml.async = false;
				xml.load(_xml_file);
				
				xsl = new ActiveXObject('Microsoft.XMLDOM');
				xsl.async = false;
				xsl.validateOnParse = false;
				
				if (_xml_file == "glossary.xml")
					xsl.load('glossary.xsl');
				else if (_xml_file == "home.xml")
					xsl.load('home.xsl');
				else
					xsl.load('unit1.xsl');

				_layer.insertAdjacentHTML('beforeEnd', xml.transformNode(xsl));		
			}
			catch (e) {
				alert("Error code: " + xml.parseError.errorCode);
				alert("<br />Error reason: " + xml.parseError.reason);
				alert("<br />Error line: " + xml.parseError.line);
			}
		}
		else {
			var XSLT = new XSLTProcessor;
			var $xml = new XMLHttpRequest;
			$xml.open('GET', _xml_file, false);
			$xml.overrideMimeType('text/xml');
			$xml.send(null);
			var xml = $xml.responseXML;


			var $xsl = new XMLHttpRequest;
			if (_xml_file == "home.xml")
				$xsl.open('GET', 'home.xsl', false);
			else if (_xml_file == "glossary.xml")
				$xsl.open('GET', 'glossary.xsl', false);
			else {
				$xsl.open('GET', 'unit1.xsl', false);
			}
			
			$xsl.overrideMimeType('text/xml');
			$xsl.send(null);
			var xsl = $xsl.responseXML;
			XSLT.importStylesheet(xsl);
			
			_layer.appendChild(XSLT.transformToFragment(xml, document));
		}
	}
	catch (e) {
		alert("Here :" + e);
	}
}

function register(id) {_register[_register.length] = id;}

function loadQuickTime(file, width, height, id) {
	// create the qtobject and write it to the page, this includes plugin detection
	// be sure to add 15px to the height to allow for the controls
	var myQTObject = new QTObject(file, "", width, height);
	myQTObject.addParam("href", file);
	myQTObject.addParam("target", id);
	myQTObject.addParam("controller", "true");
	myQTObject.addParam("autostart", "false");
	myQTObject.write(id);
}

function loadFlash(swf, file, width, height, id) {
	if (swf != "") var so = new SWFObject(swf,'player', width, height,'7');
	else  var so = new SWFObject('sound/mediaplayer.swf','player', width, height,'7');
	if (file != "") so.addVariable('file',  file);
	so.addVariable("width", width);
	so.addVariable("height", height);
	so.addVariable("play", true);
	so.write(id);
}

function showAssessment(layer) {
	var previous;
 	var _layer =  outpostGetLayer(layer);
 	if (_previous) outpostShowHide(_previous, "hide");
	else {
		var check;
		for (i =0; i< _register.length; i++) {
 			check =  outpostGetLayer(_register[i]);
			if (check) if (check.style.display != "none") previous = check;
		}
		if (previous) _previous = outpostGetLayer(previous);
		else  _previous = outpostGetLayer("unitLearning");
		outpostShowHide(_previous, "hide");
	}
	outpostShowHide(_layer, "show");
	_previous = _layer;
}


function showActivity(layer, previous, course_id, unit_id, activity_id) {
  	if (get_cookie ( "tcnz_student_id" )) {
		var _layer =  outpostGetLayer(layer);
		if (_previous) outpostShowHide(_previous, "hide");
		else {
			_previous = outpostGetLayer(previous);
			outpostShowHide(_previous, "hide");
		}
		outpostShowHide(_layer, "show");
		_previous = _layer;
	}
	else {
		var _layer =  outpostGetLayer("studentLogin");
		if (!_layer) createLogin();
	}
}

var _previousTask;
function showTask(layer, button) {
 	if (get_cookie ( "tcnz_student_id" )) {
		var _layer =  outpostGetLayer(layer);
		var _button =  outpostGetLayer(button);
		if ((_previousTask == _layer && _layer.style.display == "block")) {
			outpostShowHide(_previousTask, "hide");
			_button.innerHTML = '<img src="images/general/show_button.gif" border="0" alt="Click here to show" />';
		}
		else if (_layer.style.display == "block" ) {
			outpostShowHide(_layer, "hide"); 
			_button.innerHTML = '<img src="images/general/show_button.gif" border="0" alt="Click here to show" />';
		}
		else {
			outpostShowHide(_layer, "show");
			_button.innerHTML = '<img src="images/general/hide_button.gif" border="0" alt="Click here to hide" />';
		}
		_previousTask = _layer;

	}
	else {
		var _layer =  outpostGetLayer("studentLogin");
		if (!_layer) createLogin();
	}
}

function loadTask(form, course, unit, activity, task) {
	var id = get_cookie ( "tcnz_student_id" );

	new Ajax.Request("AJAX/getTask.php", {
		method: 'post',
		asynchronous: false,
		parameters : {  sys_course_id: course, sys_unit_id: unit, sys_activity_id: activity, sys_task_id: task, sys_student_id: id },
		onSuccess: function(transport) { 

			try {
//			var _form =  document.getElementById(form);
			var _form = document.forms[form];
				xmlDoc = transport.responseXML;

				var field = xmlDoc.getElementsByTagName("field");
				var value = xmlDoc.getElementsByTagName("value");
				for (i=0; i < field.length; i++) {
					if (unescape(value[i].childNodes[0].nodeValue) != "&nbsp;") {
						_form.elements[unescape(field[i].childNodes[0].nodeValue)].value = unescape(value[i].childNodes[0].nodeValue);
					}
				}

			}
			catch (e) {}
		},
		onFailure: function(transport, e) { alert("loadTask :" + e); },
		onException: function(transport, e) { alert("loadTask :" + e); }
	});
}

function saveTask(form, course, unit, activity, task) {
	grayOutLayer(form + "_message", true, {'zindex':'50', 'bgcolor':'#202020', 'opacity':'30', 'width': '100%', 'height': '100%'});

	var _form = document.forms[form];
//	var _form =  document.getElementById(form);

	var text = "<elements>";
	for (i = 0; i < _form.elements.length; i++) {
		text = text + "<field>" + escape(_form.elements[i].name) + "</field><value>" + escape(_form.elements[i].value) + "</value>";
	}
	text = text + "</elements>";

	test = escape(text);
	var id = get_cookie ( "tcnz_student_id" );

	new Ajax.Request("AJAX/saveTask.php", {
		method: 'post',
		asynchronous: false,
		parameters : {  sys_course_id: course, sys_unit_id: unit, sys_activity_id: activity, sys_task_id: task, sys_student_id: id, sys_notes: text },
		onSuccess: function(transport) { 
			setTimeout("grayOutLayer('" + form +"_message', false)", 2000);
		},
		onFailure: function(transport, e) { alert("saveTask :" + e); },
		onException: function(transport, e) { alert("saveTask :" + e); }
	});
}

function saveWehi() {
	var form = document.wehi_form;
	var text = escape(form.frm_wehi.value);
	var id = get_cookie ( "tcnz_student_id" );
	
	new Ajax.Request("AJAX/saveWehi.php", {
		method: 'post',
		asynchronous: false,
		parameters : {  sys_student_id: id, sys_notes: text },
		onSuccess: function(transport) { closeWehi(); },
		onFailure: function(transport, e) { alert("saveWehi :" + e); },
		onException: function(transport, e) { alert("saveWehi :" + e); }
	});
}

function checkLogin() {
	if (!get_cookie ( "tcnz_student_id" )) {
		var _layer =  outpostGetLayer("studentLogin");
		if (!_layer) createLogin();
	}
}

function openWehi() {
	if (get_cookie ( "tcnz_student_id" )) {
		var form = document.wehi_form;
		var id = get_cookie ( "tcnz_student_id" );
		
		new Ajax.Request("AJAX/getWehi.php", {
			method: 'post',
			asynchronous: true,
			parameters : {  sys_student_id: id },
			onSuccess: function(transport) { 
				xmlDoc = transport.responseXML;
				var notes = unescape(xmlDoc.getElementsByTagName("notes")[0].childNodes[0].nodeValue);
				if (notes == "&nbsp;") notes = "";
				form.frm_wehi.value = notes;
			},
			onFailure: function(transport, e) { alert("saveWehi :" + e); },
			onException: function(transport, e) { alert("saveWehi :" + e); }
		});

		var slide_toggle = new Spry.Effect.Fade('wehiContent', {duration: 1000, from: 0, to: 100, toggle: false, finish: _wehiOpen});
		slide_toggle.start();
		
	}
	else {
		var _layer =  outpostGetLayer("studentLogin");
		if (!_layer) createLogin();
	}
}

function _wehiOpen() {
	var _layer =  outpostGetLayer("wehiOpen");
	_layer.innerHTML = '<a href="javascript:closeWehi();"><img border="0" src="images/general/close_wehi"></a>';
}

function closeWehi() {
	var slide_toggle = new Spry.Effect.Fade('wehiContent', {duration: 1000, from: 100, to: 0, toggle: false, finish: _wehiClose});
	slide_toggle.start();
}


function _wehiClose() {
	var _layer =  outpostGetLayer("wehiOpen");
	_layer.innerHTML = '<a href="javascript:openWehi();"><img border="0" src="images/general/open_wehi"></a>';
}	


function createLogin() {
	var _layer =  outpostGetLayer("login");
	if (_layer) {
		_div = document.createElement("div");
		_div.setAttribute("name", "studentLogin");
		_div.setAttribute("id", "studentLogin");
			_new_form = document.createElement("form");
			_new_form.setAttribute("name", "login_form");
			_new_form.setAttribute("id", "login_form");

				_table = document.createElement("table");
				_table.setAttribute("width", "200");
				_table.border = 0;
				_table.cellPadding = 0;
				_table.cellSpacing = 0;
					_body = document.createElement("tbody");

						_tr = document.createElement("tr");
							_th = document.createElement("th");
								outpostAddText(_th, "h1", "Enter your student ID?");
						_tr.appendChild(_th);
					_body.appendChild(_tr);

						_tr = document.createElement("tr");
							_td = document.createElement("td");
								outpostCreateControl(_td, "text", "frm_login", "", 100);
						_tr.appendChild(_td);
					_body.appendChild(_tr);

						_tr = document.createElement("tr");
							_td = document.createElement("td");
							_td.setAttribute("align", "center");
								_a_div = document.createElement("div");
								_a_div.setAttribute("id", "outpostButton");
									_a = document.createElement("a");
									_a.setAttribute('href','javascript:ajaxLogin();');
										_text=document.createTextNode("Login");
									_a.appendChild(_text);
								_a_div.appendChild(_a);
							_td.appendChild(_a_div);
						_tr.appendChild(_td);
					_body.appendChild(_tr);
				
				_table.appendChild(_body);
						
				_new_form.appendChild(_table);
			_div.appendChild(_new_form);
		_layer.appendChild(_div);	

		var slide_toggle = new Spry.Effect.Fade('login', {duration: 1000, from: 0, to: 100, toggle: false});
		slide_toggle.start();
	}
}

function ajaxLogin() {
	var form = document.forms['login_form'];
	var text = form.frm_login.value;

	new Ajax.Request("AJAX/studentLogin.php", {
		method: 'post',
		asynchronous: false,
		parameters : {  sys_student_id: text },
		onSuccess: function(transport) { 
		
			xmlDoc = transport.responseXML;
			var id = xmlDoc.getElementsByTagName("id")[0].childNodes[0].nodeValue;
			var name = xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;

			var cookie_date = new Date ( );  // current date & time
			cookie_date.setTime ( cookie_date.getTime() - (((1 * 60) * 60) * 24) );

			document.cookie = "tcnz_student_id=" + id;

			var _layer =  outpostGetLayer("login");
			_layer.style.display = "none";
			
			//openWehi();

		},
		onFailure: function(transport, e) { alert("ajaxLogin :" + e); },
		onException: function(transport, e) { alert("ajaxLogin :" + e); }
	});
}

	
function outpostCreateControl(_tag, type, name, value, width) {

	if (type != "radio") {
		_control=document.createElement("input");
		_control.setAttribute("type", type);
		if (type == "textreadonly") {
			_control.setAttribute("type", "text");
			_control.setAttribute("readonly", "readonly");
		}
		_control.setAttribute("id", name);
		_control.setAttribute("name", name);
		_control.setAttribute("value", value);
	}
	else {
		var _object = "<input type='radio' id='" +name+ "' name='" +name+ "' value='" +value+ "'/>";
		try { _control=document.createElement(_object); }
		catch(err) {
			_control=document.createElement("input");
			_control.setAttribute("type", type);
			_control.setAttribute("id", name);
			_control.setAttribute("name", name);
			_control.setAttribute("value", value);
		} 
	}
	if (type == "checkbox" && value == 1) _control.setAttribute("checked", "checked");
	if (type == "checkbox" && value == "Y") _control.setAttribute("checked", "checked");
	_tag.appendChild(_control);
	return _control;
}

function outpostAddText(_object, type, value) {
	switch (type) {
		case "h1":
			_h1 = document.createElement("h1");
					_text = document.createTextNode(value);
				_h1.appendChild(_text);
			_object.appendChild(_h1);
			break;
		case "h2":
			_h2 = document.createElement("h2");
					_text = document.createTextNode(value);
				_h2.appendChild(_text);
			_object.appendChild(_h2);
			break;
		case "h3":
			_h3 = document.createElement("h3");
					_text = document.createTextNode(value);
				_h3.appendChild(_text);
			_object.appendChild(_h3);
			break;
		case "div":
			  var _div = document.createElement('div');
			  _div.width = "95%";
			  _div.setAttribute('id', "showDisplayText");
			  _div.innerHTML = value;

			_object.appendChild(_div);
			break;
		case "p":
		default:
			_p = document.createElement("p");
					_text = document.createTextNode(value);
				_p.appendChild(_text);
			_object.appendChild(_p);
	}
}

function get_cookie ( cookie_name ) {
  var results = document.cookie.match ( cookie_name + '=(.*?)(;|$)' );
  if ( results )    return ( unescape ( results[1] ) );
  else    return null;
}

	function grayOutLayer(layer, vis, options) {
	  // Pass true to gray out screen, false to ungray
	  // options are optional.  This is a JSON object with the following (optional) properties
	  // opacity:0-100         // Lower number = less grayout higher = more of a blackout 
	  // zindex: #             // HTML elements with a higher zindex appear on top of the gray out
	  // bgcolor: (#xxxxxx)    // Standard RGB Hex color code
	  // grayOut(true, {'zindex':'50', 'bgcolor':'#0000FF', 'opacity':'70'});
	  // Because options is JSON opacity/zindex/bgcolor are all optional and can appear
	  // in any order.  Pass only the properties you need to set.
	  var options = options || {}; 
	  var zindex = options.zindex || 50;
	  var opacity = options.opacity || 70;
	  var opaque = (opacity / 100);
	  var bgcolor = options.bgcolor || '#000000';
	  var width = options.width;
	  var height = options.height;
	  var dark=document.getElementById('darkenScreenObject');

		var _layer = outpostGetLayer(layer);

	  if (!dark) {
		// The dark layer doesn't exist, it's never been created.  So we'll
		// create it here and apply some basic styles.
		// If you are getting errors in IE see: http://support.microsoft.com/default.aspx/kb/927917
		var tbody = document.getElementsByTagName(layer)[0];
		tbody = _layer;
		
		var tnode = document.createElement('div');           // Create the layer.
			tnode.style.position='absolute';                 // Position absolutely
			tnode.style.top='0px';                           // In the top
			tnode.style.left='0px';                          // Left corner of the page
			tnode.style.overflow='hidden';                   // Try to avoid making scroll bars            
			tnode.style.display='none';                      // Start out Hidden
			tnode.id='darkenScreenObject';                   // Name it so we can find it later


		tbody.appendChild(tnode);                            // Add it to the web page
		if (options.text != "") outpostAddText(tnode, "h3", options.text)                     

		dark=document.getElementById('darkenScreenObject');  // Get the object.
	  }
	  if (vis) {
		if (!width) {
			// Calculate the page width and height 
			if( _layer && ( _layer.scrollWidth || _layer.scrollHeight ) ) {
				var pageWidth = _layer.scrollWidth+'px';
				var pageHeight = _layer.scrollHeight+'px';
			} else if( _layer.offsetWidth ) {
			  var pageWidth = _layer.offsetWidth+'px';
			  var pageHeight = _layer.offsetHeight+'px';
			} else {
			   var pageWidth='100%';
			   var pageHeight='100%';
			}   
		}
		else {
			   var pageWidth=width;
			   var pageHeight=height;
		}

		//set the shader to cover the entire page and make it visible.
		dark.style.opacity=opaque;                      
		dark.style.MozOpacity=opaque;                   
		dark.style.filter='alpha(opacity='+opacity+')'; 
		dark.style.zIndex=zindex;        
		dark.style.backgroundColor=bgcolor;  
		dark.style.width= pageWidth;
		dark.style.height= pageHeight;
		dark.style.display='block';     
		
	  } else {
		 dark.style.display='none';
	  }
	}	

