//------------------------------------------------------
// getElementById function 
// moving to global.js so it can already be loaded when 
// UIElements.js loads. Also, moving UIElements.js before
// Common.js so the initLoad function is already present.
//------------------------------------------------------
/*function $(d){
	return document.getElementById(d);
}*/

//------------------------------------------------------
// Call various functions that need to execute on load
//------------------------------------------------------

var g_onInits = new Array();

function init() {
// 10/20/2008	mtb	Adding my initImages(); call to get the images loaded.
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	if (isIntranet() > 0) { loadPage(); }
	// Turn off the follow two call to convert and expand trees since not in use.
	convertTrees(); //Set up navigator	
	expandToItem('nav-primary-ul',findElementByClass('li','nav-on')); //Expand to active page in navigator
	externalLinks(); //Add onClick warning dialog to external links
	pdfLinks(); //Add target="_blank" to pdf links
	if (urlContains(/\bitshenderson\b/) > 0) { styleH2(); } //Apply H2 spans for ItsHenderson site
	if (urlContains(/\bItsHenderson\b/) > 0) { styleH2(); } //Apply H2 spans for ItsHenderson site
	if (urlContains(/expandtree\=/) > 0) {
		var urlString = document.URL.split("expandtree=");
		if (urlString[1].indexOf('&') > 0) { 
			urlString = urlString[1].split('&');
			expandContensisElementTree('h4','tree_heading_collapsed',decodeURI(urlString[0])); 
		} else {
			expandContensisElementTree('h4','tree_heading_collapsed',decodeURI(urlString[1])); 
		}
	}
	alternateRowColors(); //Convert tables to alternat row colouring
	//setUserState(); //Expand necesarry branches
	//setWidgetState(); //Hide users hidden widgets
	//deleteCookie('infexp', '', '') //Clear cookie
	//deleteCookie('widgets', '', '') //Clear cookie
	debugMode();
	chechAnchor();
	//tableRuler();
	new SmoothScroll();
	new Tips('.ttip > a',{offsets:{'x':-44, 'y': 0}});
		
	/*$$('.document-tree').each(function(accordionEl) {
		var togglers = accordionEl.getChildren('.tree_heading_collapsed');
		var els = accordionEl.getChildren('.tree_collapsed');
		var myAccordion = new Accordion(togglers, els, {
			alwaysHide: true,
			opacity: false,
			display: 'all-closed',
			onActive: function(toggler, element){
				toggler.removeClass('tree_heading_collapsed');
				toggler.addClass('tree_heading_expanded');
				if(toggler.getParent().getParent().getStyle('height') != 0){
					toggler.getParent().getParent().setStyle('height', 'auto');
				}
				//alert(element.id + ': Active - ' + element.className);
			},
			onBackground: function(toggler, element){
				toggler.addClass('tree_heading_collapsed');
				toggler.removeClass('tree_heading_expanded');
				element.removeClass('tree_collapsed');
				element.addClass('tree_element');
				//alert(element.id + ': Background - ' + element.className);
			}
		}).addEvents({
			'onComplete': function(a){
					if ($defined(a)) {
						var height = 0;
						a.getChildren().each(function(e){
							height = height + e.getParent().offsetHeight;
						});
						if(height != a.getParent().getParent().offsetHeight && a.getParent().getParent().offsetHeight != 0){
							a.getParent().getParent().setStyle('height','auto');
						}
					}
				}
		});
	});*/
	
	for(var i = 0; i < g_onInits.length; i++)
	{
		g_onInits[i]();
	}
	initImages();
}

//------------------------------------------------------
// Get Query String function
//------------------------------------------------------

function querySt(ji) {
	hu = window.location.search.substring(1);
	gy = hu.split("&");
	for (i=0;i<gy.length;i++) {
		ft = gy[i].split("=");
		if (ft[0] == ji) {
			return ft[1];
		}
	}
	return "";
}

//------------------------------------------------------
// Expand users last used branches based on cookie
//------------------------------------------------------
function setUserState() {
	if ( getCookie('infexp') != null ) {
		if (getCookie('infexp') != '') {
		var a = Array;
		a = getCookie('infexp').split('|');
		for ( i=1;i<a.length;i++ ) {
			showhidechildul(a[i]);
			}
		}
	}
}

//------------------------------------------------------
// Table ruler
//------------------------------------------------------
function tableRuler() {
	 var originalClass
	 if (document.getElementById && document.createTextNode){
	   var tables=document.getElementsByTagName('table');
	   for (var i=0;i<tables.length;i++)
	   {
		if(tables[i].className=='rows-alternate-hover')
		{
		 var trs=tables[i].getElementsByTagName('tr');
		 for(var j=0;j<trs.length;j++)
		 {
		  if(trs[j].parentNode.nodeName=='TBODY' && trs[j].parentNode.nodeName!='TFOOT')
		   {
		   trs[j].onmouseover=function(){originalClass=this.className;this.className='ruled';return false;}
		   trs[j].onmouseout=function(){this.className=originalClass;return false}
		 }
		}
	   }
	  }
	 }
}

//------------------------------------------------------
// Hide widgets based on cookie
//------------------------------------------------------
function setWidgetState() {
	if ( getCookie('widgets') != null ) {
		if (getCookie('widgets') != '') {
		var a = Array;
		a = getCookie('widgets').split('|');
		for ( i=1;i<a.length;i++ ) {
			showHideChildElement(a[i]);
			}
		}
	}
}

