function NavController( navigationFrameName, navigationDivName, contentFrameName,
headerFrameName, headerDivName, headerImageDivName, useTop ){
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.useTop   =useTop ? useTop:false;
this.navDocument   =this.useTop ? top.frames[ this.navFrameName ].document:parent.frames[ this.navFrameName ].document;
this.contentDocument =this.useTop ? top.frames[ this.contentFrameName ].document:parent.frames[ this.contentFrameName ].document;
this.headerDocument  =this.useTop ? top.frames[ this.headerFrameName ].document:parent.frames[ this.headerFrameName ].document;
this.navDivHTML   ="";
var SPACER_GAP  =0;
var DEFAULT_COLS  =3;
var DEPTH_OFFSET =168;
NavController.prototype.addBlankSection =_addBlankSection;
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 _addBlankSection(h)
{
var path=__getPath();
var columns=DEFAULT_COLS;
var content=__getTopSection( path, "", columns );
content+=__getBlankMiddleSection(h,columns);
content+=__getBottomSection(path,"",columns);
if(__useBuffer())
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, content );
this.navDivHTML+=content;
}
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 =
'<div class="navgroup">'+
'<table summary="">'+
'<tr height="36">'+
'<td>&nbsp;</td>'+
'<td align="center" valign="middle"> '+
' <a class="menulink" title="Toggle display of the navigation frame" ' +
' href="javascript: function showHideNav(){ ' +
'if ( '+
'    parent[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.display==\'block\' ){ '+
'    parent[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.width=\'1px\';'+
'    parent[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.display=\'none\';'+
'    parent.getElement(\''+navPageFramesetName+'\').cols=\'15,*\';'+
'    parent[\''+this.navFrameName+'\'].focus();'+
'    parent[\''+this.contentFrameName+'\'].focus();'+
'    parent[\''+this.navFrameName+'\'].focus();'+
'} else {' +
'    parent[\''+this.navFrameName+'\'].getElement(\''+this.navDivName+'\').style.display=\'block\';'+
'    parent.getElement(\''+navPageFramesetName+'\').cols=\'204,*\';'+
'}'+
'}'+
';showHideNav();">Hide/Show Navigation</a></td>'+
'<td>&nbsp;</td>'+
'</tr>'+
'</table>'+
'</div>';
__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 );
else
content += "</table></div>"
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];
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);
else
content+="</table></div>";
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)
{
parent.getElement( navPageFramesetName ).cols="204,*";
this.navDocument.getElementById( this.navDivName ).style.display = "block";
}
}
function _writeNavigation(){
if(!__useBuffer())
__buildPageNavigation( this.navFrameName, this.navDocument, this.navDivName, this.navDivHTML )
}
function __applyNewHTML( elementId, content, frameName ){
if( document.all||document.getElementById )
{
if(useTop){
var curContent=__getElement(top[frameName].document,elementId).innerHTML;
__getElement( top[ frameName ].document, elementId ).innerHTML=curContent+content;
}else{
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=2;
if(columns>DEFAULT_COLS)colSpan+=(columns-DEFAULT_COLS);
var path=__getPath();
var numButtons=0;
for(var button in buttons) numButtons++;
var buttonNum=0;
var buttonHTML='';
for( var buttonName in buttons )
{
buttonNum++;
var calledFunction='parent.'+contentFrame+'.'+buttons[ buttonName ][ 0 ];
var args=buttons[ buttonName ][ 1 ];
var buttonArrayFrame;
if(useTop)
{
buttonArrayFrame=top[navFrame];
}
else
{
buttonArrayFrame=parent[navFrame];
}
if(useMouseOver)
{
__MM_preloadImages( buttonArrayFrame.buttonarray[ buttonName ].overimage );
}
buttonHTML +='<p class="navgroupbutton">'+
'<a id="anc'+buttons[ buttonName ] +
'" title="' + buttonArrayFrame.buttonarray[ buttonName ].alt +
'" href="JavaScript: if ( ( typeof ' + calledFunction + ' == \'function\' ) ' +
'&& ( ! parent.'+headerFrame+'.submitting) ) ' +
calledFunction+'('+args+')"';
if( useMouseOver )
{
buttonHTML += ' onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage(\'' +
buttonName+'\',\'\',\''+buttonArrayFrame.buttonarray[ buttonName ].overimage +
'\',1)"';
}
buttonHTML+='><img alt="'+buttonArrayFrame.buttonarray[ buttonName ].alt +
'" src="' + buttonArrayFrame.buttonarray[ buttonName ].upimage +
'" border="0" id="' + buttonName + '" name="' + buttonName + '"></a></p>';
}
return buttonHTML;
}
function __buildLinkSection(linksArray,instructions,contentFrame,usingDataIndicators)
{
var linkHTML='<ul class="navgrouplist">';
var linkText="";
var className="aparent";
for(var i=0;i!=linksArray.length;++i)
{
if(i==linksArray.length-1)className+=" lastperson";
if(linksArray[i][1].indexOf(".htm")!=-1)
{
linkText+='<li><a class="' + className + '" '
+ 'href="'+linksArray[i][1]+'" target="'+contentFrame
+ '" title="'+linksArray[i][0]+'"> '
+ linksArray[i][0]+'</a></li>';
}
else
{
if(typeof useTop=='object')
{
linkText+='<li><a class="'+className
+ '" href="javascript:function goToAnchor(){top.'+ useTop.parent.name +'.'+ useTop.self.name
+ '.location.hash='+ "'"+linksArray[i][1]+"'};goToAnchor();"+'">'
+ linksArray[i][0]+'</a></li>';
}else{
linkText+='<li><a class="'+className
+ '" href="javascript:function goToAnchor(){parent.'+contentFrame
+ '.location.hash='+ "'"+linksArray[i][1]+"'};goToAnchor();"+'">'
+ linksArray[i][0]+'</a></li>';
}
}
}
linkHTML+=linkText;
linkHTML+='</ul>';
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 content='<p class="cmdboxtext">'+text+'</p></div>';
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 "";}
function __getTopSection(path, caption, columns )
{
if(caption)
var content='<div class="navgroupcontent"><p class="navgrouptitle">'+ caption + '</p>';
else
var content='<div class="navgroupcontent">';
return content;
}
function __getBlankMiddleSection(h,columns)
{
var colSpan=1;
var s="";
if(columns>DEFAULT_COLS)colSpan +=(columns-DEFAULT_COLS);
h=h+DEPTH_OFFSET;
s ='<p class="navgroupblankcontent"><img src="images/space.gif" alt="" width="1" height="'+h+'"></p>';
return s;
}
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);
}
}



