//EVENTS WIDGET

// FUNCTION DEFINITIONS
function initializeWidgetEvents()
  		{
  			var feed = "";
   			feed = new google.feeds.Feed("http://www.google.com/calendar/feeds/ncateweb@gmail.com/public/basic?futureevents=true&ctz=America/New_York&orderby=starttime&sortorder=ascending&hl=en");
   			feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
   			feed.load(loadEvents);
   			var t=setTimeout("initializeWidgetEvents()", 60000);
   		}
    		

function loadEvents(xmlFile)
    	{    		    		
    		var numToDisplay = 3;    	
    		var widgetEvents = document.getElementById("div_eventsWidget");
    		
    		//Clear out previous content, if any
    		widgetEvents.innerHTML = "";
    		
    		//Create the Widget's Header
    		var widgetEventsHeader = document.createElement("div");
    		widgetEventsHeader.setAttribute("id","widgetEventsHeader");
    		widgetEventsHeader.innerHTML = "Upcoming NCATE Events";
    		widgetEvents.appendChild(widgetEventsHeader);
    		
    		if (!xmlFile.error)
    		{
    			var events = xmlFile.xmlDocument.getElementsByTagName("entry");
    			
    			for (var i=0; i<numToDisplay; i++)
    			{
    				//Get Data from XML File
    				/////////////////////////
    				
    				var eventTitle = events[i].getElementsByTagName("title")[0].firstChild.nodeValue;
    				
    				var eventLink = events[i].getElementsByTagName("link")[0].attributes[2].nodeValue;
    				
    				//Custom FIX to correct GMT as default for Event Detail
    				eventLink = eventLink + "&ctz=America/New_York";
    				
    				var eventLinkedTitle = '<a href="' + eventLink + '" target="_blank">' + eventTitle + '</a>' ;
    				    				
    				//Get content
    				var eventContent = events[i].getElementsByTagName("content")[0].firstChild.nodeValue;
    				
    				var firstBreak = eventContent.search("<br />");
    				var whenStart = eventContent.search("When:");
    				var eventWhen = eventContent.substring(whenStart, firstBreak);
    				eventWhen = eventWhen.replace("When: " , "");
    				//eventWhen = eventWhen.replace("EST" , "");
    				//eventWhen = eventWhen.replace("EDT" , "");
    				
    				var statusStart = eventContent.search("Event Status:");
    				var whereStart = eventContent.search("Where:");
    				var eventWhere = eventContent.substring(whereStart,statusStart);
    				eventWhere = eventWhere.replace("Where: " , "");
    				
    				    								
					eventContent = "";
					eventContent = eventWhen + "<br />" + eventWhere;
    				    				
    				//Display the Event Data
    				////////////////////////
    				
    				//Declare variables to create div tags for this event				
    				var newEvent = document.createElement("div");
    				var newEventTitle = document.createElement("div");
    				var newEventContent = document.createElement("div");
    				
    				//Create the Divs and set their Classes for styling
    				newEventTitle.innerHTML = eventLinkedTitle;
    				newEventTitle.setAttribute("id","eventTitle");
    				newEventContent.innerHTML = eventContent;
    				newEventContent.setAttribute("id","eventContent");
    				
    				//Put it all together and display on the page
    				newEvent.appendChild(newEventTitle);
    				newEvent.appendChild(newEventContent);
    				newEvent.setAttribute("id","eventContainer");
    				widgetEvents.appendChild(newEvent);    				    				
    				
    			} // END FOR LOOP
    			
    		} // END IF
    		
    		//Create the Widget's Footer
    		
    		//var fullCalendarLink = "http://www.google.com/calendar/embed?src=ncateweb%40gmail.com&ctz=America/New_York";
    		var fullCalendarLink = "http://www.ncate.org/NCATEEvents/tabid/732/Default.aspx";
    		var widgetEventsFooter = document.createElement("div");
    		widgetEventsFooter.setAttribute("id","widgetEventsFooter");
    		widgetEventsFooter.innerHTML = "<a href='" + fullCalendarLink + "' target='_self'>view NCATE events calendar</a>";
    		widgetEvents.appendChild(widgetEventsFooter);    		
        	
} // END loadEvents FUNCTION

//END EVENTS WIDGET

//////////////////////////////////////////////////////////////////////////////////////////




// NEW WEBINARS WIDGET

// FUNCTION DEFINITIONS
function initializeWidgetWebinars()
  		{
  			var feed = "";
   			feed = new google.feeds.Feed("http://www.google.com/calendar/feeds/p331g6hldq1sl0up96s3q7bvic@group.calendar.google.com/public/basic?futureevents=true&orderby=starttime&sortorder=ascending&hl=en&ctz=America/New_York");
   			
   			feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
   			feed.load(loadWebinars);
   			var t=setTimeout("initializeWidgetWebinars()", 60000);
   		}   	
    		

