function addEvent(obj, evType, fn){
	 if (obj.addEventListener) {
		 obj.addEventListener(evType, fn, true);
		 return true;
	 } else if (obj.attachEvent) {
		 var r = obj.attachEvent("on"+evType, fn);
		 return r;
	 } else {
		return false;
	 }
}

var MajorDisplay = {
	
	init: function() {
		if (!document.getElementsByTagName) return;
		var elems = document.getElementsByTagName("a");
		for (var i = 0; i < elems.length; i++) {
			var elem = elems[i];
			if (elem.className == "view-major") {
				elem.onclick = function() {
					elem.blur();
					return false;
				}
				Event.observe (elem, 'mouseover', MajorDisplay.show, false);
				Event.observe (elem, 'mouseout', MajorDisplay.hide, false);
			}
		}		
	},
	
	hide: function(e) {
		e = Event.element(e).parentNode;
		if (e.tagName == 'TD') return; // This is for it to work in Safari
		target = e.parentNode.lastChild;
		target.innerHTML = '';
		Element.setStyle (target, {
			visibility: 'hidden'	
			});		
	},
	
	show: function(e) {
		e = Event.element(e).parentNode;
		if (e.tagName == 'TD') return; // This is for it to work in Safari
		errorElem = e;
		target = e.parentNode.lastChild;
		target.className = "major";
		
		x = (((Position.cumulativeOffset(e)[0])-target.offsetWidth)-e.clientWidth)-4;
		y = (Position.cumulativeOffset(e)[1])-8;
		Element.setStyle (target, {
			display: 'block',
			visibility: 'visible',
			position: 'absolute',
			left: x + 'px',  
			top: y + 'px'		
			});
		target.innerHTML = '<span class="top-bghook"></span><span class="content"><span class="loading"><img src="/designexpo/images/blue-loading.gif" alt="loading icon" width="16" height="16" /> Loading...</span></span>';
		new Ajax.Updater (target, e.href, {	onFailure: MajorDisplay.show_error });
		return false;		
	},
	
	show_error: function(e) {		
		errorElem.innerHTML = '<span class="top-bghook"></span><span class="content">The majors information could not be retrieved at this time.</span>'+"\n";
	}
}

var MajorsFilter = {

	init: function() {
		elem = document.getElementById('majors');
		elem.onchange = MajorsFilter.select_major;		
	},

	select_major: function() {
		
		elem = document.getElementById('majors');
		current_url = document.URL;

		if (current_url.match(/(\?|\&)major=/)) {
			target_url = current_url.replace(/((\?|\&)major=)([a-z]+)/g, "$1"+elem.value);
		} else if (current_url.match(/\?/)) {
			target_url = current_url + '&major=' + elem.value;
		} else {
			target_url = current_url + '?major=' + elem.value;
		}
		document.location.href = target_url;
		
	}
}

addEvent(window, 'load', MajorDisplay.init);
addEvent(window, 'load', MajorsFilter.init);