/* 
*   Toggle function is used to create the menu rollover dynamically 
*   based on the name of the image file associated with the rollover
*/

function toggle(obj) {
		obj.style.cursor = 'pointer';
		var filename = obj.src;
		var newfilename = '';
		if (filename.indexOf("_over") != -1) {
			newfilename = filename.substring(0,filename.length - 9);
			newfilename += '.gif';
		} else {
			newfilename = filename.substring(0,filename.length - 4);
			newfilename += '_over.gif';
		}
		obj.src = newfilename;
}

/* 
*   Functions to manage the event list
*/

function loadTalkList(location) {
	loadEventList(2,location);
}

function loadWorkshopList(location) {
	loadEventList(1,location);
}

function loadEventList(eventType,location) {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			loadEventListHTML (getEl('eventList'), data.eventList, data.speakerList, eventType,location);
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('eventList'));
		}
	});
}

function loadEventListHTML (el, events, speakers, eventType,location) {
	var innerHTML = "<table>";
	for (var i=0;i<events.length;i++) {
		if (events[i].type == eventType) {
			var speakerIds = events[i].speakerIds;
			for (var j=0;j<speakerIds.length;j++) {
				for (var k=0;k<speakers.length;k++) {
					if (speakers[k].id == speakerIds[j]) {
						var path = speakers[k].thumbnail;
						var paths = path.split('=');
						var speakerPhotoURL = (paths[1]) ? parseTinyPhotoURL(speakers[k].thumbnail) : "<div><img src='site/defaultPhoto.gif'></div>";
						innerHTML += "<tr><td style='text-align:left;width:60px;vertical-align:top;border-bottom: 1px solid #dddddd; padding-bottom: 20px;'>";
						innerHTML += "<div>" + speakerPhotoURL + "</div>";
						innerHTML +="</td><td style='text-align: left;width: 350px; vertical-align: top;border-bottom: 1px solid #dddddd;'>";
						innerHTML += "<div style='font-color: black; font-weight: bold; font-size: 12px;'>" + speakers[k].name + "</div>";
						innerHTML += "<div><a class='eventListItem' href='event_details.html?eventId=" + events[i].id + "'>" + checkTitle(events[i].title) + "</a></div>";
						innerHTML += "</td></tr>";
					}
				}
			}				
		}
	}
	innerHTML += "</table>";
	el.innerHTML = innerHTML;
}

/* 
*   Functions to manage the event details
*/

function loadEvent() {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			loadEventDetailsHTML(getEl('eventDetails'), getParameter('eventId'), data);
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('eventDetails'));
		}
	});
}

