// JavaScript Document

/**** SET UP ALL THE PAGES ****/

var arPages = new Array()
// regular Pages
arPages['home'] = new pageObj(0,'Annual Report 2008 Home Page','index.html','','');
arPages['chair'] = new pageObj(0,'Chairman\'s Message','chair_message.html','bmo_ar08_chairmessage.pdf','');
arPages['ceo'] = new pageObj(0,'CEO\'s Message','ceo_message.html','bmo_ar08_ceomessage.pdf','');
arPages['snapshot'] = new pageObj(1,'2008 Highlights','hl_highlights.html','bmo_ar08_highlights.pdf','');
arPages['divrec'] = new pageObj(1,'Dividend Record','hl_dividendrecord.html','bmo_ar08_dividendrecord.pdf','');
arPages['num_matter'] = new pageObj(1,'Numbers That Matter','hl_numbersthatmatter.html','bmo_ar08_numbersthatmatter.pdf','');
arPages['bus_prof'] = new pageObj(2,'Corporate Profile','bus_profile.html','bmo_ar08_profile.pdf','');
arPages['bus_strat_glance'] = new pageObj(2,'Our Strategy at a Glance','bus_strategy_glance.html','bmo_ar08_strategy.pdf','');
arPages['bus_strat_vision'] = new pageObj(2,'The Vision Driving Our Strategy','bus_strategy_vision.html','bmo_ar08_strategy.pdf','');
arPages['customer'] = new pageObj(2,'Progress Report: Customer Experience','bus_customer.html','bmo_ar08_customer.pdf','');
arPages['momentum'] = new pageObj(2,'Progress Report: Momentum','bus_momentum.html','bmo_ar08_momentum.pdf','');
arPages['risk'] = new pageObj(2,'Progress Report: Risk Management','bus_risk.html','bmo_ar08_risk.pdf','');
//arPages['fin_glance'] = new pageObj(3,'Financial Performance and Condition at a Glance','fin_glance.html','bmo_ar08_mda_glance.pdf','');
arPages['cfs_balance'] = new pageObj(3,'Consolidated Balance Sheet','fin_cfs_balance.html','bmo_ar08_cfs_balance.pdf','bmo_ar08_cfs_balance.xls');
arPages['cfs_income'] = new pageObj(3,'Consolidated Statement of Income','fin_cfs_income.html','bmo_ar08_cfs_income.pdf','bmo_ar08_cfs_income.xls');
arPages['cfs_equity'] = new pageObj(3,'Consolidated Statement of Comprehensive Income and Consolidated Statement of Changes in Shareholders\' Equity','fin_cfs_equity.html','bmo_ar08_cfs_equity.pdf','bmo_ar08_cfs_equity.xls');
arPages['cfs_cashflows'] = new pageObj(3,'Consolidated Statement of Cash Flows','fin_cfs_cashflows.html','bmo_ar08_cfs_cashflows.pdf','bmo_ar08_cfs_cashflows.xls');
arPages['corpgov'] = new pageObj(4,'Corporate Governance','cg_corpgov.html','bmo_ar08_corpgov.pdf','');
arPages['process'] = new pageObj(4,'Management Process','cg_process.html','bmo_ar08_mgmt.pdf','');
arPages['directors'] = new pageObj(4,'Directors','cg_directors.html','bmo_ar08_directors.pdf','');
arPages['honorary'] = new pageObj(4,'Honorary Directors','cg_honorary.html','bmo_ar08_directors.pdf','');
arPages['mgmt'] = new pageObj(4,'Management Committee','cg_management.html','bmo_ar08_mgmt.pdf','');
arPages['perfcomm'] = new pageObj(4,'Performance Committee','cg_performance.html','bmo_ar08_performance.pdf','');
arPages['corpresp'] = new pageObj(5,'Corporate Responsibility','cr_corpresp.html','bmo_ar08_corpresp.pdf','');
arPages['employees'] = new pageObj(5,'Employees','cr_employees.html','bmo_ar08_corpresp.pdf','');
arPages['community'] = new pageObj(5,'Community','cr_community.html','bmo_ar08_corpresp.pdf','');
arPages['environment'] = new pageObj(5,'Environment','cr_environment.html','bmo_ar08_corpresp.pdf','');
arPages['shareinfo'] = new pageObj(6,'Shareholder Information','share_info.html','bmo_ar08_shareinfo.pdf','');
arPages['sharedata'] = new pageObj(6,'Share Data','share_data.html','bmo_ar08_shareinfo.pdf','');
arPages['gloss1'] = new pageObj(7,'Glossary A-E','glossary1.html','bmo_ar08_glossary.pdf','');
arPages['gloss2'] = new pageObj(7,'Glossary F-N','glossary2.html','bmo_ar08_glossary.pdf','');
arPages['gloss3'] = new pageObj(7,'Glossary O-S','glossary3.html','bmo_ar08_glossary.pdf','');
arPages['gloss4'] = new pageObj(7,'Glossary T-Z','glossary4.html','bmo_ar08_glossary.pdf','');
/*arPages['index1'] = new pageObj(8,'Index A-E','alphabetic_index1.html','bmo_ar08_index.pdf','');
arPages['index2'] = new pageObj(8,'Index F-N','alphabetic_index2.html','bmo_ar08_index.pdf','');
arPages['index3'] = new pageObj(8,'Index O-S','alphabetic_index3.html','bmo_ar08_index.pdf','');
arPages['index4'] = new pageObj(8,'Index T-Z','alphabetic_index4.html','bmo_ar08_index.pdf','');*/
arPages['downloads'] = new pageObj(9,'Downloads','downloads.html','','');
arPages['printed'] = new pageObj(9,'Request a Printed Report','request_printed.html','','');
arPages['tech'] = new pageObj(9,'Technical Requirements','technical.html','','');
arPages['sitemap'] = new pageObj(9,'Site Map','sitemap.html','','');

