All pastes #195592 Raw Edit

Unnamed

public text v1 · immutable
·published 2006-10-09 18:48 UTC
rendered paste body
var RSSRequestObject = false; // XMLHttpRequest Object
var Backend = false;

if (form.calendars.options[Item].value == 'cal1') {
	Backend = 'feeds/calendar1feed.php';
} elseif (form.calendars.options[Items].value == 'cal2') {
	Backend = 'feeds/calendar2feed.php';
} elseif (form.calendars.options[Items].value == 'cal3') {
	Backend = 'feeds/calendar3feed.php';
} else {
	Backend = 'feeds/calendar1feed.php';
}


//var Backend = 'feeds/calendar1feed.php'; // Backend url

window.setInterval("update_timer()", 1200000); // update the data every 20 mins





if (window.XMLHttpRequest) // try to create XMLHttpRequest

	RSSRequestObject = new XMLHttpRequest();



if (window.ActiveXObject)	// if ActiveXObject use the Microsoft.XMLHTTP

	RSSRequestObject = new ActiveXObject("Microsoft.XMLHTTP");





/*

* onreadystatechange function

*/

function ReqChange() {



	// If data received correctly

	if (RSSRequestObject.readyState==4) {

	

		// if data is valid

		if (RSSRequestObject.responseText.indexOf('invalid') == -1) 

		{ 	

			// Parsing Feeds

			var node = RSSRequestObject.responseXML.documentElement; 

            var content = '';

            

			// Get the calendar title - uncomment next two lines if you want it to show up

			var title = node.getElementsByTagName('title').item(0).firstChild.data;

			var content = '<div class="channeltitle">' + title + '</div>';

            

			// Browse events

			var items = node.getElementsByTagName('entry');

            var itemTimePrev = new Date();

            itemTimePrev.setTime(0000);

			if (items.length == 0) {

				content += '<ul><li><div class=error>No events</div></li></ul>';

			} else {

				content += '<ul>';

				for (var n=items.length-1; n >= 0; n--)

				{

					var itemTitle = items[n].getElementsByTagName('title').item(0).firstChild.data;

                    //Here's a little love for our friend IE - he hates standards, like XML namespace. Thanks for making a shitty product Microsoft!

                    try { 

						var itemTimeXML = items[n].getElementsByTagName('when')[0].getAttribute("startTime");  

                        } 

					catch (e) { var itemTimeXML = items[n].getElementsByTagName('gd:when')[0].

                    getAttribute("startTime");}

                    //var itemTimeXML = items[n].getElementsByTagName('when')[0].getAttribute("startTime");

                    var itemTime = new Date();

                    itemTime.setTime

                        (Date.UTC(itemTimeXML.substr(0,4),itemTimeXML.substr(5,2),itemTimeXML.substr(8,2)

                        ,itemTimeXML.substr(11,2),itemTimeXML.substr(14,2)));

					var itemLink =  items[n].getElementsByTagName('link')[0].getAttribute("href");

					try { 

						var itemContent = ' - ';

                        itemContent += items[n].getElementsByTagName('content').item(0).firstChild.data;  

                        } 

					catch (e) { var itemContent = '';}

                    

                    if ((itemTime.getUTCDate()==itemTimePrev.getUTCDate())&&(itemTime.getUTCMonth()==itemTimePrev.getUTCMonth())){ //Don't dupe the dates

                    content += '';}

                    else {

                    content += '<h3><li>' + getMonthName(itemTime) + ' ' + itemTime.getUTCDate() + '</li></h3>';}

                    

                    content += '<ul><li>' + getTimeFormatted(itemTime)+

                    ' <a href="' +itemLink + '">'  + itemTitle + '</a>' + itemContent + '</li></ul>';

                    itemTimePrev.setTime(itemTime); //Save the last timestamp for next iteration comparison

				}

				

	

				content += '</ul> ';

			}

			// Display the result

			document.getElementById("gcalajax").innerHTML = content;



			// Tell the reader the everything is done

			document.getElementById("status").innerHTML = "Done.";

			

		}

		else {

			// Tell the reader that there was error requesting data

			document.getElementById("status").innerHTML = "<div class=error>Error requesting data.<div>";

		}

		

		Hide('status');

	}

	

}



/*

* Time Format - Month

*/

function getMonthName(dateObject) {

    var m_names = new Array("January", "February", "March", 

    "April", "May", "June", "July", "August", "September", 

    "October", "November", "December");

    return(m_names[dateObject.getUTCMonth()-1]); //Array starts at 0, getMonth starts at 1

}



/*

* Time Format - Hour

*/

function getTimeFormatted(dateObject) {

    var hours = dateObject.getUTCHours();

    var minutes = dateObject.getUTCMinutes();

    var ampm = "AM";

    if (hours > 12){

        hours = hours - 12;

        ampm = "PM";}

    if (hours == 0) {hours = 12;}

    if (hours == 12){ampm = 'PM'}

    if (minutes < 10){minutes = "0" + minutes;}

    var formattedTime = hours + ':' + minutes + ' ' + ampm;

    return (formattedTime);

}



/*

* Main AJAX RSS reader request

*/

function RSSRequest() {

	// change the status to requesting data
	document.getElementById("status").innerHTML = "Requesting data ...";

	
	// Prepare the request
	RSSRequestObject.open("GET", Backend, true);

	
	// Set the onreadystatechange function
	RSSRequestObject.onreadystatechange = ReqChange;


	// Send
	RSSRequestObject.send(null); 

}



/*

* Timer

*/

function update_timer() {

	RSSRequest();

}





function Hide(id){

	var el = GetObject(id);

	//if(el.style.display=="none")

	//el.style.display='';

	//else

	el.style.display='none';

}



function GetObject(id){

	var el = document.getElementById(id);

	return(el);

}