var dynamicHeaderLoaded = true;
// if g_Domain exists, must be "http://" + <domain name>
var m_Domain = ( (typeof g_Domain) != 'undefined' ) ? g_Domain : '';
var m_Cache = ( (typeof g_Cache) != 'undefined' ) ? g_Cache : 'http://c.ancestry.com';
var m_CachePartner = ( (typeof g_CachePartner) != 'undefined' ) ? g_CachePartner : 'http://c.ancestry.com/p/0';

// page width
var CPAGEWIDTH = "760"
var m_PageWidth = ( (typeof g_PageWidth) != 'undefined' ) ? g_PageWidth : CPAGEWIDTH;

// Tab titles-
var C_HOME = "Home";
var C_MYANCESTRY = "My Ancestry";
var C_SEARCH = "Search Records";
var C_ADVSEARCH = "Advanced Search";
var C_TREES = "Family Trees";
var C_BOARDS = "Message Boards";
var C_LEARN = "Learning Center";
var C_SHOPS = "Shop";
var C_HELP = "Help";
var C_EMPTY = "";
var C_CHARTFORM = "Charts and Forms";

// Delete these when we have changed the constants
var CHOME = "Home";
var CSEARCH = "Search Records";
var CTREES = "Family Trees";
var CBOARDS = "Message Boards";
var CLEARN = "Genealogy Help";
var CSHOPS = "Ancestry Shops";
var CHELP = "?";

var CTabHome		= new Array(C_HOME,		m_Domain + "/",				"64",	"Ancestry Home Page");
var CTabLibHome		= new Array(C_HOME,		m_Domain + "/",				"64",	"Ancestry Library Edition Home Page");
var CTabMyAncestry	= new Array(C_MYANCESTRY, m_Domain + "/myancestry/","95",	"My Ancestry - Store personal information");
var CTabSearch		= new Array(C_SEARCH,	m_Domain + "/search/",			"119",	"Genealogy Search - Find Birth Records, Death Records, Marriage Records and US Census Records.");
var CTabAdvSearch	= new Array(C_ADVSEARCH,m_Domain + "/search/",			"119",	"Genealogy Search - Find Birth Records, Death Records, Marriage Records and US Census Records.");
var CTabTrees		= new Array(C_TREES,	m_Domain + "/trees/",			"101",	"Family Trees - Build your family tree using our pedigree files.");
var CTabChartForm	= new Array(C_CHARTFORM,m_Domain + "/charts/ancchart.aspx/",	"119",	"Record the ancestors from whom you directly descend.");
var CTabBoards		= new Array(C_BOARDS,	m_Domain + "/share/",		"124",	"Genealogy Message Boards - Find others who are researching your ancestors.");
var CTabLearn		= new Array(C_LEARN,	m_Domain + "/learn/",		"120",	"Resources to help you research your family history, including books, articles, and genealogy archives.");
var CTabShops		= new Array(C_SHOPS,	m_Domain + "/rx/shops.asp?lfl=m",		"59",	"Discover, preserve, and celebrate your heritage with unique products.");
var CTabEmpty		= new Array(C_EMPTY,	m_Domain + "",							"75",	"");


function IsStarterExperience()
{
	var iSC	= parseInt(getDictionaryCookie('SC', 'EXP'));
	if (isNaN(iSC))
	{
		iSC = 0;
	}
	var iRights	= getUserRights();
	if ((!IsLoggedIn() && iSC == 1) || (IsLoggedIn() && ((iSC == 1 || iRights == 128) && !((getSubscriptionAll() & iRights) != 0))))
		return true; 
	else
		return false;
}

if (typeof CTabs == 'undefined' )
	var CTabs = new Array(CTabHome, CTabMyAncestry,CTabSearch, CTabTrees, CTabBoards, CTabLearn, CTabShops);

if (typeof CNoShopsTabs == 'undefined' )
	var CNoShopsTabs = new Array(CTabHome, CTabMyAncestry, CTabSearch, CTabTrees, CTabBoards, CTabLearn);

if (typeof CFooterLinks == 'undefined' )
{
	var CFooterLinks = new Array("Corporate Info", "http://www.myfamilyinc.com",
															 "Affiliate Program", m_Domain + "/home/partner/main.htm",
															 "PRIVACY STATEMENT", m_Domain + "/legal/privacy.htm",
															 "Contact Us", "http://ancestryhelp.custhelp.com/cgi-bin/ancestryhelp.cfg/php/enduser/ask.php",
															 "Terms and Conditions", m_Domain + "/legal/terms.htm");

	var p = m_CachePartner.substring(m_CachePartner.lastIndexOf("/")+1);
	if (p == "0")
		CFooterLinks[7] = "http://ancestry.custhelp.com/cgi-bin/ancestry.cfg/php/enduser/ask.php";
	else if (p == "4300")
		CFooterLinks[7] = "http://ancestryaol.custhelp.com/cgi-bin/ancestryaol.cfg/php/enduser/ask.php";
}

//var crumb=null;

var bDebug = false;

