// Get the customer-specific page checking out of the way

var onlineBasePath = "/online";
if (location.pathname == "" || location.pathname == "/" || location.pathname == onlineBasePath || location.pathname == onlineBasePath + "/" || location.pathname == onlineBasePath + "/index.html" ) {
	
	// Global variables for clarity of code
	var cSegDefault = "00";
	var cmb1 = "04";
	var cmb2 = "05";
	var cobDefault = "GLOBAL";
	var uk = "GB";
	var hk = "HK";

	// The target URLs	
	var target = new Array();

	target[cmb1] = new Array();
	target[cmb1][uk] = "/online/ukcmb";
	target[cmb1][hk] = "/online/hkcmb";
	target[cmb2] = new Array();
	target[cmb2][uk] = "/online/ukcmb";
	target[cmb2][hk] = "/online/hkcmb";
		
	// The base URL
	var root = "/";


	// CONFIG ENDS HERE -- CHANGE NOTHING AFTER THIS
	
	// Assume our cookies don't exist
	var cob="GLOBAL";
	var cSeg="00";

	// Check for and grab the cookies	
	parts = document.cookie.split("; ");
	for (i = 0 ; i < parts.length; i ++) {
		moreParts = parts[i].split("=");
		if (moreParts[0] == "cob") { cob = moreParts[1]; }
		if (moreParts[0] == "cSeg") { cSeg = moreParts[1]; }
	}

	// Do we have cob and CSeg
	if (cob != cobDefault && cSeg != cSegDefault) {
		// Yes -- let's process those parameters
		
		// Do we have a match?
		if (target[cSeg] != null && target[cSeg][cob] != null) {
			// Yes -- we have a match --  go there
			window.location = (target[cSeg][cob]);
		} else {
			// No -- we don't have a match -- stay at home
//			window.location=root;
		}
	} else {
		// No -- we don't have cob and cSeg -- stay at home
//		window.location=root;
	}
		
}
// End customer-specific page checking


var en = 1; //English
var es = 2; //Spanish
var fr = 3 //French
var zh = 4; //Simplified Chinese
var zh_tw = 5; //Traditional Chinese
var ja = 6; //Japanese
var ko = 7; //Korean
var ar = 8; //Arabic
var cs = 9; //Czech
var pl = 10; //Polish
var sk = 12; //Slovakia
var ru = 13; //Russian

var maxCrumbWidth = 700;
var maxCrumbLength = 15;

var maxMenu = 11;
var bottomOffset = 0;

var ELEMENT_NODE = 1;

var actionMenuWidth = 14;
var actionMenuHeight = 18;

var requiredLanguages = new Array();
requiredLanguages[en] = "This is a mandatory field";
requiredLanguages[es] = "Este campo es obligatorio";
requiredLanguages[fr] = "Ce champ est obligatoire";
requiredLanguages[zh] = "&#36825;&#19968;&#21306;&#22495;&#26159;&#24378;&#21046;&#24615;&#30340;";
requiredLanguages[zh_tw] = "&#27492;&#27396;&#20301;&#28858;&#24517;&#22635;&#27396;&#20301;";
requiredLanguages[ja] = "&#12371;&#12398;&#38917;&#30446;&#12399;&#24517;&#38920;&#12391;&#12377;&#12290;";
requiredLanguages[ko] = "&#51060; &#54596;&#46300;&#45716; &#54596;&#49688;&#54637;&#47785;&#51077;&#45768;&#45796;";
requiredLanguages[ar] = "This is a mandatory field";
requiredLanguages[cs] = "Toto pole je povinné";
requiredLanguages[pl] = "To pole jest obowiązkowe";
requiredLanguages[sk] = "Toto pole je povinné";
requiredLanguages[ru] = "Это поле обязательно";
				  
var calendarWidth = 224;
var calendarHeight = 166;
var calendarHorizOffset = 16;
var calendarIconWidth = 13;
var calendarIconHeight = 19;
var calendarStartYear = 1990;
var calendarEndYear = new Date().getFullYear() + 2;
var calendarField;
var calendar;
var calendarFrame;
var calendarLanguages = new Array();
var selectedDate = new Object();

calendarLanguages[en] = new Object();
calendarLanguages[en].months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
calendarLanguages[en].weekdays = new Array("M","T","W","T","F","S","S");
calendarLanguages[en].close = "Close";
calendarLanguages[en].hover = "Select a date";

calendarLanguages[es] = new Object();
calendarLanguages[es].months = new Array('enero','febrero','marzo','abril','mayo','junio','julio','agosto','septiembre','octubre','noviembre','diciembre');
calendarLanguages[es].weekdays = new Array('L','M','M','J','V','S','D');
calendarLanguages[es].close = "Cerrar";
calendarLanguages[es].hover = "Selecciona una fecha";

calendarLanguages[fr] = new Object();
calendarLanguages[fr].months = new Array('janvier','fvrier','mars','avril','mai','juin','juillet','ao&#251t','septembre','octobre','novembre','d&eacute;cembre');
calendarLanguages[fr].weekdays = new Array('L','M','M','J','V','S','D');
calendarLanguages[fr].close = "Fermer";
calendarLanguages[fr].hover = "S&#233;lectionner une date";