// MD&A
// HTML-coded pages
arPages['mda_index'] = new pageObj(10,'MD&A Index','fin_mda_index.html','bmo_ar08_mda_index.pdf','');
arPages['mda_pc_can'] = new pageObj(10,'P&C Canada Overview','fin_mda_pc_can.html','bmo_ar08_mda_oprev_pccan.pdf','');
arPages['mda_pc_us'] = new pageObj(10,'P&C U.S. Overview','fin_mda_pc_us.html','bmo_ar08_mda_oprev_pcus.pdf','');
arPages['mda_pcg'] = new pageObj(10,'PCG Overview','fin_mda_pcg.html','bmo_ar08_mda_oprev_pcg.pdf','');
arPages['mda_cap'] = new pageObj(10,'BMO Capital Markets Overview','fin_mda_capmarkets.html','bmo_ar08_mda_oprev_capmark.pdf','');
// PDF-only pages
arPages['mda_comp'] = new pageObj(10,'Complete MD&A','','bmo_ar08_mda.pdf','');
arPages['mda_who'] = new pageObj(10,'Who We Are','','bmo_ar08_mda_whoweare.pdf','');
arPages['mda_glance'] = new pageObj(10,'Financial Performance and Condition at a Glance','fin_glance.html','bmo_ar08_mda_glance.pdf','');
arPages['mda_strategy'] = new pageObj(10,'Enterprise-Wide Strategy','','bmo_ar08_mda_strategy.pdf','');
arPages['mda_caution'] = new pageObj(10,'Caution Regarding Forward-Looking Statements','','bmo_ar08_caution.pdf','');
arPages['mda_future'] = new pageObj(10,'Factors That May Affect Future Results','','bmo_ar08_mda_future.pdf','');
arPages['mda_ecodev'] = new pageObj(10,'Economic Developments','','bmo_ar08_mda_ecodev.pdf','');
arPages['mda_value'] = new pageObj(10,'Value Measures','','bmo_ar08_mda_value.pdf','');
arPages['mda_perfreview'] = new pageObj(10,'2008 Financial Performance Review','','bmo_ar08_mda_perfreview.pdf','');
arPages['mda_opreview'] = new pageObj(10,'Operating Group Review','','bmo_ar08_mda_opreview.pdf','');
arPages['mda_finconrev'] = new pageObj(10,'Financial Condition Review','','bmo_ar08_mda_finconrev.pdf','');
arPages['mda_acct'] = new pageObj(10,'Accounting Matters and Disclosure and Internal Control','','bmo_ar08_mda_acct.pdf','');
arPages['mda_riskman'] = new pageObj(10,'Enterprise-Wide Risk Management','','bmo_ar08_mda_riskman.pdf','');
arPages['mda_nongaap'] = new pageObj(10,'Non-GAAP Measures','','bmo_ar08_mda_nongaap.pdf','');
arPages['mda_quart'] = new pageObj(10,'Review of Fourth Quarter Performance, Quarterly Earnings Trends and 2007 Financial Performance Review','','bmo_ar08_mda_quart.pdf','');
arPages['mda_supp'] = new pageObj(10,'Supplemental Information','','bmo_ar08_mda_supplemental.pdf','');

