
function getURLParam(strParamName){
  var strReturn = "";
  var strHref = parent.location.href;
  if ( strHref.indexOf("?") > -1 ){
    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
    var aQueryString = strQueryString.split("&");
    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
      if ( 
		aQueryString[iParam].indexOf(strParamName + "=") > -1 ){
        	var aParam = aQueryString[iParam].split("=");
        	strReturn = aParam[1];
        	break;
      }
    }
  }
  return strReturn;
} 

function getSiteArea() {
	var i, styles;
	for(i=0; (styles=document.getElementsByTagName("link")[i]); i++) {
		switch (styles.getAttribute("href")){
			case "/styles/LEGACY-REP.css": 
				return 2;
				break;
			case "/styles/LEGACY-RTP.css": 
				return 3;
				break;
			case "/styles/rls.css":
				return 4;
				break;
			case "/styles/LEGACY-LTSB.css": 
				return 5;
				break;
			case "/styles/LEGACY-COMEMBER.css": 
				return 6;
				break;
			case "/styles/LEGACY-RBS.css": 
				return 7;
				break;
			case "/styles/wide_lancashire.css": 
				return 8;
				break;
			default:
				return 1;
		}
	}
	return -1;
}

function setField(fieldName, value)
{	
	for(i=0; (inputs=document.getElementsByTagName("input")[i]); i++) {
		if (inputs.getAttribute("type") == "hidden")
			if (inputs.getAttribute("name").indexOf(fieldName) != -1)
				inputs.setAttribute("value", value);
	}
}

function goFormPage(id)
{
	goPage("Form.aspx?page_id="+id);
}

function goFormPageWithArgs(id, args)
{
	goPage("Form.aspx?page_id="+id+"&"+args);
}

function goPage(URL)
{
	document.location.href=URL;
}

var courseID = "";

var booking_step2_confirmation = new Array (
		"Please give us your contact information and details of where we should send the invoice. Click Proceed when you have entered all the information required.",
		"",
		"",
		"",
		"Please fill in and check your contact and invoicing information - don't worry, we won't invoice you without contacting you first to confirm and book your place(s).  We just need to verify this information to proceed with your request. Click Proceed when you have entered all the information required.",
		"",
		"",
		""
)

function writeText(stringArray)
{
	var theText = stringArray[getSiteArea()-1];
	if (theText == '')
		theText = stringArray[0];
	document.write(theText);
}

var booking_step4_confirmation1A = new Array (
		"<p>Below is the summary of your order.  We will contact you shortly to confirm your order.</p><p>A copy of these details have also been sent to ",
		"<p>Below is the summary of your order.  We will contact you shortly to confirm your order.</p><p>A copy of these details have also been sent to ",
		"",	"",
		"<p>Below is a summary of your request.  We will contact you shortly to confirm your individual requirements.</p><p>A copy of these details will been sent to ",
		"",	"",	"");
var booking_step4_confirmation1B = new Array (
		".</p>",
		".</p>",	"",	"",
		", and any delegates if requested.</p>",
		"",	"",	"");

var booking_step4_confirmation2A = new Array (
		"<p>Confirmation will also be sent to ",
		"<p>Confirmation will also be sent to ",	"",	"",
		"<p style='visibility: hidded; display: none;'>",
		"",	"",	"");
var booking_step4_confirmation2B = new Array (
		", if you have selected this option.</p>",
		", if you have selected this option.</p>",	
		"",	"",
		"</p>",
		"",	"",	"");
var booking_step2_confirmation = new Array (
		"Please give us your contact information and details of where we should send the invoice. Click Proceed when you have entered all the information required.",
		"",	"",	"",
		"Please fill in and check your contact and invoicing information - don't worry, we won't invoice you without contacting you first to confirm and book your place(s).  We just need to verify this information to proceed with your request. Click Proceed when you have entered all the information required.",
		"",	"",	"");

var booking_step2_heading = new Array (
		"Please give us your contact information and details of where we should send the invoice. Click <b>Proceed</b> when you have entered all the information required.",
		"",	"",	"",
		"Please fill in and check your contact and invoicing information - don't worry, we won't invoice you without contacting you first to confirm and book your place(s).  We just need to verify this information to proceed with your request. Click <b>Proceed</b> when you have entered all the information required.",
		"",	"",	"");
		




