



if (navigator.appName == "Microsoft Internet Explorer")
{
	try {
	  // Google sourced fix for IE6 bug.
	  document.execCommand("BackgroundImageCache", false, true);
	}
	catch(err) 
	{
	}
}

// findX and findY from firetree.net
function findPosX(obj)
{
    var curleft = 0;
    if(obj.offsetParent)
        while(1) 
        {
          curleft += obj.offsetLeft;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.x)
        curleft += obj.x;
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if(obj.offsetParent)
        while(1)
        {
          curtop += obj.offsetTop;
          if(!obj.offsetParent)
            break;
          obj = obj.offsetParent;
        }
    else if(obj.y)
        curtop += obj.y;
    return curtop;
}

function displayPageLoading()
{
	positionMenu();
	var centerColumn = document.getElementById("centerColumn");
	if (centerColumn != null)
	{
		centerColumn.style.visibility = "hidden";
	}
	var pleaseWaitPageLoading = document.getElementById("pleaseWaitPageLoading");
	if (pleaseWaitPageLoading != null)
	{
		pleaseWaitPageLoading.style.visibility = "visible";
	}
}

var leftColumnAbsolute = null;
function positionMenu()
{
	var leftNavColumnPosition = document.getElementById("leftNavColumnPosition");
	    leftColumnAbsolute = document.getElementById("leftColumnAbsolute");
	var headerTable = document.getElementById("headerTable");
	if (leftNavColumnPosition != null && 
	    leftColumnAbsolute != null) 
	{
		var extraXOffset = 0;
		var extraYOffset = 0;
		if (headerTable != null)
		{
			extraYOffset = 25;
		}
		leftColumnAbsolute.style.left = (extraXOffset + findPosX(leftNavColumnPosition))  + 'px';
		leftColumnAbsolute.style.top = (extraYOffset + findPosY(leftNavColumnPosition))  + 'px';
		leftColumnAbsolute.visibility = "visible";
		var pleaseWaitPageLoading = document.getElementById("pleaseWaitPageLoading");
		if (pleaseWaitPageLoading != null)
		{
			pleaseWaitPageLoading.style.top = (extraYOffset + findPosY(leftNavColumnPosition))  + 'px';
		}		
	}
}


function calculateLeftNavColumnHeight() {
	var xOffset = 30;
	if (navigator.appName != "Microsoft Internet Explorer") {
		xOffset = 10;
	}
	var leftNavColPosition = document.getElementById("leftNavColumnPosition");
	var leftNavMenuTable = document.getElementById("leftNavMenuTable");
	if (leftNavColPosition != null && leftNavMenuTable != null) {
		leftNavColPosition.style.height = (leftNavMenuTable.clientHeight + xOffset) + 'px';
	}
}

function tidyCmsData()
{
	if( (typeof aV7Nav) == "object")
	{
	    var localLevel1Menu = aV7Nav;
	    var newLevel1 = new Array();
		for (var i = 0; i < localLevel1Menu.length; i++)
		{
			if (localLevel1Menu[i][0] != "")
			{
				newLevel1[i] = localLevel1Menu[i];
			    var newLevel2 = new Array();
				var level2Menu = localLevel1Menu[i][3];
				for (var j = 0; j < level2Menu.length; j++)
				{
					if (level2Menu[j][0] != "")
					{
						newLevel2[j] = level2Menu[j];
						var level3Menu = level2Menu[j][3];
					    var newLevel3 = new Array();
						for (var k = 0; k < level3Menu.length; k++)
						{
							if (level3Menu[k][0] != "")
							{
								newLevel3[k] = level3Menu[k];
							}							
						}
						newLevel2[j][3] = newLevel3;
					}					
				}
				newLevel1[i][3] = newLevel2;
			}
		}
		aV7Nav = newLevel1;
	}
}

var oldResize = window.onresize;
var onResize = 0;
function writeLeftNavFromPageId() 
{
	positionMenu();
	window.onresize = function () {
    	positionMenu();
		if (typeof oldResize == "function" &&
		    onResize == 0)
		{    
		    // Protect against infinite loop
		    onResize = 1;
			oldResize();
		    onResize = 0;
		}	
    }
	writeNavAfterImagesLoaded();
}