calendarLanguages[zh] = new Object();
calendarLanguages[zh].months = new Array('&#19968&#26376','&#20108&#26376','&#19977&#26376','&#22235&#26376','&#20116&#26376','&#20845&#26376','&#19971&#26376','&#20843&#26376','&#20061&#26376','&#21313&#26376','&#21313&#19968&#26376','&#21313&#20108&#26376');
calendarLanguages[zh].weekdays = new Array('&#19968','&#20108','&#19977','&#22235','&#20116','&#20845','&#26085');
calendarLanguages[zh].close = "&#20851&#38381";
calendarLanguages[zh].hover = "&#36873;&#25321;&#19968;&#20010;&#26085;&#26399;";

calendarLanguages[zh_tw] = new Object();
calendarLanguages[zh_tw].months = new Array('&#19968&#26376','&#20108&#26376','&#19977&#26376','&#22235&#26376','&#20116&#26376','&#20845&#26376','&#19971&#26376','&#20843&#26376','&#20061&#26376','&#21313&#26376','&#21313&#19968&#26376','&#21313&#20108&#26376');
calendarLanguages[zh_tw].weekdays = new Array('&#19968','&#20108','&#19977','&#22235','&#20116','&#20845','&#26085');
calendarLanguages[zh_tw].close = "&#38364&#38281";
calendarLanguages[zh_tw].hover = "&#36984;&#25799;&#19968;&#20491;&#26085;&#26399;";

calendarLanguages[ja] = new Object();
calendarLanguages[ja].months = new Array('1 &#26376','2 &#26376','3 &#26376','4 &#26376','5 &#26376','6 &#26376','7 &#26376','8 &#26376','9 &#26376','10 &#26376','11 &#26376','12 &#26376');
calendarLanguages[ja].weekdays = new Array('&#26376','&#28779','&#27700','&#26408','&#37329','&#22303','&#26085');
calendarLanguages[ja].close = "&#38281&#12376&#12427";
calendarLanguages[ja].hover = "&#26085;&#20184;&#12434;&#36984;&#25246;&#12375;&#12390;&#19979;&#12373;&#12356;&#12290;";

calendarLanguages[ko] = new Object();
calendarLanguages[ko].months = new Array('1 &#50956','2 &#50956','3 &#50956','4 &#50956','5 &#50956','6 &#50956','7 &#50956','8 &#50956','9 &#50956','10 &#50956','11 &#50956','12 &#50956');
calendarLanguages[ko].weekdays = new Array('&#50956','&#54868','&#49688','&#47785','&#44552','&#53664','&#50620');
calendarLanguages[ko].close = "&#45803&#44592";
calendarLanguages[ko].hover = "&#45216;&#51676;&#47484; &#49440;&#53469;&#54616;&#49884;&#50724;";

calendarLanguages[ar] = new Object();
calendarLanguages[ar].months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
calendarLanguages[ar].weekdays = new Array("M","T","W","T","F","S","S");
calendarLanguages[ar].close = "Close";
calendarLanguages[ar].hover = "Select a date";

calendarLanguages[cs] = new Object();
calendarLanguages[cs].months = new Array("Leden","Únor","Březen","Duben","Květen","Červen","Červenec","Srpen","Září","Říjen","Listopad","Prosinec");
calendarLanguages[cs].weekdays = new Array("P","Ú","S","Č","P","S","N");
calendarLanguages[cs].close = "Zavřít";
calendarLanguages[cs].hover = "Vybrat datum";

calendarLanguages[pl] = new Object();
calendarLanguages[pl].months = new Array("Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień");
calendarLanguages[pl].weekdays = new Array("P","W","S","C","P","S","N");
calendarLanguages[pl].close = "Zamknij";
calendarLanguages[pl].hover = "Wybierz dat&#281;";

calendarLanguages[sk] = new Object();
calendarLanguages[sk].months = new Array("Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December");
calendarLanguages[sk].weekdays = new Array("P","U","S","Š","P","S","N");
calendarLanguages[sk].close = "Zavrieť";
calendarLanguages[sk].hover = "Vybrať dátum";

calendarLanguages[ru] = new Object();
calendarLanguages[ru].months = new Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
calendarLanguages[ru].weekdays = new Array("П","В","С","С","Ч","П","В");
calendarLanguages[ru].close = "Закрыть";
calendarLanguages[ru].hover = "Выбрать дату";

var currentLanguage = en;
var calendarLanguage = currentLanguage;

var tabs;

function daysInMonth (year, month) {
     return 32 - new Date(year, month, 32).getDate();
}

function isRightInbounds(theElement) {
	var objectRight = getObjectLeft(theElement) + theElement.offsetWidth - 12;
	var windowRight = getScrollLeft() + getWindowWidth();
	return (objectRight < windowRight);
}

function isBottomInbounds(theElement) {
	var objectBottom = getObjectTop(theElement) + theElement.offsetHeight - 12;
	var windowBottom = getScrollTop() + getWindowHeight();
	return (objectBottom < windowBottom);
}

function getObjectTop(theElement) {
  yPos = theElement.offsetTop;
  tempEl = theElement.offsetParent;
  while (tempEl != null) {
    yPos += tempEl.offsetTop;
    tempEl = tempEl.offsetParent;
  }
  return yPos;
}