// Includes
document.write('<\script language="JavaScript" src="' + m_Cache + '/js/global.js"><\/script>');
document.write('<\script language="JavaScript" src="' + m_Cache + '/js/security_shared.js"><\/script>');
document.write('<\script language="JavaScript" src="' + m_Cache + '/js/utility.js"><\/script>');
document.write('<\script language="JavaScript" src="' + m_Cache + '/js/AB.js"><\/script>');
// By including the brand.js file the cobrand header will also be drawn
document.write('<\script language="JavaScript" src="' + m_CachePartner + '/js/brand.js"><\/script>');

// Masks for controlling which parts of the header are shown
var CSHOW_NONE							= 0x00000000;
var CSHOW_ALL 							= 0xFFFFFFFF;
var CSHOW_MASTHEAD					= 0x00000001;
var CSHOW_LARGE_LOGO				= 0x00000002;
var CSHOW_SMALL_LOGO				= 0x00000004;
var CSHOW_LOGIN							= 0x00000008;
var CSHOW_LINE							= 0x00000010;
var CSHOW_TABS							= 0x00000020;
var CSHOW_SUBNAV						= 0x00000040;
var CSHOW_BREADCRUMB				= 0x00000080;
var CSHOW_HELP							= 0x00000100;
var CSHOW_BANNERS						= 0x00000200;
var CSHOW_TOP_WHITESPACE		= 0x00000400;
var CSHOW_BOTTOM_WHITESPACE	= 0x00000800;
var CSHOW_UPGRADE_PROMPT		= 0x00001000;
var CENCLOSING_TABLE				= 0x00002000;
var CSHOW_FOOTER_HR					= 0x00004000;
var CSHOW_COPYRIGHT					= 0x00008000;
var CSHOW_CENTERED					= 0x00010000;
var CSHOW_MYACCOUNT					= 0x00020000;
var CSHOW_WELCOMEUSER				= 0x00040000;
var CSHOW_BRAND_ONLY				= 0x00080000;

var CSTANDARD_HEADER				= CSHOW_ALL;
var CSTANDARD_SMALL_HEADER	= CSHOW_ALL ^ CSHOW_LARGE_LOGO;
var CSHOW_ALL_BUT_BANNERS		= CSHOW_ALL ^ CSHOW_BANNERS ^ CSHOW_TOP_WHITESPACE;
var CSHOW_CUSTOMERINFO			= CSHOW_LOGIN | CSHOW_HELP | CSHOW_MYACCOUNT | CSHOW_WELCOMEUSER;

//"javascript:myaccount(\'' + strLink + '/myaccount/account_fs.htm\'

// Used internally to pass parameters between the included files
var g_hdPageWidth = m_PageWidth;			// The width to constrain the header to, e.g. "750" or "100%"
var g_hdStrActiveTab = C_HOME;				// The title of the currently selected tab
var g_hdStrDomain;										// The domain to prepend to links
var g_hdATabs;												// Array of tab titles and links in the form "Title", "Link"
var g_hdACrumbs;											// Array of breadcrumbs in form Crumb::Link
var g_hdStrHelpLink;									// Link to associate with the help link, null if help should not appear
var g_hdStrCampaign;									// The campaign to associate with the ad banner or "" if no campaign
var g_hdShowFlags = CSHOW_ALL;				// Bit flags indicating which parts of the header to show


var g_ftPageWidth;		// The width to constrain the footer to, e.g. "750" or "100%"
var g_ftStrDomain;		// The width to constrain the footer to, e.g. "750" or "100%"
var g_ftALinks;				// Array of label followed by its associated link
var g_ftLegalLink;		// Link associated with "subject to license"
var g_ftStrCampaign;	// The campaign to associate with the ad banner or "" if no campaign
var g_ftShowFlags;		// Bit flags indicating which parts of the footer to show

var g_bEnclosingTableUsed = false;			// Used for the footer to know if it needs to close the table or not.

					 
//mouseover, out and click
function mOvr(evt,src,theClass)
{
	if (!evt)
		evt=window.event;

	if (evt.fromElement && !src.contains(evt.fromElement))
	{
		src.style.cursor = 'hand'; 
		src.className = theClass;
	}
}

//-------
function mClk(evt,i)
{
	if (!evt)
		evt=window.event;

	if(evt.srcElement && evt.srcElement.tagName=='TD')
	{
		document.all.TabLinkID[i].click();
	}
}

//-------
function mOut(evt,src,theClass)
{
	if (!evt)
		evt=window.event;

	if (evt.toElement && !src.contains(evt.toElement))
	{
		src.style.cursor = 'default';
		src.className = theClass;
	}
}


//-------
function popupHelp(helpURL)
{
	var leftPos
	var helpHeight=400;
	var helpWidth=400;
	if (screen)
	{
		helpHeight=screen.height-105;
		helpWidth=Math.max(screen.width/2,600);
		leftPos = screen.width-helpWidth-12;
	}
	self.name="ancmain";
	helpWin = window.open(helpURL,"anchelp","toolbar=1,location=0,status=0,menubar=0,scrollbars=1,resizable=1,top=0,left="+leftPos+",width="+helpWidth+",height="+helpHeight);
	if (helpWin){helpWin.focus()};
}
//-----
function legalFooterOnly()
{
	document.write('<table width="' + g_hdPageWidth + '" border="0" cellspacing="0" cellpadding="0">');
	document.write('	<tr>');
	document.write('		<td height="4" colspan="2" class="lbg"><spacer type="block" height=1></td>');
	document.write('	</tr>');
	document.write('	<tr valign="bottom">');
	document.write('		<td height="15" class="copyright">');
	document.write('<a href="http://www.myfamilyinc.com">Corporate Info</a> | <a href="http://www.ancestry.com/home/partner/main.htm">Affiliate Program</a> | <a href="http://www.ancestry.com/legal/privacy.htm">PRIVACY STATEMENT</a> | <a href="http://ancestryhelp.custhelp.com/cgi-bin/ancestryhelp.cfg/php/enduser/ask.php">Contact Us</a>');
	document.write('		</td>');
	document.write('		<td align="right" class="copyright">Copyright &copy; 1998-' + new Date().getFullYear() + ', MyFamily.com Inc. &#150; <a href="http://www.ancestry.com/legal/terms.htm">Terms and Conditions</a>');	
	document.write('		&nbsp;</td>');
	document.write('	</tr>');
	document.write('</table>');
}

