All pastes #206959 Raw Edit

Mine

public text v1 · immutable
#206959 ·published 2006-10-17 18:06 UTC
rendered paste body
/* Setup AJAX Request */
var request = null;
try {
  request = new XMLHttpRequest();
} catch (trymicrosoft) {
  try {
    request = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (othermicrosoft) {
    try {
      request = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (failed) {
      request = null;
    }
  }
}

if (request == null)
  alert("Error creating request object!");

/* Cal Switcher */
var calurl = null;

function SwitchCals(form, calurl) {
	calItem = form.calendars.selectedIndex;
	calNumber = form.calendars.options[calItem].value;
	calurl = "switchcals.php?calendars=" + calNumber;
	request.open("GET", calurl, true);
	request.onreadystatechange = updateCal;
	request.send(null);
}

function updateCal() {
  if (request.readyState == 4) {
    var newCal = request.responseText;
    document.getElementById("gcal").innerHTML = newCal;
  }
}


/* Cal Switcher */
var url = null;
function ShowEvents(form, url) {
	calItem = form.calendars.selectedIndex;
	calNumber = form.calendars.options[calItem].value;
	url = "calfeeds.php?calendars=" + calNumber;
	alert(url);
	request.open("GET", url, true);
	request.onreadystatechange = updateEvents;
	request.send(null);
}

/*
* onreadystatechange function
*/
function updateEvents() {

	// If data received correctly
	if (request.readyState==4) {
	
		// if data is valid
		if (request.responseText.indexOf('invalid') == -1) 
		{ 	
			// Parsing Feeds
			var node = request.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("eventsajax").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);
}

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);
}