// Notes
// HTML-coded pages
arPages['fin_notes'] = new pageObj(11,'Notes Index','fin_notes.html','bmo_ar08_notes.pdf','');
// PDF-only pages
arPages['notes'] = new pageObj(11,'Complete Notes to Consolidated Financial Statements','','bmo_ar08_notes.pdf','');
arPages['note1'] = new pageObj(11,'Note 1: Basis of Presentation','','bmo_ar08_note1.pdf','');
arPages['note2'] = new pageObj(11,'Note 2: Cash Resources','','bmo_ar08_note2.pdf','');
arPages['note3'] = new pageObj(11,'Note 3: Securities','','bmo_ar08_note3.pdf','');
arPages['note4'] = new pageObj(11,'Note 4: Loans, Customers\' Liability under Acceptances and Allowance for Credit Losses','','bmo_ar08_note4.pdf','');
arPages['note5'] = new pageObj(11,'Note 5: Other Credit Instruments','','bmo_ar08_note5.pdf','');
arPages['note6'] = new pageObj(11,'Note 6: Risk Management','','bmo_ar08_note6.pdf','');
arPages['note7'] = new pageObj(11,'Note 7: Guarantees','','bmo_ar08_note7.pdf','');
arPages['note8'] = new pageObj(11,'Note 8: Asset Securitization','','bmo_ar08_note8.pdf','');
arPages['note9'] = new pageObj(11,'Note 9: Variable Interest Entities','','bmo_ar08_note9.pdf','');
arPages['note10'] = new pageObj(11,'Note 10: Derivative Instruments','','bmo_ar08_note10.pdf','');
arPages['note11'] = new pageObj(11,'Note 11: Premises and Equipment','','bmo_ar08_note11.pdf','');
arPages['note12'] = new pageObj(11,'Note 12: Acquisitions','','bmo_ar08_note12.pdf','');
arPages['note13'] = new pageObj(11,'Note 13: Goodwill and Intangible Assets','','bmo_ar08_note13.pdf','');
arPages['note14'] = new pageObj(11,'Note 14: Other Assets','','bmo_ar08_note14.pdf','');
arPages['note15'] = new pageObj(11,'Note 15: Deposits','','bmo_ar08_note15.pdf','');
arPages['note16'] = new pageObj(11,'Note 16: Other Liabilities','','bmo_ar08_note16.pdf','');
arPages['note17'] = new pageObj(11,'Note 17: Restructuring Charge','','bmo_ar08_note17.pdf','');
arPages['note18'] = new pageObj(11,'Note 18: Subordinated Debt','','bmo_ar08_note18.pdf','');
arPages['note19'] = new pageObj(11,'Note 19: Capital Trust Securities','','bmo_ar08_note19.pdf','');
arPages['note20'] = new pageObj(11,'Note 20: Interest Rate Risk','','bmo_ar08_note20.pdf','');
arPages['note21'] = new pageObj(11,'Note 21: Share Capital','','bmo_ar08_note21.pdf','');
arPages['note22'] = new pageObj(11,'Note 22: Capital Management','','bmo_ar08_note22.pdf','');
arPages['note23'] = new pageObj(11,'Note 23: Employee Compensation - Stock-Based Compensation','','bmo_ar08_note23.pdf','');
arPages['note24'] = new pageObj(11,'Note 24: Employee Compensation - Pension and Other Employee Future Benefits','','bmo_ar08_note24.pdf','');
arPages['note25'] = new pageObj(11,'Note 25: Income Taxes','','bmo_ar08_note25.pdf','');
arPages['note26'] = new pageObj(11,'Note 26: Earnings Per Share','','bmo_ar08_note26.pdf','');
arPages['note27'] = new pageObj(11,'Note 27: Operating and Geographic Segmentation','','bmo_ar08_note27.pdf','');
arPages['note28'] = new pageObj(11,'Note 28: Related Party Transactions','','bmo_ar08_note28.pdf','');
arPages['note29'] = new pageObj(11,'Note 29: Contingent Liabilities','','bmo_ar08_note29.pdf','');
arPages['note30'] = new pageObj(11,'Note 30: Fair Value of Financial Instruments','','bmo_ar08_note30.pdf','');
arPages['note31'] = new pageObj(11,'Note 31: Reconciliation of Canadian and United States Generally Accepted Accounting Principles','','bmo_ar08_note31.pdf','');

