	function printme() {
		window.print();
	}
	
	function getFieldValue(fieldname) {
		var field = document.tmp.elements[fieldname];

		return field.value;
	}
		
	function getElementsByTagClassName(className) {
	  var els = document.getElementsByTagName("*");
	  if (document.all) els = document.all;
		
        var rl = new Array();
	  var k = 0;
	  for ( var i = 0, j = els.length ; i < j ; i++ ) {
		if (els.item(i).className == className) {
			rl[k]=els[i];
			k++;

		}
	  }
	  return rl;
	}
	
	function hideTagsByClass(classname) {

		elements = getElementsByTagClassName(classname);
        for(i=0, j=0 ; i<elements.length ; i++) {
			var element = elements[i];
			element.style.display='none';
		}	
	}
	
	function changeTagIDsByClass(classname, renamename) {
		elements = getElementsByTagClassName(classname);
        for(i=0, j=0 ; i<elements.length ; i++) {
			var element = elements[i];
			element.id=element.id+renamename;
		}	
	}
	
	

	function showhide(showit, which, divkind) {
		// window.alert(which);
		element = document.getElementById(which);
		if (element == null) return;
		
		if (divkind) {
			if (showit == -2)
				showit = element.style.display !='block';
			
			if (showit)
				element.style.display='block';
			else
				element.style.display='none';
		}
		else {
			if (showit == -2)
				showit = element.disabled;

			if (showit)
				element.disabled = false;
			else
				element.disabled = true;
		}
	}

	function sp_ajax_showhide(showit, which, divkind, ajaxcall) {
		showhide(showit, which, divkind);
		if (showit) {
			sp_xmlhttp_elementID = which;
			showAJAX(ajaxcall);
		}
	}


function getElementsByIDSubstring(className) {
		return getCertainElementsByIDSubstring(className, '*');
	}
	
	function getCertainElementsByIDSubstring(className, elementtype) {

	  // var a = [];
        var rl = new Array();

	  var els = document.getElementsByTagName(elementtype);
	 // if (document.all) els = document.all;
		
		var k = 0;
		
	  for ( var i = 0, j = els.length ; i < j ; i++ ) {
		if (els.item(i).id.indexOf(className) != -1) {
		 // a.push(els.item(i));
			rl[k]=els[i];
			k++;

		}
	  }

	  return rl;

	}
	
	function getCheckValues(fieldname) {		
		var fields = document.getElementsByName(fieldname);

		var values=new Array();
		var counter = 0;

		for (cnt = 0; cnt < fields.length; cnt++) {
			if (!fields[cnt].checked) continue;

			values[counter++] = fields[cnt].value;
		}
		return values;
	}

	function sp_limit_checkedboxes(item, fieldname, limit, message) {

		var checks = getCheckValues(fieldname);
		if (limit < checks.length) {
		
			if (message != '')
				window.alert(message);
			else
				window.alert('Sorry, you are limited to ' + limit + ' choices.');
			
			item.checked=false
		}
	}


	function showset(values, form, divkind) {		
		var elements = getCertainElementsByIDSubstring(form, 'div');
        for(i=0, j=0 ; i<elements.length ; i++) {
			var element = elements[i];

			// look for either optionvalueName or
			//  _otheroptions_optionvalue_otheroptions_Name
			var isselectd = false;
			for (cnt = 0; cnt < values.length; cnt++) {
				var which = values[cnt];

				var pattern = '.*_'+which+'_.*'+form;
				// window.alert(pattern);
				var myRe  =  new RegExp(pattern);

				if (element.id == which+form || element.id.match(myRe)) {
					isselectd = true;
					break;
				}
			}
				
			if (divkind) {
				if (isselectd)
					element.style.display='block';
				else
					element.style.display='none';
			}
			else {
				if (isselectd)
					element.disabled = false;
				else
					element.disabled = true;
			}

		}
	}
	
	function showone(which, selectedvalue, form, divkind) {
	
		var elements = getCertainElementsByIDSubstring(form, 'div');
        for(i=0, j=0 ; i<elements.length ; i++) {
			var element = elements[i];
//		window.alert(element.id + '---'+selectedvalue+' xx '+which+' qq '+form);
		// look for either optionvalueName or
		//  _otheroptions_optionvalue_otheroptions_Name
			var pattern = '.*_'+which+'_.*'+form+'$';
		//	window.alert(pattern);
			var myRe  =  new RegExp(pattern);

			if (divkind) {
				if (element.id == which+form || element.id.match(myRe))
					element.style.display='block';
				else
					element.style.display='none';
			}
			else {
				if (element.id == which+form || element.id.match(myRe))
					element.disabled = false;
				else
					element.disabled = true;
			}
		}
	}
	
	function unfocusselect(thisselect) {
		thisselect.blur();
		window.focus();
	}
	
		
	function restrictsize(field, maxwords) {
		words = field.value.split(' ');
		if (words.length > maxwords) {
			window.alert('This field is limited to '+maxwords+' words');
			words.pop();
			field.value = words.join(' ');
			return true; // warn but don't restrict
		}
		return true;
	}


