function adjHeight() {
  var objLnav = document.getElementById("leftNav");
	var objMidCont = document.getElementById("midContent");
	
	if (((objLnav) && (objMidCont))  && (objLnav.offsetHeight > objMidCont.offsetHeight)) {
	  objMidCont.style.height = objLnav.offsetHeight;
	}/**/
}

function ajaxLoader(url, id, postData) {
	if (document.getElementById) {
		var x = (window.ActiveXObject) ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
	}
	if (x) {
		x.onreadystatechange = function() {
			if (x.readyState == 4 && x.status == 200) {
				if (id) {
					el = document.getElementById(id);
					el.innerHTML = x.responseText;
					fixUnderflow();
				} else {
					return x.responseText;
				}
			} else if (x.readyState == 4 && x.status != 200) {
				if (id) {
					el = document.getElementById(id);
					el.innerHTML = "ERROR: " + x.status;
					fixUnderflow();
				} else {
					alert("ERROR: " + x.status);
				}
			}
		}
		if (postData) {
			x.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
		} else {
			x.open("GET", url, true);
		}
		x.setRequestHeader("Cache-Control", "no-cache");
		x.setRequestHeader("Pragma", "no-cache");
		postData = (postData) ? postData:null;
		x.send(postData);
	}
}

function deacFontBtns() {
	fontSmall.deactivate();
	fontMed.deactivate();
	fontLarge.deactivate();
}

function fontInit() {
	fontSmall = new fontButton("Sm", 10);
	fontMed = new fontButton("Md", 12);
	fontLarge = new fontButton("Lg", 15);
	pageFontSize = getCookie("umFontSize");
	switch(pageFontSize) {
		case "sm":
		  fontSmall.activate();
			break;
		case "md":
		  fontMed.activate();
			break;
		case "lg":
		  fontLarge.activate();
			break;
		default:
		  fontSmall.activate();
      break;
	}
  document.getElementById("fontSizer").style.display = "";
}

function fontButton(strSize, intFontSize) {
	var imgFolder = location.protocol + "//umanitoba.ca/images/";
	this.ref = document.getElementById("imgTxt" + strSize);
	//alert(this.ref.classname);
	this.inactive = new Image();
	this.inactive.src = imgFolder + "a_" + strSize.toLowerCase() + ".gif";
	this.active = new Image();
	this.active.src = imgFolder + "a_" + strSize.toLowerCase() + "_selected.gif";
	this.activated = false;
	this.activate = function() {
		deacFontBtns();
		this.ref.src = this.active.src;
		//this.ref.classname = "fontBtnActive";
		this.activated = true;
		document.body.style.fontSize = intFontSize + "px";
		if ((document.getElementById("midText")) && (thisIsHome)) {
		  document.getElementById("midText").style.height = 150 * (intFontSize + (intFontSize - 10) / 2) / 10 + "px";
	  } else if (!thisIsHome) {
			adjHeight();
		}
		var now = new Date();
	  now.setTime(now.getTime() + 365 * 24 * 60 * 60 * 1000);
	  setCookie("umFontSize", strSize.toLowerCase(), now, "/");
		this.ref.style.cursor = "default";
		if ((document.getElementById("studentMsgSyn")) && (document.getElementById("goingOnSyn"))) {
			if (intFontSize > 14) {
				document.getElementById("goingOnSyn").style.display = "none";
				//document.getElementById("studentMsgSyn").style.display = "none";
			} else {
				document.getElementById("goingOnSyn").style.display = "block";
				//document.getElementById("studentMsgSyn").style.display = "block";
			}
		}
		if (thisIsHome) {
			newsHeight();
		} else {
			fixUnderflow();
		}
	}
	this.deactivate = function() {
		this.ref.src = this.inactive.src;
		//this.ref.classname = "fontBtnInactive";
		this.activated = false;
		this.ref.style.cursor = "pointer";
	}
	this.toggle = function() {
		if (this.activated) {
			this.activate();
		} else {
			this.deactivate();
		}
	}
}