function getObjectLeft(theElement) {
  yPos = theElement.offsetLeft;
  tempEl = theElement.offsetParent;
  while (tempEl != null) {
    yPos += tempEl.offsetLeft;
    tempEl = tempEl.offsetParent;
  }
  return yPos;
}

function getWindowHeight() {
	if (document.documentElement && document.documentElement.clientHeight) {
		// IE 6.0 in Standards Compliant Mode
		return(document.documentElement.clientHeight);
	} else if (document.body) {
		// All other IE/Mozilla/Opera cases
		return(document.body.clientHeight);
	} else if (window.innerHeight) {
		// Last try
		return(window.innerHeight);
	} else {
		// Sorry, no options
		return 0;
	}
}


function getWindowWidth() {
	if (document.documentElement && document.documentElement.clientWidth) {
		// IE 6.0 in Standards Compliant Mode
		return(document.documentElement.clientWidth);
	} else if (document.body) {
		// All other IE/Mozilla/Opera cases
		return(document.body.clientWidth);
	} else if (window.innerWidth) {
		// Last try
		return(window.innerWidth);
	} else {
		// Sorry, no options
		return 0;
	}
}

function getScrollTop() {
	if (document.documentElement && document.documentElement.scrollTop) {
		// IE 6.0 in Standards Compliant Mode
		return(document.documentElement.scrollTop);
	} else if (document.body) {
		// All other IE/Mozilla/Opera cases
		return(document.body.scrollTop);
	} else {
		// Sorry, no options
		return 0;
	}
}

function getScrollLeft() {
	if (document.documentElement && document.documentElement.scrollLeft) {
		// IE 6.0 in Standards Compliant Mode
		return(document.documentElement.scrollLeft);
	} else if (document.body) {
		// All other IE/Mozilla/Opera cases
		return(document.body.scrollLeft);
	} else {
		// Sorry, no options
		return 0;
	}
}

function entityToUTF(entities) {

	var result = "";
	var start = -1;
	var finish = -1;
	
	for (var i = 0; i < entities.length; i++) {
		if (entities.substr(i,1) != "&") {
			result += entities.substr(i,1);
		} else {
			start = entities.indexOf("&#",i);
			finish = entities.indexOf(";",start);
			result += String.fromCharCode(entities.substring(start+2,finish));
			i = finish;
		}
	}
	
/*	while(start >= 0) {
		finish = entities.indexOf(";",start);
		result += String.fromCharCode(entities.substring(start+2,finish));
		start = entities.indexOf("&#",finish);
	}*/
	
	return result;
	
}

function getElementLanguage(field){
	if (field.className.search("en_override") > 0) { return en; }
	if (field.className.search("es_override") > 0) { return es; }
	if (field.className.search("fr_override") > 0) { return fr; }
	if (field.className.search("zh_override") > 0) { return zh; }
	if (field.className.search("zh_tw_override") > 0) { return zh_tw; }
	if (field.className.search("ja_override") > 0) { return ja; }
	if (field.className.search("ko_override") > 0) { return ko; }
	if (field.className.search("ar_override") > 0) { return ar; }
	if (field.className.search("cs_override") > 0) { return cs; }
	if (field.className.search("pl_override") > 0) { return pl; }
	if (field.className.search("sk_override") > 0) { return sk; }
	if (field.className.search("ru_override") > 0) { return ru; }
	return currentLanguage;
}

function breakTab(tabName) {
	var newName = tabName;
	var breakSpace = 0;
	if (tabName.length > 13) {
		for (var i = Math.floor(tabName.length / 2); i > 0; i--) {
			if (tabName.substr(i,1) == " ") {
				breakSpace = i;
				break;
			}
			if (tabName.substr(tabName.length-i,1) == " ") {
				breakSpace = tabName.length-i;
				break;
			}
		}
		if (breakSpace > 0) {
			newName = '<span class="twoLine">' + tabName.substring(0,breakSpace) + "<br/>" + tabName.substring(breakSpace + 1,tabName.length) + "</span>";
		} else {
			newName = "<span>" + tabName + "</span>";
		}
	} else {
		newName = "<span>" + tabName + "</span>";
	}
	return newName;
}

/* New functions for post-R9 new tool development */
function setSelectToolTip(elementObj) {
	
	var tipObj = document.getElementById('toolTip');

	if (elementObj.options[elementObj.selectedIndex].title.length > 0)
		tipObj.innerHTML = elementObj.options[elementObj.selectedIndex].title;
	else
		tipObj.innerHTML = elementObj.options[elementObj.selectedIndex].innerHTML;
	

}

function showSelectToolTip(elementObj) {

	var tipObj = document.getElementById('toolTip');
	var frameObj = document.getElementById('toolTipFrame');
	
	tipObj.style.width = elementObj.scrollWidth;
	tipObj.style.left = getObjectLeft(elementObj);
	tipObj.style.top = getObjectTop(elementObj) + elementObj.scrollHeight;
	frameObj.style.width = (elementObj.scrollWidth + 2) + "px";
	frameObj.style.left = tipObj.style.left;
	frameObj.style.top = tipObj.style.top;
	frameObj.style.height = (tipObj.scrollHeight - 2) + "px";
	
	tipObj.style.visibility = "visible";
	frameObj.style.visibility = "visible";
	frameObj.style.display = "block";
}