function loadEventDetailsHTML(el,eventId,data) {
	
	var events = data.eventList;	
	var speakers = data.speakerList;
	for (var i=0;i<events.length;i++) {
		if (events[i].id == eventId) {
			//left column event information
			var eventTypeLabel = (events[i].type == 2) ? "Talk" : "Workshop";
			var innerHTML = "<table width='860px'><tr><td class='pageColumnLeft' >";
			innerHTML += "<div class='pageTitle'>" + eventTypeLabel + " Information</div>";					
			innerHTML += "<div class='eventTitle'>" + checkTitle(events[i].title) + "</div>";
			innerHTML += "<div class='eventDescription'>" + stripPreTags(events[i].aabstract) + "</div>";
			
			if (events[i].slidesurl != "") {
			innerHTML += "<div class='eventDescription'><a href='" + events[i].slidesurl + "' target='_blank'>Download Slides </a></div>";	
			}
			
			if (events[i].id == 2596 && isMelbourne()) {
				
				innerHTML += "<br><h2>Open To General Public</h2>";
				innerHTML += "<p>In addition to being available to conference attendees as part of the YOW!2010 conference, the 50/50 keynote address is also available to the general public at a cost of AU$25.00. But hurry, only 60 seats are left! <a href='http://yowkeynotemelbourne.eventbrite.com/' target='_blank'>Register Here!</a></p>";
				innerHTML += "<br><h2>Sponsored By</h2>";
				innerHTML += "<div><a href='http://www.unimelb.edu.au/' target='_blank'><img src='../../site/logos/uofm.jpg' alt='University of Melbourne' width='164' height='45' /></a></div><br>";
			}
			
			if (events[i].id == 2620) {
				innerHTML += "<div class='eventDescription'><p>Sponsored by Leica Microsystems.</p><p>Leaders in microscopy and total histology solutions</p></div>";
				innerHTML += "<div><a href='http://www.leica-microsystems.com/' target='_blank'><img src='../../site/logos/leica.jpeg' alt='Leica Microsystems' /></a></div><br>";
			}
			
			
			
			// right column speaker information
			innerHTML += "</td><td class='pageColumnRight'>";
			innerHTML += "<div class='pageTitle'>Speaker Information</div>";
			
			speakerIds = events[i].speakerIds;
			for (var j=0;j<speakerIds.length;j++) {
				for (var k=0;k<speakers.length;k++) {
					if (speakerIds[j] == speakers[k].id) {
						var path = speakers[k].thumbnail;
						var paths = path.split('=');
						var speakerPhotoURL = (paths[1]) ? parsePhotoURL(speakers[k].thumbnail) : "<div><img src='site/defaultPhoto.gif'></div>";
						innerHTML += "<div class='speakerPhoto'>" + speakerPhotoURL + "</div>";
						innerHTML += "<div class='speakerName'>" + speakers[k].name + "</div>";
						innerHTML += "<div class='speakerCompany'>" + speakers[k].company + "</div><br>";
						innerHTML += "<div class='speakerBio'>" + speakers[k].bio + "</div>";
					}
				}
			}
			if (events[i].type == 1) {
				innerHTML += "<br><a class='button' href='workshops.html'>Return to Workshops list</a>";
			} else {
				innerHTML += "<br><a class='button' href='program.html'>Return to Talks list</a>";
			}
		}
	}
	innerHTML += "</td></tr></table>";
	el.innerHTML = innerHTML;
}


/* 
*   Functions to manage the schedule list
*/

function loadSchedule(location) {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			

			
			var tracks = (location == "m") ? mTracks : bTracks;
			var speakers = data.speakerList;
			var events = data.eventList
			var el = getEl('eventList');
			

			var cols = new Array();
			var colsText;
			for (var colname in tracks) {
				if (colname != undefined) {
					cols.push(colname);
				}
			}
			
			var html = "";
			for (var i=0;i<cols.length;i++) {
				html += "<br><h1 style='text-align: left;width: 100%; vertical-align: top;padding-bottom: 5px;padding-top: 5px;border-bottom: 1px solid #dddddd;'>" + cols[i] + " Track</h1>";
				var trackItems = tracks[cols[i]];
				var trackItems = trackItems.split(",");
				for (var j=0;j<trackItems.length;j++) {
					var eventId = trackItems[j];
					for (var k=0;k<events.length;k++) {
						if (events[k].id == eventId) {
							var eventTitle = events[k].title;
							var speakerIds = events[k].speakerIds;
							var nameList = new Array();
							html += "<tr><td style='text-align:right;vertical-align:top;width:120px;padding-bottom: 5px;padding-top: 5px;border: 1px solid #dddddd;'>";
							for (var l=0;l<speakerIds.length;l++) {
								for (var m=0;m<speakers.length;m++) {
									if (speakers[m].id == speakerIds[l]) {
										var path = speakers[m].thumbnail;
										var paths = path.split('=');
										var speakerPhotoURL = (paths[1]) ? parseTinyPhotoURL(speakers[m].thumbnail) : "<div><img src='../../site/defaultPhoto.gif'></div>";
										html += "<span style='padding-right:5px;'>" + speakerPhotoURL + "</span>";
										nameList.push(speakers[m].name);
									}
								}
							}
							html +="</td><td style='text-align: left;width: 350px; vertical-align: top;padding-bottom: 5px;padding-top: 5px;border-bottom: 1px solid #dddddd;'>";
							html += "<div><a class='eventListItem' href='event_details.html?eventId=" + eventId + "'>" + eventTitle + "</a></div>";
							for (var n=0;n<nameList.length;n++) {
								html += "<span style='font-color: black; font-weight: bold; font-size: 10px;'>" + nameList[n] + "  </span>";
								if (n == 0 && nameList.length == 2) {
									html += "<span style='font-color: black; font-size: 10px;'> and </span>";
								}
							}
							html += "</td></tr>";
						}
					}
				}
			}
			el.innerHTML = html;
		},
		
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('eventList'));
		}
	});
}