//------------------------------------------------------
// Call init function on load
//------------------------------------------------------
// Mozilla
if (document.addEventListener) {
   document.addEventListener("DOMContentLoaded", init, null);
}
// For other browsers
window.onload = init;

//------------------------------------------------------
// Set global variables
//------------------------------------------------------
var hrefPdf = /\b.pdf\b/;

//------------------------------------------------------
// Return an element object with a specific class name
//------------------------------------------------------
function findElementByClass(t,c){
	var obj, i, found;
	try {
		obj = document.getElementsByTagName(t);
	}
	catch (e){
		obj = document.all.tags(t);
	}
	for(i=0;i<obj.length;i++){
		if (obj[i].className==c){
			found=true
			return obj[i].id;
		}
		else {
			found=false
		}
	}
	if(found==false){return(obj[0].id);}
	return null;
}

function expandContensisElementTree(t,c,v){
	var obj, i, found;
	try {
		obj = document.getElementsByTagName(t);
	}
	catch (e){
		obj = document.all.tags(t);
	}
	for(i=0;i<obj.length;i++){
		if (obj[i].className==c && obj[i].innerHTML.match(v)){
			//alert("Element Found! Text = " + obj[i].innerHTML);
			obj[i].className = "tree_heading_expanded";
			var sibl = obj[i].nextSibling;
			var loop = 0;
			
			while(sibl.tagName != "DIV" && loop++ < 100)
			{
				sibl = sibl.nextSibling;
			}
			
			sibl.className = "tree_expanded";
		}
		else {
			//alert("Element NOT Found! Text = " + v);
		}
	}
}

//------------------------------------------------------
// NAVIGATOR: Fully expands a tree with a given ID
//------------------------------------------------------
function expandTree(treeId) {
	var ul = document.getElementById(treeId);
	if (ul == null) { return false; }
	expandCollapseList(ul,nodeOpenClass);
	return true;
}

//------------------------------------------------------
// NAVIGATOR: Fully collapses a tree with a given ID
//------------------------------------------------------
function collapseTree(treeId) {
	var ul = document.getElementById(treeId);
	if (ul == null) { return false; }
	expandCollapseList(ul,nodeClosedClass);
	return true;
}

//------------------------------------------------------
// NAVIGATOR: Expands enough nodes to expose an LI with 
// a given ID
//------------------------------------------------------
function expandToItem(treeId,itemId) {
	var ul = document.getElementById(treeId);
	if (ul == null) { return false; }
	var ret = expandCollapseList(ul,nodeOpenClass,itemId);
	if (ret) {
		var o = document.getElementById(itemId);
		if(o == null) return false;
		if (o.scrollIntoView) {
			o.scrollIntoView(false);
		}
	}
	return true;
}

//------------------------------------------------------
// NAVIGATOR: 
// a) Expand all nodes
// b) Collapse all nodes
// c) Expand all nodes to reach a certain ID
//------------------------------------------------------
function expandCollapseList(ul,cName,itemId) {
	if (!ul.childNodes || ul.childNodes.length==0) { return false; }
	// Iterate LIs
	for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
		var item = ul.childNodes[itemi];
		if (itemId!=null && item.id==itemId) { return true; }
		if (item.nodeName == "LI") {
			// Iterate things in this LI
			var subLists = false;
			for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
				var sitem = item.childNodes[sitemi];
				if (sitem.nodeName=="UL") {
					subLists = true;
					var ret = expandCollapseList(sitem,cName,itemId);
					if (itemId!=null && ret) {
						item.className=cName;
						return true;
					}
				}
			}
			if (subLists && itemId==null) {
				item.className = cName;
			}
		}
	}
	return true;
}

//------------------------------------------------------
// NAVIGATOR: Search the document for UL elements with 
// the correct CLASS name, then process them
//------------------------------------------------------
function convertTrees() {
	setDefault("treeClass","nav-primary-ul1");
	setDefault("nodeClosedClass","liclosed");
	setDefault("nodeOpenClass","liopen");
	setDefault("nodeBulletClass","");
	setDefault("nodeLinkClass","");
	setDefault("preProcessTrees",true);
	if (preProcessTrees) {
		if (!document.createElement) { return; } // Without createElement, we can't do anything
		uls = document.getElementsByTagName("ul");
		for (var uli=0;uli<uls.length;uli++) {
			var ul=uls[uli];
			if (ul.nodeName=="UL" && ul.className==treeClass) {
				processList(ul);
			}
		}
	}
}

//------------------------------------------------------
// NAVIGATOR: Utility function to set a global variable 
// if it is not already set
//------------------------------------------------------
function setDefault(name,val) {
	if (typeof(window[name])=="undefined" || window[name]==null) {
		window[name]=val;
	}
}

