﻿//FlashHelp 1.0
var gnFlashVersion = -1;
var gaPaths = new Array();
var gaAvenues = new Array();
var gnTopicOnly = -1;
var gbTopicCommLoaded = false;
var arrTopicCmdQueue = new Array();

var gsPPath = "";
var gsStartPage = "";
var gsRelCurPagePath = "";
var gsTopicbarOrder="show";
var gsHiliteSearchSetting="enable,#ffff99,black";
var gsTextColor="black";
var gsBkgndColor="yellow";
var gsSearchText = "";
var gaSearchTerms = new Array();
var gbIsSearchPaneEnabled = false;
var gaBreadcrumbsTrail = new Array();
var gsFtsBreakChars="\t\r\n\"\\ .,!@#$%^&*()~'`:;<>?/{}[]|+-=\x85\x92\x93\x94\x95\x96\x97\x99\xA9\xAE\xB7";
var gnYPos = -1;

var gstrBsAgent 	= navigator.userAgent.toLowerCase();
var gnBsVer	   		= parseInt(navigator.appVersion);
var gbBsIE  		= (gstrBsAgent.indexOf('msie') != -1);
var gbBsNS  		= (gstrBsAgent.indexOf('mozilla') != -1) && ((gstrBsAgent.indexOf('spoofer') == -1) && (gstrBsAgent.indexOf('compatible') == -1));
var gbBsOpera		= (gstrBsAgent.indexOf('opera') != -1);
var gbBsNS4			= ((gbBsNS) && (gnBsVer >= 4));
var gbBsNS6			= ((gbBsNS) && (gnBsVer >= 5));

var gbNav7		= false;
var gbBsOpera6		= false;
var gbBsOpera7		= false;
var gbKonqueror		=(gstrBsAgent.indexOf("konqueror")!= -1);
var gbMozilla		= ((gstrBsAgent.indexOf('gecko')!=-1) && (gstrBsAgent.indexOf('netscape')==-1));

var gbMac=	(gstrBsAgent.indexOf("mac")!=-1);
var gbWindows=	((gstrBsAgent.indexOf('win')!= -1)||(gstrBsAgent.indexOf('16bit')!= -1));

if(gbBsNS6)
{
	var nPos=gstrBsAgent.indexOf("gecko");
	if(nPos!=-1)
	{
		var nPos2=gstrBsAgent.indexOf("/", nPos);
		if(nPos2!=-1)
		{
			var nVersion=parseFloat(gstrBsAgent.substring(nPos2+1));
			if(nVersion>=20010726)
			{
				if (nVersion>=20020823)
					gbNav7=true;
			}
		}
	}
}

if (gbBsOpera)
{
	var nPos = gstrBsAgent.indexOf("opera");
	if(nPos!=-1)
	{
		var nVersion = parseFloat(gstrBsAgent.substring(nPos+6));
		if (nVersion >= 6)
		{
			gbBsOpera6=true;
			if (nVersion >=7)
				gbBsOpera7=true;	
		}
	}
}

if (gbWindows && gbBsIE && !parent.parent.parent.gbToolBarLoaded)
{
	var sVBScript = '';
	sVBScript += '<script language="VBScript"\> \n';
	sVBScript += 'Private i, x \n';
	sVBScript += 'On Error Resume Next \n';
	sVBScript += 'MM_FlashControlInstalled = False \n';
	sVBScript += 'For i = 6 To 1 Step -1 \n';
	sVBScript += '   Set x = CreateObject("ShockwaveFlash.ShockwaveFlash." & i) \n';
	sVBScript += '   MM_FlashControlInstalled = IsObject(x) \n';
	sVBScript += '   If MM_FlashControlInstalled Then \n';
	sVBScript += '       gnFlashVersion = i \n';
	sVBScript += '       Exit For \n';
	sVBScript += '   End If \n';
	sVBScript += 'Next \n';
	sVBScript += '</script> \n';
	document.write(sVBScript);
}

function AddMasterBreadcrumbs(relHomePage, styleInfo, separator, strHome, strHomePath)
{
	delete gaBreadcrumbsTrail;
	gaBreadcrumbsTrail = new Array();
	var sTopicFullPath = _getPath(document.location.href);
	var sXmlFullPath = _getFullPath(sTopicFullPath, relHomePage);
	var sXmlFolderPath = _getPath(sXmlFullPath);
	var sdocPath = _getFullPath(sXmlFolderPath, "MasterData.xml");

	try
	{
		GetMasterBreadcrumbs(sdocPath, styleInfo, separator);
	}
	catch(err)
	{
		var i = gaBreadcrumbsTrail.length;
		if(i == 0)
		{
			var strTrail = "<a style=\""+ styleInfo + "\"" + " href=\"" + strHomePath + "\">" + strHome + "</a> " + separator + " ";
			document.write(strTrail);
		}
		else
		{
			while(i > 0)
			{
				document.write(gaBreadcrumbsTrail[i-1]);
				i--;
			}
		}
	}
	return;
}


function GetMasterBreadcrumbs(masterFullPath, styleInfo, separator)
{	
	if(gbIE5)
	{
		xmlDoc1=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc1.async="false";
		xmlDoc1.load(masterFullPath);
	}
	else
	{
		var req=new XMLHttpRequest();
     		req.open("GET", masterFullPath, false);   
		req.send(null);   
		xmlDoc1 = req.responseXML;
	}

	if(xmlDoc1 == null) throw "error";

	var root = xmlDoc1.documentElement;
	var masterProj = xmlDoc1.getElementsByTagName("MasterProject");

	var masterName="";
	var masterRelPath="";

	if(masterProj)
	{
		masterName = masterProj[0].getAttribute("name");
		masterRelPath = masterProj[0].getAttribute("url");		
	}

	var x = xmlDoc1.getElementsByTagName("item");
	var i = 0;
	var strTrail = "";

	for(i=0; i< x.length; i++)
	{
		var name= x[i].getAttribute("name");
		var path = x[i].getAttribute("url");
		name = name.replace(/\\\\/g, '\\'); 

		if(path == "")
		{
			strTrail += name + " " + separator + " ";
		}
		else
		{
			var sHrefRelPath = _getPath(masterFullPath) + masterRelPath;
			var sHrefFullPath = _getFullPath(sHrefRelPath, path); 
			strTrail += "<a style=\""+ styleInfo + "\"" + " href=\"" + sHrefFullPath + "\">" + name + "</a> " + separator + " ";
		}

	}	


	gaBreadcrumbsTrail[gaBreadcrumbsTrail.length] = strTrail;

	// call for master breadcrumbs
	masterFullPath = _getPath(masterFullPath)
	masterFullPath += masterRelPath;
	masterFullPath = _getFullPath(masterFullPath, "MasterData.xml");

	GetMasterBreadcrumbs(masterFullPath);
	
}

function SendCmdToSWF(cmd, param1, param2)
{
	if (parent != this)
	{
		if (parent.SendCmdToSWF)
		{
			parent.SendCmdToSWF(cmd, param1, param2);
		}
	}
}