/***********************************************
* CMotion Image Gallery- © Dynamic Drive DHTML code library (www.dynamicdrive.com)
* Visit http://www.dynamicDrive.com for source code
* This copyright notice must stay intact for legal use
* Modified for autowidth and optional starting positions in
* http://www.dynamicdrive.com/forums/showthread.php?t=11839 by jschuer1 8/5/06
***********************************************/

 //1) Set width of the "neutral" area in the center of the gallery.
var restarea=6;
 //2) Set top scroll speed in pixels. Script auto creates a range from 0 to top speed.
var maxspeed=7;
 //3) Set to maximum width for gallery - must be less than the actual length of the image train.
var maxwidth=600;
 //4) Set to 1 for left start, 0 for right, 2 for center.
var startpos=2;
 //5) Set message to show at end of gallery. Enter "" to disable message.
var endofgallerymsg="";

////NO NEED TO EDIT BELOW THIS LINE////////////

var iedom=document.all||document.getElementById, scrollspeed=0, movestate='', actualwidth='', cross_scroll, ns_scroll, statusdiv, loadedyes=0, lefttime, righttime;

function ietruebody(){
return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}

function creatediv(){
statusdiv=document.createElement("div")	
statusdiv.setAttribute("id","statusdiv")
document.body.appendChild(statusdiv)
statusdiv=document.getElementById("statusdiv")
statusdiv.innerHTML=endofgallerymsg
}

function positiondiv(){
var mainobjoffset=getposOffset(crossmain, "left"),
menuheight=parseInt(crossmain.offsetHeight),
mainobjoffsetH=getposOffset(crossmain, "top");
statusdiv.style.left=mainobjoffset+(menuwidth/2)-(statusdiv.offsetWidth/2)+"px";
statusdiv.style.top=menuheight+mainobjoffsetH+"px";
}

function showhidediv(what){
if (endofgallerymsg!="") {
positiondiv();
statusdiv.style.visibility=what;
}
}

function getposOffset(what, offsettype){
var totaloffset=(offsettype=="left")? what.offsetLeft: what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null){
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}


function moveleft(){
if (loadedyes){
movestate="left";
if (iedom&&parseInt(cross_scroll.style.left)>(menuwidth-actualwidth)){
cross_scroll.style.left=parseInt(cross_scroll.style.left)-scrollspeed+"px";
showhidediv("hidden");
}
else
showhidediv("visible");
}
lefttime=setTimeout("moveleft()",10);
}

function moveright(){
if (loadedyes){
movestate="right";
if (iedom&&parseInt(cross_scroll.style.left)<0){
cross_scroll.style.left=parseInt(cross_scroll.style.left)+scrollspeed+"px";
showhidediv("hidden");
}
else
showhidediv("visible");
}
righttime=setTimeout("moveright()",10);
}

function motionengine(e){
var mainobjoffset=getposOffset(crossmain, "left"),
dsocx=(window.pageXOffset)? pageXOffset: ietruebody().scrollLeft,
dsocy=(window.pageYOffset)? pageYOffset : ietruebody().scrollTop,
curposy=window.event? event.clientX : e.clientX? e.clientX: "";
curposy-=mainobjoffset-dsocx;
var leftbound=(menuwidth-restarea)/2;
var rightbound=(menuwidth+restarea)/2;
if (curposy>rightbound){
scrollspeed=(curposy-rightbound)/((menuwidth-restarea)/2) * maxspeed;
clearTimeout(righttime);
if (movestate!="left") moveleft();
}
else if (curposy<leftbound){
scrollspeed=(leftbound-curposy)/((menuwidth-restarea)/2) * maxspeed;
clearTimeout(lefttime);
if (movestate!="right") moveright();
}
else
scrollspeed=0;
}

function contains_ns6(a, b) {
if (b!==null)
while (b.parentNode)
if ((b = b.parentNode) == a)
return true;
return false;
}