//------------------------------------------------------
// NAVIGATOR: Process a UL tag and all its children, 
// to convert to a tree
//------------------------------------------------------
function processList(ul) {
	if (!ul.childNodes || ul.childNodes.length==0) { return; }
	// Iterate LIs
	for (var itemi=0;itemi<ul.childNodes.length;itemi++) {
		var item = ul.childNodes[itemi];
		if (item.nodeName == "LI") {
			// Iterate things in this LI
			var subLists = false;
			for (var sitemi=0;sitemi<item.childNodes.length;sitemi++) {
				var sitem = item.childNodes[sitemi];
				if (sitem.nodeName=="UL") {
					subLists = true;
					processList(sitem);
				}
			}
			var s= document.createElement("SPAN");
			var t= ''; // &nbsp;
			s.className = nodeLinkClass;
			if (subLists) {
				// This LI has UL's in it, so it's a +/- node
				if (item.className==null || item.className=="") {
					item.className = nodeClosedClass;
					//alert(item.className)
				}
				// If it's just text, make the text work as the link also
				if (item.firstChild.nodeName=="#text") {
					t = t+item.firstChild.nodeValue;
					item.removeChild(item.firstChild);
				}
				s.onclick = function () {
					this.parentNode.className = (this.parentNode.className==nodeOpenClass) ? nodeClosedClass : nodeOpenClass;
					return false;
				}
			}
			else {
				// No sublists, so it's just a bullet node
				s.onclick = function () { return false; }
			}
			if (t!='') {
				s.appendChild(document.createTextNode(t));
				item.insertBefore(s,item.firstChild);
			}
		}
	}
}

//------------------------------------------------------
// Check if a URL is external
//------------------------------------------------------
function isExternal(href) {
	var hrefHenderson = /\bwww.henderson\b/;
	var hrefWww2 = /\bwww2.henderson\b/;
	var hrefWww3 = /\bwww3.henderson\b/;
	var hrefHendersonGroup = /\bwww.hendersongroupplc\b/;
	var hrefItsHenderson = /\bwww.itshenderson\b/;
	var hrefTheSource = /\busretail.thesource\b/;
	var hrefShareData = /\bsharedata.itshenderson.com\b/;
	var hrefItsSecure = /\bsecure.itshenderson.com\b/;
	var hrefSGT = /\bwww.squaregaintest.co.uk\b/;
	var hrefExternal = /\bwww.\b/;
	var hrefLaw = /\blaw.\b/;
	var hrefEuroInvestor = /\bir1.euroinvestor.com\b/;
	var hrefGlobalPensions = /\bglobalpensions.com\b/;
	var hrefProfAdviser = /\bprofessionaladviser.co.uk\b/;
	var hrefSearchFT = /\bsearch.ft.com\b/;
	var hrefHendersonmop = /\bhendersonmop\b/;
		
	if ( hrefHendersonGroup.exec(href) ) { return 0; }
	else if ( hrefHenderson.exec(href) ) { return 0; }
	else if ( hrefItsHenderson.exec(href) ) { return 0; }
	else if ( hrefTheSource.exec(href) ) { return 0; }
	else if ( hrefSGT.exec(href) ) { return 0; }
	else if ( hrefShareData.exec(href) ) { return 0; }
	else if ( hrefItsSecure.exec(href) ) { return 0; }
	else if ( hrefWww2.exec(href) ) { return 0; }
	else if ( hrefWww3.exec(href) ) { return 0; }
	else if ( hrefHendersonmop.exec(href) ) { return 0; }
	else if ( hrefExternal.exec(href) ) { return 1; }
	else if ( hrefLaw.exec(href) ) { return 1; }
	else if ( hrefEuroInvestor.exec(href) ) { return 1; }
	else if ( hrefGlobalPensions.exec(href) ) { return 1; }
	else if ( hrefProfAdviser.exec(href) ) { return 1; }
	else if ( hrefSearchFT.exec(href) ) { return 1; }
	
	else { return 0; }
}

//------------------------------------------------------
// Check if site is Intranet based
//------------------------------------------------------
function isIntranet() {
	if (urlContains(/\bTheSource\b/) > 0) { return 1; }
	if (urlContains(/\bthesource\b/) > 0) { return 1; }
	if (urlContains(/\btheSource\b/) > 0) { return 1; }
	else { return 0; }
}

//------------------------------------------------------
// Display warning dialog on linking to external site
//------------------------------------------------------
function externalLinks() {
  for ( x = 0; x < document.links.length; x++ ) {
    if ( isExternal(document.links[x].href) > 0 ) {
    document.links[x].target="_blank";
      if ( isIntranet() != 1 ) {
	    document.links[x].onclick=function(){return confirm("You are now leaving the our site and entering a website not operated by or affiliated with Henderson Group plc. While we aim to point you to useful external websites, we cannot be responsible for their content or accuracy, even if you utilise the services on the linked site to invest in our products. The protection of your personal information on other websites is not governed by Henderson Group plc's privacy policy and Henderson Group plc cannot be responsible for the privacy policies utilised on such third party sites, nor for the implementation of such policies by those third parties. You should review the Terms and Conditions of third party websites and contact the operators of such sites if you have any queries.")};
	  }
    }
  }
}

//------------------------------------------------------
// Make all .pdf links open in a new window
//------------------------------------------------------
function pdfLinks() {
  for ( x = 0; x < document.links.length; x++ ) {
    if ( hrefPdf.exec(document.links[x].href) ) {
	  document.links[x].target="_blank";
    }
  }
}