function IsFlashSupported()
{
	var bResult = false;

	if (gnFlashVersion == -1)
	{
		if (parent.parent.parent.gbToolBarLoaded)
		{
			gnFlashVersion = 6;
		}
		else
		{
			if (navigator.plugins && navigator.plugins.length > 0)
			{
				if (navigator.plugins["Shockwave Flash"])
				{
					var words = navigator.plugins["Shockwave Flash"].description.split(" ");
					for (var i = 0; i < words.length; ++i)
					{
						if (isNaN(parseInt(words[i])))
							continue;
						gnFlashVersion = words[i];
					}
				}
			}
		}
	}
	if (gnFlashVersion == -1)
	{
		gnFlashVersion = 0;
	}

	if (gnFlashVersion>=6)
	{
		bResult = true;
	}

	return bResult;
}

function DoCommand(cmd, param1, param2) {
	switch (cmd) {
		case "CmdAskIsTopicOnly":
			if( (parent!=this) && (parent.DoCommand) )
			{
				parent.DoCommand(cmd, param);	
			}
			break;
		case "CmdScrollbarDragStart":
			if (gbNav4 || gbOpera || gbKonqueror || gbSafari)
			{
				if (gbBsNS6 || (gbBsOpera && !gbMac)) {
					document.getElementById("scrollbarDIV").style.visibility = "";
				} else if (gbBsNS4) {
					document.layers["scrollbarLayer"].visibility = "show";
				}
			}
			break;
		case "CmdScrollbarDragStop":
			if (gbNav4 || gbOpera || gbKonqueror || gbSafari)
			{
				if (gbBsNS6 || (gbBsOpera && !gbMac)) {
					document.getElementById("scrollbarDIV").style.visibility = "hidden";
				} else if (gbBsNS4) {
					document.layers["scrollbarLayer"].visibility = "hidden";
				}
			}
			break;
		case "CmdScrollbarDragMove":
			if (gbNav4 || gbOpera || gbKonqueror || gbSafari)
			{
				if (gbBsNS6) {
					document.getElementById("scrollbarDIV").style.left = param1;
				} else if (gbBsNS4) {
					document.layers["scrollbarLayer"].pageX = param1;
				} else if (gbBsOpera && !gbMac) {
					eval('document.all.scrollbarDIV').style.pixelLeft = param1;
				}
			}
			break;
		case "CmdGetSearchText":
			var searchSetting = gsHiliteSearchSetting.match("^(.+),(.+),(.*)$");
			if(searchSetting[1] != "enable")
				break;
			gsTextColor = searchSetting[3];
			gsBkgndColor = searchSetting[2];
			SendCmdToSWF(cmd, param1, param2);
			break;
		case "CmdSearchText":
			var params = param1.split("#");
			gsSearchText = params[1];
			gbIsSearchPaneEnabled = params[0];
			
			if(gbIsSearchPaneEnabled == "true")
			{
				findSearchTerms(gsSearchText, false);
				highlightDocument();
			}
			break;
		default:
			break;
	}
}

/////////highlight Search Routines /////////
function ClosedRange( a_nStart, a_nEnd )
{
	this.nStart = a_nStart;
	this.nEnd = a_nEnd;
}

////////generic functions //////////

var g_RunesWordBreaks=gsFtsBreakChars;
var g_RunesWhiteSpaces="\x20\x09\x0D\x0A\xA0";

function _isWordBreak( a_ch )
{
	return ( g_RunesWordBreaks.indexOf( a_ch ) >= 0 );
}

function _isWhiteSpace( a_ch )
{
	return ( g_RunesWhiteSpaces.indexOf( a_ch ) >= 0 );
}

function _getLengthOfWordBreak( a_str, a_nFrom )
{
	var i = a_nFrom, nLen = a_str.length;
	while ( i < nLen && _isWordBreak( a_str.charAt( i ) ) )
		++i;
	return i - a_nFrom;
}

function _getLengthOfWord( a_str, a_nFrom )
{
	var i = a_nFrom, nLen = a_str.length;
	while ( i < nLen &&	!_isWordBreak( a_str.charAt( i ) ) )
		++i;
	return i - a_nFrom;
}

function _getWord( a_str, a_nFrom )
{
	var nLen = _getLengthOfWord( a_str, a_nFrom );
	return a_str.substr( a_nFrom, nLen );
}

function _getPositionInc( a_str, a_nFrom )
{
	var i = a_nFrom, nLen = a_str.length, nInc = 1;
	while ( i < nLen && _isWordBreak( a_str.charAt( i ) ) )
	{
		if ( !_isWhiteSpace( a_str.charAt( i ) ) )
			nInc++;

		i++;
	}
	return nInc;
}

function _getNormalizedWord( a_strWord )
{
	var strLower = a_strWord.toLowerCase();
	return strLower;
}

function DolWord( a_strWord, a_nPosition, a_nCharLocation )
{
	this.strWord = a_strWord;
	this.nPosition = a_nPosition;
	this.nCharLocation = a_nCharLocation;
}

function dolSegment( a_strSrc )
{
	var nLen = a_strSrc.length;
	var nCur = 0;
	var nPosition = 1;
	var strWord = "";
	var aRslt = new Array();

	nCur += _getLengthOfWordBreak( a_strSrc, nCur );
	while ( nCur < nLen )
	{
		strWord = _getNormalizedWord( _getWord( a_strSrc, nCur ) );
		aRslt[aRslt.length] = new DolWord( strWord, nPosition, nCur );
		
		nCur += strWord.length;
		nPosition += _getPositionInc( a_strSrc, nCur );
		nCur += _getLengthOfWordBreak( a_strSrc, nCur );
	}
	return aRslt;
}

/////////// Dom Text node ///////////////
var s_strHlStart=null;
var s_strHlEnd =null;

function DomTextNode( a_Node, a_nFrom )
{
	this.node = a_Node;
	this.nFrom = a_nFrom;
	
	this.aClosedRanges = new Array();

	this.getClosedRanges = function( a_aRanges, a_nStart )
	{
		var nTo = this.nFrom + a_Node.data.length;			
		for ( var i = a_nStart; i < a_aRanges.length; i++ )
		{
			if ( a_aRanges[i].nStart <= nTo &&
				 a_aRanges[i].nEnd >= this.nFrom )
			{
				this.aClosedRanges[this.aClosedRanges.length] = new ClosedRange( a_aRanges[i].nStart > this.nFrom ? a_aRanges[i].nStart : this.nFrom,
																				 a_aRanges[i].nEnd < nTo ? a_aRanges[i].nEnd : nTo );
			}
			if ( a_aRanges[i].nEnd > nTo )
			{
				return i;
			}
		}
		return i;
	}

	this.doHighlight = function( a_aRanges, a_nStart )
	{

		s_strHlStart = "<font style='color:" + gsTextColor + "; background-color:" + gsBkgndColor + "'>";
		s_strHlEnd = "</font>";

		if ( a_nStart >= a_aRanges.length )
			return a_nStart;

		var nEnd = this.getClosedRanges( a_aRanges, a_nStart );
		if ( this.aClosedRanges.length == 0 )
			return nEnd;
		var strText = this.node.data;
		var strHTML = "";
		var nLastStart = 0;
		for ( var i = 0; i < this.aClosedRanges.length; i++ )
		{
			strHTML += strText.substring( nLastStart, this.aClosedRanges[i].nStart - this.nFrom );
			
			strHTML += s_strHlStart;
			strHTML += strText.substring( this.aClosedRanges[i].nStart - this.nFrom,
										  this.aClosedRanges[i].nEnd - this.nFrom );
			strHTML += s_strHlEnd;

			nLastStart = this.aClosedRanges[i].nEnd - this.nFrom;
		}
		strHTML += strText.substr( nLastStart );
		
		var spanElement = document.createElement( "span" );
		spanElement.innerHTML = strHTML;
		this.node.parentNode.replaceChild( spanElement, this.node );
		if(gnYPos == -1)
		{
			var elemObj = spanElement;
			var curtop = 0;
    			if (elemObj.offsetParent)
    			{
        			while (elemObj.offsetParent)
        			{
            				curtop += elemObj.offsetTop
            				elemObj = elemObj.offsetParent;
        			}
    			}
    			else if (elemObj.y)
        			curtop += elemObj.y;
			
			gnYPos = curtop;
		}
		return nEnd;
	};
}

