var RSSRequestObject = false; 
var RSSRequestObject_News = false; 
var RSSRequestObject_Links = false; 
var RSSRequestObject_Members = false; 

var Backend = 'eventrss.php';
var Backend_News = 'newsrss.php';
var Backend_Links = 'linksrss.php';
var Backend_Members = 'membersrss.php';


function ReqChange() 
{

	if (RSSRequestObject.readyState==4) 
	{
		if (RSSRequestObject.responseText.indexOf('invalid') == -1) 
		{ 	
			var node = RSSRequestObject.responseXML.documentElement; 	

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

			if (items.length == 0) 
			{
				content = '<div id=no_events>We are making plans.  Check back soon.</div>';
			} 
			else 
			{
				var content = '<table id=cal_tbl>';

				for (var n = 0; n < items.length; n++)
				{
					var desc = '';
					var start_time = '';
					var end_time = '';
					var month = '';
					var start_day = '';
					var end_day = '';
					var title = '';

					try 
					{ 
						title = items[n].getElementsByTagName('title').item(0).firstChild.data;
					}
					catch (e) {} 

					try 
					{ 
						desc = items[n].getElementsByTagName('content').item(0).firstChild.data;
					}
					catch (e) {} 					

					try 
					{ 
						time = items[n].getElementsByTagName('gd:when').item(0).getAttribute('startTime');
						start_time = getTime(time);
						month = getMonth(time);
						start_day = getDay(time);
					}
					catch (e) 
					{ 
						time = items[n].getElementsByTagName('when')[0].getAttribute('startTime');
						start_time = getTime(time);
						month = getMonth(time);
						start_day = getDay(time);
 					} 

					try 
					{ 
						time = items[n].getElementsByTagName('gd:when').item(0).getAttribute('endTime');
						end_time = getTime(time);
						end_day = getDay(time);
					}
					catch (e) 
					{ 
						time = items[n].getElementsByTagName('when')[0].getAttribute('endTime');
						end_time = getTime(time);
						end_day = getDay(time);
 					} 


					day_class="calendar_day";
					day = start_day;	
					if(end_day != start_day) 
					{
						day = start_day + "-" + end_day;
						day_class="calendar_day_multiple";
					}

					time = start_time;

					if(start_time != "All Day") 
						time = start_time + "-" + end_time;

					content += "<tr><td id=cal_day_cell><div id=calendar_entry><div id=calendar><div id=calendar_month>" + month + "</div><div id=" + day_class + ">" + day + "</div></div></td><td id=cal_cell><div id=calendar_details><div id=calendar_title>" + title + "</div><div id=calendar_times>" + time + "</div><div id=calendar_desc>" + desc + "</div></div></div></td></tr>";

				}	
			}

			content += "</table>";

			document.getElementById("ajaxreader").innerHTML = content;
			document.getElementById("status").innerHTML = "";			
		}
		else 
		{
			document.getElementById("status").innerHTML = "<div id=error>Error requesting data.<div>";
		}
		
		HideShow('status');
		adjust_height();
	}
	
}


function getMonth(time)
{	
 	var month = time.substr(5, 2);

	if(month.substr(0, 1) == 0) month = month.substr(1, 1);

	switch(month)
	{
		case '1': return "JAN";
		case '2': return "FEB";
		case '3': return "MAR";
		case '4': return "APR";
		case '5': return "MAY";
		case '6': return "JUN";
		case '7': return "JUL";
		case '8': return "AUG";
		case '9': return "SEP";
		case '10': return "OCT";
		case '11': return "NOV";
		case '12': return "DEC";
	}

	return '';
}

function getDay(time)
{
 	return time.substr(8, 2);
}

function getTime(time)
{	
	if(time.indexOf('T') < 0) return "All Day";

 	var hour = time.substr(time.indexOf('T') + 1, 2);

	var AMPM = 'AM';

	if(hour >= 12) 
	{
		AMPM = 'PM';
		hour = hour - 12;
		if(hour == 0) hour = 12;
	}

	var minute = time.substr(time.indexOf('T') + 3, 3);

	if(hour.length == 2 && hour.substr(0, 1) == 0) hour = hour.substr(1, 1);

	var timeStr = hour + minute + ' ' + AMPM;

	return timeStr;	
}


