/*
 * CyanLine LLC 2010
 * c.c.
 * jsPres.js
 */

// ----------------
var xml_pres = '../xml/presentations.xml';
var presDir = '../pres/';
// ----------------

var presSchema = '';
var GPresList = new Array();

function startPres()
{
	displayPresNav();

// 	buildLogin();

	displayPres();
}

function displayPresNav()
{
	if (document.getElementById('navSpot')) {
		var spot = document.getElementById('navSpot');

		var d = document.createElement('div');
		d.id='divFooter';
		d.style.backgroundColor='gray';
		// -----
		var tmplink='<a href="javascript:;" onClick="buildQuiz()">Something</a>';
		var span=document.createElement('span');
		span.style.display='none';
		span.innerHTML=tmplink;
		d.appendChild(span);

		spot.appendChild(d);
	}
	else
		alert('dont got it ' );
}

function displayPres()
{
	if (document.getElementById('contentSpot'))
	{
		var spot = document.getElementById('contentSpot');
		spot.innerHTML = '';

		var d = document.createElement('div');
		d.setAttribute('id','presContainer');
		d.setAttribute('class','presContainer');

		appendSearch(spot);

		processPres(d);

		spot.appendChild(d);
	}
}

function appendSearch(D)
{
	var d = document.createElement('div');
// 	d.style.borderStyle='solid';
	d.setAttribute('align','right'); // need to get this in css - may not work in IE
	var l = document.createElement('label');
	var s = document.createElement('span');
	var initialChange = false;

	var input = document.createElement('input');
	input.setAttribute('type','text');
	input.setAttribute('id','txtSearch');
	input.value = 'Enter text to search';
	input.setAttribute('onFocus','clearSearchBox()');

	s.innerHTML = '<a href="javascript:;" onClick="searchFor()">Search</a>';

	d.appendChild(s);
	d.appendChild(input);
	D.appendChild(d);

	d = document.createElement('div');
	s = document.createElement('span');
	s.style.color='gray';
	s.style.fontSize = 'xx-small';
	s.style.letterSpacing='1px';
	s.innerHTML = "(Ex. 'wireless', or '2010')";
	d.appendChild(s);
	d.setAttribute('align','right');
	D.appendChild(d);

}

function clearSearchBox()
{
	if (document.getElementById('txtSearch')){
		if (document.getElementById('txtSearch').value=='Enter text to search'){
			document.getElementById('txtSearch').value= '';	
			document.getElementById('txtSearch').setAttribute('onKeyUp','suggestionSearch()');
		}
	}
}

function suggestionSearch() {
	if (document.getElementById('txtSearch')){
		var key = document.getElementById('txtSearch').value;
		if (key != 'Enter text to search' ){
			if (key == '' || key == ' '){
				displayPres(); // fresh start 
			} else {
				var res = searchFor(key); //returns array of matches
				displaySearchResults(res);
			}
		}
	}
}

function displaySearchResults(res)
{
	if (document.getElementById('presContainer')){
		var d = document.getElementById('presContainer');
		d.innerHTML = '';

		for (var i = 0; i < res.length; i++){
			d.appendChild(buildPres(res[i]));
		}
	}
}

function searchFor(key)
{
	if (!key)
		suggestionSearch();

	var arrMatches = new Array();

	for (var i=0; i < GPresList.length; i++){
		var name = GPresList[i].keywords;
		var date = GPresList[i].date;

		var exp = new RegExp(key,"i");
		if (name.match(exp) != null || date.match(exp) != null){
			arrMatches.push(GPresList[i]);
		}
	}

	return arrMatches;
}

function getItemByDate(list,key)
{
	for (var i=0;i<list.length;i++){
		if (list[i].date == key){
			var itm = list[i];
			list.splice(i,1);
			return itm;
		}
	}
	return false;
}

function processPres(d)
{
	buildPresSchema();
	var url = xml_pres;
	url+= '?random='+Math.random();

	GPresList = new Array();

	var xmldoc=ajaxPHP(url,2);
	buildPresList(xmldoc); // GPresList is built

	sortPresList();

	for (var y = 0; y < GPresList.length; y++){
		d.appendChild(buildPres(GPresList[y]));
	}
}