function DomTexts()
{
	this.strText = "";
	this.aNodes = new Array();
	this.aRanges = new Array();

	this.addElementNode = function( a_Node )
	{
		if ( a_Node == null || a_Node.childNodes == null )
			return;

		var nLen = a_Node.childNodes.length;
		for ( var i = 0; i < nLen; i++ )
		{
			var node = a_Node.childNodes.item( i );
			if ( node != null )
			{
				if ( node.nodeType == 3 )
				{
					this.addTextNode( node );
				}
				else if ( node.nodeType == 1 )
				{
					this.addElementNode( node );
				}
			}
		}
	}

	this.addTextNode = function( a_Node )
	{
		if ( a_Node == null )
			return;

		var strInnerText = a_Node.data;
		if ( strInnerText.length != 0 )
		{
			var nFrom = this.strText.length;
			this.strText += strInnerText;
			this.aNodes[this.aNodes.length] = new DomTextNode( a_Node, nFrom );
		}
	}

	this.isWordMatch = function( a_strHlWord, a_strTextWord )
	{
		return a_strTextWord.indexOf(a_strHlWord.toLowerCase()) != -1;
	}
					 
	this.makeHighlightRanges = function()
	{
	
		if(typeof(gaSearchTerms[0]) == "undefined")
			return;

		var str = gaSearchTerms[0].toLowerCase();
		for(var j = 1; j < gaSearchTerms.length; j++)
		{
			str += "|" + gaSearchTerms[j].toLowerCase();
			
		}

		var regexp = new RegExp(str, "i");

		var aWords = dolSegment( this.strText );
		for ( var i = 0; i < aWords.length; i++ )
		{
			var n = new Object;
			n.index = 0;
			var prevLen = 0;
			var tmpStr1 = aWords[i].strWord.toLowerCase();

			while(n != null && n.index > -1)
			{
				n = regexp.exec(tmpStr1);

				if (n != null &&  n.index > -1 )
				{
					var strWord = n[0];
					this.aRanges[this.aRanges.length] = new ClosedRange( aWords[i].nCharLocation + prevLen + n.index,
								aWords[i].nCharLocation + prevLen + n.index + strWord.length);
					prevLen = prevLen + n.index + strWord.length;							
					tmpStr1 = tmpStr1.substring(n.index + strWord.length, tmpStr1.length);
				}
			}
		}
	}
	
	this.highlightNodes = function()
	{
		var nFrom = 0;
		for ( var i = 0; i < this.aNodes.length; i++ )
			nFrom = this.aNodes[i].doHighlight( this.aRanges, nFrom );
	}

	this.jump2FirstHighlightedWord = function()
	{
		if (gnYPos > 51)
			window.scrollTo(0, gnYPos-50);
	}
}

function processSuspendNodes( a_aNodes )
{
	if ( a_aNodes.length == 0 )
		return false;

	var dt = new DomTexts();

	//build dom texts...
	for ( var i = 0; i < a_aNodes.length; i++ )
	{
		var node = a_aNodes[i];
		if ( node.nodeType == 1 )
		{
			dt.addElementNode( node );
		}
		else if ( node.nodeType == 3 )
		{
			dt.addTextNode( node );
		}
	}
	
	dt.makeHighlightRanges();
	dt.highlightNodes();
	dt.jump2FirstHighlightedWord();
}

var s_strRecursiveTags = "sub sup img applet object br iframe embed noembed param area input " +
						 "select textarea button option hr frame noframes marquee label p dl " +
						 "div center noscript blockquote form isindex table fieldset address layer " +
						 "dt dd caption thead tfoot tbody tr th td lengend h1 h2 h3 h4 h5 h6 " +
						 "ul ol dir menu li pre xmp listing plaintext ins del";

function doesTagRecursiveProcess( a_Node )
{
	if ( a_Node == null )
		return false;

	var strTagName = a_Node.tagName.toLowerCase();
	var rg = "\\b" + strTagName + "\\b";
	var ss = s_strRecursiveTags.match( rg );
	return ss != null;
}

function doHighLightDomElement( a_aSuspendedNodes, a_Node )
{
	var childNodes = a_Node.childNodes;
	
	if ( childNodes == null || childNodes.length == 0 )
		return;

	var nLen = childNodes.length;
	for ( var i = 0; i < nLen; i++ )
	{
		var node = childNodes.item( i );
		if ( node == null )
			continue;

		if ( node.nodeType == 1 )
		{	//element
			if ( doesTagRecursiveProcess( node ) )
			{
				if ( a_aSuspendedNodes.length > 0 )
				{
					processSuspendNodes( a_aSuspendedNodes );
					a_aSuspendedNodes.length = 0;
				}
			}
			doHighLightDomElement( a_aSuspendedNodes, node );
		}
		else if ( node.nodeType == 3 )
		{	//text
			a_aSuspendedNodes[a_aSuspendedNodes.length] = node;
		}
	}
}

function highlightDocument()
{
	if ( !document.body || document.body == null )
		return;
		
	var aSuspendedNodes = new Array();
	doHighLightDomElement( aSuspendedNodes, document.body );
	processSuspendNodes( aSuspendedNodes );
}

function findSearchTerms(searchTerms, bSkip)
{
	if(searchTerms != "")
	{
		var sInput=searchTerms;
		var sCW="";
		var nS=-1;
		var nSep=-1;
		for(var nChar=0;nChar<gsFtsBreakChars.length;nChar++){
			var nFound=sInput.indexOf(gsFtsBreakChars.charAt(nChar));
			if((nFound!=-1)&&((nS==-1)||(nFound<nS))){
				nS=nFound;
				nSep=nChar;
			}
		}
		if(nS==-1){
			sCW=sInput;
			sInput="";
		}
		else
		{
			sCW=sInput.substring(0,nS);
			sInput=sInput.substring(nS+1);
		}

		searchTerms=sInput;
		
		var bAdd = true;
		if((sCW=="or")||(sCW=="|"))
		{
			bSkip = false;
			bAdd = false;
		}
		else if((sCW=="and")||(sCW=="&"))
		{	
			bSkip = false;
			bAdd = false;
		}
		else if((sCW=="not")||(sCW=="~"))
		{
			bSkip = true;
			bAdd = false;
		}

		if(bAdd && !bSkip && sCW!="" && sCW!=" ")
			gaSearchTerms[gaSearchTerms.length] = sCW;
		
		findSearchTerms(searchTerms, bSkip);
	}
	
}

function getElement(elementID) {
	var element = null;
	// See if the browser supports the functions we need to get to the element
	if (document.getElementById) {
		element = document.getElementById(elementID);
	} else if (document.all) {
		element = document.all(elementID);
	}
	return element;
} 

// Unload processing
function TopicUnloaded() {

	// Send the Cmd Topic Unloaded command
	SendCmdToSWF("CmdTopicUnloaded")
}