var sp_xmlhttp;
var sp_xmlhttp_elementID;

function sp_GetXmlHttpObject(){
	if (window.XMLHttpRequest){
		// code for IE7+, Firefox, Chrome, Opera, Safari
		return new XMLHttpRequest();
	}
	if (window.ActiveXObject){
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	return null;
}

function sp_stateChanged(){
	if (sp_xmlhttp.readyState==4){
		document.getElementById(sp_xmlhttp_elementID).innerHTML=sp_xmlhttp.responseText;
		if (window.sp_ajax_loaded) {
			sp_ajax_loaded();
		}
	}
}

function smartyplus_inline_template_click(parent, templatename, id) {
	//window.alert('hi there ' + templatename);
	var framename = templatename + id;
	
	var theframe = document.getElementById(framename);
	
	if (theframe) {
		parent.removeChild(theframe);
		return false;
	}
	else {
		el = document.createElement("iframe");
		el.id = framename;
		el.name = framename;
        if (typeof document.body.getAttribute("className") == 'string')
            el.setAttribute("className", "sp_inline_frame");
        else
            el.setAttribute("class", "sp_inline_frame");
		el.width = '100%';
		el.height = 600;
		var tmp = parent.href;
		el.src = tmp;
		parent.appendChild(el);
	}
	return false;
}

function smartyplus_inline_template_click_with_container(parent, templatename, id, container) {
	//window.alert('hi there ' + templatename);
	var framename = templatename + id;
	
	var theframe = document.getElementById(framename);
	
	if (theframe) {
		container.removeChild(theframe);
		return false;
	}
	else {
		el = document.createElement("iframe");
		el.id = framename;
		el.name = framename;
        if (typeof document.body.getAttribute("className") == 'string')
            el.setAttribute("className", "sp_inline_frame");
        else
            el.setAttribute("class", "sp_inline_frame");
		el.width = '100%';
		el.height = 600;
		var tmp = parent.href;
		el.src = tmp;
		container.appendChild(el);
	}
	return false;
}

	function sp_ajax_inlinelink_with_container(thisobj, container) {
	//target template to appear somewhere else on the page

		if (!thisobj.href) {
			//if function was not called by clicking 'this' link
			thisobj = document.getElementById(thisobj);
		}
		if (thisobj.href.search('utoronto.ca/') > 0) {
		
			var elemid = 'ajax_' +thisobj.id;
			var thediv = document.getElementById(elemid);
			var the_container = document.getElementById(container);
			
			if (thediv) {
				the_container.removeChild(thediv);
				return false;
			}
			else {
				el = document.createElement("div");
				el.id = elemid;
				//thisobj.parentNode.insertBefore(el, thisobj.nextSibling);
				the_container.appendChild(el);
				var tmp = thisobj.href;
				sp_xmlhttp_elementID = el.id;
				
				//for IE, which includes the port, as in ':80', at the end of thisobj.host
				var thishost = thisobj.host;
				if (thishost.indexOf(':') != -1) {
					var colon_pos = thishost.indexOf(':');
					thishost = thisobj.host.substr(0, colon_pos);
				}
				
				if (thishost != document.domain) {
					tmp='/Smartyplus/sp_get.php?page=' + escape(tmp);
				}
						
				showAJAX(tmp);
				
				return false;
			}
		}
		return true;
	}
	
	function sp_ajax_inlinelink(thisobj) {

		if (thisobj.href.search('utoronto.ca/') > 0) {
		
			var elemid = 'ajax_' +thisobj.id;
			var thediv = document.getElementById(elemid);
			
			if (thediv) {
				thisobj.parentNode.removeChild(thediv);
				return false;
			}
			else {
				el = document.createElement("div");
				el.id = elemid;
				thisobj.parentNode.insertBefore(el, thisobj.nextSibling);
				var tmp = thisobj.href;
				sp_xmlhttp_elementID = el.id;
								
				//for IE, which includes the port, as in ':80', at the end of thisobj.host
				var thishost = thisobj.host;
				if (thishost.indexOf(':') != -1) {
					var colon_pos = thishost.indexOf(':');
					thishost = thisobj.host.substr(0, colon_pos);
				}

				if (thishost != document.domain) {
					tmp='/Smartyplus/sp_get.php?page=' + escape(tmp);
				}
						
				showAJAX(tmp);
				return false;
			}
		}
		return true;
	}
	
	function sp_link_text_switch(a, b, obj) {
		if (obj.innerHTML == a) {
			obj.innerHTML = b;
		} else {
			obj.innerHTML = a;
		}
	}

function showAJAX(str){
	
	sp_xmlhttp=sp_GetXmlHttpObject();
	
	if (sp_xmlhttp==null){
		alert ("Sorry, your browser does not support XML HTTP.");
		return;
	}
	
	var url=str;
	
	sp_xmlhttp.onreadystatechange=sp_stateChanged;
	
	sp_xmlhttp.open("GET",url,true);
	sp_xmlhttp.send(null);
}


