/*
courseDetails.js
last modified 11/26/06
created by Darren Smith

loads course details XML data and outputs it as formatted HTML
*/

var req;

function parseLineBreaks(strString){
	//find formatted line breaks and convert to <p></p>
	strString = String(strString);
	strString = strString.replace(/\n\s*\n/g, "</p><p>");
	strString = strString.replace(/\n/g, "</p><p>");
	strString = "<p>" + strString + "</p>";
	return strString;
}
function getDetails(courseID){
		loadXMLData("_data/getCourseDetails.php?courseID=" + courseID);
}
function loadXMLData(url){
	req = false;
	//find available XML object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
			if (req.overrideMimeType) {
				req.overrideMimeType('text/xml');
			}
        } catch(e) {
			req = false;
        }
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	//if XML capable, set listener, open XML document
	if(req) {
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send("");
	}
}
function processReqChange() {
	//wait for loading to complete
    if (req.readyState == 4) {
		//make sure loading was successful
        if (req.status == 200) {
			writeDetails();
        } else {
			//failure alert
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}
function writeDetails(){
	var xml = req.responseXML;
	
	//populate course details
	document.getElementById("coursename").innerHTML = req.responseXML.firstChild.firstChild.firstChild.nodeValue;
	document.getElementById("description").innerHTML = parseLineBreaks(req.responseXML.firstChild.childNodes[1].firstChild.nodeValue);
	document.getElementById("costHeader").innerHTML = "Cost:";
	var cost = String(req.responseXML.firstChild.childNodes[2].firstChild.nodeValue);
	if(cost == "null"){
		cost = "TBA";
	}
	document.getElementById("cost").innerHTML = cost;
	document.getElementById("scheduleHeader").innerHTML = "Upcoming Course Dates:";
	//check for 0 courses
	if(req.responseXML.firstChild.childNodes[3].firstChild.nodeValue == "none"){
		document.getElementById("schedule").innerHTML = "There are no classes scheduled at this time.";
	} else {
		//determine number of course dates
		var numDates = req.responseXML.firstChild.childNodes[3].childNodes.length;
		//build course date table
		// var dateTable = '<table class="courseSchedule"><tr class="headerRow"><td style="width: 55%;">Dates</td><td>Instructor(s)</td><td>Location</td><td>Cost</td><td>Contact</td></tr>';
		var dateTable = '';
		//loop through each date and add it to date table
		for(var i = 0; i < numDates; ++i){
			var instanceId = req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[5].firstChild.nodeValue;

			// dateTable += '<tr>';
			// dateTable += '<td>' + req.responseXML.firstChild.childNodes[3].childNodes[i].firstChild.firstChild.nodeValue + '</td>';
			// dateTable += '<td>' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[1].firstChild.nodeValue + '</td>';
			// dateTable += '<td>' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[2].firstChild.nodeValue + '</td>';
			// dateTable += '<td>' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[3].firstChild.nodeValue + '</td>';
			// dateTable += '<td>' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[4].firstChild.nodeValue + '</td>';
			// dateTable += '<td><a href="#" onclick="makeRequest(\'ajax/register_course.php?id=' + instanceId + '\', \'register_course_' + instanceId + '\'); return false;">Register</a></td>';
			// dateTable += '</tr>';
			
			dateTable += '<div>' + req.responseXML.firstChild.childNodes[3].childNodes[i].firstChild.firstChild.nodeValue + ' - ' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[2].firstChild.nodeValue + '</div>';
			dateTable += '<div style="font-weight: normal;">Taught by: ' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[1].firstChild.nodeValue + '</div>';
			// dateTable += '<div style="font-weight: normal;">Location: ' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[2].firstChild.nodeValue + '</div>';
			dateTable += '<div style="font-weight: normal;">Cost: ' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[3].firstChild.nodeValue + '</div>';
			dateTable += '<div style="font-weight: normal;">Contact: <a href="mailto:'+req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[4].firstChild.nodeValue+'">' + req.responseXML.firstChild.childNodes[3].childNodes[i].childNodes[4].firstChild.nodeValue + '</a></div>';
			dateTable += '<div style="font-weight: normal;"><br /></div>';
			// dateTable += '<div><a href="#" onclick="makeRequest(\'ajax/register_course.php?id=' + instanceId + '\', \'register_course_' + instanceId + '\'); return false;">Register</a></div>';
		}
		// dateTable += '</table>';
		//populate date table
		document.getElementById("schedule").innerHTML = dateTable;
	}
	
	document.getElementById("openToHeader").style.display = "";
	document.getElementById("openTo").style.display = "";
	document.getElementById("openToDetails").style.display = "";
	
	var openTo = "<b>Open to</b>:  ";
	var restrictions = new Array();

	var open = xml.getElementsByTagName("open");
	if(open.length > 0) {
		openTo += "<li>General Public";
		var reqs = open[0].childNodes;
		// alert(reqs.length);
		for(i = 0; i < reqs.length; i++) {
			if(reqs[i].childNodes[0]) {
				openTo += " <sup>" + reqs[i].childNodes[0].nodeValue + "</sup>";
				restrictions[restrictions.length] = reqs[i].childNodes[0].nodeValue;
			}
		}
		
		openTo += "</li> ";
	}
	
	open = xml.getElementsByTagName("leo");
	if(open.length > 0) {
		openTo += "<li>Law Enforcement";
		var reqs = open[0].childNodes;
		// alert(reqs.length);
		for(i = 0; i < reqs.length; i++) {
			if(reqs[i].childNodes[0]) {
				openTo += " <sup>" + reqs[i].childNodes[0].nodeValue + "</sup>";
				restrictions[restrictions.length] = reqs[i].childNodes[0].nodeValue;
			}
		}
		
		openTo += "</li> ";
	}
	
	open = xml.getElementsByTagName("military");
	if(open.length > 0) {
		openTo += "<li>Military";
		var reqs = open[0].childNodes;
		// alert(reqs.length);
		for(i = 0; i < reqs.length; i++) {
			if(reqs[i].childNodes[0]) {
				openTo += " <sup>" + reqs[i].childNodes[0].nodeValue + "</sup>";
				restrictions[restrictions.length] = reqs[i].childNodes[0].nodeValue;
			}
		}
		
		openTo += "</li> ";
	}
	
	open = xml.getElementsByTagName("security");
	if(open.length > 0) {
		openTo += "<li>Security";
		var reqs = open[0].childNodes;
		// alert(reqs.length);
		for(i = 0; i < reqs.length; i++) {
			if(reqs[i].childNodes[0]) {
				openTo += " <sup>" + reqs[i].childNodes[0].nodeValue + "</sup>";
				restrictions[restrictions.length] = reqs[i].childNodes[0].nodeValue;
			}
		}
		
		openTo += "</li> ";
	}
	// openTo = openTo.substring(0, openTo.length - 2);
	
	for(i = 0; i < restrictions.length; i++) {
		document.getElementById("restriction_" + restrictions[i]).style.display = "";
	}
	
	document.getElementById("openTo").innerHTML = openTo;
	
	if(document.getElementById("floatShadow")){
		document.getElementById("floatShadow").style.height = document.getElementById("popupContent").style.height;
	}
	
	var feedback = xml.getElementsByTagName("feedback");
	if(feedback.length) {
		document.getElementById("feedback").innerHTML = "<h3>Feedback:</h3><a href='training_feedback.php?courseId="+feedback[0].firstChild.nodeValue+"'>See student feedback for this course</a>";
	}
	else {
		document.getElementById("feedback").innerHTML = "";
	}
}