window.onunload = TopicUnloaded;

// project info
function setRelStartPage(sPath)
{
	if (gsPPath.length == 0)
	{
		gsPPath = _getFullPath(_getPath(document.location.href),  _getPath(sPath));
		gsStartPage = _getFullPath(_getPath(document.location.href), sPath);
		gsRelCurPagePath = _getRelativeFileName(gsStartPage, document.location.href);
	}
}

function addTocInfo(sTocPath)
{
	gaPaths[gaPaths.length] = sTocPath;
}

function addAvenueInfo(sName, sPrev, sNext)
{
	gaAvenues[gaAvenues.length] = new avenueInfo(sName, sPrev, sNext);	
}

function avenueInfo(sName, sPrev, sNext)
{
	this.sName = sName;
	this.sPrev = sPrev;
	this.sNext = sNext;
}

function _getNumLines(sLines)
{
	var nLines=1;
	var nStart=0;
	while(sLines.indexOf('\n',nStart)!=-1)
	{
		nLines++;
		nStart = sLines.indexOf('\n',nStart)+1;
	}
	return nLines;
}

function stringToRGB(color_str) {
	
	// First create a lowercase version of the string
	var lowercase_str = color_str.toLowerCase();
	var value = 0xFFFFFF;
	
	if (lowercase_str.charAt(0) == "#") {
		// Convert HEX
		value = parseInt(lowercase_str.substring(1, lowercase_str.length), 16);	
	} else {
		switch (lowercase_str) {
			case "white": value = 0xFFFFFF; break;
			case "black": value = 0x000000; break;
			case "red": value = 0xFF0000; break;
			case "green": value = 0x008000; break;
			case "blue": value = 0x0000FF; break;
			case "silver": value = 0xC0C0C0; break;
			case "gray": value = 0x808080; break;
			case "maroon": value = 0x800000; break;
			case "purple": value = 0x800080; break;
			case "fuchsia": value = 0xFF00FF; break;
			case "magenta": value = 0xFF00FF; break;
			case "lime": value = 0x00FF00; break;
			case "olive": value = 0x808000; break;
			case "yellow": value = 0xFFFF00; break;
			case "navy": value = 0x000080; break;
			case "teal": value = 0x008080; break;
			case "aqua": value = 0x00FFFF; break;
			case "cyan": value = 0x00FFFF; break;
			case "brown": value = 0xA52A2A; break;
			case "darkgray": value = 0xA9A9A9; break;
			case "lightblue": value = 0xADD8E6; break;
			case "tan": value = 0xD2B48C; break;
			case "lightgray": value = 0xD3D3D3; break;
			case "beige": value = 0xF5F5DC; break;
			case "orange": value = 0xFFA500; break;
			case "gold": value = 0xFFD700; break;
		}
	}
	
	return value;
}

function sendTopicLoaded()
{
	SendCmdToSWF("CmdTopicIsLoaded",1, gsRelCurPagePath);
}

function sendBgColorInfo()
{
	var bgColor = 0xFFFFFF; // default to white
	if ((document.bgColor != null) && (document.bgColor != "")) {
		bgColor = stringToRGB(document.bgColor);
	}
	SendCmdToSWF("CmdTopicBGColor", bgColor);	
}

function createSyncInfo()
{
	var sSyncInfo="";
	if (gaPaths.length <= 0)
		return "";
			
	if (gsPPath.length == 0)
		gsPPath = _getPath(document.location.href);
		
	sSyncInfo += gsPPath;
	sSyncInfo += "\n"+document.location.href;
	for(i=0;i<gaPaths.length;i++)
	{
		sSyncInfo += "\n"+ _getNumLines(gaPaths[i]) + "\n" +gaPaths[i];
	}
	return sSyncInfo;
}

function sendSyncInfo()
{	
	var sSyncInfo=createSyncInfo();	
	SendCmdToSWF("CmdSyncInfo",sSyncInfo);
}

function autoSync()
{
	var sSyncInfo=createSyncInfo();	
	SendCmdToSWF("CmdSyncTOC",sSyncInfo);	
}


function sendAveInfo()
{
	setTimeout("Do_sendAveInfo();", 100);
}

function Do_sendAveInfo()
{	
	var sAveInfo="";
	for(i=0;i<gaAvenues.length;i++)
	{
		sAveInfo+=gaAvenues[i].sName+"\n";
		sAveInfo+=gaAvenues[i].sPrev+"\n";
		sAveInfo+=gaAvenues[i].sNext;
		if(i != gaAvenues.length-1)
			sAveInfo+="\n";
	}
	SendCmdToSWF("CmdBrowseSequenceInfo",sAveInfo);
}

function highlightSearch()
{
	DoCommand("CmdGetSearchText");
	//this command will call highlight functions if needed.
}

function addShowButton()
{
	if(parent.gbFHPureHtml)
		return;	
	if(isInPopup())
		return;
	if(gsTopicbarOrder.indexOf("show") <0 )
		return;
	if(!isTopicOnly())
	{
		return;	
	}
	var sHTML = "";
	sHTML += "<table width=100%><tr>"	
	sHTML += "<td width=33%>";
	sHTML += "<div align=left>";
	sHTML += "<table cellpadding=\"2\" cellspacing=\"0\" border=\"0\"><tr>";
	sHTML += "<td><a class=\"whtbtnshow\" href=\"javascript:void(0);\" onclick=\"show();return false;\">Show</a></td></tr></table> ";
	sHTML += "</tr></table>";
	sHTML += "</div>";
	sHTML += "</tr></table>";
	document.write(sHTML);
	var sStyle = "<style type='text/css'>";
	sStyle+= ".whtbtnshow{font-family:;font-size:10pt;font-style:;font-weight:;text-decoration:;color:;}";
	sStyle+= "</style>";
	document.write(sStyle);
}

function show()
{
	if (gsStartPage != "")
		window.location =  gsStartPage + "#" + gsRelCurPagePath;
}

function isTopicOnly()
{
	if (gnTopicOnly == 1)
		return true;
	if (gnTopicOnly == 0)
		return false;
	if (parent == this)
		return true;
	if (gnTopicOnly == -1)
	{
		var oParam = new Object();
		oParam.isTopicOnly = false;
		SendCmdToSWF("CmdAskIsTopicOnly",oParam);
		if (oParam.isTopicOnly)
		{		
			gnTopicOnly = 1;
			return true;
		}
		else
		{
			gnTopicOnly = 0;
			return false;
		}
	}
}

function isInPopup()
{
	return (window.name.indexOf("BSSCPopup") != -1);
}