// creates a page with title, url, pdf and excel
function pageObj(sect, ttl, url, pdf, xls) {
	this.sect = sect;
	this.ttl = ttl;
	this.url = url;
	this.pdf = pdf;
	this.xls = xls;
}

function openPageInMain(url) {
	newWin = window.opener.document.location = url;
}


/**** READ/WRITE/REMOVE FUNCTION BELOW HERE ****/

function getMARvalues() {
	var allcookies = document.cookie;
	var pos = allcookies.indexOf("myReport=");
	if (pos != -1) {
		var start = pos + 9;
		var end = allcookies.indexOf(";", start);
		if (end == -1) { end = allcookies.length;}
		var value = allcookies.substring(start, end);
		value = unescape(value);
		return value;
	}
}

function addToMyAR(pageRef,cancelAlert) {
//	alert (pageRef);
	// get the page title for feedback
	var ttl = arPages[pageRef].ttl;
	var alertMessage = ttl + " added to My Annual Report";
	// find out what's already stored
	var marValues = getMARvalues();
	var alreadyAdded = false;
	if (marValues != undefined) {
		var arTemp = marValues.split("|");
		var i = arTemp.length;
		while (i--) {
			if (pageRef != arTemp[i]) { 
				var cValue = marValues + "|" + pageRef;
			} else {
				var cValue = marValues;
				alreadyAdded = true;
				alertMessage = "You have already added this page."
				break;
			}
		}
	} else {
		var cValue = pageRef;
	}
	// set the new cookie
	createCookie("myReport",cValue,365);
	
	//tracking
	if (!alreadyAdded) { trackEvent( "Add", ttl )};
	
	// provide feedback to the user
	if (!cancelAlert) {
		alert (alertMessage);
	}
}
function removeFromMyReport(pageRef,requestFromEdit) {
	// get the page title for feedback
	var ttl = arPages[pageRef].ttl;
	var alertMessage = ttl + " removed from My Annual Report";
	// find out what's already stored
	var marValues = getMARvalues();
	var arTemp = marValues.split("|");
	var found = false;
	var i = arTemp.length;
	while (i--) {
		if (pageRef == arTemp[i]) {
			var firstArray = arTemp.slice(0,i);
			var secondArray = arTemp.slice(i+1);
			var arNew = firstArray.concat(secondArray);
			var cValue = arNew.join('|');
			found = true;
		}
	}
	// set the new cookies
	createCookie("myReport",cValue,365);
	if (getNotes(pageRef)) {
		deleteNote(pageRef,requestFromEdit);
	}
	
	//tracking
	if (found) { trackEvent( "Remove", ttl ); }
	// refresh the page
	document.location.replace("myannualreport.html");
}

// Omniture Event tracking
function trackEvent( action, sectionName ) {
	if (typeof captureLinkAlt == 'function') {
		captureLinkAlt(window.location,"Annual Report 2008","","action=ar" + action + "2008-" + sectionName + "-EN");
	}
}