function sortPresList()
{
	var arr = new Array();

	for (var i = 0; i < GPresList.length; i++){
		arr.push(GPresList[i].date);
	}

	var sortedArr = sortArrayByDate(arr);

	var newGPres = new Array();

	for (var p=0;p< sortedArr.length; p++){
		newGPres.push(getItemByDate(GPresList,sortedArr[p]));
	}
// 	alert(newGPres[0].topic);

	GPresList = newGPres;
}


function buildPresSchema()
{
	presSchema = {  
	rowtag: "item",
	columns: [
		{tagname: "fName", label: "File Name"},
		{tagname: "topic", label: "Topic"},
		{tagname: "date", label: "Date"},
		{tagname: "org", label: "Organization"},
		{tagname: "desc", label: "Description"},
		{tagname: "keywords", label: "Keywords"},
		{tagname: "linkTo", label: "Link To"}
	]
	};
}

function buildPresList(xmldoc)
{
	var fName;	
	var topic;
	var date;
	var org;
	var desc;
	var keywords;
	var arrLinks = new Array();

	var xmlrows = xmldoc.getElementsByTagName(presSchema.rowtag);
	for(var k=0; k < xmlrows.length; k++) {
		var pID = xmlrows[k].getAttribute('id');
		var xmlrow = xmlrows[k];
		arrLinks = new Array();
		for(var i = 0; i < presSchema.columns.length; i++) {
			var sc = presSchema.columns[i];
			var tagname = (typeof sc == "string")?sc:sc.tagname;
			var xmlcell = xmlrow.getElementsByTagName(tagname)[0];
			//CHECK if the xmlcell.firstChild.data exists
			if (xmlcell.firstChild)
				var celltext = xmlcell.firstChild.data;
			else 
				var celltext = "N/A";
			if (celltext==''){ celltext='N/A';}
// 			alert(tagname+' = '+celltext);
			//-----------------------------
			switch (tagname){
			case 'fName':
				fName = celltext;
			break;
			case 'topic':
				topic = celltext;
			break;
			case 'date':
				date = celltext;
			break;
			case 'org':
				org = celltext;
			break;
			case 'desc':
				desc = celltext;
			break;
			case 'keywords':
				keywords = celltext;
			break;
			case 'linkTo':
				for (var u=0;u<xmlrow.getElementsByTagName(tagname).length;u++)
				{
					if (xmlcell.firstChild)
						var celltext = xmlrow.getElementsByTagName(tagname)[u].firstChild.data;
					else { var celltext = "N/A"; }
					arrLinks.push(celltext);
				}
			break;
			}
		}
		var pItem = new presItem(pID,fName,topic,date,org,desc,keywords,arrLinks);
		GPresList.push(pItem);
	}
}

function presItem(id,n,t,date,o,d,k,arrLink){
	this.id = id;
	this.fName = n;
	this.topic = t;
	this.date = date;
	this.org = o;
	this.desc = d;
	this.keywords = k;
	this.linkTo = arrLink;
}