//-------
function doTab(aTabs, tIndex, tHeight, bActive, strDomain)
{
	var tWidth = parseInt(aTabs[tIndex][2]);
	var tabStyle = "tab";
	var tabTextStyle = "TabText";
	var tabHoverStyle = "tabHover";
	var borderStyle = "tabBorder";
	var borderShadowLt = "tabShadowLt";
	var borderShadowDk = "tabShadowDk";
	
	if (bActive)
	{
		tabStyle = "sTab";
		tabTextStyle = "sTabText";
		borderStyle = "sTabBorder";
		borderShadowLt = "sTabShadowLt";
		borderShadowDk = "sTabShadowDk";
	}

	document.write('		<td valign="bottom" width="' + tWidth + '">');
	document.write('			<table width="100%" border="0" cellspacing="0" cellpadding="0">');
	// Tab top
	document.write('				<tr>');
	// Left rounded corner
	document.write('					<td width="3" colspan="3">');
	document.write('						<table width="100%" border="0" cellspacing="0" cellpadding="0">');
	document.write('							<tr height="1">');
	document.write('								<td width="2" height="1" colspan="2"><spacer type="block" height="1" width="1"></td>');
	document.write('								<td width="1" height="1" class="' + borderStyle + '"><spacer type="block" height="1" width="1"></td>');
	document.write('							</tr>');
	document.write('							<tr height="1">');
	document.write('								<td width="1" height="1"><spacer type="block" height="1" width="1"></td>');
	document.write('								<td width="1" height="1" class="' + borderStyle + '"><spacer type="block" height="1" width="1"></td>');
	document.write('								<td width="1" height="1" class="' + borderShadowLt + '"><spacer type="block" height="1" width="1"></td>');
	document.write('							</tr>');
	document.write('						</table>');
	document.write('					</td>');
	// Top bevel
	document.write('					<td width="' + ((tWidth=="100%") ? "" : tWidth - 6) + '">');
	document.write('						<table width="100%" border="0" cellspacing="0" cellpadding="0">');
	document.write('							<tr height="1"><td class="' + borderStyle + '" width="1" height="1"><spacer type="block" height="1" width="1"></td></tr>');
	document.write('							<tr height="1"><td class="' + borderShadowLt + '" height="1"><spacer type="block" height="1" width="1"></td></tr>');
	document.write('						</table>');
	document.write('					</td>');
	// Right rounded corner
	document.write('					<td width="3" colspan="3">');
	document.write('						<table width="3" border="0" cellspacing="0" cellpadding="0">');
	document.write('							<tr height="1">');
	document.write('								<td width="1" height="1" class="' + borderStyle + '"><spacer type="block" height="1" width="1"></td>');
	document.write('								<td width="2" height="1" colspan="2"><spacer type="block" height="1" width="1"></td>');
	document.write('							</tr>');
	document.write('							<tr height="1">');
	document.write('								<td width="1" height="1" class="' + borderShadowLt + '"><spacer type="block" height="1" width="1"></td>');
	document.write('								<td width="1" height="1" class="' + borderStyle + '"><spacer type="block" height="1" width="1"></td>');
	document.write('								<td width="1" height="1"><spacer type="block" height="1" width="1"></td>');
	document.write('							</tr>');
	document.write('						</table>');
	document.write('					</td>');
	document.write('				</tr>');
	// Tab body
	document.write('				<tr>');
			// Left edge
	document.write('					<td class="' + borderStyle + '" width="1" height="' + tHeight + '"><spacer type="block" height="1" width="1"></td>');
	document.write('					<td class="' + borderShadowLt + '" width="1"><spacer type="block" height="1" width="1"></td>');
	document.write('					<td class="' + tabStyle + '" width="1"><spacer type="block" height="1" width="1"></td>');
			// Tab text
	document.write('					<td class="' + tabStyle + '" nowrap align="center" title="' + aTabs[tIndex][3] + '"');

			// Add events for tabs
	if (!bActive)
	{
		document.write(' onMouseOver="mOvr(event,this,\'tabHover\');" onMouseOut="mOut(event,this,\'tab\');" onClick="mClk(event,' + tIndex + ');"');
	}
				
	document.write('><A href="'+ prependDomain(strDomain, aTabs[tIndex][1]) + '" id="TabLinkID" class="' + tabTextStyle + '">' + aTabs[tIndex][0] + '</A></td>');
			// Right edge
	document.write('					<td class="' + tabStyle + '" width="1"><spacer type="block" height="1" width="1"></td>');
	document.write('					<td class="' + borderShadowDk + '" width="1"><spacer type="block" height="1" width="1"></td>');
	document.write('					<td class="' + borderStyle + '" width="1"><spacer type="block" height="1" width="1"></td>');
	document.write('				</tr>');
	// Tab bottom
	document.write('				<tr height="1">');
	if (bActive)
	{
		document.write('					<td width="1" height="1" class="' + borderShadowDk + '"><spacer type="block" height="1" width="1"></td>');
		document.write('					<td colspan="5" height="1" class="' + tabStyle + '"><spacer type="block" height="1" width="1"></td>');
		document.write('					<td width="1" height="1" class="' + borderShadowDk + '"><spacer type="block" height="1" width="1"></td>');
	}
	else
	{
		document.write('					<td colspan="7" height="1" class="sTabBorder"><spacer type="block" height="1" width="1"></td>');
	}
	document.write('				</tr>');
	document.write('			</table>');
	document.write('		</td>');
}

