var blankRegEx = /^[ \t\n]*$/;

var maxTabMenu = 7;

var tabReplacements = new Array();

tabReplacements[0] = new Object;
tabReplacements[0].original ="HSBCnet";
tabReplacements[0].revised = "HSBC<em>net</em>";

tabReplacements[0] = new Object;
tabReplacements[0].original ="HSBCnet Online<BR>Services";
tabReplacements[0].revised = "HSBC<em>net</em> Online<BR>Services";

var mainSections = new Array();

mainSections[0] = new Object;
mainSections[0].urlFragment = "/teamsite/solutions/pages";
mainSections[0].sectionName = "corporate";
mainSections[0].homeUrl = "/teamsite/solutions/pages/default_en_UK_STAFF.shtml";
mainSections[0].duplicateMainNav = 1;
mainSections[0].altMainNav = null;

mainSections[1] = new Object;
mainSections[1].urlFragment = "/teamsite/online/pages";
mainSections[1].sectionName = "hsbcnet";
mainSections[1].homeUrl = "/teamsite/online/pages/default.shtml";
mainSections[1].duplicateMainNav = 1;
mainSections[1].altMainNav = null;

var currentSection = 0;

for (var i = 1; i < mainSections.length; i++) {
	if (location.href.indexOf(mainSections[i].urlFragment) >= 0) {
		currentSection = i;
		break;
	}
}

/* Enlarge image function */
function largeImage(imageURL,width,height) {

	var windowWidth = width + 25;
	var windowHeight = height + 30;
	
	window.open(imageURL,'HSBCbigImage','dependent=yes,width=' + windowWidth + ',height=' + windowHeight + ',menubar=no,resizable=no,scrollbars=no,status=no,titlebar=yes,toolbar=no');
	
	return false;
	
}

/* Content popUp */
function contentPopUp(targetURL,targetWindow) {

	window.open(targetURL,targetWindow,'width=525,height=542,location=no,directories=no,menubar=no,toolbar=no,scrollbars=yes,status=no,resizable=no,left=0,top=0');

	return false;

}

/* Submit search form */
function goSearch(fieldName) {
	var field = document.getElementById(fieldName);
	clearField(field);
	if(blankRegEx.test(field.value)) {
		alert("Please type the word(s) you wish to search for");
		fillField(field); field.blue();
		return false;
	}
	return true;
}

/* Functions for clear/fill text field handling */
function fieldToggle(field) {
	if (field.value == field.title) {
		field.value = "";
	} else if (field.value == "") {
		field.value = field.title;
	}
}
/* End clear/fill */

/* rotating collateral */
var rotateList = new Array();

function rotateItem(items,target) {

	var rotateReq;
	var selected = Math.floor(Math.random() * (items.length ));
	
	if (window.XMLHttpRequest) {
		rotateReq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		rotateReq = new ActiveXObject("Microsoft.XMLHTTP");
	}
	if (rotateReq != undefined) {
		rotateReq.onreadystatechange = rotateDone;
		rotateReq.open("GET", items[selected], true);
		rotateReq.send("");
	}

	function rotateDone() {
	
		if (rotateReq.readyState == 4) { // only if req is "loaded"
			if (rotateReq.status == 200) { // only if "OK"
				document.getElementById(target).outerHTML = rotateReq.responseText;
			} else {
				var defaultTarget = target + "Default";
				var foo = document.getElementById(defaultTarget);
				document.getElementById(target).outerHTML = document.getElementById(defaultTarget).innerHTML;
			}
		}
	
	}

}

/* Load event handler function to accomodate HSBCnet in tabs */