function loadWebinars(xmlFile)
    	{    		    		
    		var numToDisplay = 3;
    		var widgetWebinars = document.getElementById("div_webinarsWidget");
    	
    		//Clear out previous content, if any
    		widgetWebinars.innerHTML = "";
    	
    		//Create the Widget's Header
    		var widgetHeader = document.createElement("div");
    		widgetHeader.setAttribute("id","widgetWebinarsHeader");
    		widgetHeader.innerHTML = "Upcoming Webinars";
    		widgetWebinars.appendChild(widgetHeader);
    		
    		if (!xmlFile.error)
    		{
    			var events = xmlFile.xmlDocument.getElementsByTagName("entry");
    			
    			
    			// If there are fewer upcoming events than the numToDisplay, 
    			// lower the var numToDisplay so that 
    			// the widget footer will display
    			if ((events.length)<numToDisplay)
    			{
    				numToDisplay = events.length;
    			}
    			
    			
    			for (var i=0; i<numToDisplay; i++)
    			{
    				//Get Data from XML File
    				/////////////////////////
    				
    				var eventTitle = events[i].getElementsByTagName("title")[0].firstChild.nodeValue;
    				
    				var eventLink = events[i].getElementsByTagName("link")[0].attributes[2].nodeValue;
    				
    				//Custom FIX to correct GMT as default for Event Detail
    				eventLink = eventLink + '&ctz=America/New_York';
    				
    				var eventLinkedTitle = '<a href="' + eventLink + '" target="_blank">' + eventTitle + '</a>' ;
    				
    				//GET EVENT CONTENT
    				var eventContent = events[i].getElementsByTagName("content")[0].firstChild.nodeValue;
    				
    				// Clean out unwanted info
    				eventContent = eventContent.replace("Event Status: confirmed" , "");
    				eventContent = eventContent.replace("Who: NCATE Webinars" , "");
    				
    				
    				// FIND and STORE INDIVIDUAL INFO ELEMENTS
    				
    				// EVENT DATE/TIME (from WHEN)
    				var firstBreak = eventContent.search("<br />");
    				var whenStart = eventContent.search("When:");
    				var eventWhen = eventContent.substring(whenStart, firstBreak);    				
    				eventWhen = eventWhen.replace("When: " , "");
    				//eventWhen = eventWhen.replace("EST" , "");
    				//eventWhen = eventWhen.replace("EDT" , "");
    				//eventWhen = "hi!";
    				
    				// EVENT REGISTER/MORE INFO (from WHERE)
    				var whereStart = eventContent.search("Where:");
    				var eventWhere = eventContent.substring(whereStart);   				
    				eventWhere = eventWhere.replace("Where: " , "Register/More information: ");
    				
    				// EVENT HOST (from DESCRIPTION)
    				var hostStart = eventContent.search("Event");
    				var eventHost = eventContent.substring(hostStart);
    				eventHost = eventHost.replace("Event Description: " , "Hosted by: ");    				
    									
					//ERASE eventContent and Recreate with elements
					eventContent = "";
					eventContent = eventWhen;
					
    				    				
    				//Display the Event Data
    				////////////////////////
    				
    				//Declare variables to create div tags for this event				
    				var newEvent = document.createElement("div");
    				var newEventTitle = document.createElement("div");
    				var newEventContent = document.createElement("div");
    				
    				//Create the Divs and set their Classes for styling
    				newEventTitle.innerHTML = eventLinkedTitle;
    				newEventTitle.setAttribute("id","webinarTitle");
    				newEventContent.innerHTML = eventContent;
    				newEventContent.setAttribute("id","webinarSummary");
    				
    				//Put it all together and display on the page
    				newEvent.appendChild(newEventTitle);
    				newEvent.appendChild(newEventContent);
    				newEvent.setAttribute("id","webinarContainer");
    				widgetWebinars.appendChild(newEvent);    				    				
    				
    			} // END FOR LOOP
    			
    		} // END IF
    		
    		//Create the Widget's Footer
    		if (events.length == 0){
    			var widgetFooter = document.createElement("div");
			widgetFooter.setAttribute("id","widgetWebinarsFooter");
			widgetFooter.innerHTML = "<p style='text-align:left; margin-top:0px;'>there are no webinars scheduled at this time</p><p>visit our <a href='/Webinars/WebSeminarsArchive/tabid/637/Default.aspx'>Webinar archive</a></p>";
    			widgetWebinars.appendChild(widgetFooter);
    		}
    		else{
    			var moreWebinarsLink = "/NCATEWebSeminars/tabid/635/Default.aspx";
    			var widgetFooter = document.createElement("div");
    			widgetFooter.setAttribute("id","widgetWebinarsFooter");
    			widgetFooter.innerHTML = "<a href='" + moreWebinarsLink + "' target='_self'>view webinars calendar</a>";
    			widgetWebinars.appendChild(widgetFooter);
    		}
        	
} // END loadEvents FUNCTION