//------------------------------------------------------
// Show/hide a child UL
//------------------------------------------------------
function showhidechildul(callerId) { 
	var state;
	var x = 1;
	
	//If running on local host change nesting parameter
	if (urlContains(/\blocalhost\b/) > 0) { x = 5; }
	else { x = 3; }
	
	//Get the caller element
	var caller = document.getElementById(callerId);
	
	//If the caller element's child node is not set to show, then hide
	if (caller.parentNode.childNodes[x].style.display == '') {
		state = 'none';
	}
	else {
		state = caller.parentNode.childNodes[x].style.display;
	}
	
	if (caller.parentNode.className == 'collapse') {
		caller.parentNode.className = 'expand';
		caller.parentNode.childNodes[0].childNodes[0].src = '/HgiSystem/ThemeSystem/Themes/TheSource/USRetail/Images/bull_expand.gif';
		//saveState('infexp', 'remove', callerId);
	}
	else if (caller.parentNode.className == 'expand') {
		caller.parentNode.className = 'collapse';
		caller.parentNode.childNodes[0].childNodes[0].src = '/HgiSystem/ThemeSystem/Themes/TheSource/USRetail/Images/bull_collapse.gif';
		//saveState('infexp', 'add', callerId);
	}
	
	if (state == 'block') { 
		state = 'none'; 
	} 
	else { 
		state = 'block'; 
	} 

	caller.parentNode.childNodes[x].style.display = state;
		
}

//------------------------------------------------------
// Expand all collapsed elements
//------------------------------------------------------
function expandall() {
	var expandLink = document.getElementById('expand-link');
	var obj1, obj2, obj3, i, j, k;
	
	if(expandLink.className == 'exp-all'){
		try {
			obj1 = document.getElementsByTagName('li');
		}
		catch (e){
			obj1 = document.all.tags('li');
		}
		for(i=0;i<obj1.length;i++){
			if (obj1[i].className == 'expand'){
				obj1[i].className = 'collapse';
				obj1[i].style.display = 'block';
			}
			else {
			}
		}
		try {
			obj2 = document.getElementsByTagName('ul');
		}
		catch (e){
			obj2 = document.all.tags('ul');
		}
		for(j=0;j<obj2.length;j++){
			if (obj2[j].className == 'hidden'){
				obj2[j].className = 'show';
				obj2[j].style.display = 'block';
			}
			else {
			}
		}
		try {
			obj3 = document.getElementsByTagName('div');
		}
		catch (e){
			obj3 = document.all.tags('div');
		}
		for(k=0;k<obj3.length;k++){
			if (obj3[k].className == 'hidden'){
				obj3[k].className = 'show';
				obj3[k].style.display = 'block';
			}
			else {
			}
		}
		expandLink.innerHTML = '<span>Collapse all</span>';
		expandLink.className = 'col-all';
	}
	else {
		try {
			obj1 = document.getElementsByTagName('li');
		}
		catch (e){
			obj1 = document.all.tags('li');
		}
		for(i=0;i<obj1.length;i++){
			if (obj1[i].className == 'collapse'){
				obj1[i].className = 'expand';
				obj1[i].style.display = '';
			}
			else {
			}
		}
		try {
			obj2 = document.getElementsByTagName('ul');
		}
		catch (e){
			obj2 = document.all.tags('ul');
		}
		for(j=0;j<obj2.length;j++){
			if (obj2[j].className == 'show'){
				obj2[j].className = 'hidden';
				obj2[j].style.display = '';
			}
			else {
			}
		}
		try {
			obj3 = document.getElementsByTagName('div');
		}
		catch (e){
			obj3 = document.all.tags('div');
		}
		for(k=0;k<obj3.length;k++){
			if (obj3[k].className == 'show'){
				obj3[k].className = 'hidden';
				obj3[k].style.display = '';
			}
			else {
			}
		}
		expandLink.innerHTML = '<span>Expand all</span>';
		expandLink.className = 'exp-all';
	}
}

//------------------------------------------------------
// Show/hide child element and change expand button
//------------------------------------------------------
function buttonhidechildelement(callerId) { 
	var state;
	
	//Get the caller element
	var caller = document.getElementById(callerId);
	
	//Get the active child UL and button
	for ( i = 0; i < caller.parentNode.childNodes.length; i++ ) {
		//alert(i+'.0 - '+caller.parentNode.childNodes[i].id);
		if (caller.parentNode.childNodes[i].className == 'hidden') {
			//alert(i+'.0 - '+caller.parentNode.childNodes[i].id);
			var hiddenChildElement = caller.parentNode.childNodes[i];
			}
		for ( j = 0; j < caller.parentNode.childNodes[i].childNodes.length; j++ ) {
			if (caller.parentNode.childNodes[i].childNodes[j].border == 0) {
				//alert(i+'.'+j+' - '+caller.parentNode.childNodes[i].childNodes[j].id);
				var activeButton = caller.parentNode.childNodes[i].childNodes[j];
			}
		}
	}
	
	//If the caller element's child node is not set to show, then hide
	if (hiddenChildElement.style.display == '') {
		state = 'none';
	}
	else {
		state = hiddenChildElement.style.display;
	}
	
	//Get the path to the expand/collapse button
	var buttonPath = activeButton.src
	
	if (caller.parentNode.className == 'collapse') {
		caller.parentNode.className = 'expand';
		buttonPath = buttonPath.replace('bull_collapse.gif', 'bull_expand.gif');
		activeButton.src = buttonPath
		//saveState('infexp', 'remove', callerId);
	}
	else if (caller.parentNode.className == 'expand') {
		caller.parentNode.className = 'collapse';
		
		buttonPath = buttonPath.replace('bull_expand.gif', 'bull_collapse.gif');
		activeButton.src = buttonPath
		//saveState('infexp', 'add', callerId);
	}
	
	//Set the state
	if (state == 'block') { 
		state = 'none'; 
	} 
	else { 
		state = 'block'; 
	} 

	//Apply the state
	hiddenChildElement.style.display = state;
		
}