function loadEventListHTML (el, events, speakers, eventType,location) {
	
	var innerHTML = "<table>";
	for (var i=0;i<events.length;i++) {
		if (events[i].type == eventType) {
			var speakerIds = events[i].speakerIds;
			for (var j=0;j<speakerIds.length;j++) {
				for (var k=0;k<speakers.length;k++) {
					if ((location == 'b') && (speakers[k].id == 1847)) {
						// We are specifically filtering out Udi from the Brisbane location
					} else {
						if (speakers[k].id == speakerIds[j]) {
							var path = speakers[k].thumbnail;
							var paths = path.split('=');
							var speakerPhotoURL = (paths[1]) ? parseTinyPhotoURL(speakers[k].thumbnail) : "<div><img src='../../site/defaultPhoto.gif'></div>";
							innerHTML += "<tr><td style='text-align:left;width:60px;vertical-align:top;border-bottom: 1px solid #dddddd; padding-bottom: 20px;'>";
							innerHTML += "<div>" + speakerPhotoURL + "</div>";
							innerHTML +="</td><td style='text-align: left;width: 350px; vertical-align: top;border-bottom: 1px solid #dddddd;'>";
							innerHTML += "<div style='font-color: black; font-weight: bold; font-size: 12px;'>" + speakers[k].name + "</div>";
							innerHTML += "<div><a class='eventListItem' href='event_details.html?eventId=" + events[i].id + "'>" + checkTitle(events[i].title)+ "</a></div>";
							innerHTML += "</td></tr>";
						}
					}
				}
			}				
		}
	}
	innerHTML += "</table>";
	el.innerHTML = innerHTML;
}

/* 
*	The list of workshops is loaded into a predefined page element called 'list'
*	The dataURL is page variable and returns a JSON object (data) containing the conference records
*/

function load2011WorkshopList() {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			var el = document.getElementById('list');
			for (var i=0;i<data.eventList.length;i++) {
				if (data.eventList[i].type == 1) { //type 1 equals workshop
					el.innerHTML += "<div class='workshopContainer'>" + 
							"<a href='workshopDetails.html?eventId=" + data.eventList[i].id + "' class='workshopName'>" + checkTitle(data.eventList[i].title)+"</a>" + 
							"<div class='workshopSpeaker'>" + getSpeakerNames(data.eventList[i].speakerIds,data) + "</div>" +
							"</div>";
				} 
			}
				
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('list'));
		}
	});
}

function load2011ProgramList() {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			var el = document.getElementById('list');
			for (var i=0;i<data.eventList.length;i++) {
				if (data.eventList[i].type == 2) { 
					el.innerHTML += "<div class='workshopContainer'>" + 
							"<a href='workshopDetails.html?eventId=" + data.eventList[i].id + "' class='workshopName'>" + checkTitle(data.eventList[i].title)+"</a>" + 
							"<div class='workshopSpeaker'>" + getSpeakerNames(data.eventList[i].speakerIds,data) + "</div>" +
							"</div>";
				} 
			}
				
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('list'));
		}
	});
}


function getSpeakerNames(speakerArray,data) {
	var speakers = "";
	for (var i=0;i<speakerArray.length; i++) {
		for (var j=0;j<data.speakerList.length;j++) {
			if (speakerArray[i] == data.speakerList[j].id) {
				speakers += data.speakerList[j].name;
			}
		}
	}
	return speakers;
}

/* 
*	The list of speakers is loaded into a predefined page element called 'speakersList'
*	The dataURL is page variable and returns a JSON object (data) containing the conference records
*	@param 	{String} 	location 	String containing a location (b for Brisbane, m for Melbourne)
*/