function hideSelectToolTip() {
	
	var tipObj = document.getElementById('toolTip');
	var frameObj = document.getElementById('toolTipFrame');
	
	tipObj.style.visibility = "hidden";
	frameObj.style.visibility = "hidden";
	frameObj.style.display = "none";
	
}
/* End functions for post-R9 new tool development */

/* Functions for clear/fill text field handling */
function clearField(field) {
	if (field.value == field.title) {
		field.value = "";
	}
}

function fillField(field) {
	if (field.value == "") {
		field.value = field.title;
	}
}
/* End clear/fill */

/* Action Menus */
function positionActionMenu(menu) {

	var left = actionMenuWidth;
	var top = 0;
	var actionFrameParent = document.getElementById("actionMenuFrame").parentNode;

	// Move actionMenuFrame into current container
	var oldFrame = actionFrameParent.removeChild(document.getElementById("actionMenuFrame"));
	menu.parentNode.appendChild(oldFrame);
	var actionFrame = document.getElementById("actionMenuFrame");
	
	// Initial position
	menu.style.left = left;
	menu.style.top = top;
	
	// Handle horizontal positioning
	if (!isRightInbounds(menu)) {
		left = 0 - menu.offsetWidth;
		menu.parentNode.className = "actionMenuHoverLeft";
	}
	
	// Handle vertical positioning
	if (!isBottomInbounds(menu)) {
		top = 0 - menu.offsetHeight + actionMenuHeight;
	}
	
	// Final position
	menu.style.left = left;
	menu.style.top = top;
	
	// Position frame
//	actionFrame.style.left = getObjectLeft(menu);
//	actionFrame.style.top = getObjectTop(menu) - getObjectTop(document.getElementById("main"));
	actionFrame.style.left = left;
	actionFrame.style.top = top;
	actionFrame.style.width = menu.offsetWidth;
	actionFrame.style.height = menu.offsetHeight;
	actionFrame.style.backgroundColor = "blue";
	actionFrame.style.display = "block";
	
	menu.style.zIndex = 2;
	actionFrame.style.zIndex = 1;

//	alert("Left (menu " + menu.style.left + ") (frame " + actionFrame.style.left + ") Top (menu " + menu.style.top + ") (frame " + actionFrame.style.top + ")");
}

/* Calendars */
function calendarToggleMY(theElement) {
	
	var otherElement = (theElement == "calMonthMenu") ? "calYearMenu" : "calMonthMenu";

	document.getElementById(otherElement).style.display = "none";
	if (document.getElementById(theElement).style.display == "none") {
		var baseElement = (theElement == "calMonthMenu") ? "calMonth" : "calYear";
		var entryElement = baseElement + document.getElementById(baseElement).innerHTML;
		document.getElementById(baseElement).scrollTop = getObjectTop(document.getElementById(entryElement));
		document.getElementById(theElement).style.display = "block";
	} else {
		document.getElementById(theElement).style.display = "none";
	}

}

function calendarDisplayMonth(selectedDate) {

	var theDate = new Date();
	var calDays = document.getElementById("calDaysOfMonth");
	
	theDate.setDate(1);
	theDate.setMonth(selectedDate.month-1);
	theDate.setYear(selectedDate.year);
	
	calDays.innerHTML = "";
	
	for (var i=0; i<theDate.getDay()-1; i++) {
		calDays.innerHTML += "<li></li>";
	}
	
	for (var i=1; i<=daysInMonth(theDate.getFullYear(),theDate.getMonth()); i++) {
		calDays.innerHTML += '<li id="calDay' + i + '"><a href="#" onclick="calendarSelectDate(' + theDate.getFullYear() + ',' + theDate.getMonth() + ',' + i + '); return false;">' + i + '</a></li>';
	}
	
}

function calendarOpen(field) {

	if (event.clientX < (getObjectLeft(field) - calendarHorizOffset + field.offsetWidth - calendarIconWidth)) { return false; }
	
	var left = getObjectLeft(field) + field.offsetWidth - calendarHorizOffset;
	var top = getObjectTop(field) + field.offsetHeight + 1;
	
	// Set calendar field
	calendarField = field;

	// Check for a language
	calendarLanguage = getElementLanguage(field);

	// Populate calendar
	if (calendarLanguage != currentLanguage) { calendarPopulate(); }
	
	// Selected date
	selectedDate = calendarGetDate(field);

	calendarDisplayMonth(selectedDate);
	
/*
	var objectRight = getObjectLeft(theElement) + theElement.offsetWidth - 12;
	var windowRight = getScrollLeft() + getWindowWidth();
	return (objectRight < windowRight);
*/

	
	// Handle horizontal positioning
	if ((left + calendarWidth - 12) >= (getScrollLeft() + getWindowWidth())) {
		left = left - calendarWidth + calendarIconWidth - 12;
	}
	
	// Handle vertical positioning
	if ((top + calendarHeight) >= (getScrollTop() + getWindowHeight())) {
		top = getObjectTop(field) - calendarHeight -1;
	}
	
	// Final position
	calendar.style.left = left;
	calendar.style.top = top;
	calendarFrame.style.left = left;
	calendarFrame.style.top = top;
	calendarFrame.style.visibility = "visible";
	calendarFrame.style.display = "block";
	
	// Show selected year
	document.getElementById("calYear").innerHTML = selectedDate.year;
	
	// Show selected month
	document.getElementById("calMonth").innerHTML = calendarLanguages[calendarLanguage].months[selectedDate.month - 1];

	// Show selected day
	for (i = 1; i <= 31; i++) {
		if (document.getElementById("calDay" + i)) {
			document.getElementById("calDay" + i).className = "";
		}
	}	
	document.getElementById("calDay" + selectedDate.day).className = "current";

	// Close month/year menus
	document.getElementById("calYearMenu").style.display = "none";
	document.getElementById("calMonthMenu").style.display = "none";

	calendar.style.display = "block";

}