//------------------------------------------------------
// Show/hide a child element
//------------------------------------------------------
function showHideChildElement(callerId) { 
	var state;
	//Get the caller element
	var caller = document.getElementById(callerId);
	
	//If running on local host change nesting parameter
	if (urlContains(/\blocalhost\b/) > 0) { x = 1; }
	else { x = 1; }
	
	if (caller.childNodes[x].style.display == '') {
		caller.parentNode.childNodes[1].childNodes[0].childNodes[0].src = '/HgiSystem/ThemeSystem/Themes/TheSource/USRetail/Images/butt_down_white.gif';
		caller.childNodes[x].style.display = 'none';
		saveState('widgets', 'add', callerId);
	}
	else if (caller.childNodes[x].style.display == 'none') {
		caller.parentNode.childNodes[1].childNodes[0].childNodes[0].src = '/HgiSystem/ThemeSystem/Themes/TheSource/USRetail/Images/butt_up_white.gif';
		caller.childNodes[x].style.display = 'block';
		saveState('widgets', 'remove', callerId);
	}
	else if (caller.childNodes[x].style.display == 'block') {
		caller.parentNode.childNodes[1].childNodes[0].childNodes[0].src = '/HgiSystem/ThemeSystem/Themes/TheSource/USRetail/Images/butt_down_white.gif';
		caller.childNodes[x].style.display = 'none';
		saveState('widgets', 'add', callerId);
	}
	else {
		caller.parentNode.childNodes[1].childNodes[0].childNodes[0].src = '/HgiSystem/ThemeSystem/Themes/TheSource/USRetail/Images/butt_up_white.gif';
		caller.childNodes[x].style.display = 'block';
		saveState('widgets', 'remove', callerId);
	}
}
//------------------------------------------------------
// Show/hide an element
//------------------------------------------------------
function showhideelement(callerId) {
	//Get the caller element
	var caller = document.getElementById(callerId);
	if ( caller.style.display != 'none' ) {
	caller.style.display = 'none';
	}
	else {
	caller.style.display = '';
	}
	
}

//------------------------------------------------------
// Save expanded branch ids to a cookie
//------------------------------------------------------
function saveState(cookiename, action, callerId){
	var userstate;
	//alert(action);
	
	//Check if cookie exisits
	if ( getCookie(cookiename) != null ) {
		userstate = getCookie(cookiename);
	}
	else {
		userstate = ''
	}
	//Check action and add or remove branch id
	if ( action == 'add' ) {
		//alert(action + ' : ' + callerId);
		//Add only if doesn't already exist
		if ( userstate.indexOf(callerId) < 0 ) {
		userstate = userstate + '|' + callerId;
		}
	}
	else if ( action == 'remove' ) { 
		//alert(action + ' : ' + callerId);
		userstate = userstate.replace('|' + callerId, '');
	}
	//Set cookie for 2 years
	setCookie(cookiename, userstate, 730, '', '', '');
	//alert('cookie: ' + getCookie('infexp'));
}

//------------------------------------------------------
// Wrap first letter of each word of H2 in a span tag
//------------------------------------------------------
function styleH2(){
	var heads = document.getElementsByTagName('h2');
	for (var i = 0;i < heads.length; i++){
		var h2 = heads[i].firstChild.nodeValue
		var ar = h2.split(" ");
		for (var j = 0; j < ar.length; j++){
			if (ar[j].length > 1) {
				var firstLetter = document.createElement('span');
				var text1 = document.createTextNode(ar[j].substring(0, 1));
				var text2 = document.createTextNode(ar[j].substring(1) + ' ');
				firstLetter.appendChild(text1);
				heads[i].firstChild.nodeValue = '';
				heads[i].appendChild(firstLetter);
				heads[i].appendChild(text2);
			}
			else {
				var text3 = document.createTextNode(ar[j] + ' ');
				heads[i].appendChild(text3);
			}
		}
	}
}

//------------------------------------------------------
// Change styles of alternating rows of tables with 
// "rows-alternate-hover" class
//------------------------------------------------------
function alternateRowColors() {
	var className = 'rows-alternate-hover';
	var rows, arow;
	var tables = document.getElementsByTagName("table");
	var rowCount = 0;
	for(var i=0;i<tables.length;i++) {
		if(tables.item(i).className == className) {
			atable = tables.item(i);
			rows = atable.getElementsByTagName("tr");
			for(var j=0;j<rows.length;j++) {
				arow = rows.item(j);
				if(arow.nodeName == "TR") {
					if(rowCount % 2) {
						arow.className = 'row-alternate';
						
					} else {
					}
					rowCount++;
				}
			}
			rowCount = 0;
		}
	}
}

//------------------------------------------------------
// Read a cookie
//------------------------------------------------------
function getCookie( name ) {
	var start = document.cookie.indexOf( name + "=" );
	var len = start + name.length + 1;
	if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
		return null;
	}
	if ( start == -1 ) return null;
	var end = document.cookie.indexOf( ";", len );
	if ( end == -1 ) end = document.cookie.length;
	return unescape( document.cookie.substring( len, end ) );
}