//-------
function doSpace(sWidth)
{
// Space between tabs
	document.write('		<td' + ((parseInt(sWidth) != 0) ? (' width="' + sWidth + '"') : '') + ' valign="bottom">');
	document.write('			<table width="100%" height="1" border="0" cellspacing="0" cellpadding="0">');
	document.write('				<tr height="1">');
	document.write('					<td class="sTabBorder" height="1"><img src=' + m_Cache + '/i/pixel.gif height="1" width="1"></td>');
	document.write('				</tr>');
	document.write('			</table>');
	document.write('		</td>');
}

//-------
function getWinWidth()
{
  var bw = m_PageWidth;
  if(typeof(window.innerWidth) == 'number')
    bw = window.innerWidth;	//Non-IE
	else
    if(document.documentElement && document.documentElement.clientWidth)
      bw = document.documentElement.clientWidth;	//IE 6+ in 'standards compliant mode'
		else
      if(document.body && document.body.clientWidth)
        bw = document.body.clientWidth;	//IE 4 compatible
	return bw;
}

//-------
function WriteTabs(pageWidth, strActiveTab, strDomain, aTabs)
{
	var tabsWidth = 0;
	var bNetScrape = false;
	for (i=0; i < aTabs.length; i++)
	{
		tabsWidth += parseInt(aTabs[i][2]) + 2;
	}
	tabsWidth -= 2;

	if ((pageWidth.indexOf("%") != -1) && (navigator.appName == "Navigator") && (parseInt(navigator.appVersion) < 5))
	{
		pageWidth = getWinWidth() * (100 / parseInt(pageWidth)) - 16;	// Determine the width of the window
		bNetScrape = true;
	}

	document.write('<table width="' + pageWidth + '" border="0" cellspacing="0" cellpadding="0">');
	document.write('	<tr>');
	document.write('		<td width="' + tabsWidth + '">');
	document.write('			<table width="100%" border="0" cellspacing="0" cellpadding="0">');
	document.write('				<tr>');

	var bActive = false;
	
	if (aTabs != null)
	{
		for (i=0; i < aTabs.length; i++)
		{
			bActive = (aTabs[i][0] == strActiveTab);
			
			doTab(aTabs, i, (bActive ? 20 : 17), bActive, strDomain);
			if (i != aTabs.length - 1)
			{
				doSpace(2);
			}
		}
	}

	document.write('				</tr>');
	document.write('			</table>');
	document.write('		</td>');

	if (bNetScrape)
	{
		if (pageWidth - tabsWidth - 2 > 0)
			doSpace(pageWidth - tabsWidth + 2);
	}
	else
		doSpace(0);

	document.write('	</tr>');
	document.write('</table>');
}

//-------
function WriteSubNav()
{
	if (bDebug)
		alert('WriteSubNav \ng_hdACrumbs: ' + g_hdACrumbs);
	var bShowCrumb = (((g_hdShowFlags & CSHOW_BREADCRUMB) != 0) && (g_hdACrumbs != null));

	// If there is anything in the sub nav
	if (bShowCrumb  || (IsLoggedIn() && g_hdStrActiveTab == C_BOARDS))
	{
		document.write('<table width="' + g_hdPageWidth + '" border="0" cellspacing="0" cellpadding="0"><tr>');

		if (bShowCrumb)
			WriteBreadcrumb(g_hdACrumbs);
		
		if (IsLoggedIn() && g_hdStrActiveTab == C_BOARDS && !IsInstitutionalAccount()) 
		{
			document.write('<td align="right"><a class="hCustomerInfo" href="' + g_hdStrDomain + '/rx/mb.asp?urlscheme=1&url=' + escape ('htx=myprofile&onok=' + escape (document.URL)) + '">My&nbsp;Profile</a>&nbsp;|&nbsp;');
			document.write('<a class="hCustomerInfo" href="' + g_hdStrDomain + '/rx/mb.asp?urlscheme=1&url=' + escape ('htx=myfavorites&onok=' + escape (document.URL)) + '">My&nbsp;Favorites</a>&nbsp;|&nbsp;');
			document.write('<a class="hCustomerInfo" href="' + g_hdStrDomain + '/rx/mb.asp?urlscheme=1&url=' + escape ('htx=mysubscriptions&onok=' + escape (document.URL)) + '">My&nbsp;Notifications</a>&nbsp;&nbsp;</td>');
		}
		document.write('</tr></table>');
	}
}
//-------
function WriteBreadcrumb(aCrumbs)
{
	if (bDebug)
		alert('WriteBreadcrumb \naCrumbs: ' + aCrumbs);

	// If the breadcrumb is defined
	if (aCrumbs != null)
	{
		document.write('<td height="18" class="crumb">&nbsp;&nbsp;&nbsp;You are here: ');
		// Write each element of the breadcrumb
		for (i = 0; i < aCrumbs.length; i ++)
		{
			if (i < (aCrumbs.length - 1))
			{
				document.write('<a href="' + aCrumbs[i].split("::")[1] + '">' + aCrumbs[i].split("::")[0] + '</a> &gt; ');
			}
			else
			{
				document.write('<b>' + aCrumbs[i].split("::")[0] + '</b>');
			}
		}
		document.write('</td>');
	}
}