function stopmotion(e){
if (!window.opera||(window.opera&&e.relatedTarget!==null))
if ((window.event&&!crossmain.contains(event.toElement)) || (e && e.currentTarget && e.currentTarget!= e.relatedTarget && !contains_ns6(e.currentTarget, e.relatedTarget))){
clearTimeout(lefttime);
clearTimeout(righttime);
movestate="";
}
}

function fillup(){
if (iedom){
crossmain=document.getElementById? document.getElementById("motioncontainer") : document.all.motioncontainer;
if(typeof crossmain.style.maxWidth!=='undefined')
crossmain.style.maxWidth=maxwidth+'px';
menuwidth=crossmain.offsetWidth;
cross_scroll=document.getElementById? document.getElementById("motiongallery") : document.all.motiongallery;
actualwidth=document.getElementById? document.getElementById("trueContainer").offsetWidth : document.all['trueContainer'].offsetWidth;
if (startpos)
cross_scroll.style.left=(menuwidth-actualwidth)/startpos+'px';
crossmain.onmousemove=function(e){
motionengine(e);
}

crossmain.onmouseout=function(e){
stopmotion(e);
showhidediv("hidden");
}
}
loadedyes=1
if (endofgallerymsg!=""){
creatediv();
positiondiv();
}
if (document.body.filters)
onresize()
}

onresize=function(){
if (typeof motioncontainer!=='undefined'&&motioncontainer.filters){
motioncontainer.style.width="0";
motioncontainer.style.width="";
motioncontainer.style.width=Math.min(motioncontainer.offsetWidth, maxwidth)+'px';
}

if (document.getElementById? document.getElementById("motioncontainer") : document.all.motioncontainer)
{
	menuwidth=crossmain.offsetWidth;
	cross_scroll.style.left=startpos? (menuwidth-actualwidth)/startpos+'px' : 0;
}
}





// -------------------------------------------------------------------
// Image Thumbnail Viewer Script- By Dynamic Drive, available at: http://www.dynamicdrive.com
// Last updated: Jan 22nd, 2007
// -------------------------------------------------------------------