//------------------------------------------------------
// Set a cookie
//------------------------------------------------------
function setCookie( name, value, expires, path, domain, secure ) {
	var today = new Date();
	today.setTime( today.getTime() );
	if ( expires ) {
		expires = expires * 1000 * 60 * 60 * 24;
	}
	var expires_date = new Date( today.getTime() + (expires) );
	document.cookie = name+"="+escape( value ) +
		( ( expires ) ? ";expires="+expires_date.toGMTString() : "" ) + //expires.toGMTString()
		( ( path ) ? ";path=" + path : "" ) +
		( ( domain ) ? ";domain=" + domain : "" ) +
		( ( secure ) ? ";secure" : "" );
}

//------------------------------------------------------
// Clear a cookie
//------------------------------------------------------
function deleteCookie( name, path, domain ) {
	if ( getCookie( name ) ) document.cookie = name + "=" +
		( ( path ) ? ";path=" + path : "") +
		( ( domain ) ? ";domain=" + domain : "" ) +
		";expires=Thu, 01-Jan-1970 00:00:01 GMT";
}

//------------------------------------------------------
// Check if the current page is in a certain site folder
//------------------------------------------------------
function urlContains(rexp) {
	if ( rexp.exec(window.location.href) ) { return 1; }
	else { return 0; }
}

//------------------------------------------------------
// Utility function
//------------------------------------------------------
function $() {
	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;
}

//------------------------------------------------------
// Splash screen
//------------------------------------------------------
function loadPage() {
	if (document.getElementById) {
		document.getElementById('loading').style.visibility = 'hidden';
	}
	else {
		if (document.layers) {
		document.hidepage.visibility = 'hidden';
		}
		else {
		document.all.hidepage.style.visibility = 'hidden';
		}
	}
}

//------------------------------------------------------
// Jump dropdown menu
//------------------------------------------------------
function redirectURL(selMenu) {
	window.location = selMenu.options[selMenu.selectedIndex].value;
}

//------------------------------------------------------
// Positional utilities
//------------------------------------------------------
/*
function findPosX(obj){
  var curleft = 0;
  if (obj.offsetParent) 
  {
    while (obj.offsetParent) 
        {
            curleft += obj.offsetLeft
            obj = obj.offsetParent;
        }
    }
    else if (obj.x)
        curleft += obj.x;
    return curleft;
}
function findPosY(obj){
    var curtop = 0;
    if (obj.offsetParent) 
    {
        while (obj.offsetParent) 
        {
            curtop += obj.offsetTop
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
        curtop += obj.y;
    return curtop;
}
*/
//------------------------------------------------------
// Show border and icon in debug mode
//------------------------------------------------------
function showControlDebug(id){
	var sp = document.getElementById(id);
	var el = sp.childNodes.item(0);

	//Create a border div
	var newDiv1 = document.createElement('div');
	newDiv1.setAttribute('id',id+'-debug');
	newDiv1.style.width = el.offsetWidth + 3 + 'px';
	newDiv1.style.height = el.offsetHeight  + 3 + 'px';
	newDiv1.style.left = findPosX(el) + 'px';
	newDiv1.style.top = findPosY(el) + 'px';
	if(sp.className == 'debug-cached'){
		newDiv1.className = 'debug-cached';
	}
	else {
		newDiv1.className = 'debug-notcached';
	}
	document.body.appendChild(newDiv1);

	//Create a i icon div
	var newDiv2 = document.createElement('div');
	var divId = id+'-info'
	newDiv2.setAttribute('id',divId);
	newDiv2.style.left = findPosX(el) + 3 + 'px';
	newDiv2.style.top = findPosY(el) + 3 + 'px';
	newDiv2.innerHTML = '<a href="#" onclick="tooltip_show(\'tt-'+id+'\',\''+divId+'\');"><img src="/hgisystem/themesystem/themes/common/images/butt_i_grey.gif" border="0" /></a>';
	if(sp.className == 'debug-cached'){
		newDiv2.className = 'info-cached';
	}
	else {
		newDiv2.className = 'info-notcached';
	}
	document.body.appendChild(newDiv2);
	
	//Append a close icon
	var newDiv3 = document.createElement('div');
	newDiv3.className = 'tootltip-header';
	newDiv3.innerHTML = '<a href="#" onclick="tooltip_hide(\'tt-'+id+'\');"><img src="/hgisystem/themesystem/themes/common/images/butt_close_grey.gif" border="0" /></a>';
	var ttBody = document.getElementById('tt-'+id).childNodes.item(0)
	ttBody.parentNode.insertBefore(newDiv3,ttBody);
}

function debugMode(){
	var spans = document.getElementsByTagName('span');
	for (var i = 0;i < spans.length; i++){
		if (spans[i].className.substring(0,5) == 'debug'){
			showControlDebug(spans[i].id);
		}
	}
}

//------------------------------------------------------
// Tooltips
//------------------------------------------------------
function tooltip_show(tooltipId, parentId){
	// default offset
	var posX = 0
	var posY = 0
	
    it = document.getElementById(tooltipId);
    
    if ((it.style.top == '' || it.style.top == 0) 
        && (it.style.left == '' || it.style.left == 0))
    {
        // set default size
        it.style.width = it.offsetWidth + 'px';
        it.style.height = it.offsetHeight + 'px';
        
        img = document.getElementById(parentId); 
    
        // if tooltip is too wide, shift left to be within parent 
        if (posX + it.offsetWidth > img.offsetWidth) posX = img.offsetWidth - it.offsetWidth;
        if (posX < 0 ) posX = 0; 
        
        x = findPosX(img) + posX;
        y = findPosY(img) + posY;
        
        it.style.top = y + 'px';
        it.style.left = x + 'px';
    }
    
    it.style.visibility = 'visible'; 
}
function tooltip_hide(id)
{
    it = document.getElementById(id); 
    it.style.visibility = 'hidden'; 
}