//-------
function WriteMasthead(showFlags, pageWidth, strActiveTab, strDomain)
{
	if (bDebug)
		alert('writeMasthead \nshowFlags: ' + showFlags + '\npageWidth: ' + pageWidth + '\nstrActiveTab: ' + strActiveTab + '\nstrDomain: ' + strDomain);

	document.write('<table width="' + pageWidth + '" border="0" cellspacing="0" cellpadding="0">');
	document.write('	<tr valign="bottom">');
	if (IsStarterExperience())
		document.write('		<td width="355" height="42"><img src="' + m_Cache + '/i/logo_sc.gif" alt="Search Genealogy Records" width="379" height="36"></td>');
	else
		document.write('		<td width="355" height="42"><img src="' + m_Cache + '/i/logo.gif" alt="Search Genealogy Records" width="379" height="36"></td>');
	document.write('		<td align="right" valign="middle" class="util">');
	if ((g_hdShowFlags & CSHOW_CUSTOMERINFO) != 0)
		WriteCustomerInfo (strDomain);
	document.write('		</td>');
	document.write('	</tr>');
	document.write('	<tr>');
	document.write('		<td height="7" colspan="2"></td>');
	document.write('	</tr>');
	document.write('</table>');
}

//-------
function WriteCustomerInfo(strDomain)
{
 	var name = getLoginName();

 	if ( null == name || "" == name ) 
 	{ 
 		name = "Welcome"; 
 	}
 	else 
 	{ 
 		name = 'Welcome, ' + name; 
 	}
				
 	if ( !IsInstitutionalAccount() && ((g_hdShowFlags & CSHOW_LOGIN) != 0))
 	{
 		if ( IsLoggedIn() )
 		{
 			document.write('<font font-size: 12px; font-weight: bold; color=003366>' + name + '</font>&nbsp;&nbsp;|&nbsp;');
			document.write('<a class="hCustomerInfo" href="' + strDomain + '/security/loginredir.aspx?logout=true&home=true">Log Out</a> &nbsp;|&nbsp;');
			document.write('<a class="hCustomerInfo" href="' + strDomain + '/myancestry/myaccount/default.aspx">Upgrade</a> &nbsp;|&nbsp;');

			if ((g_hdShowFlags & CSHOW_MYACCOUNT) != 0)
			{
				document.write('<a class="hCustomerInfo" href="' + strDomain + '/myancestry/myaccount/default.aspx">My Account</a> &nbsp;|&nbsp;');
			}
 		}
 		else
 		{
 			document.write('<a class="hCustomerInfo" href="' + strDomain + '/security/loginredir.aspx">Login</a> &nbsp;|&nbsp;');

			if ((g_hdShowFlags & CSHOW_UPGRADE_PROMPT) != 0)
				document.write('<a class="y" href="' + strDomain + '/subscribe/subscribeplanstx.asp">Subscribe</a> &nbsp;|&nbsp;');
 		}
 	}
	document.write('<a class="hCustomerInfo" href="' + strDomain + '/rx/help.asp">Help?</a>&nbsp;&nbsp;&nbsp;');
}

//-------
function testShowHeaderAd(showFlags)
{
	if (bDebug)
		alert('testShowHeaderAd \nshowFlags: ' + showFlags);

	if ((showFlags & CSHOW_BANNERS) == 0)
		return false;

	if (bDebug)
	{
		alert('ShowAdOnPage(): ' + ShowAdOnPage());
		alert('IsInstitutionalAccount(): ' + IsInstitutionalAccount());
	}

	return (ShowAdOnPage() && !IsInstitutionalAccount());
}

//-------
function prependDomain (strDomain, strLink)
{
	strResult = strLink;
	strCheckURL = strLink.substring(0,6).toLowerCase();

	if (strCheckURL != "http:/"
			&& strCheckURL != "https:"
			&& strCheckURL != "javasc")
		strResult = strDomain + strLink;

	if (bDebug)
		alert('prependDomain\n'
					+ '\nstrDomain: ' + strDomain
					+ '\nstrLink: ' + strLink
					+ '\nstrCheckURL: ' + strCheckURL
					+ '\nstrResult: ' + strResult);

	return strResult;
}

