123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- /*
- Licensed Materials - Property of IBM
- BI and PM: DOCS
- © Copyright IBM Corp. 1999, 2009.
- US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
- */
- var globalLastSyncNode;
- var globalMenuObj;
- var globalBookName;
- window.onload = SetUp;
- function findSync()
- {
- var ank = parent.content.location.hash;
- var anySearch = parent.content.location.search;
- var nPos = parent.content.location.href.lastIndexOf('/');
- var sFilenameID = (nPos != -1) ? parent.content.location.href.substring( nPos+1, parent.content.location.href.length ) : "";
- var sSyncSuccess = false;
- if( anySearch ) {
- var searchPos = sFilenameID.lastIndexOf('?');
- sFilenameID = (searchPos != -1) ? sFilenameID.substring( 0, searchPos ) : sFilenameID;
- }
- if( ank && sFilenameID ) {
- sSyncSuccess = syncMe( sFilenameID );
- }
- else {
- var tempObjList = parent.content.document.getElementsByTagName('body');
- if( tempObjList[0] ) {
- var firstAobj = myFindFirstChildElementOfType( myFindFirstChildElementOfType( tempObjList[0], 'h2' ), 'a' );
- if( firstAobj != null ) {
- if( firstAobj.name ) {
- sSyncSuccess = syncMe( sFilenameID + "#" + firstAobj.name );
- }
- }
- else {
- firstAobj = myFindFirstChildElementOfType( tempObjList[0], 'a' );
- if( firstAobj != null ) {
- var nextSibA = firstAobj.nextSibling;
- if( nextSibA != null ) {
- if( nextSibA.nodeType == 1 && nextSibA.tagName.toLowerCase() == 'a' && nextSibA.name ) {
- sSyncSuccess = syncMe( sFilenameID + "#" + nextSibA.name );
- }
- }
- }
- }
- }
- }
- if( !sSyncSuccess ) {
- // no success yet
- // track down the numeric id and sync to that
- nPos = ank.lastIndexOf('#');
- var sNameAnchor = (nPos != -1) ? ank.substring( nPos+1, ank.length ) : "";
- //check to see if the anchor actually exists otherwise don't bother trying to sync cus it don't exist
- if ( parent.content.document.getElementsByName( sNameAnchor ).length > 0) {
- var sNameAnchorParentElementFirstAobj = myFindFirstChildElementOfType( parent.content.document.getElementsByName( sNameAnchor ).item(0).parentNode, 'a' );
- var sFilenameOnlyPos = sFilenameID.lastIndexOf('#');
- var sFilenameOnly = (sFilenameOnlyPos != -1) ? sFilenameID.substring( 0, sFilenameOnlyPos ) : sFilenameID;
- if( sNameAnchorParentElementFirstAobj != null ) {
- sSyncSuccess = syncMe( sFilenameOnly + "#" + sNameAnchorParentElementFirstAobj.name );
- }
- }
- }
- }
- function syncMe( objID, noHighlight )
- {
- if( document.getElementById( objID ) ) {
- var objShowMeLi = document.getElementById( objID ).parentNode;
- var objShowMeLiRecurseTemp = objShowMeLi;
- if( globalLastSyncNode ) globalLastSyncNode.style.background = '#FFFFFF';
- do {
- updateAllChildElementsOf( myFindFirstChildElementOfType( objShowMeLiRecurseTemp, 'ul' ) );
- objShowMeLiRecurseTemp = objShowMeLiRecurseTemp.parentNode.parentNode;
- } while( objShowMeLiRecurseTemp.tagName.toLowerCase() == 'li' )
- objShowMeLiRecurseTemp = objShowMeLi;
- var tempMainMenuObj = document.getElementById( 'maintocnav' );
- do {
- var parentTreeLiElement = objShowMeLiRecurseTemp.parentNode.parentNode;
- if( parentTreeLiElement.tagName.toLowerCase() == 'li' ) {
- var tempIMGNode = myFindFirstChildElementOfType( myFindFirstChildElementOfType( parentTreeLiElement, 'a'), 'img' );
- if( parentTreeLiElement.parentNode == tempMainMenuObj ) {
- tempIMGNode.src = 'common/oMinus_root.gif';
- }
- else {
- if( myFindLastChildElement( parentTreeLiElement.parentNode ) == parentTreeLiElement )
- tempIMGNode.src = 'common/oLminus.gif';
- else
- tempIMGNode.src = 'common/oTminus.gif';
- }
- }
- objShowMeLiRecurseTemp.parentNode.style.display = 'block';
- objShowMeLiRecurseTemp = objShowMeLiRecurseTemp.parentNode.parentNode;
- } while( objShowMeLiRecurseTemp.tagName.toLowerCase() == 'li' )
- if( !noHighlight ) {
- globalLastSyncNode = myFindFirstChildElementOfType( objShowMeLi ).nextSibling; // nextSibling reliable in mozilla?
- if( globalLastSyncNode ) globalLastSyncNode.style.background = '#DEEEFF';
- window.scroll ( 0, ( findPosY(objShowMeLi)-findMiddle() ) );
- }
- savestate();
- return true ;
- }
- else {
- return false ;
- }
- }
- function vState( state )
- {
- var objNested = globalMenuObj.getElementsByTagName('ul');
- for (var i=0; i<objNested.length; i++)
- {
- updateAllChildElementsOf( myFindFirstChildElementOfType( objNested[i].parentNode, 'ul' ) );
- var parentTreeLiElement = objNested[i].parentNode;
- if( parentTreeLiElement.tagName.toLowerCase() == 'li' ) {
- var tempIMGNode = myFindFirstChildElementOfType( myFindFirstChildElementOfType( parentTreeLiElement, 'a'), 'img' );
- if( parentTreeLiElement.parentNode == globalMenuObj ) {
- if( state )
- tempIMGNode.src = 'common/oMinus_root.gif';
- else
- tempIMGNode.src = 'common/oPlus_root.gif';
- }
- else {
- if( myFindLastChildElement( parentTreeLiElement.parentNode ) == parentTreeLiElement ) {
- if( state )
- tempIMGNode.src = 'common/oLminus.gif';
- else
- tempIMGNode.src = 'common/oLplus.gif';
- }
- else {
- if( state )
- tempIMGNode.src = 'common/oTminus.gif';
- else
- tempIMGNode.src = 'common/oTplus.gif';
- }
- }
- }
- if( state ) objNested[i].style.display = 'block';
- else objNested[i].style.display = 'none';
- }
- }
- function cState(objMenuitem, objEvent, justOpen)
- {
- var iKeyCode;
- if (objEvent && objEvent.type == 'keypress')
- {
- if (objEvent.keyCode)
- iKeyCode = objEvent.keyCode;
- else if (objEvent.which)
- iKeyCode = objEvent.which;
- if (iKeyCode != 13 && iKeyCode != 32)
- return true;
- }
- if( globalLastSyncNode ) {
- globalLastSyncNode.style.background='#FFFFFF';
- globalLastSyncNode = null;
- }
- var tempIMGNode = myFindFirstChildElementOfType( myFindFirstChildElementOfType( objMenuitem.parentNode, 'a'), 'img' );
- updateAllChildElementsOf( myFindFirstChildElementOfType( objMenuitem.parentNode, 'ul' ) );
- var tempUlNode = myFindFirstChildElementOfType( objMenuitem.parentNode, 'ul' );
- if (tempUlNode.style.display == 'block') {
- if( ! justOpen ) {
- tempUlNode.style.display = 'none';
- if( objMenuitem.parentNode.parentNode == globalMenuObj )
- tempIMGNode.src = 'common/oPlus_root.gif';
- else {
- if( myFindLastChildElement( objMenuitem.parentNode.parentNode ) == objMenuitem.parentNode )
- tempIMGNode.src = 'common/oLplus.gif';
- else
- tempIMGNode.src = 'common/oTplus.gif';
- }
- }
- }
- else {
- if( objMenuitem.parentNode.parentNode == globalMenuObj )
- tempIMGNode.src = 'common/oMinus_root.gif';
- else {
- if( myFindLastChildElement( objMenuitem.parentNode.parentNode ) == objMenuitem.parentNode )
- tempIMGNode.src = 'common/oLminus.gif';
- else
- tempIMGNode.src = 'common/oTminus.gif';
- }
- tempUlNode.style.display = 'block';
- }
- savestate();
- if( ! objMenuitem.target ) return false;
- }
- function SetUp()
- {
- if (document.getElementById && document.createElement)
- {
- globalMenuObj = document.getElementById('maintocnav');
- var tempObjBody = document.getElementsByTagName('body');
- globalBookName = tempObjBody.id;
- var ldtocImg = document.getElementById('ldtocimg');
- if( globalMenuObj ) globalMenuObj.style.display = 'block';
- if( ldtocImg ) ldtocImg.style.display = 'none';
- updateAllChildElementsOf( globalMenuObj );
- }
- findSync();
- }
- function updateAllChildElementsOf( obj ) {
- if( obj ) {
- var isRoot = ( (obj == globalMenuObj) ? true : false );
- var liChildNodes = obj.childNodes;
- for (var i=0; i<liChildNodes.length; i++)
- {
- if( liChildNodes[i].nodeType == 1 ) {
- if( liChildNodes[i].tagName.toLowerCase() == 'li' ) {
- var childULnode = myFindFirstChildElementOfType( liChildNodes[i], 'ul' );
- if( ! childULnode && ! myFindFirstChildElementOfType( liChildNodes[i], 'img' ) ) {
- var imgLinkTopic = document.createElement('img');
- if( myFindLastChildElement( liChildNodes[i].parentNode, 'First' ) == liChildNodes[i] )
- imgLinkTopic.src = isRoot ? 'common/spacer.gif' : 'common/oL.gif';
- else
- imgLinkTopic.src = isRoot ? 'common/spacer.gif' : 'common/oT.gif';
- imgLinkTopic.height = '20';
- imgLinkTopic.width = '16';
- imgLinkTopic.border = '0';
- var initialAnchorElement = myFindFirstChildElementOfType( liChildNodes[i], 'a' );
- initialAnchorElement.onmouseover = function(event){return oMover(this);}
- initialAnchorElement.onmouseout = function(event){return oMout(this);}
- initialAnchorElement.onclick = function(event){ if( globalLastSyncNode ) { globalLastSyncNode.style.background='#FFFFFF'; globalLastSyncNode = null; }; return true; }
- if( ! initialAnchorElement.target ) initialAnchorElement.target = 'content';
- liChildNodes[i].insertBefore( imgLinkTopic, initialAnchorElement );
- }
- else if ( childULnode && ! myFindFirstChildElementOfType( myFindFirstChildElementOfType( liChildNodes[i], 'a' ), 'img' ) ) {
- childULnode.style.display = 'none';
- var imgLinkAction = document.createElement('img');
- if( myFindLastChildElement( liChildNodes[i].parentNode, 'Second' ) == liChildNodes[i] )
- imgLinkAction.src = isRoot ? 'common/oPlus_root.gif' : 'common/oLplus.gif';
- else
- imgLinkAction.src = isRoot ? 'common/oPlus_root.gif' : 'common/oTplus.gif';
- imgLinkAction.height = '20';
- imgLinkAction.width = '26';
- imgLinkAction.border = '0';
- var objAnchor = document.createElement('a');
- objAnchor.href = '#';
- objAnchor.onclick = function(event){return cState(this, event);}
- objAnchor.onkeypress = function(event){return cState(this, event);}
- objAnchor.onmouseover = function(event){return oMover(this.nextSibling);}
- objAnchor.onmouseout = function(event){return oMout(this.nextSibling);}
- objAnchor.appendChild(imgLinkAction);
- var initialAnchorElement = myFindFirstChildElementOfType( liChildNodes[i], 'a' );
- initialAnchorElement.onclick = function(event){return cState(this, event, true);}
- initialAnchorElement.onkeypress = function(event){return cState(this, event, true);}
- initialAnchorElement.onmouseover = function(event){return oMover(this);}
- initialAnchorElement.onmouseout = function(event){return oMout(this);}
- if( ! initialAnchorElement.target ) initialAnchorElement.target = 'content';
- liChildNodes[i].insertBefore( objAnchor, myFindFirstChildElementOfType( liChildNodes[i], 'a' ) );
- }
- }
- }
- }
- }
- }
- function myFindFirstChildElementOfType( obj, type ) {
- if( obj ) {
- var ulChildNodes = obj.childNodes;
- var ulChildNode = ulChildNodes[0];
- while( ulChildNode ) {
- if( ulChildNode.nodeType == 1 ) {
- if( type && ulChildNode.tagName.toLowerCase() == type ) {
- return ulChildNode;
- }
- else if( !type ) {
- return ulChildNode;
- }
- }
- ulChildNode = ulChildNode.nextSibling;
- }
- return null;
- }
- else return null;
- }
- function myFindLastChildElement( obj, str ) {
- if( obj ) {
- var gotMatch = false;
- var ulChildNodes = obj.childNodes;
- var ulChildNode = obj.lastChild; // Select last node in list.
- while( ulChildNode ) {
- if( ulChildNode.nodeType == 1 ) {
- return ulChildNode;
- }
- ulChildNode = ulChildNode.previousSibling;
- }
- return null;
- }
- else return null;
- }
- function findPosY( obj )
- {
- var curtop = 0;
- if ( obj.offsetParent )
- {
- while ( obj.offsetParent )
- {
- curtop += obj.offsetTop
- obj = obj.offsetParent;
- }
- }
- else if (obj.y)
- curtop += obj.y;
- return curtop;
- }
- function findMiddle() {
- var myHeight = 0;
- if( typeof( window.innerHeight ) == 'number' ) {
- myWidth = window.innerWidth;
- }
- else if( document.documentElement && document.documentElement.clientHeight ) {
- myHeight = document.documentElement.clientHeight;
- }
- else if( document.body && document.body.clientHeight ) {
- myHeight = document.body.clientHeight;
- }
- else if( window.height ) {
- myHeight = window.height;
- }
- if( myHeight ) return ( myHeight/2 );
- else return 100;
- }
- function oMout( objHighlight )
- {
- if( objHighlight && objHighlight != globalLastSyncNode ) objHighlight.style.background='#FFFFFF';
- return true;
- }
- function oMover( objHighlight )
- {
- window.status='';
- if( objHighlight && objHighlight != globalLastSyncNode ) objHighlight.style.background='#DEEEFF';
- return true;
- }
- function savestate()
- {
- var statestr = '';
- var currentID = '';
- var allULs = globalMenuObj.getElementsByTagName('ul');
- for( var i=0; i<allULs.length; i++ )
- if( allULs[i].style.display == 'block' ) {
- var firstAnchorObj = myFindFirstChildElementOfType( myFindFirstChildElementOfType( allULs[i], 'li' ), 'a' );
- if( firstAnchorObj.id )
- currentID = firstAnchorObj.id;
- else if( firstAnchorObj.nextSibling.id )
- currentID = firstAnchorObj.nextSibling.id;
- statestr = statestr + currentID + '+';
- }
- if( statestr.charAt(statestr.length-1) == '+' )
- statestr = statestr.substring(0,(statestr.length-1));
- }
|