   function trim(str)
   {
	   var c1 = new RegExp('^\\s+');
	   var c2 = new RegExp('\\s+$');
      var rc = str.replace(c1,'').replace(c2,'');
      //alert("["+rc+"]");
      return rc;
   }

// -----------------------------
function findDOM(ename,byname)
{
   if ( ename ) {
		var formlist = ename ? document.getElementsByTagName(ename)
							: document.getElements();
		if ( formlist ) {
		  for ( var i = 0; i < formlist.length; i ++ ) {
			 var tf = formlist[i];
			 if ( tf.name == byname || tf.id == byname )	return tf;
		  }
		}
   }
   //alert("findDOM("+ename+","+byname+") nothing found, using alternate method");
   return document.getElementById(byname);
}

function nextDOM(fromfld)
{
   if ( fromfld )
   {
      var byname = fromfld.getAttribute('name');
      for ( var tf = fromfld.nextSibling; tf; tf = tf.nextSibling )
      {
         if ( tf.getAttribute('id') == byname )
         {
            return tf;
         }
         if ( tf.getAttribute('name') == byname )
         {
            return tf;
         }
      }
   }
   return null;
}

// -----------------------------
function getVisibility(byname)
{
	var tl = document.getElementById(byname);
	if ( tl )
	{
		/*
		alert('[getVisibility] element['+byname+'] details:'
				+ '\n\t' + 'visibility = ' + tl.style.visibility
				+ '\n\t' + 'display = ' + tl.style.display
				+ '\n\t' + 'height = ' + tl.style.height
				);
			*/
			 if ( tl.style.visibility != "hidden" &&
				 tl.style.display != "none" &&
				 tl.style.height != "0px" && tl.style.height != "0" )
			 {
				return true;
			 }
			 else
			 {
				return false;
			 }
	}
	//else alert('[getVisibility] element['+byname+'] NOT FOUND');
	return null;
}

function setVisible(byname)
{
	var tl = document.getElementById(byname);
	if ( tl )
	{
		//alert('[setVisible] setting element['+byname+'] visible');
		tl.style.visibility = "visible";
		tl.style.height = "auto";
		tl.style.display = "block";
	}
	//else alert('[setVisible] element['+byname+'] NOT FOUND');
	return tl;
}

function setHidden(byname)
{
	var tl = document.getElementById(byname);
	if ( tl )
	{
		//alert('[setHidden] setting element['+byname+'] hidden');
		tl.style.visibility = "hidden";
		tl.style.height = "0px";
		tl.style.display = "none";
	}
	//else alert('[setHidden] element['+byname+'] NOT FOUND');
	return tl;
}

function toggleVisibility(byname)
{
	var isVisible = getVisibility(byname);
	if ( isVisible == false )
	{
		setVisible(byname);
	}
	else if ( isVisible == true )
	{
		setHidden(byname);
	}
	//else alert('[toggleVisibiliy] element['+byname+'] NOT FOUND');
}

function swapVisibility(byname1,byname2)
{
	var isVisible = getVisibility(byname1);
	if ( isVisible == false )
	{
		swapBlock(byname2,byName1);
	}
	else if ( isVisible == true )
	{
		swapBlock(byname1,byName2);
	}
	//else alert('[toggleVisibiliy] element['+byname+'] NOT FOUND');
}

	function swapBlock(hideDiv,showDiv)
	{
		setHidden(hideDiv);
		setVisible(showDiv);
	}

function enableElement(byname,doEnable)
{
	var tl = document.getElementById(byname);
	if ( tl )
	{
		//alert('[enableElement] setting element['+byname+'] visible');
		tl.style.enabled = doEnable;
		tl.enabled = doEnable;
	}
	//else alert('[enableElement] element['+byname+'] NOT FOUND');
	return tl;
}

// ----------------------------------------------------------------------------------------------
// POPUP WINDOW SUPPORT
// ----------------------------------------------------------------------------------------------
// -------------------------------------------
// preprocessing goes here
// -------------------------------------------
var menuCloseDelay = 500;
var visibleLayerName = new String();
var focusedLayerName = new String();
var shownArray = new Array();
var master_Alignment = new String();
var bgimg = new Image(10,10);
// -------------------------------------------
// functions go here
// -------------------------------------------
function init_popup_support()
{
   shownArray = new Array();
   focusedLayerName = "";
   pendingLayerName = "";
}

function existLayer(layerName)
{
	var tl = document.getElementById(layerName);
	return tl;
}

function visibleLayer(layerName)
{
	var tl = document.getElementById(layerName);
	if ( tl )
	{
		/*
		alert('[getVisibility] element['+layerName+'] details:'
				+ '\n\t' + 'visibility = ' + tl.style.visibility
				+ '\n\t' + 'display = ' + tl.style.display
				+ '\n\t' + 'height = ' + tl.style.height
				);
			*/
			 if ( tl.style.visibility != "hidden" &&
				 tl.style.display != "none" &&
				 tl.style.height != "0px" && tl.style.height != "0" )
			 {
				return true;
			 }
			 else
			 {
				return false;
			 }
	}
	//else alert('[getVisibility] element['+layerName+'] NOT FOUND');
	return null;
}

