// ----------------------------------------------------------------------------
// INLINE Expansion of OUTLINE
// ----------------------------------------------------------------------------
// *                                                                          *
// *                           Copyright 2002                                 *
// *                        CHECCO SERVICES, INC.                             *
// *                         All Rights Reserved.                             *
// *                                                                          *
// *     This software contains proprietary and confidential information      *
// *     belonging to CHECCO SERVICES, INC., and may not be decompiled,       *
// *     disassembled, disclosed, reproduced or copied without the prior      *
// *     written consent of CHECCO SERVICES, INC..                            *
// *                                                                          *
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Reference Guide
// ----------------------------------------------------------------------------
// Static Objects:
//	Expander (static class)
// Properties:
//	.setImageBase
//	.createID	
//	.createSwitch
//	.startChild
//	.endChild	
//	.all		
//	.startChildSwitch
// Methods:
// ----------------------------------------------------------------------------
// Instance Objects:
// Properties:
// Methods:
// ----------------------------------------------------------------------------

// ----------------------------------------------------------------------------
// Example Usage
// ----------------------------------------------------------------------------
// <script language="JavaScript">
//	var tBase = Expander.createID("logical_section");
//	Expander.createSwitch(tBase,"markup")
//	//tBase.createSwitch("markup","expand_icon","collapse_icon")
// </script>
// ...
// <script language="JavaScript">
//	Expander.createChild(tBase)
//	//tBase.createChild()
// </script>
// ...
// <script language="JavaScript">
//	Expander.endChild()
//	//tBase.endChild()
// </script>
// ...
// ----------------------------------------------------------------

// ----------------------------------------------------------------------------
// Change History
// ----------------------------------------------------------------------------
// Modified:  John C. Checco
// History:  2002-08-23
// 	- changed from separate window to inline LAYER 
// 	- positions itself correctly next to input field
// 	- highlights the input field
// 	- allows selection of date format
// ----------------------------------------------------------------------------
// Original:  ???

jsRegistry.add('inline-expander','browser-type','browser-util','inline-popup');

// ----------------------------------------------------------------
var Expander = new Object();
// ----------------------------------------------------------------
Expander.firstInd = 0;
Expander.lastELIDX = 0;
Expander.imgBase = "images";
Expander.imgExp="expand_icon.gif";
Expander.imgColl="collapse_icon.gif";
Expander.massExpanded = new Object();
Expander.isSupported = !BrowserType.is_nav4;
// ----------------------------------------------------------------
Expander.expandAll	=Expander_expandAll	;
Expander.setImageBase	=Expander_setImageBase	;
Expander.all		=Expander_all		;
Expander.arrange	=Expander_arrange	;
// ----------------------------------------------------------------
Expander.createID	=Expander_createID	;
Expander.expandIt	=Expander_expandIt	;
Expander.createSwitch	=Expander_createSwitch	;
Expander.startChild	=Expander_startChild	;
Expander.endChild	=Expander_endChild	;
Expander.startChildSwitch=Expander_startChildSwitch;
Expander.isExpanded	=Expander_isExpanded;

// ----------------------------------------------------------------
Expander_init();
onload = Expander_postInit;

function Expander_init() {
   document.write("<STYLE TYPE='text/css'>");
   if (BrowserType.is_nav4) {
      document.write(".parent {position:relative; visibility:visible}");
      document.write(".child {position:relative; visibility:hidden}");
      document.write(".regular {position:relative; visibility:visible}")
   }
   else {
      document.write(".parent {display:block; position:relative; visibility:show}")
      document.write(".child {display:block; position:relative; visibility:show}")
   }
   document.write("</STYLE>");
}

function Expander_postInit() {
   if ( Expander.isSupported ) {
    //BrowserUtil.alert("Expander_postInit");
    newSrc = Expander.imgBase + "/" + Expander.imgExp;

    var tBase = "el_";
    var fld = BrowserUtil.findLayer(tBase,true);
    while ( fld != null ) {
       var el = fld.name ? fld.name : fld.id;
       PopupClass.showLayer(el,false);
       if ( !BrowserType.is_nav4 ) fld.style.display = "none";
       
       tI = BrowserUtil.findImage("im" + el,false);
       if (tI)  tI.src = newSrc;
       
       fld = BrowserUtil.nextLayer(fld,tBase,true);
    }
    
    var tBase = "imel_all_";
    var fld = BrowserUtil.findImage(tBase,true);
    while ( fld != null ) {
       fld.src = newSrc;
       fld = BrowserUtil.nextImage(fld,tBase,true);
    }
    Expander.arrange();
   }
}