function fixTabs() {

	if (!document.getElementById) { return; }

	if (document.getElementById("navigation")) {
		tabs = document.getElementById("navigation");
	}
	
	/*if (document.getElementById("navigation")) {
		var entries = tabs.getElementsByTagName("span");

		for (i = 0; i < entries.length; i++) {
						
			for (j = 0; j < tabReplacements.length; j++) {
				
				if (tabReplacements[j].original == entries[i].innerHTML) {
					entries[i].innerHTML = tabReplacements[j].revised;
				}
				
			}
			
		}
	}*/
	var items = tabs.getElementsByTagName("ul");
	
	var numLists = items.length;

	for (var i = 0; i < numLists; i++) {
		// Is the menu in question long?
		if (items[i].childNodes.length > maxTabMenu) {
			// If so, split it and hang a "More ..." off the end for the extra items
			var more = document.createElement("li");
//			var strong = document.createElement("strong");
//			var outerSpan = document.createElement("span");
			var a = document.createElement("a");
			a.href = "#";
//			var innerSpan = document.createElement("span");
			var linkText = document.createTextNode(nlsMoreTxt);
			
			var ul = document.createElement("ul");
			ul.className = "popUpMenu";

			while(items[i].childNodes[maxTabMenu]) {
				ul.appendChild(items[i].childNodes[maxTabMenu]);
			}
			
//			innerSpan.appendChild(linkText);
//			a.appendChild(innerSpan);
			a.appendChild(linkText);
//			outerSpan.appendChild(a);
//			outerSpan.appendChild(ul);
			more.appendChild(a);
			more.appendChild(ul);
//			strong.appendChild(outerSpan);
//			more.appendChild(strong);
			
			more.onmouseover = hoverMouseover;
			more.onmouseout = hoverMouseout;
			
			items[i].appendChild(more);
			
/*			var newHTML = "";
			for (k = 0; k < maxTabMenu; k++) {
				newHTML += items[i].childNodes[k].outerHTML;
			}
			newHTML += '<li><strong><span><a href="#"><span>' + nlsMoreTxt + '</span></a></span></strong><ul class="popUpMenu">';
			for (k = maxTabMenu; k < items[i].childNodes.length; k++) {
				newHTML += items[i].childNodes[k].outerHTML;
			}
			newHTML += '</ul></li>';
			items[i].innerHTML = newHTML;
			
			// Hover handling
			items[i].childNodes[items[i].childNodes.length].onmouseover = hoverMouseover;
			items[i].childNodes[items[i].childNodes.length].onmouseout = hoverMouseout;*/
			
		}
		items[i].style.display = "block";
		items[i].style.visibility = "visible";
	}
	
}

function fixLinks() {
//	alert("fixLinks triggered.");
	if (document.getElementById("links")) {
		var items = document.getElementById("links").getElementsByTagName("ul");
		
		for (var i = 0; i < items.length; i++) {
			if (items[i].className == "popUpMenu" || items[i].className == "popUp") {
				items[i].style.top = 0;
				var frames = items[i].parentNode.getElementsByTagName("iframe");
				for (var j = 0; j < frames.length; j++) {
					frames[j].style.top = items[i].style.top;
					frames[j].style.width = 155;
				}
			}
		}
	}

}

function externalLinks() {
	var links = document.getElementsByTagName("a");
	for (var i = 0; i < links.length; i++) {
		var href = links[i];
		if (href.href.search("http://") >= 0 || href.href.search("https://") >= 0) {
//			if (href.onclick) {
//				if (href.onclick.search("open(") >=0) {
//					return;
//				}
//			}
			if (href.target.length == 0 && href.href.search(window.location.hostname) < 0) {
//				alert(href.href);
				href.target = "_blank";
			}
		}
	}
}

/*function staffDisplay() {

	var elementList = new Array("div");

	for (j = 0; j < elementList.length; j++) {

		var items;
		items = document.getElementsByTagName(elementList[j]);
		
		// Set up hover simulation
		for (var i = 0; i < items.length; i++) {
			
			var staff = /\bstaff\b/;
			var funcBox = /\bfuncBox\b/;
			var promo = /\bpromo\b/;
			var bodyCopy = /\bbodyCopy\b/;
			if (items[i].className.search(staff) < 0 &&
				(items[i].className.search(funcBox) >= 0 ||
				 items[i].className.search(promo) >= 0 ||
				 items[i].className.search(bodyCopy) >= 0)) {
				var staff = document.createElement("span");
				staff.className="publicDisplay";
				staff.title = "This content may be shared externally without additional permission.";
				var h1 = items[i].getElementsByTagName("h1")[0];
				h1.insertBefore(staff,h1.childNodes[0]);
				staff.style.height = h1.offsetHeight - 3;
			}
			
		}
		
	}
}*/

/* Site map */
function siteMapToggle(elementName) {
	var element = document.getElementById(elementName);
	if (element.className == "plus") {
		element.className = "minus";
	} else if (element.className == "minus") {
		element.className = "plus";
	}
}

function siteMapPrep() {
	var sitemap = document.getElementById("siteMap");
	var entries = sitemap.getElementsByTagName("li");
	
	for (var i=0; i < entries.length; i++) {
		var children = entries[i].getElementsByTagName("li");
		if (children.length <= 0) {
			entries[i].className = "disabled";
		}
	}
}

