function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}
window.onload = externalLinks;

function refreshNotifications() {
	var msg_bar = document.getElementById('notification_messages');
	var notifications;
	
	// populate the notifications using JSON
	
	// sort through array and display notification
	
}


/**
 * Javascript based history polling service
 */
var expectedHash = '';
var pollingFunctions = new Array();
function addPollingFuncton(name) {
	if (name != '') {
		if (pollingFunctions.length == 0) {
			pollingFunctions[0] = name;
		} else {
			pollingFunctions[pollingFunctions.length + 1] = name;
		}
	}
}
function makeHistory(newHash) {
	window.location.hash = newHash;
	expectedHash = window.location.hash;
	return true;
}
function handleHistory() {
	if ( window.location.hash != expectedHash ) {
		expectedHash = window.location.hash;		
		//var newoption = expectedHash.substring(6);
		for (var i = 0;i<pollingFunctions.length; i++) {
			eval(pollingFunctions[i] + '("' + expectedHash.replace(/\#/, '') + '")');
		}
	}
	return true;
}
function pollHash() {
	handleHistory();
	window.setInterval("handleHistory()", 1000);
	return true;
}
function updateSelect(name, value) {
	var obj = document.getElementById(name);
	if (typeof(obj) != 'undefined') {
		for (var i=0;i<obj.options.length;i++) {
			if (obj.options[i].value == value) {
				obj.options[i].selected = true;
			}
		}
	}
}

function updateText(name, value) {
	var obj = document.getElementById(name);
	if (typeof(obj) != 'undefined') {
		obj.value = value;
	}
}








function setupEvents() {
	var fixMonths = 1;
	var calendar = document.getElementById("dxcaldays");
	var rows = calendar.getElementsByTagName("tr");
	for (var i=0;i<rows.length;i++) {
		var days = rows[i].getElementsByTagName("td");
		for (var a=0;a<days.length;a++) {
			var thismonth = new RegExp('thismonth');
			var weekend = new RegExp('weekend');
			if (days[a].className.match(thismonth) || days[a].className.match(weekend)) {
				for (var b=0;b<calendarEvents.length;b++) {
					var correctMonth = calendarEvents[b][1] - fixMonths;
					var dateCheck = calendarEvents[b][0] + correctMonth + calendarEvents[b][2];
					var regExp = new RegExp(dateCheck + "$");
					if (days[a].id.match(regExp)) {
						days[a].style.backgroundColor = 'orange';
					}
				}
			}
		}
	}
}

function updateEvents(curMonth,prevMonth,Year) {
	// use setupEvents if it is the current month!
	if (curMonth == currentMonth) {
		return setupEvents();
	}
	var calendar = document.getElementById("dxcaldays");
	var rows = calendar.getElementsByTagName("tr");
	for (var i=0;i<rows.length;i++) {
		var days = rows[i].getElementsByTagName("td");
		for (var a=0;a<days.length;a++) {
			var thismonth = new RegExp('thismonth');
			var weekend = new RegExp('weekend');
			if ((days[a].className.match(thismonth)) || (days[a].className.match(weekend))) {
				for (var b=0;b<calendarEvents.length;b++) {
					if (calendarEvents[b][1] == curMonth && calendarEvents[b][0] == Year) {
						if (days[a].innerHTML == calendarEvents[b][2]) {
							days[a].style.backgroundColor = 'orange';
						}
					} else {
						days[a].style.backgroundColor = '';
					}
				}
			} else {
				days[a].style.backgroundColor = '';
			}
		}
	}
}