function PickupDialog_Invoke()
{
	if (typeof(wfRelatedTopic)=="function" && Number(gsSkinVersion) > 2 && IsFlashSupported())
	{
		return wfRelatedTopic(PickupDialog_Invoke.arguments);
	}
	if (!gbIE4 || gbMac || gbOpera)
	{
		if (typeof(wfRelatedTopic)=="function" && Number(gsSkinVersion) > 2 && IsFlashSupported())
			return wfRelatedTopic(PickupDialog_Invoke.arguments);
		else if (typeof(_PopupMenu_Invoke)=="function")
			return _PopupMenu_Invoke(PickupDialog_Invoke.arguments);
	}
	else
	{
		if (PickupDialog_Invoke.arguments.length > 2)
		{
			var sPickup = "wf_pickup.htm";
			if(sPickup.substr(0,2) == "%%")//WW: WWH_TODO delete it when release
				sPickup = "wf_pickup1.htm";
			var sPickupPath=gsPPath+sPickup; 
			if (gbIE4)
			{
				var sFrame = PickupDialog_Invoke.arguments[1];
				var aTopics = new Array();
				for (var i = 2; i< PickupDialog_Invoke.arguments.length; i+=2)
				{
					var j=aTopics.length;
					aTopics[j] = new Object();
					aTopics[j].m_sName=PickupDialog_Invoke.arguments[i];
					aTopics[j].m_sURL=PickupDialog_Invoke.arguments[i+1];
				}

				if (aTopics.length > 1)
				{
					var nWidth = 300;
					var nHeight =180;
					var	nScreenWidth=screen.width;
					var	nScreenHeight=screen.height;
					var nLeft=(nScreenWidth-nWidth)/2;
					var nTop=(nScreenHeight-nHeight)/2;
					if (gbIE4)
					{
						var vRet = window.showModalDialog(sPickupPath,aTopics,"dialogHeight:"+nHeight+"px;dialogWidth:"+nWidth+"px;resizable:yes;status:no;scroll:no;help:no;center:yes;");
						if (vRet)
						{
							var sURL = vRet.m_url;
							if (sFrame)
								window.open(sURL, sFrame);
							else
								window.open(sURL, "_self");
						}
					}
				}
				else if (aTopics.length == 1)
				{
					var sURL = 	aTopics[0].m_sURL
					if (sFrame)
						window.open(sURL, sFrame);
					else
						window.open(sURL, "_self");
				}
			}
		}
	}
}

function AddTopicSwf()
{
	var strTopicUrl = document.location.href;
	var strSvr = _getHost(strTopicUrl);
	var strPath = gsPPath;
	var strReportSwf = "wf_topic.swf";

	strSvr = escapeChar(strSvr);
	strTopicUrl = escapeChar(strTopicUrl);

	if (strSvr.indexOf("http://") == 0)
	{
		var strFlashVars = "";
		strFlashVars += "gsTopicUrl=" + strTopicUrl;
		strFlashVars += "&gsServer="+strSvr;
		var sHtml = "";
		sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
		sHtml += "id='reportSWF' ALIGN='' WIDTH='1px' HEIGHT='1px' VIEWASTEXT>";
		sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
		sHtml += "<PARAM NAME='movie' VALUE='"+strPath + strReportSwf + "'>";
		sHtml += "<PARAM NAME=quality VALUE=high>";
		sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
		sHtml += "<EMBED src='"+strPath+strReportSwf+"' quality=high  NAME='rlctrlSWF' BASE='"+strPath+"' swLiveConnect='true' WIDTH='2px' HEIGHT='1px' ALIGN='' ";
		sHtml += "FlashVars='" + strFlashVars + "' ";
		sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
		sHtml += "</EMBED>";
		sHtml += "</OBJECT>";	
		document.write(sHtml);	
	}
	
}


// Add a hidden layer to simulate scrollbar dragging if this is not a browser that can handle dynamic frame resizing
if (gbBsNS6) {
	var sHTML = "<div id='scrollbarDIV' style='LEFT:10px; WIDTH:3px; POSITION:absolute; TOP:0px; HEIGHT:100%; BACKGROUND-COLOR:lightgrey; visibility:hidden; Z-INDEX:100; BORDER-WIDTH:1px; BORDER-COLOR:darkgray; BORDER-RIGHT-STYLE:solid; BORDER-LEFT-STYLE:solid;'></div>";
	document.write(sHTML);
} else if (gbBsOpera) {
	var sHTML = "<div id='scrollbarDIV' style='LEFT:10px; WIDTH:5px; POSITION:absolute; TOP:0px; HEIGHT:100%; BACKGROUND-COLOR:lightgrey; visibility:hidden; Z-INDEX:100; BORDER-WIDTH:1px; BORDER-COLOR:#A9A9A9; BORDER-RIGHT-STYLE:solid; BORDER-LEFT-STYLE:solid;'></div>";
	document.write(sHTML);
} else if (gbBsNS4) {
	var sHTML = "<layer pagex='-10' pagey='0' width='4' height='100%' name='scrollbarLayer' visibility='hidden' bgcolor='lightgrey' z-index='100'></layer>";
	document.write(sHTML);
}


// Add a hidden layer to load the related topics dialog in
if (gbBsNS4 && !gbBsNS6) 
{
	var sHTML = "<layer pagex='-10' pagey='-10' width='1' height='1' name='relatedTopicsLayer' visibility='hide' z-index='100'></layer>";
}
else 
{
	var sHTML = "<DIV ID='relatedTopicsDIV' STYLE='position:absolute; left:0px; top:0px; z-index:4; visibility:hidden;'></DIV>"
}

document.write(sHTML);

var gRtXPos = 0;
var gRtYPos = 0;
var gRtWidth = 0;
var gRtHeight = 0;
var gsHtml = "";

var CHECK_RELATED_TIMEOUT = 600;
var gsFlashVars = "";
var gbRtLoaded = false;
var gbRtSized = false;
var gbRtOrigMouseDown = null;
var gRtTargetDoc = null;
var gsTargetFrame="";
var gbDivClicked = false;
var gbRtOpened = false;
var gsSwfLoader = "wf_related.swf"

var gsSkinIndexSwf = "skin_index.swf";
var gsSkinIndexFont = "font-family:Arial font-size:10pt font-weight:Normal font-style:Normal text-decoration:none font-color:Black";
var gsSkinIndexHighlight = "font-family:Arial font-size:10pt font-weight:Normal font-style:Normal text-decoration:underline font-color:#004477";
var gsSkinVersion="2.2";

// Assign default values
if (gsSkinIndexSwf.substr(0, 2) == "%%") 
{
	gsSkinIndexSwf = "skin_index.swf";
}

if (gsSkinIndexFont.substr(0, 2) == "%%") 
{
	gsSkinIndexFont = "font-family:Arial font-size:10pt font-weight:Normal font-style:Normal text-decoration:none font-color:Black";

}

if (gsSkinIndexHighlight.substr(0, 2) == "%%") 
{
	gsSkinIndexHighlight = "font-family:Arial font-size:10pt font-weight:Normal font-style:Normal text-decoration:underline font-color:#495C7A";

}

if (gsSkinVersion.substr(0, 2) == "%%") 
{
	gsSkinVersion="2.2";
}





function escapeChar(in_str)
{
	var out_str = in_str;

	out_str = replaceChar(out_str,'%');
	out_str = replaceChar(out_str,'\'');
	out_str = replaceChar(out_str,'&');
	out_str = replaceChar(out_str,'+');
	out_str = replaceChar(out_str,' ');

	return out_str;
}

function replaceChar(in_str, sChar)
{
	var out_str = in_str;
	var temp_str = "";
	var nOldIndex=0;
	var nIndex = out_str.indexOf(sChar);
	while (nIndex >= 0)
	{
		temp_str = out_str.substring(0,nIndex);
		temp_str +="%" + dec2hex(sChar.charCodeAt(0)) ;
		temp_str +=out_str.substring(nIndex+1);
		out_str = temp_str;
		nOldIndex = nIndex;
		nIndex = out_str.indexOf(sChar, nOldIndex+1);
	}
	return out_str;
}

function dec2hex(dec_num)
{
	// This function will convert a dec number <= 255 to a hex string
	var hex_str = "";
	var hexArray = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F");
	hex_str += hexArray[Math.floor(dec_num/16)];
	hex_str += hexArray[dec_num%16];
	return hex_str;	
}