function siteMapSetup() {
	var sitemap = document.getElementById("siteMap");
	var mainlist = sitemap.childNodes[0];
	var entries = mainlist.childNodes;
	
	for (var i = 0; i < entries.length; i++) {
		var entry = entries[i];
		var hyperlink = entries[i].getElementsByTagName("a")[0];
		if (document.referrer.search(hyperlink) >=0 ) {
			siteMapToggle(entry.id);
		}
	}
}

/* Grey bar handling */
function greyBar() {

	var nav = document.getElementById("navigation");
	var strap = document.getElementById("site");
	var altnav;
	var mainnav;
	
	/* Get main nav, alt nav */
	for (var i = 0; i < nav.childNodes.length; i++) {
		if (nav.childNodes[i].id == "altnav") {
			altnav = nav.childNodes[i];
		} else if (nav.childNodes[i].tagName == "UL") {
			mainnav = nav.childNodes[i];
		}
	}

	var mainnavList = mainnav.getElementsByTagName("li");
	var microsite = (mainnavList[0].className.indexOf("toolName") >= 0) ? true : false;

	/* Do we have a toolName? */
	if (!microsite) {

		strap.innerHTML += "<ul>" +
							"<li class='first'><a href='" + mainSections[currentSection].homeUrl + "'>Home</a></li>" +
							((mainSections[currentSection].duplicateMainNav > 0) ? mainnav.innerHTML : mainSections[currentSection].altMainNav) +
							altnav.innerHTML +
							"</ul>";

		nav.className = nav.className + " invisible";
		document.getElementById("head").className = "popup";
		
	} else {
		
		var peernav = altnav.getElementsByTagName("ul")[0];
		var altnodes = altnav.getElementsByTagName("li");
		var othernav = altnodes[altnodes.length - 1];

		strap.innerHTML += "<ul>" +
							"<li class='first'><a href='" + mainSections[currentSection].homeUrl + "'>Home</a></li>" +
							peernav.innerHTML +
							"<li>" + othernav.innerHTML + "</li>" + 
							"</ul>";

		altnav.className = altnav.className + " invisible";
							
	}

	// Mark the current section
	var strapList = strap.getElementsByTagName("li");
	var currentDone = false;
	var currentFound = false;
	for (var i = 0; i < strapList.length; i++) {
		if (microsite && (!currentDone) && (!currentFound) && (strapList[i].getElementsByTagName("a")[0].innerHTML == mainnavList[0].getElementsByTagName("a")[0].innerHTML)) {
			strapList[i].className = strapList[i].className + " current";
			currentDone = true;
		} 
		if (strapList[i].className.indexOf("current") >= 0) {
			strapList[i].innerHTML = "<span>" + strapList[i].innerHTML + "</span>";
			currentFound = true;
		}

	}
	
}

function greyBarFinalize() {

	var strap = document.getElementById("site");
	var strapList = strap.getElementsByTagName("li");

	strapList[strapList.length - 1].className = "last";

	if (document.getElementById("breadcrumbs").getElementsByTagName("li").length <= 1) {
		strapList[0].className = strapList[0].className + " current";
		strapList[0].innerHTML = "<span>" + strapList[0].innerHTML + "</span>";
	}
	

//	var strap = document.getElementById("site");
//	var strapList = strap.getElementsByTagName("ul")[0];
//	var links = document.getElementById("links");
//	var linksList = links.getElementsByTagName("ul")[0];
	
//	strapList.innerHTML = strapList.innerHTML + linksList.innerHTML;

	
	
/*	strapList.childNodes[0].className += " current";
	strapList.childNodes[0].innerHTML = "<span>" + strapList.childNodes[0].innerHTML + "</span>";
*/
//	for (var i = 0; i < strapList.childNodes.length; i++) {
}