//-------
// Write "invalid/bounced email" message on header
function writeHeaderMessage()
{
	var cachePath = ( 'undefined' == (typeof m_Cache) ) ? "http://c.ancestry.com/i/warning.gif" : m_Cache + "/i/warning.gif";
	var changeMailPath = ( 'undefined' == (typeof m_Domain) ) ? "/myancestry/myaccount/changeemail.aspx" : m_Domain + "/myancestry/myaccount/changeemail.aspx";	

	document.write('<table width="760" border="0" cellspacing="0" cellpadding="0">');
	document.write('	<tr>');
	document.write('		<td class="HeaderMessage">');
	document.write('			<image align="top" src="' + cachePath + '">');
	document.write('			There appears to be a problem with your email address. ');
	document.write('			<a class="HeaderLink" href="' + changeMailPath + '">Click here to verify your email address</a>. ');
	document.write('		</td>');
	document.write('	</tr>');
	document.write('</table>');
}

//-------
// Write the brand header first and then write the Ancestry branding and tabs.
function writeHeader(pageWidth,				// The width to constrain the header to, e.g. "750" or "100%"
						strActiveTab,		// The title of the currently selected tab
						strDomain,			// The domain to prepend to links
						aTabs,				// Array of tab titles and links in the form "Title", "Link"
						aCrumbs,			// Array of breadcrumbs in form Crumb::Link
						strHelpLink,		// Link to associate with the help link, null if help should not appear
						strCampaign,		// The campaign to associate with the ad banner or "" if no campaign
						showFlags)			// Bit flags indicating which parts of the header to show
{
	var p = m_CachePartner.substring(m_CachePartner.lastIndexOf("/")+1);

	if ( "5542" == p )
		aTabs = new Array(CTabLibHome, CTabAdvSearch, CTabChartForm);
	else if (IsInstitutionalAccount())
	{
		if ( "5538" == p )
			aTabs = new Array(CTabHome, CTabSearch, CTabBoards);
		else
			aTabs = new Array(CTabHome, CTabSearch, CTabBoards, CTabLearn);
	}
	else if (IsStarterExperience() && (getUserRights() == 0))
		aTabs = new Array(CTabHome, CTabMyAncestry, CTabSearch, CTabTrees);
	else
		aTabs = new Array(CTabHome, CTabMyAncestry, CTabSearch, CTabTrees, CTabBoards, CTabLearn, CTabShops);

	if (document.location.href.indexOf("debug=1") != -1)
	{
		bDebug = true;
		document.write('<table border="1" bgcolor="#FFFFFF"><tr><td colspan="2" align="center"><b>writeHeader</b></td></tr><tr><td>m_PageWidth:</td><td>' + m_PageWidth + '</td></tr><tr><td>pageWidth:</td><td>' + pageWidth + '</td></tr><tr><td>strActiveTab:</td><td>' + strActiveTab + '</td></tr><tr><td>strDomain:</td><td>' + strDomain + '</td></tr><tr><td>aTabs:</td><td>' + aTabs + '</td></tr><tr><td>aCrumbs:</td><td>' + aCrumbs + '</td></tr><tr><td>strHelpLink:</td><td>' + strHelpLink + '</td></tr><tr><td>strCampaign:</td><td>' + strCampaign + '</td></tr>');
		document.write('<tr><td>showFlags:</td><td>');
		writeDebugFlags(showFlags);
		document.write('</td></tr><tr><td>writeHeader.arguments.length:</td><td>' + writeHeader.arguments.length + '</td></tr><tr><td>writeHeader.arguments:</td><td>');
		for(i=0;i < writeHeader.arguments.length;i++)
		{
			document.write('writeHeader.arguments[' + i + ']: ' + writeHeader.arguments[i] + '<br>');
		}
		document.write('</td></tr></table>');
	}

	// Load the parameters into global variables for passing
	g_hdPageWidth = pageWidth;	
	g_hdStrActiveTab = strActiveTab;
	g_hdStrDomain = strDomain;
	g_hdACrumbs = aCrumbs;
	g_hdATabs = aTabs;
	g_hdStrHelpLink = strHelpLink;
	g_hdStrCampaign = strCampaign;
	g_hdShowFlags = showFlags;

	if ( CSHOW_NONE != showFlags )
	{
		// writeBrandHeader is define in Brand.js
		writeBrandHeader(strDomain);		
		
		// Variable is defined in brand.js file if .js files are used to display the brand header
		var m_bUsesJSFile = ( (typeof g_bUsesJSFile) != 'undefined' ) ? g_bUsesJSFile : false;
		if (m_bUsesJSFile == true)
		{
			// Call writeCommonHeader from an included .js file
			// This is done this way so that brand headers that are done with .js files will display in the proper position.
			document.writeln ('<\script LANGUAGE="JavaScript1.1" SRC="' + m_CachePartner + '/js/writeheader.js"><\/script>');
		}
		else
		{
			writeCommonHeader();
		}
	}
	
	// identify the user as still active... (see sharedheader.ascx for .NET implementation.)
	if ( 'undefined' != (typeof touchCcr) ) touchCcr('/security/concurrencyupdate.aspx','ancestry');
}