//------------------------------------------------------
// Hgplc Share Calculator July 2006
//------------------------------------------------------
function shareCalc1(){
	var shares = document.getElementById('shares').value;	
	if(shares > 0){
		var retained = shares-(Math.round(shares*0.22));
		var total = (shares-retained)*0.78;
		var cash = total*2.47665;
		document.getElementById('shares-retained').innerHTML = addCommas(retained.toFixed(0));
		document.getElementById('shares-total').innerHTML = '&pound;'+addCommas(total.toFixed(2));
		document.getElementById('shares-cash').innerHTML = 'A$'+addCommas(cash.toFixed(2));
		}
	else{
	alert('Please enter a valid number')
	}
}

//------------------------------------------------------
// Number Format - Add Commas
//------------------------------------------------------
function addCommas(nStr){
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}


//------------------------------------------------------
// Submit Buttons rollover
//------------------------------------------------------
function hov(loc,cls) {
   if(loc.className)
      loc.className=cls;
}

//------------------------------------------------------
// Get Event from onClick
//------------------------------------------------------

function getEvent(_event)
{
	var isIE = _event.srcElement;
	
	var el = (isIE) ? _event.srcElement : _event.target;
	
	if (el.className.substring(0, 13) == "tree_heading_") 
	{
		var sibl = el.nextSibling;
		var strURL = document.URL;
		var loop = 0;
		
		while (sibl.tagName != "DIV" && loop++ < 100) 
		{
			sibl = sibl.nextSibling;
		}
		
		var parent = (isIE) ? sibl.parentElement : sibl.parentNode;
		var isCollapsed = (sibl.className == "tree_collapsed");

		if (parent.currentExpandedEl) 
		{
			parent.currentEl.className = "tree_heading_collapsed";
			parent.currentExpandedEl.className = "tree_collapsed";
		}

		if (strURL.indexOf("SPReporting") == -1) {
			parent.currentEl = el;
			parent.currentExpandedEl = sibl;
		}
				 
		sibl.className = (isCollapsed) ? "tree_expanded" : "tree_collapsed"; 
		el.className = (isCollapsed) ? "tree_heading_expanded" : "tree_heading_collapsed";
	}
}

function hcom_setActive(_event)
{
	var isIE = _event.srcElement;
	
	var el = (isIE) ? _event.srcElement : _event.target;
	
	if (elCurrentWrapperDiv.currentActiveDiv){
			el.className = "";
	}
	
	var elContainerDiv = (isIE) ? el.parentElement.parentElement : el.parentNode.parentNode;
	var elCurrentWrapperDiv = (isIE) ? el.parentElement.parentElement.parentElement : el.parentNode.parentNode.parentNode;
	
	elCurrentWrapperDiv.currentActiveDiv = elContainerDiv;
	elCurrentWrapperDiv.currentActiveEl = el;
	
	el.className = "active";
}


//------------------------------------------------------
// H.com Channel Selector functions
//------------------------------------------------------

var hcomCurrentRegionId = null;
var hcomCurrentRegion = null;

function hcom_selectregion(regionid)
{
	if (hcomCurrentRegionId != null) {
		var currentRegionA = document.getElementById(hcomCurrentRegionId);
		var currentRegionDiv = document.getElementById(hcomCurrentRegionId + '_regionDiv');
		currentRegionDiv.style.display = 'none';
		currentRegionA.className = '';
	} else {
		var flashDiv = document.getElementById('testflash');
		flashDiv.style.display = 'none';
	}

	var regionDiv = document.getElementById(regionid + '_regionDiv');
	var regionA = document.getElementById(regionid);
		
	//var effect = new Effect.Opacity(regionDiv.id, {duration:0.4, from:0.0, to:1.0});
	$(regionid + '_regionDiv').setStyles({
		display:'block',
		opacity: 0
		}).fade(1);
	regionA.className = 'active';
	
	$('selectregion').fade(0.5);
	//new Effect.Opacity(selectRegionH2.id, {duration:0.4, from:1.0, to:0.5});

	hcomCurrentRegionId = regionid;
	
	hcom_showotherdiv(null);
}

function hcom_showotherdiv(region)
{
	if (hcomCurrentRegion != null) {
		var currentTypeA = document.getElementById(hcomCurrentRegion + '_otherA');
		var currentTypeDiv = document.getElementById(hcomCurrentRegion + '_otherDiv');
		var currentTypeImg = document.getElementById(hcomCurrentRegion + '_otherImg');
		var currentTypeImgShadow = document.getElementById(hcomCurrentRegion + '_otherImgShadow');
		
		currentTypeA.className = 'other';
		currentTypeDiv.style.display = 'none';
		currentTypeImg.style.visibility = 'visible';
		currentTypeImgShadow.className = 'hidden';
	} 

	if(region != null)
	{
		var otherDiv = document.getElementById(region + '_otherDiv');
		var otherA = document.getElementById(region + '_otherA');
		var otherImg = document.getElementById(region + '_otherImg');
		var otherImgShadow = document.getElementById(region + '_otherImgShadow');
		
		//otherDiv.style.opacity = '0.0';
		//otherDiv.style.filter = 'alpha(opacity=0)';	
		//otherDiv.style.display = 'inline';
		$(region + '_otherDiv').setStyles({
			display:'block',
			opacity: 0
			}).fade(1);
		//var effect = new Effect.Opacity(otherDiv.id, {duration:0.4, from:0.0, to:1.0});
		otherA.className = "active";
		otherImg.style.visibility = 'hidden';
		otherImgShadow.className = 'visible';
	
		hcomCurrentRegion = region;
	}
}