function calendarClose() {
	
	calendar.style.display = "none";
	calendarFrame.style.visibility = "hidden";
	calendarFrame.style.display = "none";
	if (calendarLanguage != currentLanguage) { calendarLanguage = currentLanguage; calendarPopulate(); }
	
}

function calendarGetDate(field) {
	
	var selectedDate = new Object();
	var fieldValue = (field.value) ? field.value : null;

	if (fieldValue == null || fieldValue.length == 0 || !fieldValue.match(/\d\d\/\d\d\/\d\d\d\d/)) {
		var today = new Date();
		selectedDate.year = today.getFullYear();
		selectedDate.month = today.getMonth() + 1;
		selectedDate.day = today.getDate();
	} else {
// Handling for DD/MM/YYY
		selectedDate.day = fieldValue.substr(0,2);
		selectedDate.month = fieldValue.substr(3,2)
		selectedDate.year = fieldValue.substr(6,4);
// Previous handling for YYYY-MM-DD
//		selectedDate.year = fieldValue.substr(0,4);
//		selectedDate.month = fieldValue.substr(5,2);
//		selectedDate.day = fieldValue.substr(8,2)
		if (selectedDate.day.substr(0,1) == "0") {
			selectedDate.day = selectedDate.day.substr(1,1);
		}
		if (selectedDate.month.substr(0,1) == "0") {
			selectedDate.month = selectedDate.month.substr(1,1);
		}	
	}

	return selectedDate;
	
}

function calendarSetYear(year) {
	
	document.getElementById("calYear").innerHTML = year;
	selectedDate.year = year;
	calendarDisplayMonth(selectedDate);
	if (document.getElementById("calYearMenu").style.display == "block") {
		calendarToggleMY("calYearMenu");
	}
	
}

function calendarSetMonth(month) {
	
	document.getElementById("calMonth").innerHTML = calendarLanguages[calendarLanguage].months[month-1];
	selectedDate.month = month;
	calendarDisplayMonth(selectedDate);
	if (document.getElementById("calMonthMenu").style.display == "block") {
		calendarToggleMY("calMonthMenu");
	}
	
}

function calendarNextMonth() {

	var newMonth = selectedDate.month;
	var newYear = parseInt(selectedDate.year);

	newMonth = parseInt(newMonth) + 1;
	if (newMonth > 12) {
		newMonth = 1;
		newYear = parseInt(newYear) + 1;
		calendarSetMonth(newMonth);
		calendarSetYear(newYear);
	} else {
		calendarSetMonth(newMonth);
	}
	
}

function calendarPrevMonth() {

	var newMonth = selectedDate.month;
	var newYear = selectedDate.year;
	
	
	newMonth = parseInt(newMonth) - 1;
	if (newMonth < 1) {
		newMonth = 12;
		newYear = parseInt(newYear) - 1;
		calendarSetMonth(newMonth);
		calendarSetYear(newYear);
	} else {
		calendarSetMonth(newMonth);
	}
	
}

function calendarSelectDate(year,month,day) {
	
	var monthDisplay = (month < 9) ? "0" + (month+1) : (month+1);
	var dayDisplay = (day < 10) ? "0" + day : day;
	
	calendarField.value = dayDisplay + "/" + monthDisplay + "/" + year;
//	calendarField.value = year + "-" + monthDisplay + "-" + dayDisplay;
	calendarClose();
	
}

function calendarPopulate() {

	var calHTML = '<div id="calMonthMenu">';

	for (i = 0; i < 12; i++) {
		calHTML += '<a href="#" id="calMonth' + calendarLanguages[calendarLanguage].months[i] + '" onclick="calendarSetMonth(' + (i+1) + '); return false;">' + calendarLanguages[calendarLanguage].months[i] + '</a>';
	}
	calHTML += '</div><div id="calYearMenu">';
	for (i = calendarStartYear; i <= calendarEndYear; i++) {
		calHTML += '<a href="#" id="calYear' + i + '" onclick="calendarSetYear(' + i + '); return false;">' + i + '</a>';
	}
	calHTML += '</div><div class="controls">';
	calHTML += '<a class="prev" href="#" onclick="calendarPrevMonth(); return false"></a>';
	calHTML += '<a class="month" id="calMonth" href="#" onclick="calendarToggleMY(\'calMonthMenu\'); return false;"></a>';
	calHTML += '<a class="year" id="calYear" href="#" onclick="calendarToggleMY(\'calYearMenu\'); return false;"></a>';
	calHTML += '<a class="next" href="#" onclick="calendarNextMonth(); return false"></a>';
	calHTML += '</div>';
	calHTML += '<ul class="weekdays">';
	for (i = 0; i < 7; i++) {
		calHTML += '<li>' + calendarLanguages[calendarLanguage].weekdays[i] + '</li>';
	}
	calHTML += '</ul><ul id="calDaysOfMonth"></ul>';
	calHTML += '<a href="#" class="close" onclick="calendarClose(); return false;">' + calendarLanguages[calendarLanguage].close + '</a>';
	
	//document.getElementById("calendarSelector").innerHTML = calHTML;

}