function moveLayer(layerName,leftPos,topPos,force)
{
	var tl = document.getElementById(layerName);
	if ( tl )
	{
			//alert('moveLayer['+layerName+'] ('+tl.style.left+','+tl.style.top+') => ('+leftPos+','+topPos+')');
			screenWidth = document.body.clientWidth + 18;
         if ( tl.style.pixelLeft == 0 || force ) {
				tl.style.left = leftPos;
				tl.style.top = topPos;
		 		//tl.scrollIntoView(topPos);
		 	}
	}
}

function showLayer(layerName,on,remember)
{
	var tl = document.getElementById(layerName);
	if ( tl )
	{
		if (on)
  		{
			//alert('[setVisible] setting element['+layerName+'] visible');
			tl.style.visibility = "visible";
			tl.style.height = "auto";
			tl.style.display = "block";
			// update globals
 			if (remember)
			{
			      //focusedLayerName = layerName;
			}
		}
		else if ( layerName != "menu_layer" )
		{
			//alert('[setHidden] setting element['+layerName+'] hidden');
			tl.style.visibility = "hidden";
			tl.style.height = "0px";
			tl.style.display = "none";
			// update globals
		   if ( layerName == focusedLayerName )
			{
				focusedLayerName = "";
			}
		}
	}
	//else alert('[setHidden] element['+layerName+'] NOT FOUND');
}

function popBoxOnce(layerName,posX,posY,force)
{
   if ( !shownArray[layerName] || force )
   {
      shownArray[layerName] = true;
      moveLayer(layerName,posX,posY,true);
      showLayer(layerName,true,true);
   }
   return false;
}

function startLayer(layerName,leftPos,topPos,imageURL,exitCall,usefocus)
{
  var bgOpt = "";
  var jsEventStr = "onMouseout=\"" + exitCall + "\"";
  if ( usefocus )
  {
    jsEventStr += " onMouseover=\"focusedLayerName=" + this.layer + "\"";
  }
  // CalendarClass.alert ( "startLayer(" + layerName + "," + leftPos + "," + topPos + ")");
  if ( imageURL ) { bgOpt = " background-image:url(" + imageURL + ");"; }
  document.write("<DIV ID=\"" + layerName + "\" STYLE=\"POSITION: absolute; Z-INDEX: 10; VISIBILITY: hidden; TOP: " + topPos + "px; LEFT: " + leftPos + "px; " + bgOpt + "\" " + jsEventStr + ">");
  document.write("<TABLE border=0 cellspacing=0 cellpadding=0>");
  // begin client area
  document.write("<TR><TD valign=top>");
}

function endLayer()
{
  document.write("</TD></TR></TABLE>");
  document.write("</DIV>");
}

function startWindow(layerName,leftPos,topPos,title,imageURL,exitCall)
{
  startLayer(layerName,leftPos,topPos,imageURL,exitCall,true);

  // standard window frame
  var bgOpt = " BGCOLOR=\"#ffffff\"";
  if ( imageURL ) { bgOpt = ""; }
  var borderWidth = 1;

  if ( title ) { borderWidth=5; }

  document.write("<TABLE border=" + borderWidth + " cellspacing=0 cellpadding=2 " + bgOpt + ">");
  // write titlebar
  if ( title ) {
     bgOpt = " BGCOLOR=\"#08089C\"";
     if ( imageURL ) { bgOpt = ""; }

     document.write("<TR><TD valign=top>");
     document.write("<TABLE border=0 cellspacing=0 cellpadding=0 width=\"100%\"" + bgOpt + "><TR>");
     if ( title ) {
        document.write("<TD ALIGN=LEFT VALIGN=TOP>&nbsp;<FONT FACE=\"Verdana,Tahome,Arial\" SIZE=2 COLOR=\"#fffff\"><STRONG>");
        document.write(title);
        document.write("</STRONG></FONT></TD>");
     }
     document.write("<TD width=10>&nbsp;</TD>");
     document.write("</TR></TABLE>");
     document.write("</TD></TR>");
  }
  // begin client area
  var bgOpt = " BGCOLOR=\"#ffffff\"";
  if ( imageURL ) { bgOpt = ""; }
  document.write("<TR><TD><TABLE border=0 cellspacing=0 cellpadding=0 width=\"100%\"" + bgOpt + "><TR>");
  document.write("<TD valign=top><FONT FACE =\"ARIAL,HELVETICA\" SIZE=1 COLOR=\"#000000\">");
}

function endWindow()
{
  document.write("</FONT></TD>");
  document.write("</TR></TABLE>");
  document.write("</TD></TR></TABLE>");
  endLayer();
}

function popupPage(url,name,width,height)
{
   window.open(url,'_new','resizable=yes,status=no,scrollbars=no,menubar=no,width=' + width + ',height=' + height + ',title=' + name );
}