function wfRelatedTopic(fn_arguments)
{
	var strPath = gsPPath;
	if (gbBsNS4 && !gbBsNS6)
	{
		strPath = escapeChar(gsPPath);
	}
	var argLen = fn_arguments.length;
	var e = fn_arguments[0];

	// Check to Make sure we have a valid number of parameters
	if (argLen < 3) 
	{
		return false;
	}
	
	var targetDoc = null;
	
	if (isInPopup())
	{
		targetDoc = parent;
	}
	else
	{
		targetDoc = this;
	}
	gRtTargetDoc = targetDoc;
	gsTargetFrame = fn_arguments[1];

	// If there is only one topic simply display this topic
	if (argLen < 4) 
	{
		if (targetDoc != null) 
		{
			targetDoc.location.href = fn_arguments[3];
		}
		else 
		{
			if (fn_arguments[1] != null && typeof(fn_arguments[1]) != "undefined")
			{
				window.open(fn_arguments[3], fn_arguments[1]);
			}
			else
			{
				window.open(fn_arguments[3]);
			}
		}
		return false;
	}
	// Display the popup window
	else
	{
		// If the browser does not support DOM or ILayer open a new window
		if ((gbBsOpera6 && !gbBsOpera7) || gbKonqueror)
		{
			RtWindowCtrl(fn_arguments)
			return;
		}

		// Build the Flash Var List
		var strFlashVars = "";
		strFlashVars += "nItemCount="+argLen;
		strFlashVars += "&gsSkinSwf="+gsSkinIndexSwf;
		strFlashVars += "&gsFont="+gsSkinIndexFont;
		strFlashVars += "&gsFontHighlight="+gsSkinIndexHighlight;

		if (gbBsNS6 || gbBsNS4 || gbSafari)
		{
			strFlashVars += "&nTopicHeight="+(window.innerHeight-16);
		}
		else
		{
			strFlashVars += "&nTopicHeight="+(document.body.offsetHeight-20);
		}
		
		for (var i = 2; i < argLen; i++)
		{
			strFlashVars += "&arrVal"+i+"="+escapeChar(fn_arguments[i]);
		}
		gsFlashVars = strFlashVars;

		// Build the SWF Object
		var sHtml = "";
		if (gbMac && gbBsIE)
		{
			sHtml += "<TABLE STYLE='border:2px outset white;' BGCOLOR=#c0c0c0 id='relatedTopicsTB' width='1px' height='1px' CELLSPACING=0> <TR><TD>";
		}
		var rtWidth = "100%";
		var rtHeight = "100%";
		if ((gbBsNS6 && !gbNav7) || gbMozilla)
		{
			rtWidth = "1";
			rtHeight = "1";
		}

		sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
		sHtml += "id='rlctrlSWF' ALIGN='' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' VIEWASTEXT>";
		sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
		sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsSwfLoader+"'>";
		sHtml += "<PARAM NAME=quality VALUE=high>";
		sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
		sHtml += "<EMBED src='"+strPath+gsSwfLoader+"' quality=high  NAME='rlctrlSWF' BASE='"+strPath+"' swLiveConnect='true' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' ALIGN='' ";
		sHtml += "FlashVars='" + strFlashVars + "' ";
		sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
		sHtml += "</EMBED>";
		sHtml += "</OBJECT>";
		if (gbMac && gbBsIE)
		{
			sHtml += "</TD></TR></TABLE>";
		}

		// Insert the SWF Object
		if (gbBsNS4 && !gbBsNS6) 
		{
			if (gbRtOpened)
			{
				closeRtCtrl();
				if (!gbMac && !gbWindows)
				{
					return;
				}
			}
			gbRtOpened = true;
			// Add an image otherwise NS4 will not render the swf
			sHtml += "<img src='"+strPath+"wf_loadswf.jpg'></img>";	
			gsHtml = sHtml;

			var rtLayer = document.layers["relatedTopicsLayer"];
			rtLayer.document.open();
			rtLayer.document.write(sHtml);
			rtLayer.document.close();
			gRtXPos = e.pageX;
			gRtYPos = e.pageY;
			gbRtSized = false;
			setTimeout("IsRtSized()",CHECK_RELATED_TIMEOUT);
		}
		else
		{
			var rtDiv = null;
			rtDiv = getElement("relatedTopicsDIV");
			rtDiv.style.visibility = "visible";
			rtDiv.innerHTML = sHtml;
			gRtXPos = e.clientX;
			gRtYPos = e.clientY;
			rtDiv.style.top  = 0;
			rtDiv.style.left = 0;
			rtDiv.style.width = 1;
			rtDiv.style.height= 1;
		
		}
		document.onmousedown = RtParentClicked;
		rtDiv.onmousedown = RtDivClicked;
	}
}

function RtDivClicked()
{
	gbDivClicked = true;
}