var waitIntervals = 14;
function writeNavAfterImagesLoaded()
{

    var count = 0;
	var img = document.getElementById("navImg1");
	if (img != null && img.complete)
	{
	    // All images loaded.
		writeLeftNav(-1, -1, -1);
	}
	else if (waitIntervals-- > 0)
	{
		// Give it another sec to load.
		window.setTimeout('writeNavAfterImagesLoaded()', 500);
	}
	else
	{
	    // Display Menu anyway.
		writeLeftNav(-1, -1, -1);
	}
}

function detectMyBigPondToMyAccount(level1Menu, whichLevel1)
{
    // This is dirty because its not generic
	if (whichLevel1 == 1 &&
	    level1Menu[0][0] == 'My BigPond' &&
  		level1Menu[0][2] > 0 && 
	    level1Menu[1][0] == 'Manage My Account')
	    return true;
	else    
		return false;
}    

function doMyBigPondToMyAccount()
{
	aV7Nav[0][2] = '0';
	aV7Nav[1][2] = '1';
	writeLeftNav(-1, -1, -1);
}

var level1;
var level2;
var level3;
var level1Menu;
var isWriting;
var	flyoutMenu2 = null;
var	startFlyout2;
var	flyoutMenu3 = null;
var	startFlyout3;
var col2FlyoutIsLevel3 = false;
var SIZE = 80;
var rowsHeight = new Array(SIZE*3);
function writeLeftNav(lvl1, lvl2, lvl3) 
{
	if( (typeof aV7Nav) == "object")
	{
	    level1Menu = aV7Nav;
	    var sHtml =  "";
		level1 = lvl1;
		level2 = lvl2;
		level3 = lvl3;
		flyoutMenu2 = null;
		startFlyout2 = 0;
		flyoutMenu3 = null;
		startFlyout3 = 0;
		col2FlyoutIsLevel3 = false;
	    sHtml += "<table id='leftNavMenuTable' cellpadding='0' cellspacing='0' border='0' >";
		sHtml += writeHierMenu();
		sHtml += "</table>";
		var leftNav = document.getElementById("leftNav");
		if (leftNav != null) 
		{
 			leftNav.innerHTML = sHtml;
			leftNav.style.visibility = "visible";
		}
	}			
}
		
function writeHierMenu()
{
	var sHtml = "";
	var col1Rows = createColumn1(); 
	var compacted = false;
	if (level1 == -1 && level2 == -1 && level3 == -1)
	{
		compacted = true;
		if (leftColumnAbsolute != null)
			leftColumnAbsolute.style.width = '160px'; 
	}
	else
	{
		if (leftColumnAbsolute != null)
			leftColumnAbsolute.style.width = '700px'; 
	}
	for (var yPos = 0; yPos < SIZE; yPos++) 
	{
	    isWriting = false;
	    var col1 = writeColumn1(col1Rows, yPos);
	    if (compacted && col1 == "")
	      break;
		sHtml += "<tr>";
		sHtml += writeSpacer(col1);
		// Need to hide menu so that it is possible to click on items under it.
		if (!compacted)
		{
			sHtml += writeSpacer(writeColumn2(yPos));
			sHtml += writeSpacer(writeColumn3(yPos));
			sHtml += writeSpacer("");
		}
		sHtml += "</tr>";
		if (!isWriting && yPos > 19)
		   break;
	}	
	return sHtml;
}	