/* Code to support country/continent functionality for country promo box */
function check(continent){

	if(continent != "" ){
		document.getElementById("country").innerHTML = ""	
		x = document.getElementById("country")	
		var mycountry=new Array(new Array("Israel","Palestinian Autonomous Area","South Africa","United Arab Emirates"),
								new Array("Argentina","Brazil","Canada","Mexico","Panama","United States"),
								new Array("Australia","Bangladesh","China","Hong Kong SAR","India","Japan","Korea","Macau SAR","New Zealand","Philippines","Singapore","Sri Lanka","Taiwan","Turkey", "Vietnam"),
								new Array("France","Germany","Malta","Switzerland","United Kingdom"),
								new Array("Select a country or location","Argentina","Australia", "Bangladesh","Brazil","Canada","China","France","Germany","Hong Kong","Israel","India","Japan","Korea","Mauritius","Mexico","New Zealand","Palestinian Autonomous Area","Philippines","Singapore","South Africa","Spain","Sri Lanka","Switzerland","Taiwan","Turkey","United Arab Emirates","United Kingdom","United States","Vietnam"))  

		var mycountry_val=new Array(new Array("il", "ps", "za", "ae"),
								new Array("ar", "br", "ca", "mx", "pa", "us"),
								new Array("au", "bd", "cn", "hk", "in", "jp", "kr", "mo", "nz", "sg", "ph", "lk", "tw", "tr", "vt"),
								new Array("fr", "de", "mt", "ch","gb"),
								new Array("","ar","au","bd","br","ca","cn","fr","de","hk","il","in","jp","kr","mo","mt","mu","mx","nz","ps","ph","sg","za","es","lk","ch","tw","tr","ae","uk","us","vt"))

		for(i = 0; i < mycountry[continent - 1].length; i++){
				y = document.createElement('option')
				y.text=mycountry[continent - 1][i]
				try
				{
					x.add(y,null); // standards compliant
				}
				catch(ex)
				{
					x.add(y); // IE only
				}
				y.value = mycountry_val[continent - 1][i]
		}

	}
}
/* End country/continent code */

/*setUpMenu = function() {
	if (document.getElementById("pcPage") == null) { greyBar(); }
	setUpMenuFunction();
}*/

/* Function to support auto-insterd function by hsbcusa.com libraries in SIAB Teamsite */
function leaving(targetURL,someNumber) {
	return true;
}

/* Group framework support */
function attach_giws_handlers() {
	var gif_options = document.getElementById("gif_options");
	if (gif_options != null){
		traverse_for_anchors(gif_options);
	}
}

function traverse_for_anchors(element) {
	if (element.tagName == "A") {
		element.onclick=cibm_giws_on_click;
	} else {
		var children = element.children;
		var total_children = children.length;

		for (var ptr=0; ptr < total_children; ptr++) {
			traverse_for_anchors(children[ptr]);
		}
	}
}


function cibm_giws_on_click() {
	var retValue = true;
	var anchor = event.srcElement;

	// If you find hsbcnet in the URL do not open a new window
	// You will probably have to strengthen this up a bit
	var same_window_search_phrase = "hsbcnet";

	if (anchor.href.indexOf(same_window_search_phrase) == -1) {		
		window.open(event.srcElement.href);
		retValue = false;
	}

	return retValue;
}

/* Group Directory Support */
var gd_location = "http://globaldir.systems.uk.hsbc";
var gd_dbpath = "http://group.ghq.hsbc/int/group/home.nsf";

function trim(target) {
	
	var regexFrontTrim = /^\s+/;
	var regexRearTrim = /\s+$/;
	var results = target.replace(regexFrontTrim,"");
	var results2 = results.replace(regexRearTrim,"");
	
	return results2;

}
	
function groupDirectorySearch(query) {
	
	var terms = trim(query).split(" ");

	var url = gd_location + "/cgi-whitepages/search-entry.pl?";
	
	
	if (terms.length >= 2) {
		url += "operator_hsbcKnownAsLastName=starts+with&hsbcKnownAsLastName=" + trim(terms[terms.length - 1]);
		url += "&operator_hsbcKnownAsGivenName=starts+with&hsbcKnownAsGivenName=" + trim(terms[0]);
	} else if (terms.length == 1) {
		url += "operator_hsbcKnownAsLastName=starts+with&hsbcKnownAsLastName=" + trim(terms[0]);
	}
	
	url = gd_dbpath + "/gd_frame?Open&url=" + url

	gd_window = window.open(url,"GroupDirectory","toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600")
	gd_window.focus();
}

function groupDirectory() {
	gd_window = window.open(gd_location + "/whitepages/searchframe.html","GroupDirectory","toolbar=yes,menubar=yes,scrollbars=yes,resizable=yes,width=800,height=600");
	gd_window.focus();
}

function fixSpecialChars() {
	/* Get the body and replace false &amp; characters and then HTML decode */
	document.getElementById("r1c1r1c2").innerHTML = decodeHTML(document.getElementById("r1c1r1c2").innerHTML.replace("&amp;","&"));
}

//replaces the /content/business css that is inherited from the solutions microsite to /popup
function replaceCssPopup() {
	var x = document.getElementsByTagName('link');
	var searchText = 'content/business';
	for(var i=0; i<x.length; i++){
		var hRef = x.item(i).href;
		var newHref = hRef.replace(searchText, 'popup');
		x.item(i).href = newHref;
	}

	var objHead = document.getElementsByTagName('head');
	if (objHead[0])	{
		var objCSS = objHead[0].appendChild(document.createElement('link'));
		objCSS.href = '/gam/control/css/popup/popup.css';
		objCSS.rel = 'stylesheet';
		objCSS.type = 'text/css';
		objCSS.media = 'all';
	}
	
	var redStrip = document.getElementById('navigation');
	var logo = document.getElementById('brand');
	redStrip.style.background = 'none';
	logo.style.marginBottom = '-30px';
}