function fixUnderflow() { 
  //self.onerror = function() { return true; }
  /**************************************
	This function adjusts the height of page elements so as to prevent background colours from spilling 
	under other floating page elements.
	Objects and methods used in this function are defined in setPageObjects()
	**************************************/
	if (typeof(objMidStuff) != "undefined") {
		if (objMidStuff.ref) {
			if(objMidContent.ref){ objMidContent.ref.style.height = "auto";}
			//objMidContent.ref.style.height = "auto";
			if (objMidStuff.getHeight() < getLeftColHeight()) {
				/* If midStuff is shorter than the left column increase it's height, but subtract the height of the 
					footer bar containing the breadcrumbing */
				objMidContent.ref.style.height = (getLeftColHeight() - objFooter.getHeight()) + "px";
			} else {
				//objMidContent.ref.style.height = "auto";
			}
			if (objPageLinks.ref) {
				/* If pageLinks exists on this page... */
				objPageLinks.ref.style.height = "auto";
				/* Reset the height of the element to default in case text resizing is happening.  This prevents the 
					pageLinks element from being stuck at the max size */
				if (objIntro.getHeight() + objPageLinks.getHeight() < objRightBar.getHeight()) {
					/* If intro height + pageLinks height < the right bar, increase the height of pageLinks */
					objPageLinks.ref.style.height = (objRightBar.getHeight() - objIntro.getHeight()) + "px";
				}
			}
		}
	}
}

function getActiveStyleSheet() {
var i, a;
 for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
  if(a.getAttribute("rel").indexOf("style") != -1
  && a.getAttribute("id")
  && !a.disabled) return a.getAttribute("id");
  }
  return null;
}

function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function getLeftColHeight() {
	return objContent.getHeight() - objAddress.getHeight() - objOrangeFooter.getHeight();
}

function moveMnu() {
  if (getActiveStyleSheet() != "ssPrint") {
    var adjBy = (is_ie4up) ? 0:2;
    $('reposMe').style.top = (Position.cumulativeOffset($('nav'))[1] + adjBy) + "px";
    $('reposMe').style.left = "1px";
    $('reposMe').style.visibility = "visible";
    $('reposMe').style.display = "";
  }
}

function moveMenu() {
	if (getActiveStyleSheet() != "ssPrint") {
		var adjBy = (is_ie4up) ? 0:2;
		adjBy = (is_fx) ? 1:adjBy;
		document.getElementById("reposMe").style.top = (document.getElementById("nav").offsetTop + adjBy) + "px";
		document.getElementById("reposMe").style.left = "2px";
		/*if ((is_safari) || (is_fx)) {
			document.getElementById("nav").style.height = "23px";
		} else {
			document.getElementById("nav").style.height = "26px";
		}*/
		document.getElementById("reposMe").style.top = xPageY("nav") + 2;
		document.getElementById("reposMe").style.left = "1px";
		/*if ((is_nav6up) && (!is_nav7up)) {
			document.getElementById("reposMe").style.visibility = "hidden";
			document.getElementById("reposMe").style.display = "none";
		} else {*/
			document.getElementById("reposMe").style.visibility = "visible";
			document.getElementById("reposMe").style.display = "";
		//}
	}
}

function newsHeight() {
  objSA = document.getElementById("publicAffairs");
  objNews = document.getElementById("news");
  objSP = document.getElementById("studentProfiles");
  var newHeight = objSP.offsetHeight + 10;
  if (newHeight > baseNewsHeight) {
    objNews.style.height = newHeight + "px";
  } else {
    objNews.style.height = baseNewsHeight + "px";
  }
}

function pageObject(strId) {
	this.ref = (document.getElementById(strId)) ? document.getElementById(strId):null;
	this.getHeight = function() {
		try { 
			return this.ref.offsetHeight;
		} catch(e) {
			return 0;
		}
  }
}