/* End Calendars */

/* Control visibility */

function hideElement(theElement) {
	
	document.getElementById(theElement).style.display = "none";
	document.getElementById(theElement).style.visibility = "hidden";
	
}

function showElement(theElement) {
	
	document.getElementById(theElement).style.display = "block";
	document.getElementById(theElement).style.visibility = "visible";
	
}

function showHideElement(theElement) {
	
	if (document.getElementById(theElement).style.display == "block") {
		hideElement(theElement);
	} else {
		showElement(theElement);
	}

}

/* End Control visibility */

function setUpMenuFunction() {

	if (!document.getElementById) return

	if (document.getElementById("navigation")) {
		/* Get tabs if we need them */
		tabs = document.getElementById("navigation");
	}
	
	if (document.getElementById("navigation")) {
		/* Adjust tabs as appropriate */
		var entries = tabs.childNodes;

		for (i = 0; i < entries.length; i++) {

			if (entries[i].nodeType == ELEMENT_NODE) {
				for(j = 0; j < entries[i].childNodes.length; j++) {

					if (entries[i].childNodes[j].nodeType == ELEMENT_NODE) {
						for (k = 0; k < entries[i].childNodes[j].childNodes.length; k++) {
							if (entries[i].childNodes[j].childNodes[k].nodeType == ELEMENT_NODE) {
								if (entries[i].childNodes[j].childNodes[k].innerHTML && nlsLanguage == "en") {
									entries[i].childNodes[j].childNodes[k].innerHTML = breakTab(entries[i].childNodes[j].childNodes[k].innerHTML);
									k = entries[i].childNodes[j].childNodes.length;
								} else {
									entries[i].childNodes[j].childNodes[k].innerHTML = "<span>" + entries[i].childNodes[j].childNodes[k].innerHTML + "</span>" ;
									k = entries[i].childNodes[j].childNodes.length;
								}
							}
						}
							
						entries[i].childNodes[j].innerHTML = "<strong><span>" + entries[i].childNodes[j].innerHTML + "</span></strong>";
						var subEntries = entries[i].childNodes[j].getElementsByTagName("li");
						
						for (k = 0; k < subEntries.length; k++) {
							subEntries[k].innerHTML = "<span>" + subEntries[k].innerHTML + "</span>";
						}

					}
				
				}
				
				entries[i].style.visibility = "visible";
				
			}

		}
		
	}


}

setUpMenu = setUpMenuFunction;