function RSSRequest() 
{
	document.getElementById("status").innerHTML = "<div id=no_events>Loading Events.</div>";
    	if (window.XMLHttpRequest) 
	{ 
        	RSSRequestObject = new XMLHttpRequest(); 
        	RSSRequestObject.onreadystatechange = ReqChange; 
        	RSSRequestObject.open("GET", Backend, true); 
        	RSSRequestObject.send(null); 
	}
	else if(window.ActiveXObject) 
	{ 

        	RSSRequestObject = new ActiveXObject("Microsoft.XMLHTTP"); 
        	if (RSSRequestObject) 
		{ 
            		RSSRequestObject.onreadystatechange = ReqChange; 
            		RSSRequestObject.open("GET", Backend, true); 
            		RSSRequestObject.send(); 
        	} 
    	} 
}

function RSSNews() 
{


	document.getElementById("status_news").innerHTML = "<div id=no_events>Loading News.</div>";

    	if (window.XMLHttpRequest) 
	{ 
        	RSSRequestObject_News = new XMLHttpRequest(); 
        	RSSRequestObject_News.onreadystatechange = ReqNews; 
        	RSSRequestObject_News.open("GET", Backend_News, true); 
        	RSSRequestObject_News.send(null); 
	}
	else if(window.ActiveXObject) 
	{ 
        	RSSRequestObject_News = new ActiveXObject("Microsoft.XMLHTTP"); 
        	if (RSSRequestObject_News) 
		{ 
            		RSSRequestObject_News.onreadystatechange = ReqNews; 
            		RSSRequestObject_News.open("GET", Backend_News, true); 
            		RSSRequestObject_News.send(); 
        	} 
    	} 
}

function RSSLinks() 
{
	document.getElementById("status_links").innerHTML = "<div id=no_events>Loading Links.</div>";

    	if (window.XMLHttpRequest) 
	{ 
        	RSSRequestObject_Links = new XMLHttpRequest(); 
        	RSSRequestObject_Links.onreadystatechange = ReqLinks; 
        	RSSRequestObject_Links.open("GET", Backend_Links, true); 
        	RSSRequestObject_Links.send(null); 
	}
	else if(window.ActiveXObject) 
	{ 
        	RSSRequestObject_Links = new ActiveXObject("Microsoft.XMLHTTP"); 
        	if (RSSRequestObject_Links) 
		{ 
            		RSSRequestObject_Links.onreadystatechange = ReqLinks; 
            		RSSRequestObject_Links.open("GET", Backend_Links, true); 
            		RSSRequestObject_Links.send(); 
        	} 
    	} 
}

function RSSMembers() 
{
	document.getElementById("status_members").innerHTML = "<div id=no_events>Loading Member Directory.</div>";

    	if (window.XMLHttpRequest) 
	{ 
        	RSSRequestObject_Members = new XMLHttpRequest(); 
        	RSSRequestObject_Members.onreadystatechange = ReqMembers; 
        	RSSRequestObject_Members.open("GET", Backend_Members, true); 
        	RSSRequestObject_Members.send(null); 
	}
	else if(window.ActiveXObject) 
	{ 
        	RSSRequestObject_Links = new ActiveXObject("Microsoft.XMLHTTP"); 
        	if (RSSRequestObject_Members) 
		{ 
            		RSSRequestObject_Members.onreadystatechange = ReqMembers; 
            		RSSRequestObject_Members.open("GET", Backend_Members, true); 
            		RSSRequestObject_Members.send(); 
        	} 
    	} 
}