function sizeRtCtrl(rtWidth, rtHeight)
{
	var strPath = gsPPath;
	if (gbBsNS4 && !gbBsNS6)
	{
		strPath = escapeChar(gsPPath);
	}
	gbRtSized = true;
	rtWidth = Number(rtWidth);
	rtHeight = Number(rtHeight);

	// Get Window Height
	var nHeight = 0;

	if (gbBsNS6 || gbBsNS4 || gbSafari)
	{
		nHeight = window.innerHeight - 16;
	}
	else
	{
		nHeight = document.body.offsetHeight - 20;
	}

	// Set Y Position
	var scrollYOffset = 0;
	if (gbBsNS4 && !gbBsNS7)
	{
		scrollYOffset = window.pageYOffset;
	}
	else
	{
		scrollYOffset = document.body.scrollTop;
	}

	

	if (!gbBsNS4 || gbBsNS6)
	{
		if ((gRtYPos + rtHeight - scrollYOffset) > nHeight)
		{
			gRtYPos = scrollYOffset + nHeight - rtHeight;
		}
		else
		{
			gRtYPos += scrollYOffset;
			if (gRtYPos+rtHeight > scrollYOffset + nHeight)
			{
				gRtYPos = scrollYOffset + nHeight - rtHeight;
			}
		}
	}
	else
	{
		if (gRtYPos+rtHeight > scrollYOffset + nHeight)
		{
			gRtYPos = scrollYOffset + nHeight - rtHeight;
		}
	}

	// Get Window Width
	var nWidth = 0;

	if (gbBsNS6 || gbBsNS4 || gbSafari)
	{
		nWidth = window.innerWidth - 16;
	}
	else
	{
		nWidth = document.body.offsetWidth - 20;
	}

	// Set X Position
	var scrollXOffset = 0;
	if (gbBsNS4 && !gbBsNS7)
	{
		scrollXOffset = window.pageXOffset;
	}
	else
	{
		scrollXOffset = document.body.scrollLeft;
	}

	if (!gbBsNS4 || gbBsNS6)
	{
		if ((gRtXPos + rtWidth - scrollXOffset) > nWidth)
		{
			gRtXPos = scrollXOffset + nWidth - rtWidth;
		} 
		else 
		{
			gRtXPos += scrollXOffset;
			if (gRtXPos +rtWidth > scrollXOffset + nWidth)
			{
				gRtXPos = scrollXOffset + nWidth - rtWidth;
			}
		}
	}
	else
	{
		if (gRtXPos +rtWidth > scrollXOffset + nWidth)
		{
			gRtXPos = scrollXOffset + nWidth - rtWidth;
		}
	}


	if (gbBsNS4 && !gbBsNS6)
	{
		var rtLayer = document.layers["relatedTopicsLayer"];
		var strFlashVars = gsFlashVars + "&gnNoResize=1";
		gRtWidth = rtWidth;
		gRtHeight = rtHeight;
		// Rebuild flash object with correct width and height
		var sHtml = "";
		sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
		sHtml += "id='rlctrlSWF' ALIGN='' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' VIEWASTEXT>";
		sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
		sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsSwfLoader+"'>";
		sHtml += "<PARAM NAME=quality VALUE=high>";
		sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
		sHtml += "<EMBED src='"+strPath+gsSwfLoader+"' quality=high BASE='"+strPath+"' NAME='rlctrlSWF' swLiveConnect='true' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' ALIGN='' ";
		sHtml += "FlashVars='" + strFlashVars + "' ";
		sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
		sHtml += "</EMBED>";
		sHtml += "</OBJECT>";

		rtLayer.moveTo( gRtXPos, gRtYPos);
		rtLayer.resizeTo(rtWidth,rtHeight);
		rtLayer.document.open();
		rtLayer.document.write(sHtml);
		rtLayer.document.close();
		gbRtLoaded = false;
		setTimeout("IsRtLoaded()",CHECK_RELATED_TIMEOUT);
	}
	else if ((gbBsNS6 && !gbNav7) || gbMozilla)
	{
		var strFlashVars = gsFlashVars + "&gnNoResize=1";
		gRtWidth = rtWidth;
		gRtHeight = rtHeight;
		// Rebuild flash object with correct width and height
		var sHtml = "";
		sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
		sHtml += "id='rlctrlSWF' ALIGN='' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' VIEWASTEXT>";
		sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
		sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsSwfLoader+"'>";
		sHtml += "<PARAM NAME=quality VALUE=high>";
		sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
		sHtml += "<EMBED src='"+strPath+gsSwfLoader+"' quality=high BASE='"+strPath+"' NAME='rlctrlSWF' swLiveConnect='true' WIDTH='"+rtWidth+"' HEIGHT='"+rtHeight+"' ALIGN='' ";
		sHtml += "FlashVars='" + strFlashVars + "' ";
		sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
		sHtml += "</EMBED>";
		sHtml += "</OBJECT>";

		var rtDiv = null;
		rtDiv = getElement("relatedTopicsDIV");
		// moveTo
		rtDiv.style.top   = gRtYPos;
		rtDiv.style.left  = gRtXPos;
		// resizeTo
		rtDiv.style.width = rtWidth;
		rtDiv.style.height= rtHeight;

		rtDiv.innerHTML = sHtml;
	}
	else 
	{
		if (gbMac && gbBsIE)
		{
			var rtTable = getElement("relatedTopicsTB");
			rtTable.style.height = rtHeight;
			rtTable.style.width = rtWidth;		
		}

		rtDiv = getElement("relatedTopicsDIV");
		rtDiv.style.top   = gRtYPos;
		rtDiv.style.left  = gRtXPos;
		rtDiv.style.width = rtWidth;
		rtDiv.style.height= rtHeight;

		if (!isInPopup())
		{
			if (window.rlctrlSWF)
			{
				if (window.rlctrlSWF.focus)
				{
					window.rlctrlSWF.focus();
				}
			}
		}
	}
}


function IsRtSized()
{
	if (!gbRtSized)
	{
		var rtLayer = document.layers["relatedTopicsLayer"];
		rtLayer.document.open();
		rtLayer.document.write(gsHtml);
		rtLayer.document.close();
		setTimeout("IsRtSized()",CHECK_RELATED_TIMEOUT);
	}
}

function closeRtCtrl()
{
	gbRtOpened = false;
	if (gbBsNS4 && !gbBsNS6)
	{
		if (!gbMac && !gbWindows)
		{
			document.location.reload();
			return;
		}
		var rtLayer = document.layers["relatedTopicsLayer"];
		rtLayer.visibility="hide";
		rtLayer.resizeTo(1,1);
		rtLayer.moveTo( -10, -10);
		rtLayer.document.open();
		rtLayer.document.write("<TABLE>&nbsp;</TABLE>");
		rtLayer.document.close();
	}
	else
	{
		rtDiv = getElement("relatedTopicsDIV");
		rtDiv.innerHTML = "<TABLE>&nbsp;</TABLE>";
		rtDiv.style.visibility = "hidden";
	}
}


function RtClicked(strTopicURL)
{
	closeRtCtrl();
	if (gRtTargetDoc != null) 
	{
		if (gsTargetFrame != "")
		{
			gRtTargetDoc.window.open(strTopicURL,gsTargetFrame,"");
		}
		else
		{
			gRtTargetDoc.location.href = strTopicURL;
		}
	}
	else if (gsTargetFrame != "")
	{
		window.open(strTopicURL,gsTargetFrame,"");
	}
	else
	{
		window.location.href = strTopicURL;
	}
}


function IsRtLoaded()
{
	var rtLayer = document.layers["relatedTopicsLayer"];
	if (!gbRtLoaded && rtLayer.visibility !="show")
	{
		sizeRtCtrl(gRtWidth, gRtHeight);
	}
}

function RtLoaded()
{
	gbRtLoaded = true;
	var rtLayer = document.layers["relatedTopicsLayer"];
	rtLayer.visibility = "show";
}

function RtParentClicked()
{
	if (!gbDivClicked)
	{
		document.onmousedown = gbRtOrigMouseDown;
		closeRtCtrl();
	}
	else
	{
		gbDivClicked = false;
	}

	return true;
}

var gPopWnd = null;
var gfn_arguments = null;

function RtWindowCtrl(fn_arguments)
{
	var strPath = gsPPath;
	if (gbBsNS4 && !gbBsNS6)
	{
		strPath = escapeChar(gsPPath);
	}
	gfn_arguments = fn_arguments;
	if (gbBsOpera6 && gbMac && gPopWnd == null)
	{
		var wndOldPopupLinks= window.open(strPath+"wf_blank.htm", "popuptemp");
		wndOldPopupLinks.close();
		setTimeout("RtWindowCtrl2();",100);
	}
	else
	{
		RtWindowCtrl2();
	}
}

function RtWindowCtrl2()
{
	var strPath = gsPPath;
	if (gbBsNS4 && !gbBsNS6)
	{
		strPath = escapeChar(gsPPath);
	}
	var fn_arguments = gfn_arguments;

	if (gPopWnd != null)
	{
		if (gPopWnd.close)
			gPopWnd.close();
		gPopWnd = null;
		setTimeout("RtWindowCtrl2()",100);
		return false;
	}

	var argLen 	= fn_arguments.length;
	var e = fn_arguments[0];

	// Create the window
	var nHeight = 200;
	var nWidth = 200;
	gRtXPos = e.clientX;
	gRtYPos = e.clientY+30;

	var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=no,scrollbars=auto";
	strParam += ",height=" + nHeight + ",width="+nWidth;
	strParam += ",left="+ gRtXPos + ",top="+gRtYPos;

	// Build the Flash Var List
	var strFlashVars = "";
	strFlashVars += "nItemCount="+argLen;
	strFlashVars += "&gsSkinSwf="+gsSkinIndexSwf;
	strFlashVars += "&gsFont="+gsSkinIndexFont;
	strFlashVars += "&gsFontHighlight="+gsSkinIndexHighlight;
	strFlashVars += "&nTopicHeight="+nHeight;

	for (var i = 2; i < argLen; i++)
	{
		strFlashVars += "&arrVal"+i+"="+fn_arguments[i];
	}
	gsFlashVars = strFlashVars;
	gbRtSized = false;

	// Create the popup window
	var wndPopupLinks=null;
	wndPopupLinks= window.open(strPath+"wf_related.htm", "popuplinks", strParam);
	gPopWnd = wndPopupLinks;
	return false;
}