function createColumn1()
{
    var rows = new Array(SIZE*3);
    var whichLevel1 = 0;
    var lvl1y;
    var lvl2y;
	for (var y = 0; y < SIZE-2 && whichLevel1 < level1Menu.length; )
	{
		var compactedOnLevel1 = (level1Menu[whichLevel1][2] > 0);
		var level2Menu = level1Menu[whichLevel1][3];
	    var onclick = null; 
	    if (detectMyBigPondToMyAccount(level1Menu, whichLevel1))
	    {
	        onclick = "doMyBigPondToMyAccount();return true;";
		}
		rows[y] = writeMenuLevel1Item(level1Menu, whichLevel1, onclick);
		lvl1y = y;
		y++;
		if (level2Menu.length <= 0)
	    {
	       // no sub menu
	    }
		else if (compactedOnLevel1)
		{
			for (var level2Cursor = 0; level2Cursor < level2Menu.length; level2Cursor++) 
			{
				var compactedOnLevel2 = (level2Menu[level2Cursor][2] > 0);
				rows[y] = writeMenuLevel2Item(level2Menu, whichLevel1, level2Cursor, true);
				lvl2y = y;
			    y++;

				var level3Menu = level2Menu[level2Cursor][3];		
				if (compactedOnLevel2)
				{
					for (var level3Cursor = 0; level3Cursor < level3Menu.length; level3Cursor++) 
					{
						rows[y] = writeMenuLevel3Item(level3Menu, whichLevel1, level2Cursor, level3Cursor, true);
					    y++;
					}
				}
				else
				{
					if (level3Menu.length > 0 && level1 == whichLevel1 && level2 == level2Cursor && flyoutMenu2 == null)
					{
						flyoutMenu2 = level3Menu;
						startFlyout2 = lvl2y;
						col2FlyoutIsLevel3 = true;
					}
				}
			}			
		}
		else if (level1 == whichLevel1 && flyoutMenu2 == null)
		{
			//flyout
			flyoutMenu2 = level2Menu;
			startFlyout2 = lvl1y;
		}
		whichLevel1++;
	}	    
	rows[y] = null;
	return rows;
}

function writeColumn1(rows, yPos)
{
    var sHtml = "";
	if (rows[yPos] == null)
	   return "";
	 else
	   return rows[yPos];  
}

function writeColumn2(yPos)
{
    var sHtml = "";
    var column2Cursor = yPos - startFlyout2;
    if (flyoutMenu2 != null && column2Cursor >=0 && column2Cursor < flyoutMenu2.length &&
       flyoutMenu2[column2Cursor] != null && flyoutMenu2[column2Cursor].length > 0)
    {
		if (col2FlyoutIsLevel3)
		{
			sHtml += writeMenuLevel3Item(flyoutMenu2, level1, level2, column2Cursor, false);
		}
		else
		{
			sHtml += writeMenuLevel2Item(flyoutMenu2, level1, column2Cursor, false);
			var compactedOn2 = (flyoutMenu2[column2Cursor][2] > 0);
			var level3Menu = flyoutMenu2[column2Cursor][3];
		
			if (level3Menu.length > 0 && level2 == column2Cursor)
			{
				flyoutMenu3 = level3Menu;
				startFlyout3 = yPos;
			}
		}
	}
	return sHtml;
}

function writeColumn3(yPos)
{

    var sHtml = "";
    level3Cursor = yPos - startFlyout3;
    if (flyoutMenu3 != null && level3Cursor >=0 && level3Cursor < flyoutMenu3.length)
    {
		sHtml += writeMenuLevel3Item(flyoutMenu3, level1, level2, level3Cursor, false);
	}
	return sHtml;
}


function writeSpacer(row)
{
    if (row != "")
    {
        isWriting = true; 
    	return row;
    }
	return "<td onmouseover='writeLeftNav(-1, -1, -1);return true' style='background-image:url(/lib/img/leftnavigationmenu/sin.gif);width:151px;height:23px;'/>";
}

function writeMenuLevel1Item(level1Menu, whichLevel1, onclick)
{
	var sHtml = "";
	var compactedOnLevel1 = (level1Menu[whichLevel1][2] > 0);
	var compactedLevel2Menu = level1Menu[whichLevel1][3];
	if ((whichLevel1 == level1 && ! compactedOnLevel1) || (compactedLevel2Menu.length == 0 && compactedOnLevel1))
	{
		sHtml += "<td class='lvl2_on'>";
	}
	else if (whichLevel1 == level1Menu.length - 1)
	{
	    if (level1Menu[whichLevel1][0].length > 21)
	    {
			sHtml += "<td class='lvl1_bottom_46'>";
		}
		else
		{
			sHtml += "<td class='lvl1_bottom'>";
		}
			
	}
	else
	{
		sHtml += "<td class='lvl1'>";
	}
	var level2Menu = level1Menu[whichLevel1][3];
	sHtml += "<table cellpadding='0' cellspacing='0' border='0' style='width:151px;'>";
	sHtml += "<tr><td style='width:94%'>";
	var action = "writeLeftNav("+ whichLevel1 + ", -1, -1);";
	var doAction = (whichLevel1 != level1 && !compactedOnLevel1);
	var anchor = writeAnchor(level1Menu[whichLevel1], doAction, action, onclick);
	sHtml += anchor;
   	sHtml += "<p class='menu-text'>" + level1Menu[whichLevel1][0] + "</p>";
	sHtml += "</a></td><td style='width:6%' ";
	if (level2Menu.length > 0)
	{
	    if (!compactedOnLevel1) 
	    {
		   	sHtml += "class='arrow_right'>";
	    }
	    else 
	    {
		   	sHtml += "class='arrow_down'>";
	    }
		sHtml += anchor;
		sHtml += "</a>";
	}
	else
	{
		sHtml += ">";
	}
	sHtml += "</td></tr></table></td>";
	return sHtml;
}