function loadSpeakers(location) {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			var sortedSpeakers = getSortedSpeakers(data.speakerList,location);
			loadSpeakerHTML(getEl('speakersList'),data.speakerList, sortedSpeakers);
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('speakersList'));
		}
	});
}

/* 
*	Returns an array containing a sorted list of speakers
*	@param 	{Array} 	speakers 		JSON array of speakers
*	@param 	{String} 	location 		String containing a location (b for Brisbane, m for Melbourne)
*	@return {Array} 	sortedNames 	String array containing speaker names
*/

function getSortedSpeakers(speakers,location) {
	var sortedNames = new Array();
	for (var i = 0; i< speakers.length;i++) {
		if ((location == 'b') && (speakers[i].id == 1847)) {
			// Remove Udi from the Brisbane location
		} else if ((location == 'm') && (speakers[i].id == 1864)) {
			// Remove Simon from the Melbourne location
		} else {
			sortedNames.push(speakers[i].name);
		}
	}
	sortedNames = sortedNames.sort();
	return sortedNames;
}

/* 
*	Adds a table containing a list of speakers to the HTML page element
*	@param 	{DOM Element} 	el 				The DOM element where the formatted information should be placed
*	@param 	{Array} 		speakerData 	JSON array of speakers
*	@return {Array} 		sortedSpeakers 	String array of speaker names
*/
    
function loadSpeakerHTML(el, speakerData, sortedSpeakers) {
	var innerHTML = "<table><tr>";
	var photos = "";
	for (var i=0;i<sortedSpeakers.length;i++) {	
		for (var j=0;j<speakerData.length;j++) {
			var path = speakerData[j].thumbnail;
			var paths = path.split('=');		
			var speakerPhotoURL = (paths[1]) ? parsePhotoURL(speakerData[j].thumbnail) : "<div><img src='../../site/defaultPhoto.gif'></div>";	
			if (speakerData[j].name == sortedSpeakers[i]) {		
			
				photos += speakerPhotoURL + "\n";
			
				innerHTML += "<td style='width:210px;vertical-align: top; padding-bottom: 20px;'>" + 
				"<div class='speakerPhoto' style='size:120'>" + speakerPhotoURL + "</div>" +
				"<div class='speakerName'>" + "<a href='details.html?speakerId=" + speakerData[j].id + "'>" + speakerData[j].name + "</a>" + "</div>" + 
				"<div class='speakerTitle1'>" + speakerData[j].company + "</div></td>";
			}
		}
		if (i % 4 == 3) {
			innerHTML += "</tr><tr>";
		}
	}
	innerHTML += "</tr></table>";
	el.innerHTML = innerHTML;
	//alert (photos);
}


/* 
*   Ajax call to obtain formatted speaker information from JSON data for a given speaker
*	The specific speaker is obtained from the page URL
*	It is passed by pair value -- e.g. http://www.conference.com?speakerId=2345
*/


function loadSpeaker() {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			loadSpeakerDetails(getEl('speakerDetails'), getParameter('speakerId'), data);
			},
		error: function (data, error) {
			alert (error);
			}
	});
}

/* 
*   Loads formatted HTML speaker information into an HTML DOM page element
*	@param {DOM Element} 	el 			The DOM page element where you would like to load the formatted HTML content
*   @param {Integer} 		speakerId 	The id of the speaker for which you wish to obtain details
*	@param {JSON Object} 	data 		The JSON object containing the conference records
*/