function ReqNews() 
{

	if (RSSRequestObject_News.readyState==4) 
	{
		if (RSSRequestObject_News.responseText.indexOf('invalid') == -1) 
		{ 	
			var node = RSSRequestObject_News.responseXML.documentElement; 
	
			var items = node.getElementsByTagName('entry');

			if (items.length == 0) 
			{
				content = '<div id=no_events>Nothing new to report, but check back soon.</div>';
			} 
			else 
			{
				var content = '';

				for (var n = 0; n < items.length; n++)
				{
					var desc = '';
					var name = '';
					var header = '';
					var link = '';
					var author = '';
					var date = '';

					try 
					{ 
						desc = items[n].getElementsByTagName('content').item(0).firstChild.data;
						header = desc.substr(desc.indexOf('header:') + 7, desc.indexOf(', link') - 7);
						desc = desc.substr(desc.indexOf(', link') + 2);
						link = desc.substr(desc.indexOf('link:') + 5, desc.indexOf(',') - 5);
						desc = desc.substr(desc.indexOf(',') + 2);
						author = desc.substr(desc.indexOf('author:') + 7, desc.indexOf(',') - 7);
						desc = desc.substr(desc.indexOf(',') + 2);
						date = desc.substr(desc.indexOf('date:') + 5, desc.indexOf(',') + 1);
						desc = desc.substr(desc.indexOf(',') + 2);
						desc = desc.substr(desc.indexOf('description:') + 12);

					}
					catch (e) {} 			


					content += '<div id=news><div id=news_header>' + header + '</div><div id=news_byline>Posted By <div id=news_author>' + author + '</div>&nbsp;on ' + date + '</div><div id=news_desc>' + desc + ' [...] <a target="_blank" id=news_link href=\'' + link + '\'>read more</a></div></div>';

				}	
			}

			document.getElementById("ajaxreader_news").innerHTML = content;
			document.getElementById("status_news").innerHTML = "";
			
		}
		else 
		{
			document.getElementById("status_news").innerHTML = "<div id=error>Error requesting data.<div>";
		}

		HideShow('status_news');
		adjust_height();
	}
	
}


function ReqMembers() 
{
	if (RSSRequestObject_Members.readyState==4) 
	{
		if (RSSRequestObject_Members.responseText.indexOf('invalid') == -1) 
		{ 	
			var node = RSSRequestObject_Members.responseXML.documentElement; 
	
			var items = node.getElementsByTagName('entry');


			if(items.length == 0) 
			{

			} 
			else 
			{
				var content = '';
				for (var n = 0; n < items.length; n++)
				{
					var desc = '';
					var name = '';
					var firm = '';
					var address = '';
					var citystatezip = '';
					var phone = '';
					var fax = '';
					var email = '';
					var website = '';
					var specialty = '';

					try 
					{ 

						desc = items[n].getElementsByTagName('content').item(0).firstChild.data;
						name = desc.substr(desc.indexOf('name:') + 6, desc.indexOf(', firm') - 6);
						name = trim(name);

						desc = desc.substr(desc.indexOf(', firm:') + 7);
						firm = desc.substr(0, desc.indexOf(', address:'));
						firm = trim(firm);

						desc = desc.substr(desc.indexOf(', address:') + 10);
						address = desc.substr(0, desc.indexOf(', citystatezip:'));
						address= trim(address);

						desc = desc.substr(desc.indexOf(', citystatezip:') + 15);
						citystatezip = desc.substr(0, desc.indexOf(', phone:'));
						citystatezip = trim(citystatezip);

						desc = desc.substr(desc.indexOf(', phone:') + 8);
						phone = desc.substr(0, desc.indexOf(', fax:'));
						phone = trim(phone);

						desc = desc.substr(desc.indexOf(', fax:') + 6);
						fax = desc.substr(0, desc.indexOf(', email:'));
						fax = trim(fax);

						desc = desc.substr(desc.indexOf(', email:') + 8);
						email = desc.substr(0, desc.indexOf(', website:'));
						email = trim(email);

						desc = desc.substr(desc.indexOf(', website:') + 11);
						website = desc.substr(0, desc.indexOf(', specialty:'));
						website = trim(website);

						specialty = desc.substr(desc.indexOf(', specialty:') + 12);


					}
					catch (e) {} 	

					if(email != "N/A")
					{
            var first_part = email.substr(0, email.indexOf('@'));
            var second_part = email.substr(email.indexOf('@') + 1);
            
						name = "<div id=name>" + name + "</div><div id=email> <script language=\"javascript\" type=\"text/javascript\">" + generate_address(first_part, second_part); + "</script></div>";
					}
					else
						name = "<div id=name>" + name + "</div>";

					if(website != "N/A" && firm != "N/A")
						full_address = "<a href='" + website + "' id=firm_url>" + firm + "</a>";
					else if (firm != "N/A")
						full_address = "<div id=firm>" + firm + "</div>";
					else
						full_address = "";

					if(address != "N/A")
						full_address += "<div id=m_address>" + address + "</div>";

					if(citystatezip != "N/A")
						full_address += "<div id=citystatezip>" + citystatezip + "</div>";

					specialty = "<div id=specialty>" + parse_specialty(specialty) + "</div>";

					var table = GetObject("member_directory");
					add_row(table, name, full_address, phone, fax, specialty);
				}	
			}

			document.getElementById("status_members").innerHTML = "";
			
		}
		else 
		{
			document.getElementById("status_members").innerHTML = "<div id=error>Error requesting data.<div>";
		}
		
		HideShow('status_members');
	}
	
}

