// subscribes a function to the window.onload event
// addLoadEvent(openNewsPopup)
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}

// adds page url to favourites
// <a href="#" onclick="return createBookmarkLink();">Save Link</a>

function createBookmarkLink() {
title = document.title; 
url = location.href;

if (window.sidebar) { // firefox
	window.sidebar.addPanel(title, url, "");
	}
else if(document.all) {// ie 
	window.external.AddFavorite(url, title);
	}
}


// NAVIGATION TREE FUNCTIONS
 function setNavigationItems(){
	var obj = document.getElementById('leftnav');
	if (obj==null) return false; 
	var ul = obj.getElementsByTagName('ul');		
	var expandableLinks = obj.getElementsByTagName('a');
	for(var i=0; i<expandableLinks.length;i++){
		if(expandableLinks[i].rel.substring(0,10).toLowerCase()=='expandable'){
			expandableLinks[i].onclick=function(){Toggle(this.id.substring(1,this.id.length) + "_title",this.id.substring(1,this.id.length));return false;};
		}
	}
}

function Toggle(selected,item) {
   if(document.getElementById(replaceHTMLChars(item))){
	   obj=document.getElementById(replaceHTMLChars(item));
	   objSelected = document.getElementById("x" + replaceHTMLChars(selected));
	   visible=obj.className.indexOf('navhidden') > -1 ? false : true;
	   key=document.getElementById("x" + replaceHTMLChars(item));
	   var classname = obj.className.substring(0, obj.className.indexOf('hidden') -1);
	   classname = classname == "" ? obj.className : classname;
	   if (visible) {
			obj.className= 'navhidden';

			//key.innerHTML='<img src="/Images/plus.gif" width="9" height="9" alt="Expand ' + splitString(key.rel,'-',1) + '" />';
			//key.title='Expand ' + splitString(key.rel,'-',1);

			var html = '<img src="/Images/plus.gif" width="9" height="9" alt="Expand ' + splitString(key.rel,'-',1) + '" />';
			var title = 'Expand ' + splitString(key.rel,'-',1);

			setTimeout(function(){setHtmlAndTitle(key, html, title)},100);

			objSelected.className = '';
	   } 
	   else {
			obj.className= 'navvisible';
			
			//key.innerHTML='<img src="/Images/minus.gif" width="9" height="9" alt="Contract ' + splitString(key.rel,'-',1) + '" />';
			//key.title='Contract ' +  splitString(key.rel,'-',1);

			var html = '<img src="/Images/minus.gif" width="9" height="9" alt="Contract ' + splitString(key.rel,'-',1) + '" />';
			var title = 'Contract ' +  splitString(key.rel,'-',1);

			setTimeout(function(){setHtmlAndTitle(key, html, title)},100);

			objSelected.className = 'navselected';
	   }
   }
}

// Paul Ashley ->
// Extracted the setting of the key.innerHTML in the above function.
// There seems to be a bug in IE whereby the setting of certain HTML objects needs to be delayed
// so that AJAX can do it's initialising. The AJAX code that was failing was in MicrosoftAjox.js.
function setHtmlAndTitle(key, html, title)
{
	key.innerHTML=html;
	key.title=title;
}
// <- Paul Ashley.

function splitString(strString, strDelimiter, intPosition) {
    return strString.split(strDelimiter)[intPosition];
}

function replaceHTMLChars(sText){
	sText = sText.replace(/&amp;/g, '&');
	return sText;
}

function changeTab(id){
    var obj = document.getElementById('tabList');
    var listitems = obj.getElementsByTagName('li');
    for(var i=0; i<listitems.length; i++){
        var links = listitems[i].getElementsByTagName('a');
        for(var j=0; j<links.length; j++){
            if (links[j].id==id){
                listitems[i].className = 'on'; 
            }else{
                listitems[i].className = 'off';
            }
        }
    }
    return true;
}


var currentanswerid = "";

function displayFAQ(divid){
	var answerid = divid.substr(divid.indexOf('#')+1, divid.length);
	var answer = document.getElementById(answerid);
	if (answer==null) return false;
	answer.style.display = 'block';
	
	if (currentanswerid!=""){
		var currentanswer = document.getElementById(currentanswerid);
		currentanswer.style.display = 'none';
	}
	
	currentanswerid = answerid;
	return false;
}

