function parseQueryString (str) {
  str = str ? str : location.search;
  var query = str.charAt(0) == '?' ? str.substring(1) : str;
  var args = new Object();
  if (query) {
    var fields = query.split('&');
    for (var f = 0; f < fields.length; f++) {
      var field = fields[f].split('=');
      args[unescape(field[0].replace(/\+/g, ' '))] = 
unescape(field[1].replace(/\+/g, ' '));
    }
  }
  return args;
}

function getMode() {
	var args = parseQueryString ();
	return args["mode"];
}

function dispContents(){
	var currdate = getDate();
	var mode = getMode();
	
	switch(mode){
		case "h":
			spHeader.innerText = "Welcome";
			dispAnnouncements(">= '" + getDate() + "'");
			break;
		case "n":
			spHeader.innerText = "Now Playing...";
			dispLectures(">= '" + getDate() + "'");
			break;
		case "p":
			spHeader.innerText = "Past Lectures";
			dispLectures("< '" + getDate() + "'");
			break;
		default:
			spHeader.innerText = "Welcome";
			dispAnnouncements(">= '" + getDate() + "'");
	}
}

function dispAnnouncements(datequery){
	// Load XML 
	var xml = new ActiveXObject("Microsoft.XMLDOM");
	xml.async = false;
	xml.load("announcements.xml");
	
	//create fragment 
	frag=xml.createDocumentFragment();

	nItems=xml.selectNodes("announcements/item[@date " + datequery + "]");
	for(i=0;i<nItems.length;i++){
		frag.appendChild(nItems[i].cloneNode(1));
	}

	// clear everything from array
	while(xml.documentElement.childNodes.length > 0){
		xml.documentElement.removeChild(xml.documentElement.lastChild);
	}

	// replace with new fragment
	xml.documentElement.appendChild(frag);
	
	// Load XSL
	var xsl = new ActiveXObject("Microsoft.XMLDOM")
	xsl.async = false
	xsl.load("announcements.xsl")

	// Transform
	divContent.innerHTML=xml.transformNode(xsl);
}

function dispLectures(datequery){
	// Load XML 
	var xml = new ActiveXObject("Microsoft.XMLDOM");
	xml.async = false;
	xml.load("lectures.xml");
	
	//create fragment 
	frag=xml.createDocumentFragment();

	nLectures=xml.selectNodes("lectures/lecture[@date " + datequery + "]");
	for(i=0;i<nLectures.length;i++){
		frag.appendChild(nLectures[i].cloneNode(1));
	}
	
	// clear everything from array
	while(xml.documentElement.childNodes.length > 0){
		xml.documentElement.removeChild(xml.documentElement.lastChild);
	}

	// replace with new fragment
	xml.documentElement.appendChild(frag);
	
	// Load XSL
	var xsl = new ActiveXObject("Microsoft.XMLDOM")
	xsl.async = false
	xsl.load("lectures.xsl")

	// Transform
	divContent.innerHTML=xml.transformNode(xsl);
}

function generateXML(frm) {
	var xLecturer = "\n<lecturer>" + replaceChars(frm.lecturer.value) + "</lecturer>";
	var xDate = "\n<date>" + frm.lecture_date.value + "</date>";
	var xTitle = "\n<title>" + replaceChars(frm.lecture_title.value) + "</title>";

	var xTitle1 = "\n<title>" + replaceChars(frm.ref1_title.value) + "</title>";
	var xAuthor1 = "\n<author>" + replaceChars(frm.ref1_author.value) + "</author>";
	var xURL1 = "\n<url>" + replaceChars(frm.ref1_url.value) + "</url>";
	var xReference1 = "\n<reference>" + xTitle1 + xAuthor1 + xURL1 + "\n</reference>";

	var xTitle2 = "\n<title>" + replaceChars(frm.ref2_title.value) + "</title>";
	var xAuthor2 = "\n<author>" + replaceChars(frm.ref2_author.value) + "</author>";
	var xURL2 = "\n<url>" + replaceChars(frm.ref2_url.value) + "</url>";
	var xReference2 = "\n<reference>" + xTitle2 + xAuthor2 + xURL2 + "\n</reference>";

	var xReferences = "\n<references>" + xReference1 + xReference2 + "\n</references>";

	var xAbstract = "\n<abstract>" + replaceChars(frm.lecture_abstract.value) + "</abstract>";

    var xLecture = "<lecture date='" + replaceChars(frm.lecture_date_hidden.value) + "'>" + xLecturer + xDate + xTitle + xReferences + xAbstract + "\n</lecture>";
	
	frm.lecture_xml.value = xLecture;
	
//	frm.action = "mailto:" + "tsell" + "er@m" + "ath.ucla.edu" + "?subject=seminar abstract";

//frm.lecture_abstract.value = frm.xml.value;
	
	return;
}

function getDate() {
	//fomat current date
	var date = new Date();
	var yyyy = date.getFullYear();
	var m = new String("00" + Number(date.getMonth()+1));
	mm = m.substring(m.length-2, m.length);
					  
	var d = new String("00" + date.getDate());
	dd = d.substring(d.length-2, d.length);

	return (yyyy + "-" + mm + "-" + dd);
}

function replaceChars(s) {
	s = replaceChar(s,"&","&amp;"); //this must come first
	s = replaceChar(s,"'","&apos;");
	s = replaceChar(s,"<","&lt;");
	s = replaceChar(s,">","&gt;");

	return s;
}

function replaceChar(s,c1,c2) {
	temp = "";
	remainder = "" + s;

	while (remainder.indexOf(c1)>-1) {
		pos= remainder.indexOf(c1);
		temp += (remainder.substring(0, pos) + c2);		
		remainder = ("" + remainder.substring((pos + c1.length), remainder.length));
	}

	return ("" + temp + remainder);
}