function trim(this_string)
{
	return this_string.replace(/^\s*/, "").replace(/\s*$/, "");
}

function add_row(table, name, address, phone, fax, specialty)
{
  	var lastRow = table.rows.length;
  	var row = table.insertRow(lastRow);

	if((table.rows.length % 2) == 1)
		row.className = "odd";
  
  	var nameCell = row.insertCell(0);
  	nameCell.innerHTML = name;
	nameCell.className = "name_col";

  	var addressCell = row.insertCell(1);
  	addressCell.innerHTML = address;
	addressCell.className = "address_col";

  	var phoneCell = row.insertCell(2);
  	var phoneNode = document.createTextNode(phone);
  	phoneCell.appendChild(phoneNode);
	phoneCell.className = "phone_col";

  	var faxCell = row.insertCell(3);
	if(fax != "N/A")
  		var faxNode = document.createTextNode(fax);
	else
  		var faxNode = document.createTextNode("");

  	faxCell.appendChild(faxNode);
	faxCell.className = "fax_col";

  	var specialtyCell = row.insertCell(4);
  	specialtyCell.innerHTML = specialty;
	specialtyCell.className = "specialty_col";
}

function ReqLinks() 
{
	if (RSSRequestObject_Links.readyState==4) 
	{
		if (RSSRequestObject_Links.responseText.indexOf('invalid') == -1) 
		{ 	
			var node = RSSRequestObject_Links.responseXML.documentElement; 
			var items = node.getElementsByTagName('entry');

			if (items.length == 0) 
			{

			} 
			else 
			{
				var content = '';

				for (var n = 0; n < items.length; n++)
				{
					var desc = '';
					var name = '';
					var link = '';
					var details = '';

					try 
					{ 

						desc = items[n].getElementsByTagName('content').item(0).firstChild.data;
						name = desc.substr(desc.indexOf('name:') + 6, desc.indexOf(', link') - 6);

						desc = desc.substr(desc.indexOf(', link:') + 7);

						if(desc.indexOf('details') > 0)
						{
							
							link = desc.substr(0, desc.indexOf(', '));
							desc = desc.substr(desc.indexOf(',') + 2);
							details = desc.substr(desc.indexOf('details:') + 8);
						}	
						else
						{
							link = desc;
						}					

					}
					catch (e) {} 			

					content += "<div id=resource><a id=resource_link href='" + link + "' target='_blank'>" + name + "</a><div id=resource_desc>" + details+ "</div></div>";
				}	
			}

			document.getElementById("ajaxreader_links").innerHTML = content;
			document.getElementById("status_links").innerHTML = "";
			
		}
		else 
		{
			document.getElementById("status_links").innerHTML = "<div id=error>Error requesting data.<div>";
		}
		
		HideShow('status_links');
		adjust_height();
	}
	
}

function HideShow(id)
{
	var el = GetObject(id);
	if(el.style.display == "none")
		el.style.display = '';
	else
		el.style.display = 'none';
}

function parse_specialty(specialty) 
{
	var specialty_str = "";

	var split_str = new Array();
	split_str = specialty.split(',');

	for(var i=0; i < split_str.length; i++)
	{
		specialty_str += "<div id=specialty_item>" + trim(split_str[i]) + "</div>";
	}

	return specialty_str;
}

function GetObject(id)
{
	var el = document.getElementById(id);
	return(el);
}

function adjust_height()
{
	var right_col = GetObject('right_column');
	var left_col = GetObject('left_column');

	if(right_col.offsetHeight < left_col.offsetHeight)
	{
		right_col.style.height = left_col.offsetHeight;
		GetObject('main_content').style.height = left_col.offsetHeight;
	}

}


function generate_address(username, hostname) 
{       
        var atsign = "&#64;";
        var addr = username + atsign + hostname;
        return addr;
 }