function buildPres(pSet)
{
	var D = document.createElement('div');
// 	D.setAttribute('align','center');
	D.style.borderBottom='solid';
	D.style.borderWidth='1px';
	D.style.width='100%';


	var t = document.createElement('table');
	t.border=0;
	t.style.width='100%';
	var b = document.createElement('tbody');
	t.appendChild(b);
	var r = document.createElement('tr');
	var c = document.createElement('td');

	c.setAttribute('colspan','2');
	var s = document.createElement('span');
	s.setAttribute('class','presTitle');
	s.innerHTML = pSet.topic;
	c.appendChild(s);
	r.appendChild(c);
	b.appendChild(r);

	r = document.createElement('tr');
	c = document.createElement('td');

	s = document.createElement('span');
	s.setAttribute('class','presInfoCat');
	s.innerHTML = 'Description: ';
	c.appendChild(s);
	// -----
	s = document.createElement('span');
	s.setAttribute('class','presInfo');
	s.innerHTML = pSet.desc;
	c.appendChild(s);
	r.appendChild(c);

	c = document.createElement('td');
	c.setAttribute('align','right');
	s = document.createElement('span');
	s.setAttribute('class','presInfoCat');
	s.innerHTML = 'Date: ';
	c.appendChild(s);
	// -----
	s = document.createElement('span');
	s.setAttribute('class','presInfo');
	s.innerHTML = pSet.date;
	c.appendChild(s);
	r.appendChild(c);
	b.appendChild(r);

	r = document.createElement('tr');
	c = document.createElement('td');

	s = document.createElement('span');
	s.innerHTML = '<a href="'+presDir+pSet.fName+'" onClick="download()">'+pSet.fName+'</a>';
	c.appendChild(s);
	r.appendChild(c);

	c = document.createElement('td');
	c.setAttribute('align','right');
	s = document.createElement('span');
	s.setAttribute('class','presInfoCat');
	s.innerHTML = 'Org: ';
	c.appendChild(s);
	// -----
	s = document.createElement('span');
	s.setAttribute('class','presInfo');
	s.innerHTML = pSet.org;
	c.appendChild(s);
	r.appendChild(c);

	b.appendChild(r);

	r = document.createElement('tr');
	c = document.createElement('td');


	b.appendChild(r);

	r = document.createElement('tr');
	c = document.createElement('td');
	s = document.createElement('span');
	s.setAttribute('class','presInfoCat');
	s.innerHTML = 'Keywords: ';
	c.appendChild(s);
	// -----
	s = document.createElement('span');
	s.setAttribute('class','presKeywords');
	s.innerHTML = pSet.keywords;
	c.appendChild(s);
	r.appendChild(c);
// 	b.appendChild(r);

	r = document.createElement('tr');
	c = document.createElement('td');
	s = document.createElement('span');
	if (!(pSet.linkTo.length == 1 && pSet.linkTo[0] == 'N/A')){
		s.setAttribute('class','presInfoCat');
		s.innerHTML = 'Quizes: ';
		c.appendChild(s);
	}
	c.setAttribute('colspan',2);
	for (var y = 0; y < pSet.linkTo.length; y++)
	{
		s = document.createElement('span');
// 		s.style.fontSize='small';
		
		if (pSet.linkTo[y] != 'N/A')
		{
			if (y < pSet.linkTo.length-1)
				s.innerHTML = '<a href="javascript:;" onClick="buildQuiz(\''+pSet.linkTo[y]+'\')">'+stripExt(pSet.linkTo[y])+', </a>';
			else
				s.innerHTML = '<a href="javascript:;" onClick="buildQuiz(\''+pSet.linkTo[y]+'\')">'+stripExt(pSet.linkTo[y])+' </a>';
		}

		c.appendChild(s);
	}
	r.appendChild(c)
	b.appendChild(r);

	D.appendChild(t);
	return D;
}

function stripExt(fname)
{
	var dot = fname.indexOf('.');
	var newName='';
	for (i=0; i < dot; i++)
	{
		newName+=fname.charAt(i);
	}
	return newName;
}
// ===============================================================
// ===================================================== DATE SORT
// ===============================================================

function sortArrayByDate(dateArray){
	dateArray.sort( mdyOrdD );
// 	document.write('Ascending : ' + dateArray + '<br />'); 
	return dateArray;
}

var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;

function dmyOrdA(a, b){
a = a.replace(dateRE,"$3$2$1");
b = b.replace(dateRE,"$3$2$1");
if (a>b) return 1;
if (a <b) return -1;
return 0; }

function dmyOrdD(a, b){
a = a.replace(dateRE,"$3$2$1");
b = b.replace(dateRE,"$3$2$1");
if (a>b) return -1;
if (a <b) return 1;
return 0; }

function mdyOrdA(a, b){
a = a.replace(dateRE,"$3$1$2");
b = b.replace(dateRE,"$3$1$2");
if (a>b) return 1;
if (a <b) return -1;
return 0; }

function mdyOrdD(a, b){
a = a.replace(dateRE,"$3$1$2");
b = b.replace(dateRE,"$3$1$2");
if (a>b) return -1;
if (a <b) return 1;
return 0; } 
// =====================================================