var hcom_regionIDs = new Array();
var hcom_rememberMeIsChecked = false;

//alert(getCookie("hcomRememberPage"));
deleteCookie("hcomRememberPage", "/");

function hcom_rememberMeOnClick(regionID)
{
	var el = document.getElementById("rememberMe_" + regionID);
	
	hcom_rememberMeIsChecked = el.checked;

	for(var i = 0; i < hcom_regionIDs.length; i++)
	{
		var chk = document.getElementById("rememberMe_" + hcom_regionIDs[i]);
		
		chk.checked = hcom_rememberMeIsChecked;
	}
}

function hcom_checkRememberMe(url)
{
	if(hcom_rememberMeIsChecked == true)
	{
		setCookie("hcomRememberPage", url, 500, "/");
	}
}

//----------------------------------------------------
// Check anchors for IE bug
//----------------------------------------------------

function chechAnchor() {
	if (window.navigate){
		var url = document.location.href;
		var pos = url.indexOf("#");
		if (pos != -1){
			var anchor = url.substring(pos,1000);
			window.navigate(anchor);
		}
	}
}


function getStyleClass (className) {

	for (var s = 0; s < document.styleSheets.length; s++)
	{
		if(document.styleSheets[s].rules)
		{
			for (var r = 0; r < document.styleSheets[s].rules.length; r++)
			{
				if (document.styleSheets[s].rules[r].selectorText == '.' + className)
				{
					return document.styleSheets[s].rules[r];
				}
			}
		}
		else if(document.styleSheets[s].cssRules)
		{
			for (var r = 0; r < document.styleSheets[s].cssRules.length; r++)
			{
				if (document.styleSheets[s].cssRules[r].selectorText == '.' + className)
					return document.styleSheets[s].cssRules[r];
			}
		}
	}
	
	return null;
}

function selectTabSet(name, tabNumber, tabCount){

	for (var i = 1; i <= tabCount; i++){
		
		var tab = document.getElementById(name + '_tab' + i);
		var cols = document.getElementsByName(name + '_col' + i);
		
		if (i == tabNumber) {
			tab.className = 'current';
			
			for(var j = 0; j < cols.length; j++)
			{
				var col = cols[j];
				col.style.display = 'block';
				if (navigator.userAgent.indexOf("Firefox")!=-1){
					col.style.display = 'table-cell';
				}
			}
		}
		else {
			tab.className = '';

			for(var j = 0; j < cols.length; j++)
			{
				var col = cols[j];
				col.style.display = 'none';
			}
		}
	}
	
}


/*------------------------------------------------------------
 *						END OF CODE
/*-----------------------------------------------------------*/


function addTransaction(el,nextFs,e){
	nextFs = $(nextFs);
	nextFs.style.display = 'block';
}

function removeTransaction(uniqueID, index)
{
	var fields = new Array("TransactionName", "IsinCusip", "ClassOfNote", "HoldingSize", "Currency", "NatureOfInterest", "LegalIAccept");
	
	for(var j = 0 ; j < fields.length; j++)
	{
		fields[j] = uniqueID + "_" + fields[j];
	}

	resetTransactionDetails(fields, index);
	
	// bring all filled forms on top
		
	for(var i = 1; i < 10; i++)
	{
		if(formIsEmpty(fields, i))
		{
			bubbleUpTransaction(fields, i + 1);
		}
	}
	
	// hide all empty forms
	
	for(var i = 2; i <= 10; i++) // first form is never hidden
	{
		if(formIsEmpty(fields, i))
		{
			document.getElementById("transaction" + i).style.display = "none";
		}
		else
		{
			document.getElementById("transaction" + i).style.display = "block";
		}
	}
}

function formIsEmpty(fields, index)
{
	var s = "";
	
	for(var j = 0; j < fields.length - 1; j++) // last one is "LegalIAccept"
	{
		s += trim(document.getElementById(fields[j] + index).value);
	}
	
	// last one is "LegalIAccept"
	if(document.getElementsByName(fields[fields.length - 1] + index)[1].checked)
	{
		s += "true";
	}
	
	return (s == "");
}

function resetTransactionDetails(fields, index)
{
	for(var j = 0; j < fields.length - 1; j++) // last one is "LegalIAccept"
	{
		document.getElementById(fields[j] + index).value = "";
	}

	// last one is "LegalIAccept"	
	document.getElementsByName(fields[fields.length - 1] + index)[1].checked = false;
}

function bubbleUpTransaction(fields, index)
{
	for(var j = 0; j < fields.length - 1; j++) // last one is "LegalIAccept"
	{
		document.getElementById(fields[j] + (index - 1)).value = document.getElementById(fields[j] + index).value;
	}

	// last one is "LegalIAccept"	
	document.getElementsByName(fields[fields.length - 1] + (index - 1))[1].checked = document.getElementsByName(fields[fields.length - 1] + index)[1].checked;

	resetTransactionDetails(fields, index);
}

function trim(str)
{
	return str.replace(/^\s+|\s+$/g, "");
}