var thumbnailviewer={
enableTitle: true, //Should "title" attribute of link be used as description?
enableAnimation: true, //Enable fading animation?
definefooter: '<div class="footerbar">CLOSE X</div>', //Define HTML for footer interface
defineLoading: '<img src="/images/loading.gif" /> Loading Image...', //Define HTML for "loading" div

/////////////No need to edit beyond here/////////////////////////

scrollbarwidth: 16,
opacitystring: 'filter:progid:DXImageTransform.Microsoft.alpha(opacity=10); -moz-opacity: 0.1; opacity: 0.1',
targetlinks:[], //Array to hold links with rel="thumbnail"

createthumbBox:function(){
//write out HTML for Image Thumbnail Viewer plus loading div
document.write('<div id="thumbBox" onClick="thumbnailviewer.closeit()" STYLE="visibility: hidden; display: none;"><div id="thumbImage"></div>'+this.definefooter+'</div>')
document.write('<div id="thumbLoading" STYLE="visibility: hidden; display: none;">'+this.defineLoading+'</div>')
this.thumbBox=document.getElementById("thumbBox")
this.thumbImage=document.getElementById("thumbImage") //Reference div that holds the shown image
this.thumbLoading=document.getElementById("thumbLoading") //Reference "loading" div that will be shown while image is fetched
this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
},


centerDiv:function(divobj){ //Centers a div element on the page
var ie=document.all && !window.opera
var dom=document.getElementById
var scroll_top=(ie)? this.standardbody.scrollTop : window.pageYOffset
var scroll_left=(ie)? this.standardbody.scrollLeft : window.pageXOffset
var docwidth=(ie)? this.standardbody.clientWidth : window.innerWidth-this.scrollbarwidth
var docheight=(ie)? this.standardbody.clientHeight: window.innerHeight
var docheightcomplete=(this.standardbody.offsetHeight>this.standardbody.scrollHeight)? this.standardbody.offsetHeight : this.standardbody.scrollHeight //Full scroll height of document
var objwidth=divobj.offsetWidth //width of div element
var objheight=divobj.offsetHeight //height of div element
var topposition=(docheight>objheight)? scroll_top+docheight/2-objheight/2+"px" : scroll_top+10+"px" //Vertical position of div element: Either centered, or if element height larger than viewpoint height, 10px from top of viewpoint
divobj.style.left=docwidth/2-objwidth/2+"px" //Center div element horizontally
divobj.style.top=Math.floor(parseInt(topposition))+"px"
divobj.style.visibility="visible"
},

showthumbBox:function(){ //Show ThumbBox div
this.centerDiv(this.thumbBox)
if (this.enableAnimation){ //If fading animation enabled
this.currentopacity=0.1 //Starting opacity value
this.opacitytimer=setInterval("thumbnailviewer.opacityanimation()", 20)
}
},


loadimage:function(link){ //Load image function that gets attached to each link on the page with rel="thumbnail"
if (this.thumbBox.style.visibility=="visible") //if thumbox is visible on the page already
this.closeit() //Hide it first (not doing so causes triggers some positioning bug in Firefox
var imageHTML='<img src="'+link.getAttribute("href")+'" style="'+this.opacitystring+'" />' //Construct HTML for shown image
if (this.enableTitle && link.getAttribute("title")) //Use title attr of the link as description?
imageHTML+='<br />'+link.getAttribute("title")
this.centerDiv(this.thumbLoading) //Center and display "loading" div while we set up the image to be shown
this.thumbImage.innerHTML=imageHTML //Populate thumbImage div with shown image's HTML (while still hidden)
this.featureImage=this.thumbImage.getElementsByTagName("img")[0] //Reference shown image itself
this.featureImage.onload=function(){ //When target image has completely loaded
thumbnailviewer.thumbLoading.style.visibility="hidden" //Hide "loading" div
thumbnailviewer.thumbBox.style.visibility=="visible"
thumbnailviewer.showthumbBox() //Display "thumbbox" div to the world!
}
if (document.all && !window.createPopup) //Target IE5.0 browsers only. Address IE image cache not firing onload bug: panoramio.com/blog/onload-event/
this.featureImage.src=link.getAttribute("href")
this.featureImage.onerror=function(){ //If an error has occurred while loading the image to show
thumbnailviewer.thumbLoading.style.visibility="hidden" //Hide "loading" div, game over
}
},

setimgopacity:function(value){ //Sets the opacity of "thumbimage" div per the passed in value setting (0 to 1 and in between)
var targetobject=this.featureImage
if (targetobject.filters && targetobject.filters[0]){ //IE syntax
if (typeof targetobject.filters[0].opacity=="number") //IE6
targetobject.filters[0].opacity=value*100
else //IE 5.5
targetobject.style.filter="alpha(opacity="+value*100+")"
}
else if (typeof targetobject.style.MozOpacity!="undefined") //Old Mozilla syntax
targetobject.style.MozOpacity=value
else if (typeof targetobject.style.opacity!="undefined") //Standard opacity syntax
targetobject.style.opacity=value
else //Non of the above, stop opacity animation
this.stopanimation()
},

opacityanimation:function(){ //Gradually increase opacity function
this.setimgopacity(this.currentopacity)
this.currentopacity+=0.1
if (this.currentopacity>1)
this.stopanimation()
},

stopanimation:function(){
if (typeof this.opacitytimer!="undefined")
clearInterval(this.opacitytimer)
},


closeit:function(){ //Close "thumbbox" div function
this.stopanimation()
this.thumbBox.style.visibility="hidden"
this.thumbImage.innerHTML=""
this.thumbBox.style.left="-2000px"
this.thumbBox.style.top="-2000px"
},

cleanup:function(){ //Clean up routine on page unload
this.thumbLoading=null
if (this.featureImage) this.featureImage.onload=null
this.featureImage=null
this.thumbImage=null
for (var i=0; i<this.targetlinks.length; i++)
this.targetlinks[i].onclick=null
this.thumbBox=null
},

dotask:function(target, functionref, tasktype){ //assign a function to execute to an event handler (ie: onunload)
var tasktype=(window.addEventListener)? tasktype : "on"+tasktype
if (target.addEventListener)
target.addEventListener(tasktype, functionref, false)
else if (target.attachEvent)
target.attachEvent(tasktype, functionref)
},

init:function(){ //Initialize thumbnail viewer script by scanning page and attaching appropriate function to links with rel="thumbnail"
if (!this.enableAnimation)
this.opacitystring=""
var pagelinks=document.getElementsByTagName("a")
for (var i=0; i<pagelinks.length; i++){ //BEGIN FOR LOOP
if (pagelinks[i].getAttribute("rel") && pagelinks[i].getAttribute("rel")=="thumbnail"){ //Begin if statement
pagelinks[i].onclick=function(){
thumbnailviewer.stopanimation() //Stop any currently running fade animation on "thumbbox" div before proceeding
thumbnailviewer.loadimage(this) //Load image
return false
}
this.targetlinks[this.targetlinks.length]=pagelinks[i] //store reference to target link
} //end if statement
} //END FOR LOOP
//Reposition "thumbbox" div when page is resized
this.dotask(window, function(){if (thumbnailviewer.thumbBox.style.visibility=="visible") thumbnailviewer.centerDiv(thumbnailviewer.thumbBox)}, "resize")

thumbnailviewer.thumbLoading.style.display="block"
thumbnailviewer.thumbBox.style.display="block"
} //END init() function

}