// GET DATE FOR PAGE FOOTER

function GetMonth(nMonth)
{
	var Months = new Array("January","February","March","April","May","June",
	                       "July","August","September","October","November","December");
	return Months[nMonth] 	  	 
}

function DateString()
{
	var Today = new Date();
	var suffix = "th";
	switch (Today.getDate())
	{
		case 1:
		case 21:
		case 31: 
			suffix = "st"; break;
		case 2:
		case 22:
			suffix = "nd"; break;
		case 3:
		case 23:
			suffix = "rd"; break;
	};

	var strDate = Today.getDate();
	strDate += suffix + " " + GetMonth(Today.getMonth()) + " " + Today.getFullYear();
	return strDate
}

// Generic re-sizing function - © 2007 The Watchmaker Project 

function colarr() {
	var elements = new Array();
	for (var i=0;i<arguments.length;i++) {
		var element = arguments[i];
		if (typeof element == 'string') element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}

var BoxHeights = {
	maxh: 0,
	boxes: Array(),
	num: 0,
	op_test: false,
	equalise: function() {
		this.num = arguments.length;
		for (var i=0;i<this.num;i++) if (!colarr(arguments[i])) return;
		this.boxes = arguments;
		this.maxheight();
		for (var i=0;i<this.num;i++) colarr(arguments[i]).style.height = this.maxh+"px";
	},
	maxheight: function() {
		var heights = new Array();
		for (var i=0;i<this.num;i++) {
			if (navigator.userAgent.toLowerCase().indexOf('opera') == -1) {
				heights.push(colarr(this.boxes[i]).scrollHeight);
			} else {
				heights.push(colarr(this.boxes[i]).offsetHeight);
			}
		}
		heights.sort(this.sortNumeric);
		this.maxh = heights[this.num-1];
	},
	sortNumeric: function(f,s) {
		return f-s;
	}
}

//ICT Evolution of a Website Autentication

// Keep user from entering more than maxLength characters
function doKeypress(control){
    maxLength = control.attributes["maxLength"].value;
    value = control.value;
     if(maxLength && value.length > maxLength-1){
          event.returnValue = false;
          maxLength = parseInt(maxLength);
     }
}
// Cancel default behavior
function doBeforePaste(control){
    maxLength = control.attributes["maxLength"].value;
     if(maxLength)
     {
          event.returnValue = false;
     }
}
// Cancel default behavior and create a new paste routine
function doPaste(control){
    maxLength = control.attributes["maxLength"].value;
    value = control.value;
     if(maxLength){
          event.returnValue = false;
          maxLength = parseInt(maxLength);
          var oTR = control.document.selection.createRange();
          var iInsertLength = maxLength - value.length + oTR.text.length;
          var sData = window.clipboardData.getData("Text").substr(0,iInsertLength);
          oTR.text = sData;
     }
}

//PM
function slider(containerRef, sliderLink) {
    
    var container = containerRef;
    var slider = sliderLink;

	//Hide (Collapse) the toggle containers on load
	$(containerRef).hide(); 
	$(sliderLink).show();

	//Switch the "Open" and "Close" state per click
	$(slider).toggle(function(){
		$(this).addClass("active");
		}, function () {
		$(this).removeClass("active");
	});

	//Slide up and down on click
	$(slider).click(function(){
		$(this).next(container).slideToggle("slow");
	});
}
// media page
$(document).ready(function() {
$(".thumblink").bind("click", function(evt) {
        evt.preventDefault();
        vid = this.id;
        vpath = this.rel;
        ThumbClick(vid, vpath);
    });
    var thumbWidth = 116;
    var intItems = $(".slidercontain a").length;
    $("#btnPrev").bind("click", function(evt) {
        evt.preventDefault();
        slideVideo(false, thumbWidth, intItems);
    });
    $("#btnNext").bind("click", function(evt) {
        evt.preventDefault();
        slideVideo(true, thumbWidth, intItems);
    });
    $(".slidercontain a[title]").tooltip({ position: "top center", effect: "slide" });
});

var bolAnimActive = false;
function slideVideo(bolIsNext, thumbWidth, intItems) {
    if (!bolAnimActive) {
        bolAnimActive = true;
        var sliderEle = $("#scon");
        var curLeft = parseInt(sliderEle.css('left'));
        var endLeft = ((intItems - 2) * thumbWidth) - (((intItems - 3) * thumbWidth) * 2);
        if (bolIsNext) {
            sliderEle.animate({ "left": (curLeft - thumbWidth) }, 700, function(evt) { EndSlide() });
        }
        else if (!bolIsNext) {
            sliderEle.animate({ "left": (curLeft + thumbWidth) }, 700, function(evt) { EndSlide() });
        }
        else { bolAnimActive = false; }
    }
    function EndSlide() {
        bolAnimActive = false;
        curLeft = parseInt(sliderEle.css('left'));
        var prebtn = $("#btnPrev");
        var nxtbtn = $("#btnNext");
        if (curLeft == 0) {
            prebtn.css({ display: 'none' });
        }
        else {
            prebtn.css({ display: 'block' });
        }
        if (curLeft == endLeft) {
            nxtbtn.css({ display: 'none' });
        }
        else {
            nxtbtn.css({ display: 'block' });
        }
    }
}

function ThumbClick(vid, vpath) {
    var videoplayercontain = $("#videoplayercontain");
    videoplayercontain.empty();
    videoplayercontain.html("<div id=\"" + vid + "\"></div>");
    var so = new SWFObject('/images/flvplayer.swf', 'flvplayer', '474', '288', '7', '#ffffff');
    so.addVariable('file', vpath);
    so.addVariable('id', vid);
    so.addVariable('autostart', 'False');
    so.addParam('allowfullscreen', 'True');
    so.addParam('wmode', 'transparent');
    so.write(vid);
}

var AnimiationActive = false;
var ServiceHoverLocked = false;
function accordion(containerRef, animationRate, setFirstOpen) {
    var container = containerRef;
    var animRate = animationRate;
    var firstOpen;
    if (setFirstOpen == null) { firstOpen = false } else { firstOpen = setFirstOpen; }
    var accordionArray = new Array();
    $(container).each(function(evt) {
        var accordionElem = new AccordionElem($(this), animRate);
        accordionArray.push(accordionElem);
    });
    if (firstOpen) {
        accordionArray[0].setOpen();
    }
    function AccordionElem(elem, animSpeed) {
        this.target = elem;
        this.openElem = openElem;
        this.closeElem = closeElem;
        this.setOpen = setOpen;
        this.hidden = elem.find(".acc-height-set");
        this.title = elem.find("h2");
        var thisTarget = this.target;
        var thisTitle = this.title;
        var hiddenContent = this.hidden;
        var hiddenContentHeight = hiddenContent.height();
        var speed = animSpeed;
        hiddenContent.css({ "display": "none", "height": "0px" });
        (this.target).find(".accordionLink").bind("click", function(evt) {
            evt.preventDefault();
            selectElem(thisTarget);
        });
        function openElem() {
            if (!thisTitle.hasClass("open")) {
                AnimiationActive = true;
                ServiceHoverLocked = true;
                thisTitle.addClass("open")
                hiddenContent.stop();
                hiddenContent.animate({ "height": String(hiddenContentHeight + "px") }, speed, function(evt) { AnimiationActive = false; });
            }
            else {
                closeElem();
            }
        }

        function closeElem() {
            if (thisTitle.hasClass("open")) { thisTitle.removeClass("open") };
            AnimiationActive = true;
            ServiceHoverLocked = true;
            hiddenContent.stop();
            hiddenContent.animate({ "height": "0px" }, speed, function(evt) { AnimiationActive = false; });
        }

        function setOpen() {
            thisTitle.addClass("open");
            hiddenContent.css({ "display": "block", "height": String(hiddenContentHeight + "px") });
        }
    }

    function selectElem(target) {
        var targetElem = target;
        for (var i = 0; i < accordionArray.length; i++) {
            if (target == accordionArray[i].target) {
                accordionArray[i].openElem();
            }
            else {
                accordionArray[i].closeElem();
            }
        }
    }
}