//-------
// Output the common part of the header
function writeCommonHeader()
{
	// write "bounced email" message on header (User has a bad email)
	if ( hasBouncedEmail() ) //found on cache/js/security_shared.js
		writeHeaderMessage();
			
	// Top whitespace
//	if ((g_hdShowFlags & CSHOW_TOP_WHITESPACE) != 0)
//		writeVerticalSpace(8);

	// Masthead
//	if ((g_hdShowFlags & CSHOW_MASTHEAD) != 0)
	WriteMasthead(g_hdShowFlags, g_hdPageWidth, g_hdStrActiveTab, g_hdStrDomain);

	// Tabs
	if ((g_hdShowFlags & CSHOW_TABS) != 0)
		WriteTabs(g_hdPageWidth, g_hdStrActiveTab, g_hdStrDomain, g_hdATabs);

	// SubNav & Breadcrumb
	if ((g_hdShowFlags & CSHOW_SUBNAV) != 0)
		WriteSubNav();

	// Ad Banner
	if (testShowHeaderAd(g_hdShowFlags))
	{
		writeVerticalSpace(8);
		DisplayAdBanner("Top", 468, 60, g_hdStrCampaign);
	}

	// Bottom whitespace
	if ((g_hdShowFlags & CSHOW_BOTTOM_WHITESPACE) != 0)
		writeVerticalSpace(8);

	// Enclosing table
	if ((g_hdShowFlags & CENCLOSING_TABLE) != 0)
	{
		document.write('<table width="' + g_hdPageWidth + '" border="0" cellspacing="0" cellpadding="0"><tr><td valign="top">');
		g_bEnclosingTableUsed = true;
	}
	document.close();
}

//-------
function writeFooter(pageWidth,				// The width to constrain the footer to, e.g. "750" or "100%"
										 aLinks,					// Array of label followed by its associated link
										 legalLink,				// Link associated with "subject to license"
										 strCampaign,			// The campaign to associate with the ad banner or "" if no campaign
										 showFlags)				// Bit flags indicating which parts of the footer to show
{
	var p = m_CachePartner.substring(m_CachePartner.lastIndexOf("/")+1);

	// Load the parameters into global variables for passing
	if (writeFooter.arguments.length == 5)
	{
		g_ftPageWidth = writeFooter.arguments[0];	
		g_ftALinks = writeFooter.arguments[1];	
		g_ftLegalLink = writeFooter.arguments[2];	
		g_ftStrCampaign = writeFooter.arguments[3];
		g_ftShowFlags = writeFooter.arguments[4];
	}
	else
	{
		g_ftPageWidth = writeFooter.arguments[0];	
		g_ftALinks = writeFooter.arguments[1];	
		g_ftLegalLink = m_Domain + "/legal/terms.htm";	
		g_ftStrCampaign = writeFooter.arguments[2];
		g_ftShowFlags = writeFooter.arguments[3];
	}

	if (IsStarterExperience() && aLinks[6] == "Contact Us")
	{
		aLinks[7] = "http://ancestry.custhelp.com/cgi-bin/ancestry.cfg/php/enduser/ask.php?&p_prod_lvl1=75";
	}

	if ((document.location.href.indexOf("debug=1") != -1)
			|| (document.location.href.indexOf("debugf=1") != -1))
	{
		bDebug = true;
		document.write('<table border="1" bgcolor="#FFFFFF"><tr><td colspan="2" align="center"><b>writeFooter</b></td></tr><tr><td>pageWidth:</td><td>' + g_ftPageWidth + '</td></tr><tr><td>aLinks:</td><td>' + g_ftALinks + '</td></tr><td>legalLink:</td><td>' + g_ftLegalLink + '</td></tr><tr><td>strCampaign:</td><td>' + g_ftStrCampaign + '</td></tr><tr><td>showFlags:</td><td>');
		writeDebugFlags(g_ftShowFlags); 
		document.write('</td></tr><tr><td>writeFooter.arguments.length:</td><td>' +  writeFooter.arguments.length + '</td></tr><tr><td>writeFooter.arguments:</td><td>');
		for(i=0;i < writeFooter.arguments.length;i++)
		{
			document.write('writeFooter.arguments[' + i + ']: ' + writeFooter.arguments[i] + '<br>');
		}
		document.write('</td></tr></table>');
	}

	if ((CSHOW_NONE != g_ftShowFlags))
	{  
		if ( "5542" != p )
		{
			// New Trial Genealogy Footer Links 
			var iRights	= getUserRights();
			if (!IsLoggedIn() || (IsLoggedIn() && (getSubscriptionAll() & iRights) == 0) )
			{	
				var l_Domain = ( (typeof g_Domain) != 'undefined' ) ? g_Domain : '';	
				document.write('<table width="' + g_hdPageWidth + '" border="0" cellspacing="0" cellpadding="0">');
				document.write('	<tr>');
				document.write('		<td height="1" class="dkbg"><spacer type="block" height=1></td>');
				document.write('	</tr>');
				document.write('	<tr>');
				document.write('		<td height="4"><spacer type="block" height=1></td>');
				document.write('	</tr>');
				document.write('	<tr>');
				document.write('		<td class="small" nowrap>&nbsp; <strong>Genealogy Links:</strong>&nbsp;');
				document.write('		<a href="' + l_Domain + '/rd/landing.aspx?html=/family_trees/family_tree.aspx">Family Trees</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="' + l_Domain + '/rd/landing.aspx?html=/census_records/census_records.aspx">Census Records</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="' + l_Domain + '/rd/landing.aspx?html=/immigration/immigration_records.aspx">Immigration Records</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="' + l_Domain + '/rd/landing.aspx?html=/genealogy/genealogy_records.aspx">Genealogy Records</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="' + l_Domain + '/rd/landing.aspx?html=/uk_genealogy/uk_genealogy.aspx">U.K. Records</a>&nbsp;&nbsp;|&nbsp;&nbsp;<a href="' + l_Domain + '/rd/landing.aspx?html=/newspapers/historical_newspapers.aspx">Historical Newspapers</a>');
				document.write('		</td>');
				document.write('	</tr>');
				document.write('	<tr>');
				document.write('		<td height="5"><spacer type="block" height=1></td>');
				document.write('	</tr>');
				document.write('</table>');
			}
			//End New Trial Footer Links
			document.write('<table width="' + g_hdPageWidth + '" border="0" cellspacing="0" cellpadding="0">');
			document.write('	<tr>');
			document.write('		<td height="4" colspan="2" class="lbg"><spacer type="block" height=1></td>');
			document.write('	</tr>');
			document.write('	<tr valign="bottom">');
			document.write('		<td height="15" class="copyright">&nbsp;');

			if (g_ftALinks != null)
			{
				var i = 0;
				var bHash = false;

				while (i < g_ftALinks.length)
				{
					if (g_ftALinks[i] != "Terms and Conditions")
					{
						if (bHash)
							document.write(' | ');
						document.write('<a href="' + prependDomain(m_Domain, g_ftALinks[i+1]) + '">' + g_ftALinks[i] + '</a>');
						bHash = true;
					}
					i +=2;
				}
			}
			document.write('		</td>');
			document.write('		<td align="right" class="copyright">');
			if ((g_ftShowFlags & CSHOW_COPYRIGHT) != 0)
			{
				document.write('Copyright &copy; 1998-' + new Date().getFullYear() + ', MyFamily.com Inc.');
				document.write(' &#150; <a href="' + g_ftLegalLink + '"><b>Terms and Conditions</b></a>');
			}
			document.write('		&nbsp;</td>');
			document.write('	</tr>');
			document.write('</table>');
		
			writeVerticalSpace(10);

			// Ad Banner
			if (testShowFooterAd(g_ftShowFlags))
			{
				DisplayAdBanner("Bottom", 468, 60, "");
				writeVerticalSpace(10);
			}

			// End enclosing table
			if ((g_hdShowFlags & CENCLOSING_TABLE) != 0 && g_bEnclosingTableUsed == true)
				document.write('</TD></TR></TABLE>');
		}
		// Write out the brand portion of the footer
		writeBrandFooter(m_Domain);
		
		document.close();
	}
}