//END NEW WEBINARS WIDGET

//////////////////////////////////////////////////////////////////////////////////////////


// FUNCTIONS FOR NCATE NEWS WIDGET

function initializeNcateNews()
  		{
  			var feed = "";
   			feed = new google.feeds.Feed("http://www.ncate.org/Public/Newsroom/NCATENewsPressReleases/tabid/669/rssid/1/Default.aspx");
   			
   			feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
   			feed.load(loadNcateNews);
   			var t=setTimeout("initializeNcateNews()", 60000);
   		}   		

function loadNcateNews(xmlFile)
    	{
    		var numToDisplay = 5;
    		var widgetNcateNews = document.getElementById("div_ncateNewsWidget");
    	
    		//Clear out previous content, if any
    		widgetNcateNews.innerHTML = "";
    	
    		//Create the Widget's Header
    		var widgetHeader = document.createElement("div");
    		widgetHeader.setAttribute("id","widgetNcateNewsHeader");
    		widgetHeader.innerHTML = "NCATE News/Press Releases";
    		widgetNcateNews.appendChild(widgetHeader);
    		
    		if (!xmlFile.error)
    		{    		
    			var items = xmlFile.xmlDocument.getElementsByTagName("item");
    			var numItems = items.length;
    			if (numToDisplay>numItems)
    			{
    				numToDisplay = numItems;
    			}
    			
    			for (var i=0; i<numToDisplay; i++)
    			{
    				//Get Data from XML File
    				/////////////////////////
    				
    				var itemTitle = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
    				
    				var itemLink = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
    				
    				var itemLinkedTitle = '<a href="' + itemLink + '" target="_self">' + itemTitle + '</a>' ;
    				
    				var itemDate = items[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue;
    				
    				itemDate = new Date(itemDate);
    				
    				var itemDateYear = itemDate.getFullYear();
    				var itemDateMonth = itemDate.getMonth()+1;
    				var itemDateDay = itemDate.getDate();
    				var strDate = itemDateMonth + "/" + itemDateDay + "/" + itemDateYear;
    				    				    				    				
    				var itemSummary = items[i].getElementsByTagName("description")[0].firstChild.nodeValue;
    				//itemSummary = eventContent.replace("<a>" , "");
    				//itemSummary = extractSnippet(itemSummary);
    				
    				    				
    				
    				
    				//Display the Event Data
    				////////////////////////
    				
    				//Declare variables to create div tags for this item				
    				var newItem = document.createElement("div");
    				var newItemTitle = document.createElement("div");
    				//var newItemSummary = document.createElement("div");
    				
    				//Create the Divs and set their Classes for styling
    				newItemTitle.innerHTML = strDate + "<br/>" + itemLinkedTitle;
    				newItemTitle.setAttribute("id","itemTitle");
    				//newItemSummary.innerHTML = itemSummary;
    				//newItemSummary.setAttribute("class","itemSummary");
    				
    				//Put it all together and display on the page
    				newItem.appendChild(newItemTitle);
    				//newItem.appendChild(newItemSummary);
    				newItem.setAttribute("id","itemContainer");
    				widgetNcateNews.appendChild(newItem);					
    			
    			} // END FOR LOOP
    		
    		} // END IF
    		
    		//Create the Widget's Footer
    		var moreNcateNewsLink = "/Public/Newsroom/NCATENews/tabid/669/Default.aspx";
    		var widgetFooter = document.createElement("div");
    		widgetFooter.setAttribute("id","widgetNcateNewsFooter");
    		widgetFooter.innerHTML = "<a href='" + moreNcateNewsLink + "' target='_self'>read more NCATE news</a>";
    		widgetNcateNews.appendChild(widgetFooter);
    	
    	} // END FUNCTION
    	
//END NCATE NEWS WIDGET    	
    	
////////////////////////////////////////////////////////////////////////////////

// FUNCTIONS FOR EDUCATION NEWS WIDGET

function initializeEdNews()
    	{
    		var feed = "";
   			feed = new google.feeds.Feed("http://www.ncate.org/Public/Newsroom/EducationNews/tabid/670/rssid/2/Default.aspx");
   			feed.setResultFormat(google.feeds.Feed.XML_FORMAT);
   			feed.load(loadEdNews);
   			var t=setTimeout("initializeEdNews()", 60000);    	
    	}
    	
function loadEdNews(xmlFile)
    	{
    		var numToDisplay = 5;
    		var widgetEdNews = document.getElementById("div_edNewsWidget");
    	
    		//Clear out previous content, if any
    		widgetEdNews.innerHTML = "";
    		
    		//Create the Widget's Header
    		var widgetHeader = document.createElement("div");
    		widgetHeader.setAttribute("id","widgetEdNewsHeader");
    		widgetHeader.innerHTML = "Education News";
    		widgetEdNews.appendChild(widgetHeader);
    		
    		if (!xmlFile.error)
    		{   
    			var items = xmlFile.xmlDocument.getElementsByTagName("item");
    			var numItems = items.length;
    			if (numToDisplay>numItems)
    			{
    				numToDisplay = numItems;
    			}
    			
    			// change i=0 or 1 depending on latest article also being the
    			// headline or not. this prevents duplication on the home page
    			// 0 = is not the headline; 1 = is the headline
    			
    			for (var i=0; i<numToDisplay; i++)
    			{
    				//Get Data from XML File
    				/////////////////////////
    				
    				var itemTitle = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
    				
    				var itemLink = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
    				
    				var itemLinkedTitle = '<a href="' + itemLink + '" target="_self">' + itemTitle + '</a>' ;
    				
    				var itemDate = items[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue;
    				
    				itemDate = new Date(itemDate);
    				
    				var itemDateYear = itemDate.getFullYear();
    				var itemDateMonth = itemDate.getMonth()+1;
    				var itemDateDay = itemDate.getDate();
    				var strDate = itemDateMonth + "/" + itemDateDay + "/" + itemDateYear;
    				    				
    				var itemSummary = items[i].getElementsByTagName("description")[0].firstChild.nodeValue;
    				//itemSummary = eventContent.replace("<a>" , "");
    				//itemSummary = extractSnippet(itemSummary);
    				
    				
    				//Display the Event Data
    				////////////////////////
    				
    				//Declare variables to create div tags for this item				
    				var newItem = document.createElement("div");
    				var newItemTitle = document.createElement("div");
    				//var newItemSummary = document.createElement("div");
    				
    				//Create the Divs and set their Classes for styling
    				newItemTitle.innerHTML = strDate + "<br/>" + itemLinkedTitle;
    				newItemTitle.setAttribute("id","itemTitle");
    				//newItemSummary.innerHTML = itemSummary;
    				//newItemSummary.setAttribute("class","itemSummary");
    				
    				//Put it all together and display on the page
    				newItem.appendChild(newItemTitle);
    				//newItem.appendChild(newItemSummary);
    				newItem.setAttribute("id","itemContainer");
    				widgetEdNews.appendChild(newItem);					
    			
    			} // END FOR LOOP
    		
    		} // END IF
    		
    		//Create the Widget's Footer
    		var moreEdNewsLink = "/Public/Newsroom/EducationNews/tabid/670/Default.aspx";
    		var widgetFooter = document.createElement("div");
    		widgetFooter.setAttribute("id","widgetEdNewsFooter");
    		widgetFooter.innerHTML = "<a href='" + moreEdNewsLink + "' target='_self'>read more education news</a>";
    		widgetEdNews.appendChild(widgetFooter);
    	
    	}

//END ED NEWS WIDGET	
    	
//////////////////////////////////////////////////////
//FUNCTIONS USED BY BOTH NEWS WIDGETS

function extractSnippet(articleString)
			{
				
				//var snippetStart = articleString.indexOf(")") + 4;
				//var snippet = articleString.substr(snippetStart);
				var snippet = articleString;
		
				if (snippet.length > 40)
				{
					snippet = snippet.substring(0,40);
				} // END IF
		
				return snippet;
				
			} // END FUNCTION


///////////////////////////////////////////////
// HOME PAGE SLIDESHOW
///////////////////////////////////////////////
// Settings
var autoplay = 1; // Set autoplay on(1) or off(0)
var paused = 0; // Change to 0 for autoplay, 1 for no autoplay
var imgLoc = "/slideshow_ajax/images/";
var delay = 5000; // Milleseconds for each slide to project on screen

// Global Variables
var currSlide = 0;
var xmlFile = loadXMLfile("/slideshow_ajax/slides.xml");
// GET number of slide records in XML file
var numSlides = xmlFile.getElementsByTagName("title").length;


// This function connects to the XML file
function loadXMLfile(path) 
{
    try
    { // MSIE
        var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    }
    catch(e)
    {
        try
        { // Firefox, Opera, etc.
	        var xmlDoc=document.implementation.createDocument("","",null);
        }
		catch(e)
		{
			alert(e.message)
		}
	}
	try
	{
		xmlDoc.async = false; // halt code execution until xmlDoc is loaded
		xmlDoc.load(path);    // load file
	}
	catch(e)
	{ // unable to load
		try
		{ // for Safari
			xmlDoc = new XMLHttpRequest();
			xmlDoc.open("GET", path, false);
			xmlDoc.send();
			xmlDoc=xmlDoc.responseXML;
		}
		catch(e)
		{
			alert(e.message)
			return; // return with nothing
		}
	}
	return xmlDoc;
} // END loadXMLfile()



function createScreen()
{
	// Create a variable as an alias for the slideshowWrapper div
	var wrapper = document.getElementById("slideshowWrapper");
	
	// Remove any previous content
	wrapper.innerHTML = "";		
			
    // Create container divs on the page
    wrapper.innerHTML = "<div id='slide_image'></div> <div id='slide_title_bar'> <div id='div_controller'> <img id='button_previous' src='/slideshow_ajax/button_previous.png' alt='display previous slide' /> <img id='button_playpause' src='/slideshow_ajax/button_pause.png' alt='play or pause the slideshow' /> <img id='button_next' src='/slideshow_ajax/button_next.png' alt='display next slide' /> </div> <span id='slide_title'></span> </div>" ;
    
    // Attach Javascript actions to the buttons
    document.getElementById("button_playpause").setAttribute("onclick", "playpause()");
    document.getElementById("button_previous").setAttribute("onclick", "displayPreviousSlide()");
    document.getElementById("button_next").setAttribute("onclick", "displayNextSlide()");
    
} // END createScreen()



function displaySlide(slideNum)
{
	// Retrieve data and create variables for display on page
	var slideTitle = xmlFile.getElementsByTagName('title')[slideNum].childNodes[0].nodeValue;
			
	var slideLink = xmlFile.getElementsByTagName('link')[slideNum].childNodes[0].nodeValue;
			
	var slideLinkedTitle = "<a href='" + slideLink + "' target='_parent'>" + slideTitle + "</a>" ;
			
	var slideImgLocation = imgLoc + xmlFile.getElementsByTagName('imgname')[slideNum].childNodes[0].nodeValue;
	
	var slideIMG = "<a href='" + slideLink + "' target='_parent'> <img src='" + slideImgLocation + "' alt='" + slideTitle + "' /> </a>" ;
	
	// Declare variables for the Slideshow's HTML divs
   	var imageContainer = document.getElementById("slide_image");
	var titleSpan = document.getElementById("slide_title");
	
	imageContainer.innerHTML = slideIMG;
	titleSpan.innerHTML = slideLinkedTitle;
	
} // END displaySlide()



function displayPreviousSlide()
{
	if (currSlide==0)
	{
		currSlide = (numSlides-1);
		displaySlide(currSlide);
	} // END If
	else
	{
		currSlide--;
		displaySlide(currSlide);
	}	
}


function displayNextSlide()
{
	if (currSlide==(numSlides-1))
	{
		currSlide = 0;
		displaySlide(currSlide);
	}
	else
	{
		currSlide++;
		displaySlide(currSlide);
	}
}



function startSlideshow(xmlFile)
{
	//Proceed only if the XML data is valid
	if (!xmlFile.error)
    {		
		// Create the screen
		createScreen();
		
		// Start the Timed Slideshow
		if(autoplay)
		{
			autoPlay();
		}
		else
		{
			displaySlide(currSlide);
		}
		
	} // END If
	else 
   	{
   		window.alert("xmlFile ERROR");
   	} // END Else
	
} // END startSlideshow()



function autoPlay()
{
	if(!paused)
	{
		if (currSlide<numSlides)
		{
			displaySlide(currSlide);
			currSlide++;
		} // END If
		else
		{
			currSlide = 0;
			displaySlide(currSlide);
			currSlide++;
		}
		var t=setTimeout("autoPlay()",delay);
	}
	
}



function playpause()
{
	if(!paused) // If not paused, then pause the show
	{
		document.getElementById("button_playpause").src="/slideshow_ajax/button_play.png";
		paused = 1;
		currSlide--;
		displaySlide(currSlide);
	}	
	else
	{
		document.getElementById("button_playpause").src="/slideshow_ajax/button_pause.png";
		paused = 0;
		autoPlay();
	}
}