function popupImg(sPicURL, ht, wdth) {
	ht = (!isNaN(ht)) ? ht:200;
	wdth = (!isNaN(wdth)) ? ht:200;
  window.open( "http://umanitoba.ca/include/popupimg.htm?"+sPicURL, "", "resizable=1,HEIGHT=" + ht + ",WIDTH=" + wdth);
}

function rotateBanner() {
	if (!intBannerCount) {
		intBannerCount = Math.round((Math.random()*(arBnrImgs.length-1))+1);
	}
	intBannerCount = ((intBannerCount) && (intBannerCount <= arBnrImgs.length)) ? intBannerCount:1;
	var intThisImgIdx = intBannerCount - 1;
	document.images["splashImg"].src = arBnrImgs[intThisImgIdx].src;
	intBannerCount++;
	//setTimeout("rotateBanner()", 15000);
}

function setLogoPos() {
	if (document.getElementById) {
		//intLeftColHeight = getLeftColHeight();
		//alert(intLeftMnuHeight);
		var intBtmPcntg = Math.round((getLeftColHeight() - 100) * 100 / getLeftColHeight());
		objContent.ref.style.backgroundPosition = " 1% " + intBtmPcntg + "%";
	}
}

function setPageObjects() {
	objContent = new pageObject("content");
  objAddress = new pageObject("address");
  objOrangeFooter = new pageObject("orangeFooter");
	objFooter = new pageObject("footer");
	objMidContent = new pageObject("midContent");
	objMidStuff = new pageObject("midStuff");
	objIntro = new pageObject("intro");
	objPageLinks = new pageObject("pageLinks");
	objRightBar = new pageObject("rightBar");
	objLeftNav = new pageObject("leftNav");
}

function showHide(strId, boolShow, boolVisibility) {
	if (document.getElementById) {
		var el = document.getElementById(strId);
		if (boolVisibility) {
			el.style.visibility = (boolShow) ? "visible":"hidden";
		} else {
	    el.style.display = (boolShow) ? "":"none";
		}
	}
}

function toggleVis(strId, objClicked) {
	if (document.getElementById) {
	  var objEl = document.getElementById(strId);
		objEl.style.display = (objEl.style.display == "none") ? "":"none";
		if (objClicked) {
			objClicked.innerHTML = (objEl.style.display == "none") ? "+":"-";
		}
		if (objClicked && ((is_moz)||(is_fb)||(is_fx))) {
			objClicked.style.marginRight = "3px";
		}
	}
}

function xPageX(e) {
   if (!(e=xGetElementById(e))) return 0;
   var x = 0;
   while (e) {
     if (xDef(e.offsetLeft)) x += e.offsetLeft;
     e = xDef(e.offsetParent) ? e.offsetParent : null;
   }
   return x;
}

function xPageY(e) {
   if (!(e=xGetElementById(e))) return 0;
   var y = 0;
   while (e) {
     if (xDef(e.offsetTop)) y += e.offsetTop;
     e = xDef(e.offsetParent) ? e.offsetParent : null;
   }
   return y;
} 

function xGetElementById(e) {
  if(typeof(e)!='string') return e;
  if(document.getElementById) {
    e = document.getElementById(e);
  } else if(document.all) {
    e = document.all[e];
  } else {
    e = null;
  }
  return e;
}

function xDef()
{
  for(var i=0; i<arguments.length; ++i){if(typeof(arguments[i])=='undefined') return false;}
  return true;
}

document.getElementsByClassName = function(className, parentElement) {
  if (typeof parentElement == 'string') {
    parentElement = document.getElementById(parentElement);
  } else if (typeof parentElement != 'object' || typeof parentElement.tagName != 'string'){
    parentElement = document.body;
  }
  var children = parentElement.getElementsByTagName('*');
  var re = new RegExp('\\b' + className + '\\b');
  var el, elements = [];
  var i = 0;
  while ( (el = children[i++]) ){
    if ( el.className && re.test(el.className)){
      elements.push(el);
    }
  }
  return elements;
}
/**
 * fetchMultipleNewsEvents
 * 
 * This function slightly alters fetchNewsEvents primarily
 * because the fetchNewsEvents function is used so much 
 * throughout the UofM web system that to change it would
 * cause lots of problems with the various templates that
 * call this function. 
 * This function simply appends to the end of the two id's
 * newsInnerContent and eventsInnerContent the feed number
 * that identifies the section on ntreepoint where this news/event
 * feed is coming from. This provides a relatively unique id
 * so that you can call this function multiple times to display
 * as many feeds as you want on a web page.
 *
 */