//-------
function writeVerticalSpace(vSpace)
{
			document.write('<table border="0" cellspacing="0" cellpadding="0"><tr><td height="' + vSpace + '"><spacer type="block" height="1" width="1"></td></tr></table>');
}


//-------
function testShowFooterAd(showFlags)
{
	return (((showFlags & CSHOW_BANNERS) != 0)
					&& ShowAdOnPage()
					&& !IsInstitutionalAccount());
}


//-------
function writeDebugFlags (debugFlags)
{
		document.write('CSHOW_NONE: ' + ((CSHOW_NONE == debugFlags) ? "true<br>":"false<br>"));
		document.write('CSHOW_ALL: ' + (((debugFlags & CSHOW_ALL) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_MASTHEAD: ' + (((debugFlags & CSHOW_MASTHEAD) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_LARGE_LOGO: ' + (((debugFlags & CSHOW_LARGE_LOGO) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_SMALL_LOGO: ' + (((debugFlags & CSHOW_SMALL_LOGO) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_LOGIN: ' + (((debugFlags & CSHOW_LOGIN) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_LINE: ' + (((debugFlags & CSHOW_LINE) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_TABS: ' + (((debugFlags & CSHOW_TABS) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_SUBNAV: ' + (((debugFlags & CSHOW_SUBNAV) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_BREADCRUMB: ' + (((debugFlags & CSHOW_BREADCRUMB) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_HELP: ' + (((debugFlags & CSHOW_HELP) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_BANNERS: ' + (((debugFlags & CSHOW_BANNERS) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_TOP_WHITESPACE: ' + (((debugFlags & CSHOW_TOP_WHITESPACE) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_BOTTOM_WHITESPACE: ' + (((debugFlags & CSHOW_BOTTOM_WHITESPACE) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_UPGRADE_PROMPT: ' + (((debugFlags & CSHOW_UPGRADE_PROMPT) != 0) ? "true<br>":"false<br>"));
		document.write('CENCLOSING_TABLE: ' + (((debugFlags & CENCLOSING_TABLE) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_FOOTER_HR: ' + (((debugFlags & CSHOW_FOOTER_HR) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_COPYRIGHT: ' + (((debugFlags & CSHOW_COPYRIGHT) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_CENTERED: ' + (((debugFlags & CSHOW_CENTERED) != 0) ? "true<br>":"false<br>"));
		document.write('CSHOW_MYACCOUNT: ' + (((debugFlags & CSHOW_MYACCOUNT) != 0) ? "true<br>":"false<br>"));
}


// This is here to eliminate errors on pages where the function is called but no longer included
// Remove this AFTER all calls to dateString are removed
function dateString(date)
{
	return "";
}