function writeMenuLevel2Item(level2Menu, whichLevel1, level2Cursor, compactedOnLevel1)
{
	var sHtml = "";
	var compactedOnLevel2 = (level2Menu[level2Cursor][2] > 0);
	var level3Menu = level2Menu[level2Cursor][3];
	var compactedOnLevel3 = false;
	for (var lvl3 = 0; lvl3 < level3Menu.length; lvl3++)
	{
		if (level3Menu[lvl3][2] > 0)
		{
			compactedOnLevel3 = true;
			break;
		}
	}
	// Only show either lvl2 or lvl3 highlighted if compacted
    if ((whichLevel1 == level1 && level2Cursor == level2) || 
        (compactedOnLevel2 && !compactedOnLevel3))
    {
		sHtml += "<td class='lvl2_on'>";
	}
	else
	{
		sHtml += "<td class='lvl2'>";
	}	
	sHtml += "<table cellpadding='0' cellspacing='0' border='0' style='width:151px'>";
	sHtml += "<tr><td style='width:94%'>";
	var action = "writeLeftNav("+ whichLevel1 + ", " + level2Cursor + ", -1);";
	var doAction = !(level2Cursor == level2 && whichLevel1 == level1);
	var anchor = writeAnchor(level2Menu[level2Cursor], doAction, action, null);
	sHtml += anchor;
   	sHtml += "<p class='menu-text'>" + level2Menu[level2Cursor][0] + "</p>";
	sHtml += "</a></td><td style='width:6%' ";
	if (level3Menu.length > 0)
	{
	    if (compactedOnLevel2 && level3Menu.length > 0)
	    {
		   	sHtml += "class='arrow_down'>";
	    }
	    else 
	    {
		   	sHtml += "class='arrow_right'>";
	    }
		sHtml += anchor;
		sHtml += "&nbsp";
		sHtml += "</a>";
	}
	else
	{
		sHtml += ">";
	}
	sHtml += "</td></tr></table></td>";
	return sHtml;
}

function writeMenuLevel3Item(level3Menu, whichLevel1, whichLevel2, level3Cursor, compactedOnLevel2)
{
	var sHtml = "";
	var compactedOnLevel3 = (level3Menu[level3Cursor][2] > 0);
    if ((whichLevel1 == level1 && whichLevel2 == level2 && level3Cursor == level3) || 
        compactedOnLevel3)
    {
		sHtml += "<td class='lvl2_on'>";
	}
	else
	{
		sHtml += "<td class='lvl3'>";
	}	
	var action = "writeLeftNav(" + whichLevel1 + "," + whichLevel2 + "," + level3Cursor + ");"
	var doAction = !(whichLevel2 == level2 && whichLevel1 == level1 && level3Cursor == level3) && !compactedOnLevel3;
	sHtml += writeAnchor(level3Menu[level3Cursor], doAction, action, null);
   	sHtml += "<p class='menu-text'>" + level3Menu[level3Cursor][0] + "</p>";
	sHtml += "</a>";
	sHtml += "</td>";
	return sHtml;
}

function writeAnchor(item, doAction, action, onclick)
{
	var sHtml = "";
	sHtml += "<a ";
	if (onclick == null)
	{
		sHtml += " href='" + item[1] + "';";
		sHtml += " onclick=\"displayPageLoading();return true\";";
	}	
	else
	{
		sHtml += " onclick='" + onclick + "';";
	}
	sHtml += " style='text-decoration:none' onmouseover=\"window.status='" + item[0] + "';";
    if (doAction)
    {
		sHtml += action;
	}
	sHtml += "return true\" onmouseout='window.status=window.defaultStatus;return true'>";
	return sHtml;
}