
function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_jumpMenuGo(selName,targ,restore){ //v3.0
  var selObj = MM_findObj(selName); if (selObj) MM_jumpMenu(targ,selObj,restore);
}

// Opens a link in a new window when class = externalLink

function doPopups() {
  if (!document.getElementsByTagName) return false;
  var links = document.getElementsByTagName("a");
  for (var i=0; i < links.length; i++) {
    if (links[i].className.match("externalLink")) {
		links[i].className = links[i].className + " newWinStyle";
		if (links[i].title == "") {
		links[i].title = "(new window)";
		}
		else {
		links[i].title = links[i].title + " (new window)";	
		}
	 	links[i].onclick = function(e) {
			if(!e)e=window.event;
			if(e.shiftKey || e.ctrlKey || e.altKey) return;
			window.open(this.href);
			return false;
			}
      }
    }
}

//Get Element by Class Name from: http://www.robertnyman.com/2005/11/07/the-ultimate-getelementsbyclassname/

function getElementsByClassName(oElm, strTagName, strClassName){
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
    var arrReturnElements = new Array();
    strClassName = strClassName.replace(/\-/g, "\\-");
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
    var oElement;
    for(var i=0; i<arrElements.length; i++){
        oElement = arrElements[i];      
        if(oRegExp.test(oElement.className)){
            arrReturnElements.push(oElement);
        }   
    }
    return (arrReturnElements);
}

//Function for converting title tags on images into caption
function addCaption(xClass) {
	var allImages = getElementsByClassName(document, "img", xClass);
	for ( var i=0; i < allImages.length; i++) {
		var imageCaption = document.createTextNode(allImages[i].title);
		var imageContainer = document.createElement("div");
		var imagePara = document.createElement("p");
		var imageWidth = allImages[i].getAttribute("width");
		var spareSpan = document.createElement("span"); //This adds an extra span. Useful for curved corners
		imagePara.appendChild(imageCaption);
		allImages[i].parentNode.insertBefore(imageContainer, allImages[i]);
		imageContainer.appendChild(allImages[i]);
		if ( allImages[i].title != "" ) {
		imageContainer.appendChild(imagePara); 
		}
		imageContainer.appendChild(spareSpan);		
		imageContainer.className = xClass;
		spareSpan.className = "spareSpan";
		allImages[i].className = "imgCaption";
		imagePara.style.width = (imageWidth - 10) + "px";
    }
}

// Alternate table row colours
function alternateRows() {
	var i, j;
	if (!document.getElementById) return;
		var tables = document.getElementsByTagName("table");	  
		//search through tables in document
		for (i=0; i<tables.length; i++) {
			// If table has the right classname
				rows = tables[i].getElementsByTagName("tr");
				applyClasstoRows(rows);
		}
}

// Function, which is passed a reference, applies the class 'even' to each even row
function applyClasstoRows(myRows) {
	// search through rows
	for (j=0; j<rows.length; j++) {
	   // Set class for even rows (odd doesn't need to be set)
	   if (j%2 == 1) { 
		  rows[j].className = rows[j].className + " alternate";
	   } 
	}
}

function imageRollovers() {
	$("td.book img, #shoppingBasket img").hover(
		function () { this.src = this.src.replace("_off","_on");
	},
		function () { this.src = this.src.replace("_on","_off");
	});
}

// Creates the extra corner spans
function addCorners() {
	$(".rsListing.highlight ul li").prepend('<span class="topCorners"></span>');
	$(".rsListing.highlight ul li .image").prepend('<span class="topCorners"></span><span class="bottomCorners"></span>');
}

// Add hover state to list items
function listLinkHover() {
	$(".rsListing li, #courseDates li").hover(
		function() {
			$(this).addClass("hover");
		},
		function() {
			$(this).removeClass("hover");
		}
	);
	$(".rsListing li, #courseDates li").click(function() {
		if ($(this).find("a").attr("href")) {
			window.location = ($(this).find("a").attr("href"));
		}
	});
}

// Runs all the listed functions on the loading of the window

window.onload=function(){
	doPopups();
	alternateRows();
	addCaption("imgLeft");
	addCaption("imgRight");
	addCorners();
	imageRollovers();
	listLinkHover();
	$("a[rel^='prettyPhoto']").prettyPhoto({theme: 'facebook' /* light_rounded / dark_rounded / light_square / dark_square / facebook */});
}