function loadSpeakerDetails(el, speakerId, data) {
	
	var innerHTML = "<table><tr><td class='pageColumnLeft' >";
	innerHTML += "<div class='pageTitle'>Speaker Information</div>";
	
	var speakers = data.speakerList;
	for (var i=0;i<speakers.length;i++) {
		if (speakers[i].id == speakerId) {
			var path = speakers[i].thumbnail;
			var paths = path.split('=');
			var speakerPhotoURL = (paths[1]) ? parsePhotoURL(speakers[i].thumbnail) : "<div><img src='../../site/defaultPhoto.gif'></div>";
			
			innerHTML += "<div class='speakerPhoto'>" + speakerPhotoURL + "</div>";
			innerHTML += "<div class='speakerName'>" + speakers[i].name + "</div>";
			innerHTML += "<div class='speakerTitle2'>" + speakers[i].company + "</div>";
			innerHTML += "<div class='speakerDescription'>" + speakers[i].bio + "</div>";
			
		}
	}
	
	innerHTML += "</td><td class='pageColumnRight'>";
	innerHTML += "<div class='pageTitle'>Presentation Information</div>";
	
	var events = data.eventList;
	var foundEvent = false;	
	
	for (var i=0;i<events.length;i++) {
		for (var j = 0; j < events[i].speakerIds.length; j++) {
			if (events[i].speakerIds[j] == speakerId) {
				if (events[i].type == 2) {	
					innerHTML += "<div class='eventTitle'>Talk: " + checkTitle(events[i].title) + "</div>";
				} else {
					innerHTML += "<div class='eventTitle'>Workshop: " + checkTitle(events[i].title) + "</div>";
				}				
				innerHTML += "<div class='eventDescription'>" + stripPreTags(events[i].aabstract) + "</div>";
				innerHTML += "<div class='eventLocation'>" + events[i].location + "</div>";
				innerHTML += "<br>";
				if (events[i].slidesurl != "") {
					innerHTML += "<div class='eventDescription'><a href='" + events[i].slidesurl + "' target='_blank'>Download Slides </a></div>";	
				}
				if (events[i].id == 2596 && isMelbourne()) {
					innerHTML += "<div class='eventDescription'><p>Sponsored by</p></div>";
					innerHTML += "<div><a href='http://www.unimelb.edu.au/'><img src='../../YOW2010/site/logos/uofm.jpg' alt='University of Melbourne' width='164' height='45' /></a></div><br>";
				}
				
				if (events[i].id == 2620) {
					innerHTML += "<div class='eventDescription'><p>Sponsored by Leica Microsystems.</p><p>Leaders in microscopy and total histology solutions</p></div>";
					innerHTML += "<div><a href='http://www.leica-microsystems.com/' target='_blank'><img src='../../YOW2010/site/logos/leica.jpeg' alt='Leica Microsystems' /></a></div><br>";
			}
			
				foundEvent = true;
			} 				
		}
	}
	if (!foundEvent) {
		innerHTML += "Event information coming shortly...";
	}
	innerHTML += "</td></tr></table>";
	el.innerHTML = innerHTML;
	
}

/* 
*   Ajax call to obtain formatted speaker information from JSON data for a list of speakers
*	The list of speakers is loaded into a predefined page element (speakersList)
*	The dataURL is page variable
*/

function loadHomePageSpeakersList() {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			
			var el = getEl('speakersList'),
				speakerData = data.speakerList,
				speakerIds = [],
				displayIds = [2312,2218,2208],
				randomNums = [],
				title = "YOW! 2011 Australia Developer Conference",
				listSize = 10;
				rowSize = 4;
				innerHTML = "<table><tr>";
			
			for (var i = 0; i < speakerData.length; i++) {
				speakerIds.push(speakerData[i].id);
			}
			
			do {
				var num = Math.floor(Math.random()*speakerIds.length);
				if (randomNums.notContains(num)) {
					randomNums.push(num);
					displayIds.push(speakerIds[num]);
				}
			} while (displayIds.length < listSize);

			for (var i=0;i<displayIds.length;i++) {	
				for (var j=0;j<speakerData.length;j++) {
					if (speakerData[j].id == displayIds[i]) {
						var path = speakerData[j].thumbnail,
							paths = path.split('='),
							speakerPhotoURL = "";
						speakerPhotoURL = (paths[1]) ? parsePhotoURL(speakerData[j].thumbnail) : "<div><img src='site/defaultPhoto.gif'></div>";   
						innerHTML += "<td style='width:100px;vertical-align: top; padding-left: 14px;padding-right: 10px; padding-bottom: 10px;'>";
						innerHTML +="<div class='speakerPhoto'>" + speakerPhotoURL + "</div>";	
						innerHTML +="<div class='homepageSpeakerName'>" + speakerData[j].name + "</div>";
						innerHTML +="<div class='homepageSpeakerTitle'>" + speakerData[j].company + "</div></td>";
					}
				}
				if (i == rowSize) {
					innerHTML += "</tr><tr>";
				}
			}
			innerHTML += "</tr></table>";
			el.innerHTML = innerHTML;
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('eventList'));
		}
	});
}

