function NavController( navigationFrameName, navigationDivName, contentFrameName,
headerFrameName, headerDivName, headerImageDivName ){
this.navFrameName  = navigationFrameName ? navigationFrameName : "PageNavigation";
this.navDivName   = navigationDivName ? navigationDivName : "navdiv";
this.contentFrameName = contentFrameName ? contentFrameName : "PageContent";
this.headerFrameName = headerFrameName ? headerFrameName : "PageHeader";
this.headerDivName  = headerDivName ? headerDivName : "hdrcontent";
this.headerImageDivName = headerImageDivName ? headerImageDivName : "divImage";
this.navDocument  =top.frames[ this.navFrameName ].document;
this.contentDocument=top.frames[ this.contentFrameName ].document;
this.headerDocument =top.frames[ this.headerFrameName ].document;
this.navDivHTML  ="";
var SPACER_GAP  =10;
var DEFAULT_COLS  =3;
NavController.prototype.addButtons   =_addButtons;
NavController.prototype.addHideShow   =_addHideShow;
NavController.prototype.addHTMLContent  =_addHTMLContent;
NavController.prototype.addLinks   =_addLinks;
NavController.prototype.addMixed   =_addMixed;
NavController.prototype.clear    =_clear;
NavController.prototype.initFrameset  =_initFrameset;
NavController.prototype.writeNavigation  =_writeNavigation;
NavController.prototype._buildPageNavigation=__buildPageNavigation;
NavController.prototype._getBottomSection =__getBottomSection;
NavController.prototype._getPath   =__getPath;
NavController.prototype._getTopSection  =__getTopSection;
NavController.prototype._useBuffer  =__useBuffer;
function _addButtons( caption, buttonsArray, instructions, useMouseOver ){
var path=__getPath();
var columns=DEFAULT_COLS;
var content=__getTopSection( path, caption, columns );
content+=__buildButtonSection( this.navFrameName, this.headerFrameName,
this.contentFrameName, buttonsArray, instructions, columns, useMouseOver );
if( instructions ){
content+=__getBottomSection( path, instructions, columns );
}
if( __useBuffer()){
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, content );
}
this.navDivHTML+=content+__getSpacer( SPACER_GAP );
}
function _addHideShow( navPageFramesetName ){
var content =
'<br>' +
'<table width="155px" border="0" cellspacing="0" cellpadding="0" bgcolor="#ffffff">' +
'<tr height="36">' +
'<td valign="top">&nbsp;</td>' +
'<td align="center" valign="middle"> ' +
' <a class="hideshow" title="Toggle display of the navigation frame" ' +
' href="javascript: function showHideNav(){ ' +
'if ( ' +
'    top[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.display==\'block\' ){ ' +
'    top[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.width=\'1px\';' +
'    top[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.display=\'none\';' +
'    top.getElement(\''+navPageFramesetName+'\').cols=\'15,*\';' +
'    top[\''+this.navFrameName+'\'].focus();' +
'    top[\''+this.contentFrameName+'\'].focus();' +
'    top[\''+this.navFrameName+'\'].focus();' +
'} else {' +
'    top[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.display=\'block\';' +
'    top.getElement(\''+navPageFramesetName+'\').cols=\'185,*\';' +
'}' +
'}' +
';showHideNav();">' +
' Hide/Show Navigation</a></td>' +
'<td valign="bottom" align="right">&nbsp;</td>' +
'</tr></table>';
__getElement( this.headerDocument, this.headerImageDivName ).innerHTML=content;
}
function _addHTMLContent( htmlContent ){
if( __useBuffer()){
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, htmlContent );
}
this.navDivHTML+=htmlContent+__getSpacer( SPACER_GAP );
}
function _addLinks( linksArray, caption, instructions ){
var columns=DEFAULT_COLS;
for( var i=0;i!=linksArray.length;++i ){
if( linksArray[i][2] ){
columns++;
break;
}
}
var usingDataIndicators=columns > DEFAULT_COLS;
var path=__getPath();
var content=__getTopSection( path, caption, columns );
content+=__buildLinkSection( linksArray, instructions, this.contentFrameName, usingDataIndicators );
if( instructions ){
content+=__getBottomSection( path, instructions, columns );
}
if( __useBuffer()){
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, content );
}
this.navDivHTML+=content+__getSpacer( SPACER_GAP );
}
function _addMixed( caption, itemsArray, useMouseOver, instructions ){
var columns=DEFAULT_COLS;
for( var i=0;i!=itemsArray.length;++i ){
var isLinkSection = ( typeof( itemsArray[i] ) == "object" && typeof( itemsArray[i][0] ) == "object" );
if( isLinkSection ){
for( var j=0;j!=itemsArray[i].length;++j ){
if( itemsArray[i][j][2] ){
columns++;
break;
}
}
}
}
var midContent="";
var dummyInstructions = " ";
for( var i=0;i!=itemsArray.length;++i ){
switch ( typeof( itemsArray[i] ) ){
case "object":
switch ( typeof( itemsArray[i][0] ) ){
case "object":
var usingDataIndicators=columns > DEFAULT_COLS;
midContent+=__buildLinkSection( itemsArray[i], dummyInstructions,
this.contentFrameName, usingDataIndicators );
break;
case "undefined":
midContent+=__buildButtonSection( this.navFrameName, this.headerFrameName,
this.contentFrameName, itemsArray[i],
dummyInstructions, columns, useMouseOver );
break;
}
break;
case "string":
midContent+=itemsArray[i];
if(!dummyInstructions)
{
midContent+='</table>';
}
break;
default:
midContent += "<tr><td colspan=\"3\">Unknown section type!</td></tr>";
break;
}
var isLastSection=( i==itemsArray.length-2 );
if( ( ! instructions )&& isLastSection ) dummyInstructions="";
}
var topContent=__getTopSection( __getPath(), caption, columns );
var content=topContent+midContent;
if( instructions ){
content+=__getBottomSection( __getPath(), instructions, columns );
}
if( __useBuffer()){
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, content );
}
this.navDivHTML+=content+__getSpacer( SPACER_GAP );
}
function _clear(){
if( this.navDocument.all||this.navDocument.getElementById ){
__getElement( this.navDocument, this.navDivName ).innerHTML="";
} else {
parent[this.navFrameName].getElement( this.navDivName ).document.clear();
parent[this.navFrameName].getElement( this.navDivName ).document.write( "" );
parent[this.navFrameName].getElement( this.navDivName ).document.close();
}
this.navDivHTML="";
}
function _initFrameset( navPageFramesetName, resetNavFrame, isReport ){
if( resetNavFrame ){
top.getElement( navPageFramesetName ).cols = "185,*";
this.navDocument.getElementById( this.navDivName ).style.display = "block";
}
if( document.getElementById ){
this.headerDocument.getElementById( this.headerDivName ).style.marginRight = isReport ? "25px" : "10%";
top.getElement( "ContentFrames" ).rows = "*,0";
}
}
function _writeNavigation(){
if(!__useBuffer())
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, this.navDivHTML )
}
function __applyNewHTML( elementId, content, frameName ){
if( document.all||document.getElementById ){
var curContent=__getElement( parent[ frameName ].document, elementId ).innerHTML;
__getElement( parent[ frameName ].document, elementId ).innerHTML=curContent+content;
} else {
__getElement( parent[ frameName ].document, elementId ).document.clear();
__getElement( parent[ frameName ].document, elementId ).document.write( content );
__getElement( parent[ frameName ].document, elementId ).document.close();
}
}
function __buildButtonSection( navFrame, headerFrame, contentFrame, buttons,
instructions, columns, useMouseOver ){
if( typeof useMouseOver == "undefined" ){ useMouseOver = true };
var colSpan=1;
if( columns > DEFAULT_COLS ){
colSpan+=( columns-DEFAULT_COLS );
}
var path=__getPath();
var numButtons=0;
for( button in buttons ){
numButtons++;
}
var buttonNum=0;
var buttonHTML='';
for( buttonName in buttons ){
buttonNum++;
var calledFunction='parent.'+contentFrame+'.'+buttons[ buttonName ][ 0 ];
var args=buttons[ buttonName ][ 1 ];
if( useMouseOver ){
__MM_preloadImages( top[navFrame].buttonarray[ buttonName ].overimage );
}
buttonHTML+='<tr>' +
'<td>&nbsp;</td>' +
'<td class="navboxcontent" colspan="' + colSpan + '" ' +
( useMouseOver ? '' : 'style="padding:2"' ) + '>' +
'<a id="anc'+buttons[ buttonName ] +
'" href="JavaScript: if ( ( typeof ' + calledFunction + ' == \'function\' ) ' +
'&& ( ! top.'+headerFrame+'.submitting) ) ' +
calledFunction+'('+args+')"';
if( useMouseOver ){ buttonHTML += ' onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage(\'' +
buttonName+'\',\'\',\''+top[navFrame].buttonarray[ buttonName ].overimage +
'\',1)"';
}
buttonHTML+='><img alt="'+top[navFrame].buttonarray[ buttonName ].alt +
'" src="' + top[navFrame].buttonarray[ buttonName ].upimage +
'" border="0" id="' + buttonName + '" name="' + buttonName + '"></a></td>';
var endCell='<td>&nbsp;</td>';
if( ! instructions&&buttonNum==numButtons ){
endCell = '<td valign="bottom" align="right"></td>';
}
buttonHTML+=endCell+'</tr>';
}
if( ! instructions){ buttonHTML+='</table>' };
return buttonHTML;
}
function __buildLinkSection( linksArray, instructions, contentFrame, usingDataIndicators ){
var linkHTML='';
for( var i=0;i!=linksArray.length;++i ){
var className = ( usingDataIndicators && linksArray[ i ][ 2 ] ) ? "navboxlinkdata" : "navboxlink";
if( linksArray[ i ][ 1 ].indexOf( ".htm")!= -1 ){
var linkText = '<a class="' + className + '" ' +
'href="' + linksArray[ i ][ 1 ] + '" target="' + contentFrame +
'" title="' + linksArray[ i ][ 0 ] + '"> ' + linksArray[ i ][ 0 ] + ' </a>';
} else {
var linkText = '<a class="' + className + '" ' +
'href="javascript: function goToAnchor(){ parent.'+contentFrame+'.location.hash=' +
"'" + linksArray[ i ][ 1 ] + "'};goToAnchor();" + ' ">' + linksArray[ i ][ 0 ] + '</a>';
}
linkHTML += '<tr><td>&nbsp;</td><td class="navlinkbcground">' + linkText + '</td>';
var endCell = '<td class="navlinkbcground">&nbsp;</td>';
if( ! instructions&&i==linksArray.length-1  ){
endCell = '<td class="navlinkbcground" valign="bottom" align="right"></td>';
}
if( usingDataIndicators ){
linkHTML+=linksArray[ i ][ 2 ] ? '<td><img src=\'images/bk_tick.gif\'></td>':'<td>&nbsp;</td>';
}
linkHTML+=endCell+'</tr>';
}
if( ! instructions){ linkHTML+='</table>' };
return linkHTML;
}
function __buildPageNavigation( navFrameName, navDocument, navDivName, content ){
var curContent=__getElement( navDocument, navDivName ).innerHTML;
if( curContent ){
content=__getSpacer( SPACER_GAP )+content;
}
__applyNewHTML( navDivName, content, navFrameName );
}
function __getBottomSection( path, text, columns ){
if( ! text )text = "&nbsp;";
var colSpan=1;
if( columns > DEFAULT_COLS ){
colSpan+=( columns-DEFAULT_COLS );
}
var content = '<tr><td valign="bottom">&nbsp;</td>' +
'<td class="cmdboxtext" colspan="' + colSpan + '" >' + text + '</td>';
content += '<td valign="bottom" align="right"></td></tr></table>';
return content;
}
function __getElement( navigationDocument, elementId)  {
if( navigationDocument.getElementById ){
return navigationDocument.getElementById( elementId );
} else if( navigationDocument.all ){
return navigationDocument.all( elementId );
} else {
return navigationDocument.layers[ elementId ];
}
}
function __getPath(){
var path=parent.location.href;
a = path.lastIndexOf( "?" );
if( a!=-1 )path=path.substr( 0, a+1 );
i = path.lastIndexOf( "/" );
path=path.substr( 0, i+1 );
return path;
}
function __getSpacer( gapsize ){
return "<img src='images/nav_spacer.gif' border='0' height='" + gapsize + "'>";
}
function __getTopSection( path, caption, columns ){
if( ! caption ){ caption = "&nbsp;";}
var colSpan=1;
if( columns > DEFAULT_COLS ){
colSpan+=( columns-DEFAULT_COLS );
}
var content = '<table class="navboxbackground" border="0" align="center" cellspacing="0" cellpadding="0" width="155">' + '<tr width="100%">' +
'<td valign="top" class="cmdboxtop"></td>' +
'<td class="cmdboxtitle" colspan="' + colSpan + '" >' + caption + '</td>' +
'<td class="cmdboxtop">&nbsp;</td></tr>';
return content;
}
function __MM_preloadImages(){
var d=document;if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=__MM_preloadImages.arguments;for(i=0;i<a.length;i++)
if(a[i].indexOf("#")!=0){ d.MM_p[j]=new Image;d.MM_p[j++].src=a[i];}}
}
function __useBuffer(){
var agent=navigator.userAgent.toLowerCase();
var isN7Plus=(agent.indexOf('gecko')>0&&agent.indexOf('netscape6')==-1);
var isIE=(agent.indexOf('msie')>0);
return(isN7Plus||isIE);
}
}