thumbnailviewer.createthumbBox() //Output HTML for the image thumbnail viewer
//thumbnailviewer.dotask(window, function(){thumbnailviewer.init()}, "load") //Initialize script on page load
//thumbnailviewer.dotask(window, function(){thumbnailviewer.cleanup()}, "unload")

	function keyCode(e)
	{
        return e.keyCode? e.keyCode : e.charCode;
	}
	
	function id2pb(id)
    {
	    var pb = '';

	    var first = true;
	    for (var i=0; i<id.length; i++)
	    {
		    var ch = id.charAt(i);
		    if (first)
		    {
			    pb += ch;
			    first = false;
		    }
		    else
		    {
			    if (ch == '_')
			    {
				    pb += '$';
				    first = true;
			    }
			    else
			    {
				    pb += ch;
			    }
		    }	
	    }
	    return pb;
    }

	
	function clickAnchor(e, id)
	{
	    if (keyCode(e) == 13)
	    {
	        __doPostBack(id2pb(id));
	    }
	}

function noCoursesHack()
{
	if ($$('.stream-listing ul.l-1 li a').length == 0) {
		if ($$('.stream-listing ul.l-0 li a').length == 0) {
			$A($$('.stream-listing')).each(Element.hide);
			$('courses-header').hide();
		}
	}
}

	function getPageSize()
	{
		var xScroll, yScroll;
		
		if (window.innerHeight && window.scrollMaxY) {	
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ 
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { 
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}
		
		var windowWidth, windowHeight;
		
		if (self.innerHeight) {	
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth; 
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { 
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { 
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}	
		
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else { 
			pageHeight = yScroll;
		}
	
		if(xScroll < windowWidth){	
			pageWidth = xScroll;		
		} else {
			pageWidth = windowWidth;
		}

		return [pageWidth,pageHeight];
	}

var Lightbox = Class.create({
	initialize : function (containerDiv) {
		this.container = containerDiv;
		var arrayPageSize = getPageSize();
		if($('shadow-layer') == null) {
			shade = new Element('div', {'id': 'shadow-layer', 'style': 'display: none; position: absolute; left: 0; top: 0; background-color: black; z-index: 1000000; width: 2000px; height: 2000px;', 'class':'modalBackground'});									document.body.appendChild(shade);
			$('shadow-layer').setStyle({ width: arrayPageSize[0] + 'px', height: arrayPageSize[1] + 'px' });
		}
		
		$(this.container).setStyle({ left: (arrayPageSize[0]-$(this.container).getWidth())/2 + 'px', top: '200px'});
		
	},		
	_fade : function fadeBg(userAction,whichDiv){
		if(userAction=='close'){
			new Effect.Fade('shadow-layer',
					   {duration:.5,
					    from:0.5,
					    to:0,
					    afterUpdate: function() { $(whichDiv).hide(); }
				});
		} else {
			new Effect.Appear('shadow-layer', {
					duration:.5,
					from:0,
					to:0.5,
					afterFinish: function() { $(whichDiv).show(); }
				});
		}
	},
	open : function () {
			this._fade('open', this.container);
	},
	close : function () {
			this._fade('close', this.container);
	}
});