var gsWndParams = "";
function ResizeRtWindow(nWidth, nHeight)
{
	var xPos = 100;
	var yPos = 100;
	gPopWnd.close();
	gbRtSized = true;
	var strParam = "titlebar=no,toolbar=no,status=no,location=no,menubar=no,resizable=no,scrollbars=auto";
	strParam += ",height=" + nHeight + ",width="+nWidth;
	strParam += ",left="+ gRtXPos + ",top="+gRtYPos;
	gsWndParams = strParam;

	// Create the popup window
	setTimeout("OpenWindow()",100);


	return false;
}

function OpenWindow()
{
	var strPath = gsPPath;
	if (gbBsNS4 && !gbBsNS6)
	{
		strPath = escapeChar(gsPPath);
	}
	var wndPopupLinks=null;
	wndPopupLinks= window.open(strPath+"wf_related.htm", "popuplinks", gsWndParams);
	gPopWnd = wndPopupLinks;
}

// Flash Button
var gnBtnCount = 0;
var gsFHBtnSwf = "";
var gnLMargin = 20;
var gnRMargin = 20;
var gnTMargin = 0;
var gnBMargin = 0;

var gaRTTopics = new Array();


function AddRtTopics()
{
	var fn_arguments = arguments;
	var argLen = fn_arguments.length;
	var aTopics = new Array();
	var curIdx = gaRTTopics.length;

	if (argLen < 2)
		return false;

	gaRTTopics[curIdx] = new Object();
	gaRTTopics[curIdx].sBtnId = fn_arguments[0];
	gaRTTopics[curIdx].sTarget = fn_arguments[1];
	

	for (var i = 2; i < argLen; i++)
	{
		aTopics[i-2] = fn_arguments[i];	
	}
	gaRTTopics[curIdx].aTopics = aTopics;
}


function FHButton()
{
	var sBtnId = "fhbtn" + gnBtnCount;
	gnBtnCount++;
	var fn_arguments = arguments;
	var argLen = fn_arguments.length;

	if (argLen < 8)
	{
		return false;
	}	

	var nWidth = fn_arguments[0] + gnRMargin + gnLMargin;
	var nHeight = fn_arguments[1] + gnTMargin + gnBMargin;
	var strFontInfo = fn_arguments[2]
	var nPopup = fn_arguments[3];
	var strText = fn_arguments[4];
	var strImage = fn_arguments[5];
	var strTarget = fn_arguments[6];
	var strHtmlImage = fn_arguments[7];

	// Save topic list
	var strCode = "AddRtTopics('" + sBtnId + "', '" + strTarget + "'";
	for (var i = 8; i < argLen; i++)
	{
		strCode += ", '" + fn_arguments[i] + "'";
	}
	strCode += ")";

	eval(strCode);

	// Get Topic List for HTML RT Button
	var strHtmlParam = "";
	for (var i = 8; i < argLen; i++)
	{
		strHtmlParam += ", '" + fn_arguments[i] + "'";
	}

	var strPath = gsPPath;

	var bgColor = 0xFFFFFF; // default to white
	if ((document.bgColor != null) && (document.bgColor != "")) {
		bgColor = stringToRGB(document.bgColor);
	}

	var strFlashVars = "";
	strFlashVars += "gsFontInfo=" + strFontInfo;
	strFlashVars += "&gsBtnText=" + strText;
	strFlashVars += "&gsBtnImage=" + strImage;
	strFlashVars += "&gBGColor=" + bgColor;
	strFlashVars += "&gsBtnId=" + sBtnId;

	var sHtml = "";

	if (gbNav4 || gbOpera || gsFHBtnSwf == "")
	{
		if (strHtmlParam != "")
		{
			nWidth = fn_arguments[0];
			nHeight = fn_arguments[1];
			sHtml += "<a href='javascript:void(0);'";
			sHtml += "onClick=\"var e;";
			sHtml += "if (parseInt(navigator.appVersion)>=4)";
			sHtml += "{e=event;}";
			sHtml += "if (parseInt(navigator.appVersion) >=2 && typeof(PickupDialog_Invoke) == 'function')";
			sHtml += "PickupDialog_Invoke(e,''"+strHtmlParam+");";
			sHtml += "return false;\"";
			sHtml += "title='Related Topics'>";
			sHtml += "<img src='"+strHtmlImage+"' border=0 height="+nHeight+" width="+ nWidth +" alt='Related Topics'>";
			sHtml += "</a>";
		}
	}
	else
	{
		sHtml += "<OBJECT classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0'";
		sHtml += "id='" + sBtnId +"' ALIGN='' WIDTH='"+nWidth+"' HEIGHT='"+nHeight+"' VIEWASTEXT>";
		sHtml += "<PARAM NAME='base' value='"+strPath+"'>";
		sHtml += "<PARAM NAME='movie' VALUE='"+strPath+gsFHBtnSwf+"'>";
		sHtml += "<PARAM NAME=quality VALUE=high>";
		sHtml += "<PARAM NAME=FlashVars VALUE='" + strFlashVars + "'>";
		sHtml += "<EMBED src='"+strPath+gsFHBtnSwf+"' quality=high BASE='"+strPath+"' NAME='"+ sBtnId +"' swLiveConnect='true' WIDTH='"+nWidth+"' HEIGHT='"+nHeight+"' ALIGN='' ";
		sHtml += "FlashVars='" + strFlashVars + "' ";
		sHtml += "TYPE='application/x-shockwave-flash' PLUGINSPAGE='http://www.macromedia.com/go/getflashplayer'>";
		sHtml += "</EMBED>";
		sHtml += "</OBJECT>";
	}
	document.write(sHtml);
}

function FHBtnClicked(strBtnId, dx, dy)
{
	
	var fhBtn = getElement(strBtnId);
	
	
	var scrollYOffset = 0;
	var scrollXOffset = 0;

	scrollXOffset = document.body.scrollLeft;
	scrollYOffset = document.body.scrollTop;

	// create event
	var event = new Object();

	event.clientX = fhBtn.offsetLeft + dx - scrollXOffset;
	event.pageX = fhBtn.offsetLeft + dx - scrollXOffset;
	event.clientY = fhBtn.offsetTop + dy - scrollYOffset;
	event.pageY = fhBtn.offsetTop + dy - scrollYOffset;

	var strCode = "";
	strCode = "PickupDialog_Invoke(event,";

	// Get Topics
	for (var i = 0; i < gaRTTopics.length; i++)
	{
		if (gaRTTopics[i].sBtnId == strBtnId)
		{
			strCode += "'" + gaRTTopics[i].sTarget + "'";
			var nCount = gaRTTopics[i].aTopics.length;
			for (var j = 0; j < nCount; j++)
			{
				strCode += ", '" + gaRTTopics[i].aTopics[j] + "'";
			}
		}
	}
	strCode += ")";
	eval(strCode);
}