function Expander_isExpanded(el) {
   var rc = false;
   var fld = BrowserUtil.findLayer(el);
   if ( fld ) {
      if ( BrowserType.is_nav4 ) rc = (fld.visibility != "hide");
      else rc = (fld.style.display == "block");
   }
   //BrowserUtil.alert("Expander.isExpanded: " + el + ": " + rc );
   return rc;
}

function Expander_expandIt(el) {
   var fld = BrowserUtil.findLayer(el);
   var tI = BrowserUtil.findImage("im" + el);
   if ( fld ) {
      if ( Expander.isExpanded(el) ) {
         //BrowserUtil.alert("Hiding Layer: " + el);
         PopupClass.showLayer(el,false);
         if (tI)  tI.src = Expander.imgBase + "/" + Expander.imgExp;
         if ( !BrowserType.is_nav4 ) fld.style.display = "none";
      }
      else {
         //BrowserUtil.alert("Showing Layer: " + el);
         PopupClass.showLayer(el,true);
         if (tI)  tI.src = Expander.imgBase + "/" + Expander.imgColl;
         if ( !BrowserType.is_nav4 ) fld.style.display = "block";
      }
      Expander.arrange();
   }
   else {
      BrowserUtil.alert("Layer: " + el + "... not found");  
   }
}

function Expander_expandAll(prefix) {
    if (!prefix) prefix="!";
    var isShown = Expander.massExpanded[prefix];
    newSrc = Expander.imgBase + "/" + (isShown ? Expander.imgExp : Expander.imgColl);
    var tI = BrowserUtil.findImage("imel_all_" + prefix );
    if (tI) { tI.src = newSrc; }

    var tBase = "el_" + prefix + "_";
    var fld = BrowserUtil.findLayer(tBase,true);
    while ( fld != null ) {
       var el = fld.name ? fld.name : fld.id;
       //if (fld.className == "child") 
       {
          PopupClass.showLayer(el,!isShown);
          if ( !BrowserType.is_nav4 ) fld.style.display = isShown ? "none" : "block";
       }
       
       tI = BrowserUtil.findImage("im" + el,false);
       if (tI)  tI.src = newSrc;
       
       fld = BrowserUtil.nextLayer(fld,tBase,true);
    }
    Expander.massExpanded[prefix] = !isShown;   
    Expander.arrange();
    //scrollTo(0,document.layers[Expander.firstInd].pageY)    
}

function Expander_setImageBase(iBase)
{
   Expander.imgBase = iBase;
}

function Expander_createID(prefix)
{
   if (!prefix) prefix="!";
   Expander.lastELIDX ++;
   tBase = "el_" + prefix + "_" + Expander.lastELIDX.toString();
   return tBase;
}

function Expander_createSwitch(tBase,markup,imgExp,imgColl)
{
   if ( Expander.isSupported ) {
      document.write("<A HREF=\"javascript: {};\" onClick=\"Expander.expandIt('" + tBase + "'); return false\">");
      if ( Expander.imgExp )
         document.write("<IMG NAME=\"im" + tBase + "\" SRC=\"" + Expander.imgBase + "/" + Expander.imgExp + "\" BORDER=0 >");
   }
   document.write(markup);
   if ( Expander.isSupported ) {
      document.write("</A>");
   }
}

function Expander_startChild(tBase)
{
   if ( Expander.isSupported ) {
      PopupClass.startLayerInline(tBase,-PopupClass.zNormal,0,0,"","CLASS='child'")
   }
}

function Expander_startChildSwitch(markup,prefix)
{
   var tBase = Expander.createID(prefix);
   document.write("<br>");
   Expander.createSwitch(tBase,markup);
   document.write("<br>");
   Expander.startChild(tBase);
}

function Expander_endChild()
{
   if ( Expander.isSupported ) {
      PopupClass.endLayerInline();
   }
}

function Expander_all(markup,prefix)
{
   if ( Expander.isSupported ) {
      if (!prefix) prefix="!";
      document.write("<A HREF=\"#\" onClick=\"Expander.expandAll('" + prefix + "'); return false\">");
      if ( Expander.imgExp )
	   document.write("<IMG NAME=\"imel_all_" + prefix + "\" SRC=\"" + Expander.imgBase + "/" + Expander.imgExp + "\" BORDER=0 >");
      document.write(markup);
      document.write("</A>");
   }
}

function Expander_arrange() {
   if ( Expander.isSupported ) {
    if ( BrowserType.is_nav4 ) {
       var nextY = document.layers[Expander.firstInd].pageY + document.layers[Expander.firstInd].document.height;
       for (i=Expander.firstInd+1; i<document.layers.length; i++) {
          var whichEl = document.layers[i];
          if (whichEl.visibility != "hide") {
    	     //BrowserUtil.alert("setting layer " + whichEl.name + ": pageY = " + nextY);
             whichEl.pageY = nextY;
             nextY += whichEl.document.height;
          }
       }
    }
   }
}