function setUp(){

	var elementList;

	if (!document.getElementById) return
	/* First do things we want to do in all modern browsers that support the DOM */

/* Set up artificial title tooltip handler div/iframe for select lists in IE */
	
/*	var bodyElement = document.getElementsByTagName("body");
	bodyElement[0].childNodes[0].innerHTML = bodyElement[0].childNodes[0].innerHTML + '<div id="toolTip"></div><iframe id="toolTipFrame" src="/images/clear.gif" scrolling="no" frameborder="no"></iframe>';*/
	
	// Calendar selector

	/* Language Settings */
	switch (nlsLanguage) {
		case "en": currentLanguage = en; break;
		case "es": currentLanguage = es; break;
		case "fr": currentLanguage = fr; break;
		case "zh": currentLanguage = zh; break;
		case "zh_tw": currentLanguage = zh_tw; break;
		case "ja": currentLanguage = ja; break;
		case "ko": currentLanguage = ko; break;
		case "ar": currentLanguage = ar; break;
		case "cs": currentLanguage = cs; break;
		case "pl": currentLanguage = pl; break;
		case "sk": currentLanguage = sk; break;
		case "ru": currentLanguage = ru; break;
		default: currentLanguage = en;
	}
	calendarLanguage = currentLanguage;

	// Calendar holder
	//var calHTML = '<div id="calendarSelector"></div><iframe id="calendarFrame" src="/images/clear.gif" scrolling="no" frameborder="no"></iframe>';

	// ToolTip holder
	//var toolTipHTML = '<div id="toolTip"></div><iframe id="toolTipFrame" src="/images/clear.gif" scrolling="no" frameborder="no"></iframe>';
	
	// Action Menu iframe
	//var actionMenuFrameHTML = '<iframe id="actionMenuFrame" src="/images/clear.gif" scrolling="no" frameborder="no"></iframe>';

	//var footer = document.getElementById("foot");
	//footer.outerHTML = footer.outerHTML + toolTipHTML + calHTML + actionMenuFrameHTML;
	
//	var main = document.getElementById("main");
//	main.innerHTML = main.innerHTML + actionMenuFrameHTML;

	// Populate calendar
	calendarPopulate();
	
/*	if (document.getElementById("navigation")) {

		var entries = tabs.childNodes;

		for (i = 0; i < entries.length; i++) {

			if (entries[i].nodeType == ELEMENT_NODE) {
				for(j = 0; j < entries[i].childNodes.length; j++) {

					if (entries[i].childNodes[j].nodeType == ELEMENT_NODE) {
						for (k = 0; k < entries[i].childNodes[j].childNodes.length; k++) {
							if (entries[i].childNodes[j].childNodes[k].nodeType == ELEMENT_NODE) {
								if (entries[i].childNodes[j].childNodes[k].innerHTML && nlsLanguage == "en") {
									entries[i].childNodes[j].childNodes[k].innerHTML = breakTab(entries[i].childNodes[j].childNodes[k].innerHTML);
									k = entries[i].childNodes[j].childNodes.length;
								} else {
									entries[i].childNodes[j].childNodes[k].innerHTML = "<span>" + entries[i].childNodes[j].childNodes[k].innerHTML + "</span>" ;
									k = entries[i].childNodes[j].childNodes.length;
								}
							}
						}
							
						entries[i].childNodes[j].innerHTML = "<strong><span>" + entries[i].childNodes[j].innerHTML + "</span></strong>";
						var subEntries = entries[i].childNodes[j].getElementsByTagName("li");
						
						for (k = 0; k < subEntries.length; k++) {
							subEntries[k].innerHTML = "<span>" + subEntries[k].innerHTML + "</span>";
						}

					}
				
				}
				
				entries[i].style.visibility = "visible";
				
			}

		}
			
	}*/

	/* Display the page since the tab manipulation is done */
	/* Being kept for R10 implementation */
	/*document.body.style.background = "none";
	document.getElementById("head").style.visibility = "visible";
	document.getElementById("main").style.visibility = "visible";
	document.getElementById("foot").style.visibility = "visible";*/

	/* Set up calendar widget handler */

	elementList = new Array("input");

	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++) {
			
			if (items[i].className.indexOf("calendar") >= 0) {
				items[i].size = 10;
				items[i].maxLength = 10;
				items[i].title = entityToUTF(calendarLanguages[getElementLanguage(items[i])].hover);
				items[i].onclick = function() {
					calendarOpen(this);
				}
			}

		}

	}
	
	/* End calendar widget handler */

	/* Set up required asterisk */

	elementList = new Array("label","th","td");

	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++) {
			
			if (items[i].parentNode.className.indexOf("required") >= 0) {
				items[i].title = entityToUTF(requiredLanguages[getElementLanguage(items[i].parentNode)]);
				items[i].innerHTML = items[i].innerHTML + "<span>&nbsp;</span>";
			} else if (items[i].className.indexOf("required") >= 0) {
				items[i].title = entityToUTF(requiredLanguages[getElementLanguage(items[i])]);
				items[i].innerHTML = items[i].innerHTML + "<span>&nbsp;</span>";
			}

		}

	}
	
	/* End required asterisk */

	/* Handle bread crumb length */

	if (document.getElementById("breadcrumbs")) {
		var crumbs = document.getElementById("breadcrumbs");
		if (crumbs.scrollWidth > maxCrumbWidth) {
			var items = crumbs.getElementsByTagName("a");
			for (var i =0; i<items.length; i++) {
				if (items[i].innerHTML.length > maxCrumbLength) {
					items[i].innerHTML = items[i].innerHTML.substr(0,maxCrumbLength) + " ...";
				}
				if (crumbs.scrollWidth <= maxCrumbWidth) { break; }
			}
		}
	}
	
	/* End handle bread crumb length */

	if (document.all) {
	/* Continue to do IE-specific stuff */

	// Do some navigation work
	if (document.getElementById("navigation")) {
		elementList = new Array("ul");

		// Check for long tab menus and handle accordingly
		for (j = 0; j < elementList.length; j++) {

			var items = tabs.getElementsByTagName(elementList[j]);
	
			for (var i = 0; i < items.length; i++) {
				if (items[i].className == "popUpMenu") {
					// Is the menu in question long?
					if (items[i].childNodes.length > maxMenu) {
						// If so, split it and hang a "More ..." off the end for the extra items
						var newHTML = ""
						for (k = 0; k < maxMenu; k++) {
							newHTML += items[i].childNodes[k].outerHTML;
						}
						newHTML += '<li><span><a href="#" class="menuExtension">' + nlsMoreTxt + '</a><ul class="popUpMenu">';
						for (k = maxMenu; k < items[i].childNodes.length; k++) {
							newHTML += items[i].childNodes[k].outerHTML;
						}
						newHTML += '</ul></span></li>';
						items[i].innerHTML = newHTML;
						// If the menu is off the bottom of the screen as it is currently open, accomodate the problem
						var moreMenu = items[i].childNodes[maxMenu].childNodes[0].childNodes[1];
					}
				}
			}

		}
		
	}
	
	if (navigator.userAgent.indexOf("MSIE 7") < 0) {
		/* Set up SELECT iframe handler for pop-up menus for IE*/
		var elementList = new Array("ul");
	
		for (j = 0; j < elementList.length; j++) {
	
			var items = document.getElementsByTagName(elementList[j]);
		
			for (var i = 0; i < items.length; i++) {
				if (items[i].className == "popUpMenu" || items[i].className == "popUp") {
					if (items[i].parentNode.parentNode.parentNode.parentNode.parentNode.id != "navigation"){
						if ((getObjectTop(items[i]) + items[i].offsetHeight + bottomOffset) > (getWindowHeight())) {
							items[i].style.top = items[i].offsetTop - ((getObjectTop(items[i]) + items[i].offsetHeight) - (getWindowHeight())) - bottomOffset;
						}
					}
					// Set up the iframe to fix IE's problems.
					//items[i].parentNode.innerHTML = items[i].parentNode.innerHTML + '<iframe style="top: ' + items[i].offsetTop + 'px; left: ' + items[i].offsetLeft + 'px; width: ' + (items[i].offsetWidth) + '; height: ' + (items[i].offsetHeight) + ';" src="/images/clear.gif" scrolling="no" frameborder="0"></iframe>';
				}
			}
	
		}
		
		/* Set up artificial hover handler for IE */
		/* elementList = new Array("dd","span","li"); */
		elementList = new Array("dd","span");
	
		for (j = 0; j < elementList.length; j++) {
	
			var items;
/*			if (elementList[j] == "li") {
				items = tabs.getElementsByTagName(elementList[j]);
			} else {*/
				items = document.getElementsByTagName(elementList[j]);
/*			}*/
			
			/* Set up hover simulation */
			for (var i = 0; i < items.length; i++) {
				
				/*if ((this.className.search('current') > 0) ||
					(this.className.search('currentHover') > 0) ||
					(this.className.search('lastHover') > 0)) {*/
	
					/* Set up onMouseOver simulation */
					items[i].onmouseover = function() {
						if (this.className == 'current') {
							this.className = 'currentHover';
						} else if (this.className == 'last') {
							this.className = 'lastHover';
						} else if (this.className == 'toolTip') {
							this.className = 'toolTipHover';
						} else if (this.className == 'actionMenu') {
							this.className = 'actionMenuHover';
							positionActionMenu(this.childNodes[0]);
						} else if (!this.className) {
							this.className = 'hover';
						}
					}
					
					/* Set up onMouseOut simulation */
					items[i].onmouseout  = function() {
						if (this.className == 'currentHover') {
							this.className = 'current';
						} else if (this.className == 'lastHover') {
							this.className = 'last';
						} else if (this.className == 'toolTipHover') {
							this.className = 'toolTip';
						} else if (this.className == 'actionMenuHover' || this.className == 'actionMenuHoverLeft') {
							this.className = 'actionMenu';
							document.getElementById("actionMenuFrame").style.display = "none";
						} else if (this.className == 'hover') {
							this.className = '';
						}
					}
					
				/*}*/
				
			}
	
		}
		/* End artificial hover handler for IE */
	
		/* Set up artificial hover handler for funcBox on content pages*/
		if (document.getElementById("r1c1r1c1")) {
			var column = document.getElementById("r1c1r1c1");
			var childDivs = column.getElementsByTagName("div");
			
			for (var k = 0; k < childDivs.length; k++) {
				if (childDivs[k].className.indexOf('funcBox') >= 0) {
					
					elementList = new Array("li");
		
					for (j = 0; j < elementList.length; j++) {
		
						var items;
						items = childDivs[k].getElementsByTagName(elementList[j]);
				
						for (var i = 0; i < items.length; i++) {
					
							items[i].onmouseover = function() {
								this.className = 'hover';
							}
						
							items[i].onmouseout  = function() {
								this.className = '';
							}
						}
						
					}
					
				}
			}
		}
					
		/* End artificial hover handler for IE for funcBox*/

/* New for post-R9 new tool development */
		/* Set up artificial title tooltip handler for select lists in IE */
	
		elementList = new Array("select");
	
		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++) {
				
				if (items[i].className.indexOf("toolTip") >= 0) {
					// Set up onMouseOver simulation
					items[i].onmouseover = function() {
						setSelectToolTip(this); showSelectToolTip(this);
					}
					
					// Set up onMouseOut simulation
					items[i].onmouseout  = function() {
						hideSelectToolTip();
					}
						
					// Set up onClick simulation
					items[i].onclick  = function() {
						hideSelectToolTip();
					}
				}
	
			}
	
		}
		
		/* End artificial tool-tip handler for IE */


		/* End new for post-R9 new tool development */
		
	}


	}
	
	/* Handler for hourglass on document unload */
	document.body.onunload = function() {
		document.body.style.cursor = "wait";
	}


	document.body.style.cursor = "default";

	/* Reset z-indexing of tools */
	var column1 = document.getElementById("r1c1");
	var column2 = document.getElementById("r1c2");
	
	var z = 50;
	
	for (i = 0; i < column1.childNodes.length; i++) {
		if (column1.childNodes[i].nodeType == ELEMENT_NODE && column1.childNodes[i].className.indexOf("row") < 0) {
			column1.childNodes[i].style.zIndex = z;
			column1.childNodes[i].style.position = "relative";
			z--;
		}
	}
	
	if (column2 && column2.childNodes) {
		column2.style.zIndex = 49;
		for (i = 0; i < column2.childNodes.length; i++) {
			if (column2.childNodes[i].nodeType == ELEMENT_NODE) {
				column2.childNodes[i].style.zIndex = z;
				column2.childNodes[i].style.position = "relative";
				z--;
			}
		}
	}
	/* End resetting z-indexing of tools*/
	
	/* Set up calendar */
	calendar = document.getElementById("calendarSelector");
	calendarFrame = document.getElementById("calendarFrame");
	
	// Call local tab fixing for special site handling
	//staffDisplay();
	//fixLinks();
	//attach_giws_handlers();
}