/* 
*	CONVENIENCE FUNCTIONS
*/

/* 
*   Loads an error message into a DOM element
*	@param {DOM Element} el Specifies the element to load the error message
*
*/

function loadErrorMessageHTML(el) {
	el.innerHTML = "Unable to access information at this time. Try again later...";
}

/* 
*   Checks the title string and returns a revised string in special cases
*	@return {String} Returns a title
*/

function checkTitle(title) {
	if (title == "Temporally Quaquaversal Virtual Nanomachine") {
		return "Temporally Quaquaversal Virtual Nanomachine Programming In Multiple Topologically Connected Quantum-Relativistic Parallel Timespaces...Made Easy!";
	} else {
		return title;
	}
}

/* 
*   Strips any <pre> tags from a string
*	@param {String} string Specifies the string to clean
*	@return {String} Returns a stripped string
*/

function stripPreTags(string) {
	var strippedString = string;
	strippedString = strippedString.replace("<pre>","");
	strippedString = strippedString.replace("<\/pre>",""); 
	return strippedString;
}

/* 
*   Strips HTML tags from a string using javascript regex
*   DHTML free example written by Anton Zamov
*   Used with permission from http://zamov.online.fr/EXHTML/DHTML/DHTML_983246.html
*	@param {String} string Specifies the string to clean
*	@return {String} Returns a stripped string
*/
	
function stripHTMLTags(string) {
	var strippedString = string;
	strippedString = strippedString.replace(/(<([^>]+)>)/ig,""); 
	strippedString = strippedString.replace(/( )*/g,"");
	return strippedString;
}

/* 
*   Parses URL and returns the value for the "name" parameter
*   Used with permission from http://www.netlobo.com/url_query_string_javascript.html
*	@param {String} name Specifies the named parameter -- file in the url example "http://www.site.com?file=myFile"
*	@return {String} Returns either empty string or value of the parameter -- myFile in the url example "http://www.site.com?file=myFile"
*/

function getParameter(name){
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
	var regexS = "[\\?&]"+name+"=([^&#]*)";  
	var regex = new RegExp( regexS );  
	var results = regex.exec( window.location.href );  
	if( results == null ) {
		return "";  
	} else {
		return results[1];
	}
}

/* 
*   Returns a boolean indicating whether an array contains a given value
*	@param {Array element} element Any valid array element for the provided array
*	@return {Boolean} Returns true or false
*/

Array.prototype.notContains = function (element) {
	for (var i=0;i<this.length;i++) {
		if (this[i] == element) {
			return false;
		}
	}
	return true;
}

/* 
*   Appends a DIV element with a class and content
*	@param {DOM element} el A valid DOM element where the new element will be appended
*	@param {CSS class} classname A valid CSS class
*	@param {DOM data} content Any valid HTML content
*/

function appendData(el, classname, content) {
	var newdiv = document.createElement("div");
	newdiv.className = classname;
	newdiv.innerHTML = content;
	el.appendChild(newdiv);
}

/* 
*   Wraps an valid URL with additional HTML formatting
*	@param {URL} url A valid URL
*	@return {HTML data} Returns the URL within an HTML wrapper
*/
    
function parsePhotoURL (url) {
	var photoURL = url;
	photoURL = photoURL.substr(1,photoURL.length);
	photoURL = "http://jaoo.dk/" + photoURL;
	photoURL = "<div><img src='" + photoURL + "' width='75'></div>";
	return photoURL;
}   