function fetchMultipleNewsEvents(feed, ne, i)
{
	
	if (ne == "n")
	{
		
		$('newsInnerContent' + feed).innerHTML = "Fetching News...";
	}//end if
	else
	{
		$('eventsInnerContent' + feed).innerHTML = "Fetching Events...";
	}//end else
	new Ajax.Request('/include/newsrelay.php', {
	  method:'get',
		parameters: {
			'sec': feed,
			'ne': ne,
			'i': i
		},
		onSuccess: function(transport) {
			if (ne == "n") {
				$('newsInnerContent' + feed).innerHTML = transport.responseText;
			} else {
				$('eventsInnerContent' + feed).innerHTML = transport.responseText;
			}
			fixUnderflow();
		},
		onFailure: function() {
			var tryAgain = "Unable to acquire information.<br/><form><input type=\"button\" value=\"Try Again\" onclick=\"fetchNewsEvents(" + feed + ", '" + ne + "')\" /></form>";
			if (ne == "n") {
				$('newsInnerContent' + feed).innerHTML = tryAgain;
			} else {
				$('eventsInnerContent' + feed).innerHTML = tryAgain;
			}
			fixUnderflow();
		}
	});
	
}

function fetchNewsEvents(feed, ne, i) {
	if (ne == "n") {
		$('newsInnerContent').innerHTML = "Fetching News...";
	} else {
		$('eventsInnerContent').innerHTML = "Fetching Events...";
	}
	new Ajax.Request('/include/newsrelay.php', {
	  method:'get',
		parameters: {
			'sec': feed,
			'ne': ne,
			'i': i
		},
		onSuccess: function(transport) {
			if (ne == "n") {
				$('newsInnerContent').innerHTML = transport.responseText;
			} else {
				$('eventsInnerContent').innerHTML = transport.responseText;
			}
			fixUnderflow();
		},
		onFailure: function() {
			var tryAgain = "Unable to acquire information.<br/><form><input type=\"button\" value=\"Try Again\" onclick=\"fetchNewsEvents(" + feed + ", '" + ne + "')\" /></form>";
			if (ne == "n") {
				$('newsInnerContent').innerHTML = tryAgain;
			} else {
				$('eventsInnerContent').innerHTML = tryAgain;
			}
			fixUnderflow();
		}
	});
}

function fetchNewsEventsPubDate(feed, ne, i) {
	if (ne == "n") {
		$('newsInnerContent').innerHTML = "Fetching News...";
	} else {
		$('eventsInnerContent').innerHTML = "Fetching Events...";
	}
	new Ajax.Request('/include/newsrelay_date.php', {
	  method:'get',
		parameters: {
			'sec': feed,
			'ne': ne,
			'i': i
		},
		onSuccess: function(transport) {
			if (ne == "n") {
				$('newsInnerContent').innerHTML = transport.responseText;
			} else {
				$('eventsInnerContent').innerHTML = transport.responseText;
			}
			fixUnderflow();
		},
		onFailure: function() {
			var tryAgain = "Unable to acquire information.<br/><form><input type=\"button\" value=\"Try Again\" onclick=\"fetchNewsEvents(" + feed + ", '" + ne + "')\" /></form>";
			if (ne == "n") {
				$('newsInnerContent').innerHTML = tryAgain;
			} else {
				$('eventsInnerContent').innerHTML = tryAgain;
			}
			fixUnderflow();
		}
	});
}


var thisIsHome = false;
var logoSet = false;
var intBannerCount = 0;