// fix single quote in announcement archive page
function decodeHTML(text) {
	/* Based on code offered for free at http://javascript.internet.com */
	var tempContainer = document.createElement("textarea");
	tempContainer.innerHTML=text.replace(/</g,"&lt;").replace(/>/g,"&gt;");
	return tempContainer.value;
}
// Extend load-time event handling
if (typeof window.onload != "function") {
	window.onload = function() {
//		greyBarFinalize();
//		rotateOnLoad();
//		fixTabs();
		externalLinks();
		
		/* Removed and moved to hover temporarily
		staffDisplay();
		fixLinks();
		attach_giws_handlers();
		*/
	}
} else {
	var currentOnLoad = window.onload;
	window.onload = function() {
		if (currentOnLoad) {
			currentOnLoad();
		}
//		greyBarFinalize();
//		rotateOnLoad();
//		fixTabs();
		externalLinks();

		/* Removed and moved to hover temporarily
		staffDisplay();
		fixLinks();
		attach_giws_handlers();
		*/
	}
}

//		alert("Message from Arman: Core JavaScript debugging is taking place -- please ignore this alert and any that may follow. [0005]");
//feedback form error checking
function emailcheck(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		return false
	}
	if (str.indexOf(at,(lat+1))!=-1){
		return false
	}
	if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		return false
	}
	if (str.indexOf(dot,(lat+2))==-1){
		return false
	}
	if (str.indexOf(" ")!=-1){
		return false
	}
	return true;					
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.-+/()";
   var IsNumber=true;
   var Char;

   for (i = 0; i < sText.length && IsNumber == true; i++) 
	  { 
	  Char = sText.charAt(i); 
	  if (ValidChars.indexOf(Char) == -1) 
		 {
		 IsNumber = false;
		 }
	  }
   return IsNumber;
   
   }

function validateForm(){

	var email_str = document.getElementById("customer_email").value;
	var telephone_str = document.getElementById("telephone").value;
	var errorHeight = 590;
	var error = false;

	document.getElementById("err_mes").innerHTML = "";
	
	if (document.getElementById("customer_name").value == "") {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter your name<br />";
		errorHeight += 13;
		error = true;
	}
		
	if (!IsNumeric(telephone_str) || (document.getElementById("telephone").value == "")) {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter a valid telephone number<br />";
		errorHeight += 13;
		error = true;
	}
	
	if (!emailcheck(email_str)) {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter a valid email address<br />";
		errorHeight += 13;
		error = true;
	}
		
	if (document.getElementById("country").value == "") {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter your location<br />";
		errorHeight += 13;	
		error = true;
	}
		
	if (document.getElementById("company").value == "") {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter your company<br />";
		errorHeight += 13;
		error = true;
	}
		
	if (document.getElementById("subject").value == "") {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter subject<br />";
		errorHeight += 13;
		error = true;
	}
	
	if (document.getElementById("questionscomments").value == "") {
		document.getElementById("err_mes").innerHTML = document.getElementById("err_mes").innerHTML + " - Please enter your questions/comments<br />";
		errorHeight += 13;
		error = true;
	}
	
	if (error == false) {
		document.getElementById("hidden_name").value = document.getElementById("customer_name").value;
		document.getElementById("hidden_email").value = document.getElementById("customer_email").value;
		document.getElementById("hidden_telephone").value = document.getElementById("telephone").value;
		document.getElementById("hidden_country").value = document.getElementById("country").value;
		document.getElementById("hidden_company").value = document.getElementById("company").value;
		document.getElementById("hidden_subject").value = document.getElementById("subject").value;
		document.getElementById("hidden_comment").value = document.getElementById("questionscomments").value;
		
		if (document.getElementById("opt_Yes").checked == true) {
			document.getElementById("hidden_opt").value = document.getElementById("opt_Yes").value;
		} else {
			document.getElementById("hidden_opt").value = document.getElementById("opt_No").value;
		}
		
		//alert(document.getElementById("hidden_opt").value);
		
		document.feedback_form.submit();
		
		return true;
	}
	
	else {
		window.resizeTo(550,errorHeight);
		return false;
	}
	
	
}
