function initScripts()
{
	initStripes();
	initTicker();
	helpBox();
	window.name = "UniversityOfNewcastleUponTyne";
}

/****************************************************
*	TABLE row/column stripes:
*	by Paul Thompson
*	University of Newcastle upon Tyne
*	Webteam ( http://www.ncl.ac.uk )
****************************************************/

function initStripes() 
{	var list = document.getElementsByTagName('ul');
	for (var l = 0; l < list.length; l++) 
	{	if (list[l].className.match(/striped/i)) 
		{	var rows = list[l].getElementsByTagName("li");
			var even=false;
			for (var r = 0; r < rows.length; r++) 
			{
			rows[r].className=even ? 'even' : 'odd';
			even = ! even;
			}
		}
	}
	var list = document.getElementsByTagName('ol');
	for (var l = 0; l < list.length; l++) 
	{	if (list[l].className.match(/striped/i)) 
		{	var rows = list[l].getElementsByTagName("li");
			var even=false;
			for (var r = 0; r < rows.length; r++) 
			{
			rows[r].className=even ? 'even' : 'odd';
			even = ! even;
			}
		}
	}
	var tables = document.getElementsByTagName('table');
	for (var t = 0; t < tables.length; t++) 
	{	if (tables[t].className.match(/stripedRows/i)) 
		{	//var body = tables[t].getElementsByTagName("tbody");
			var rows = tables[t].getElementsByTagName("tr");
			var even=false;
			for (var r = 0; r < rows.length; r++) 
			{
			rows[r].className=even ? 'even' : 'odd';
			even = ! even;
			}
		}
		else if (tables[t].className.match(/stripedCols/i)) 
		{
			var rows = tables[t].getElementsByTagName("tr");
			for (var r = 0; r < rows.length; r++) 
			{
				var cells = rows[r].getElementsByTagName("td");
				var even=false;
				for (var c = 0; c < cells.length; c++) 
				{
				cells[c].className=even ? 'even' : 'odd';
				even = ! even;
				}
			}
		}
		else  if (tables[t].className.match(/checkered/i)) 
		{
			var rows = tables[t].getElementsByTagName("tr");
			var even=false;
			var reven=false;
			for (var r = 0; r < rows.length; r++) 
			{	var cells = rows[r].getElementsByTagName("td");
				reven = ! reven;
				even=reven;
				for (var c = 0; c < cells.length; c++) 
				{
				cells[c].className=even ? 'even' : 'odd';
				even = ! even;
				}
			}
		}
	}
}


/****************************************************
*	helpBox from span class="popuphelp"
*	by Paul Thompson
*	University of Newcastle upon Tyne
*	Webteam ( http://www.ncl.ac.uk )
****************************************************/

function helpBox()
{	var boxarr = document.getElementsByTagName('span');
	for (var i = 0; i < boxarr.length; i++) 
	{	if (boxarr[i].className.match(/popuphelp/i)) 
		{	boxarr[i].style.width = '20px';
			boxarr[i].style.height = '20px';
			//boxarr[i].innerHTML = "<a href=\"#\" onClick\"popUp(this)\" onBlur=\"hideHelp(this)\" onMouseOut=\"hideHelp(this)\" onFocus=\"showHelp(this)\" onMouseOver=\"showHelp(this)\" ><img alt=\"help\"src=\"http://www.ncl.ac.uk/graphics/icons/help.gif\"/></a><span>" + boxarr[i].innerHTML + "</span>";
			boxarr[i].innerHTML = "<a href=\"#\" onClick=\"popUp(this); return false;\"><img alt=\"help!\" title=\"help!\" src=\"http://www.ncl.ac.uk/graphics/icons/help.gif\"/></a><span>" + boxarr[i].innerHTML + "</span>";
		}
	}
}

function popUp(box)
{	if(document.body.clientHeight)
	{
	theX=(document.body.clientHeight/2)-150;
	theY=(document.body.clientWidth/2)-150;
	}
	if(window.innerHeight)
	{
	theX=(window.innerHeight/2)-150;
	theY=(window.innerWidth/2)-150;
	}
	var w = window.open("","HELP","resizable,width=250,height=140,top="+theX+",left="+theY+"");
	var d = w.document;
	var content=box.nextSibling.innerHTML;
	var pattern = /<a /gi;
	var content=content.replace(pattern,"<a target=\"UniversityOfNewcastleUponTyne\" ");
	d.write("<html><head><title>Help</title></head><body style=\"font-size:90%; font-family:sans-serif; background-color:#ffffee;\">"+content+"</body></html>");
	d.close();
	w.focus();
	return false;
}