function addNote(pageRef) {
	var pageToLoad = "notes_add.html?pageRef="+pageRef;
	var attributes = "menubar=no,toolbar=no,location=no,status=yes,scrollbars=yes,resizable=yes,width=400,height=300"
	newWin(pageToLoad,name,attributes);
}
function viewNotes(pageRef) {
	var pageToLoad = "notes_view.html?pageRef="+pageRef;
	var attributes = "menubar=no,toolbar=no,location=no,status=yes,scrollbars=yes,resizable=yes,width=400,height=300"
	newWin(pageToLoad,name,attributes);
}
function shareNote(pageRef) {
	var doShare = true;
	var loc = document.location.href;
	if (loc.indexOf("notes_add") != -1) {
		doShare = false;
		if (document.noteForm.noteContent.value != "") {
			if (confirm ("You must save your note before you can share it. Do you wish to save this note?")) {			
				saveNote();
				doShare = true;
			}
		} else {
			alert("Please enter your note");
			document.noteForm.noteContent.focus();
		}
	}
	if (doShare) {
		var pageToLoad = "notes_share.html?pageRef="+pageRef;
		document.location = pageToLoad;
	}
}


function clearAllMyReport() {
	if (confirm("Are you sure you wish to clear all saved pages?")) {
		cValue = "";
		createCookie("myNotes",cValue,-30);
		createCookie("myReport",cValue,-30);
		//tracking
		trackEvent("Clear", "all");
		document.location.replace("myannualreport.html");
	}
}

function getAllNotes() {
	var value = "";
	var allcookies = document.cookie;
	var pos = allcookies.indexOf("myNotes=");
	if (pos != -1) {
		// remove any "undefined" value
		if (allcookies.toString().indexOf('undefined') != -1) {
			var arTemp = allcookies.split('undefined');
			allcookies = arTemp[0] + arTemp[1];
		}
		var start = pos + 8;
		var end = allcookies.indexOf(";", start);
		if (end == -1) { end = allcookies.length;}
		value = allcookies.substring(start, end);
		value = unescape(value);
	}
	return value;
}

function getNotes(pageRef) {
//	alert (pageRef);
	var val = null;
	var c = unescape(readCookie("myNotes"));
	if (c != null) {
		var arTemp = c.split('|');
		var i = arTemp.length;
		while (i--) {
			var thisNote = arTemp[i];
			if (thisNote.indexOf(pageRef) != -1) {
				var startIndex = thisNote.indexOf(':') + 1;
				var val = thisNote.substr(startIndex);
			}
		}
	}
	return val
}

function deleteNote(pageRef, reqFromEditPage) {
//	alert (pageRef);
	var allNotes = getAllNotes();
	var prevNotes = getNotes(pageRef);
	if (prevNotes != null) {
		var splitter = pageRef + ":" + prevNotes;
		var arTemp = allNotes.split(splitter);
		var cVal = arTemp[0] + arTemp[1];
	}
	createCookie("myNotes",cVal,365);
	// refresh the page if necessary
	if (reqFromEditPage) {
		var url = arPages[pageRef].url;
		var parent = window.opener.location.toString();
		if (parent.indexOf(url) != -1) {
			var currPage = document.location.toString();
			if (currPage.indexOf('notes_add.html') != -1) {
				document.noteForm.noteContent.value = "";
			}
			openPageInMain(url);
		} else {
			openPageInMain("myannualreport.html");
		}
	}
}


function getPageNotes(pageRef) {
	var val = false;
	var c = readCookie("myNotes");
//	alert (c);
	if (c != null) {
		if (c.indexOf(pageRef) != -1) {
			val = true;
		}
	}
	return val
}

function writeViewNotesLink(pageRef) {
	var hasNotes = getPageNotes(pageRef);
	var s = "";
	if (hasNotes) {
		s += '<a id="viewNotes" title="View My Notes for this page" href="javascript:viewNotes(\''+pageRef+'\')" onmouseover="return showStatus(\'View My Notes for this page\');" onmouseout="return showStatus(\'\');">View My Notes for this page</a>';
	} else {
		s += '<span id="viewNotes" class="inactive" title="No Note saved for this page.">No note saved for this page.</span>';
	}
//	alert (s);
	document.write(s);
}