/* 
*   Wraps an valid URL with additional HTML formatting
*	@param {URL} url A valid URL
*	@return {HTML data} Returns the URL within an HTML wrapper
*/

function parseTinyPhotoURL (url) {
	var photoURL = url;
	photoURL = photoURL.substr(1,photoURL.length);
	photoURL = "http://jaoo.dk/" + photoURL;
	photoURL = "<img src='" + photoURL + "' width='50' height='60'>";
	return photoURL;
} 

/* 
*   Returns the DOM element for an id
*	@param {String} elementId A valid DOM element name as a string
*	@return {DOM Element} Returns the DOM element
*/
	
function getEl(elementId) {
	// returns an HTML DOM element matching the elementId
	return document.getElementById(elementId);
}

/* 
*   Tests whether a page is a Melbourne page
*	@return {Boolean} Returns true or false
*/

function isMelbourne() {
	if (document.title.indexOf('Melbourne') != -1) {
		return true;
	}
	return false;
}

/* 
*   Tests whether a page is a Brisbane page
*	@return {Boolean} Returns true or false
*/

function isBrisbane() {
	if (document.title.indexOf('Brisbane') != -1) {
		return true;
	}
	return false;
}



function loadList(location) {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			//var sortedSpeakers = getSortedSpeakers(data.speakerList,location);
			//loadPosterList(getEl('list'),data.speakerList, sortedSpeakers);
			var innerHTML = "";
			var speakers = data.speakerList;
			var events = data.eventList;
			
			for (var i=0;i<events.length;i++) {
				
				
				for (var j=0;j<events[i].speakerIds.length;j++) {
					for (var k=0;k<speakers.length;k++) {
						if 	(speakers[k].id == events[i].speakerIds[j]) {
							innerHTML += speakers[k].name;
						}
					}
				}
				innerHTML += (events[i].type == 2) ? " - Talk: " : " - Workshop: ";
				innerHTML +=  events[i].title + "<br>";
			}
			innerHTML += events.length;
			getEl('list').innerHTML = innerHTML;
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('list'));
		}
	});
}

function loadPosterList(el, speakerData, sortedSpeakers) {
	var innerHTML = "";
	for (var i=0;i<sortedSpeakers.length;i++) {	
		for (var j=0;j<speakerData.length;j++) {
			if (speakerData[j].name == sortedSpeakers[i]) {		
			innerHTML += speakerData[j].name + "<br>";
			}
		}
	}
	el.innerHTML = innerHTML;
}

/** 
* Load workshop schedule
*/

function loadWorkshopSchedule() {
	$.ajax({
		url: dataURL,
		dataType: "json",
		success: function (data, status, requestObject) {
			var slotList = [
				{"class":"SlotVO","endTime":"2011-11-30T15:30:00Z","id":4208,"startTime":"2011-11-29T09:30:00Z"},
				{"class":"SlotVO","endTime":"2011-11-30T15:30:00Z","id":4209,"startTime":"2011-11-29T07:30:00Z"}
			]
			var events = data.eventList;
			var speakers = data.speakerList;

			var sortedSlotList = slotList.sort(function(a, b){
				var aTime = new Date(a.startTime);
				var bTime = new Date(b.startTime);
				return aTime - bTime;
			})
			
			var innerHTML = "";
			
			sortedSlotList.forEach(function(o) {
				
				o.sDate = o.startTime.substring(5,10);
				o.sTime =  o.startTime.substring(11,16);
				
				o.eDate = o.endTime.substring(6,10);
				o.eTime =  o.endTime.substring(12,16);
				
				innerHTML += " From " + o.sDate + " " + o.sTime;
				
			});
			
			document.getElementById('listA').innerHTML = innerHTML;


			

			// row containing Time, Day One, Day Two
			
			// row containing first time, dayone events, daytwo events
			// get the id
			
			// 
			
			// for each sorted slot, find the event that corresponds to the slot id
			
			// print the Time
			// print the Event Title
			

			
		},
		error: function (request, textStatus, error) {
			loadErrorMessageHTML(getEl('list'));
		}
	})
}