/****************************************************
*	DOM div swapper:
****************************************************/
	
function changeDiv(hideclass,showid)
{	var blockarr = document.getElementsByTagName('div');
	for (var i = 0; i < blockarr.length; i++) 
	{	if (blockarr[i].getAttribute("id")==showid)
		{	blockarr[i].style.visibility = 'visible';
			blockarr[i].style.display = 'block';
		}
		else if(blockarr[i].className==hideclass)
		{	blockarr[i].style.visibility = 'hidden';
			blockarr[i].style.display = 'none';
		}
	}
}


/****************************************************
*	Basic Validation Script
*	Don't use this without server side backup.
****************************************************/
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}

function validate()
{	//alert("validating");
	var labels = document.getElementsByTagName('label');
	for (var l = 0; l < labels.length; l++) 
	{	//alert("field"+l);
		if(labels[l].className.match(/required/i)) 
		{
		//alert(labels[l].innerHTML);
		//alert(" "+labels[l].getAttribute('FOR'));
		var fieldName = labels[l].getAttribute('for');
		
		//alert("NAME:"+fieldName);
		if(fieldName!=null)
		{	//alert("Field isn't null!");
			var field=document.getElementById(fieldName);
		}
		else
		{
		//alert("NULL!");
			var fields=labels[l].getElementsByTagName('input');
			var field=fields[0];
		}
		if(field!=null)
		{	//alert("testingfield");
			if(field.value=='')
			{	//myString.replace(myregexp, "replacement").
				alert('"'+labels[l].innerHTML.replace(/(<[^>]*>|:|\*|[\r\n]+)/g, "").trim()+'" is a required field.');
				//alert(labels[l]+' is a required field.');
				return false;
			}
		}
		}
	}
	return true;
}

function limitBoxes(b,n)
{
	fields=b.getElementsByTagName('input');
	var c=0;
	for (var l = 0; l < fields.length; l++)  //
	{
		if(fields[l].checked==true) c++ ;
		if(c>n)
		{
		fields[l].checked=false;	
		}
	}
	if(c>n)	alert("You may select up to "+n+" items.");
}


/****************************************************
*	Basic TickerTape Script
*	by Paul Thompson
*	University of Newcastle upon Tyne
*	Webteam ( http://www.ncl.ac.uk )
****************************************************/

var tickerTape;
var tickerList; 
var currentItemIndex = 0;
var currentItemText =new Array();
var link;
var tickerSpeed = 45;
var placeHolder;
var pauseLength = 80;
var currentPause;

function initTicker()
{
tickerTape = document.getElementById("tickerTape");
if(tickerTape!=null) startTickerTape();
}

function startTickerTape()
{

tickerList = tickerTape.getElementsByTagName("li");
var l = document.createElement("li");
var t = document.createElement("strong");
var p = document.createTextNode("LATEST: ");
link = document.createElement("a");
placeHolder = document.createTextNode("");
t.appendChild(p);
l.appendChild(t);
l.appendChild(link);                                
link.appendChild(placeHolder);
tickerTape.appendChild(l);
	for (var i = 0; i < tickerList.length-1; i++) 
	{	//tickerList[i].setAttribute("style","border:1px solid pink;");
		tickerList[i].setAttribute("class","hideMe");
		tickerList[i].setAttribute("className","hideMe");
		//alert(getText(tickerList[i]));
 	}
runTicker();	
}

function getItem()
{	var links =  tickerList[currentItemIndex].getElementsByTagName("a");

	link.setAttribute('href',links[0]);
	currentItemText = getText(tickerList[currentItemIndex]).split('');
	currentItemIndex++;
	if(currentItemIndex==tickerList.length-1) currentItemIndex =0;
	
}

function writeItem()
{
	if(currentItemText.length>0)
	{
	placeHolder.nodeValue+=currentItemText.shift();
	}	
	else if(currentPause > 0)
	{
	currentPause --;	
	}
	else 
	{
		currentPause = pauseLength;	
		placeHolder.nodeValue='';
		getItem();
	}
}


function runTicker()
{	if(tickerTape==null) startTickerTape();
	writeItem();
	thread=setTimeout("runTicker()",this.tickerSpeed);
}

function stopTicker()
{	clearTimeout(thread);	
}

function getText(oNode)
{
	var nodeText = '';
	for(i=0;i<oNode.childNodes.length;i++)
	{
		if(oNode.childNodes[i].hasChildNodes())
		{
		nodeText+=getText(oNode.childNodes[i]);
		}
		else
		{
		nodeText+=oNode.childNodes[i].nodeValue;	
		}
	}
	return nodeText;
}

