/*

    Facility:
        Celeritas Technologies General (ct)
            Copyright 1999 Celeritas Technologies, LLC

    Title:
        ctLayerCommon

    Abstract:
        This module contains a collection of common Javascript functions that 
        facilitate cross browser layer management.

        Requires: ctBrowserSensing.js
        
    Author:
        Celeritas Technologies
        
    Creation Date:
        28-Nov-1999
        
    Modification History:
        08-Mar-2002 (djc)
            Added the overridden createLayer that takes an index.
				Added the start layer/end layer.

*/
var layerInfo = new Array();

    // Create a DHTML layer
function createLayer(name, left, top, width, height, visible, overflow, content, index) {
	if ( isNS4 ) {
		document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') +  '>');
	    document.writeln(content);
	    document.writeln('</layer>');
	} else {
	    document.writeln('<div id="' + name + '" style="position:absolute; overflow:hidden; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + '; z-index:' + index + '; visibility:' + (visible ? 'visible;' : 'hidden;') +  '">');
	    document.writeln(content);
	    document.writeln('</div>');
	}
}


    // Create a DHTML layer
function createLayer(name, left, top, width, height, visible, overflow, content) {
	if ( isNS4 ) {
		document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') +  '>');
	    document.writeln(content);
	    document.writeln('</layer>');
	} else {
	    document.writeln('<div id="' + name + '" style="position:absolute; overflow:hidden; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + '; z-index:1; visibility:' + (visible ? 'visible;' : 'hidden;') +  '">');
	    document.writeln(content);
	    document.writeln('</div>');
	}
}


    // Create a DHTML layer starting tag.
	 // Used if you want to specify content outside of JavaScript Code.
function startLayer(name, left, top, width, height, visible, overflow) {
	if ( isNS4 ) {
		document.writeln('<layer name="' + name + '" left=' + left + ' top=' + top + ' width=' + width + ' height=' + height +  ' visibility=' + (visible ? '"show"' : '"hide"') +  ' z-index="0">');
	} else {
	    document.writeln('<div id="' + name + '" style="position:absolute; overflow:hidden; left:' + left + 'px; top:' + top + 'px; width:' + width + 'px; height:' + height + 'px;' + '; z-index:0; visibility:' + (visible ? 'visible;' : 'hidden;') +  '">');
	}
}

    // Create a DHTML layer ending tag.
	 // Used if you want to specify content outside of JavaScript Code.
function endLayer() {
	if ( isNS4 ) {
	    document.writeln('</layer>');
	} else {
	    document.writeln('</div>');
	}
}

    // Get the layer object by name.
function getLayer(name) {
	if ( isNS4 ) {
	    return(document.layers[name]);
	} else if ( isIE4 ) {
	    layer = eval('document.all.' + name + '.style');
	    return(layer);
	} else if ( is5plus ) {
		var rObj = document.getElementById(name);
		return rObj.style;
	} else {
	    return(null);
	}
}

    // Return the given layer's left coordinate.
function getLayerLeft(name) {
	  var layer = getLayer(name);		
	  if (layer != null) {
		  if (document.layers) {
			    return layer.clip.left;
		  }
		  if (document.all) {
                return layer.left;
		  }
	  }
      return null;
}

    // Return the given layer's Top coordinate.
function getLayerTop(name) {
	  var layer = getLayer(name);		
	  if (layer != null) {
		  if (document.layers) {
			    return layer.clip.top;
		  }
		  if (document.all) {
                return layer.top;
		  }
	  }
      return null;
}

    // Move a layer (specified by name) to a given corrdinate.
function moveLayer(name, x, y) {		
  	var layer = getLayer(name);		
	if (layer != null) {
	  	if (document.layers) {
    		layer.moveTo(x, y);
		}
		
	  	if (document.all) {
    		layer.left = x;
   			layer.top  = y;
	  	}
	}
}

    // Set a given layer's background color.
function setLayerBackgroundColor(name, color) {		
  	var layer = getLayer(name);		
	if (layer != null) {
	    if (document.layers) {
    		layer.bgColor = color;
		}
	  	else if (document.all) {
    		layer.backgroundColor = color;
		}
	}
}

    // Make a given layer invisible.
function hideLayer(name) {
  	var layer = getLayer(name);
  	if ( isNS4 )
    	layer.visibility = "hide";
	else {
   		 layer.visibility = "hidden";
	}
}

    // Make a given layer visible.
function showLayer(name) {		
  	var layer = getLayer(name);		
	
  	if ( isNS4 ) {
    	layer.visibility = "show";
	} else {
   		layer.visibility = "visible";
	}
}

    // Crop a given layer to a new clipping rectangle.
function clipLayer(name, clipleft, cliptop, clipright, clipbottom) {		
	  var layer = getLayer(name);		
	  if (layer != null) {
		  if (document.layers) {
			    layer.clip.left   = clipleft;
			    layer.clip.top    = cliptop;
		    	layer.clip.right  = clipright;
			    layer.clip.bottom = clipbottom;
		  }
		  if (document.all)
			    layer.clip = 'rect(' + cliptop + ' ' +  clipright + ' ' + clipbottom + ' ' + clipleft +')';
	  }
}

    // Replace a layer's content with new content.
function replaceLayerContent(name, content) {
	  if (document.layers) {
		    var layer = getLayer(name);
			if (layer != null) {
			    layer.document.open();
			    layer.document.writeln(content);
			    layer.document.close();
			}
	  }  else if (document.all) {
			if (eval("document.all." + name) != null) {
		  		content = content.replace(/\'/g,"\\'");
			    var str = "document.all." + name + ".innerHTML = '" + content + "'";
			    eval(str);
			}
	  }
}

    // Establish mouse event handlers for a given layer.
function setMouseHandlers(layerName, mOver, mOut, mMove, mDown, mUp) {
    var layer = getLayer(layerName);        

    	// Flag the capture of specific events for Netscape.
	if (document.layers) {
        layer.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT | Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP);
	}
    
        // Establish the mouse handling routines.  Because of the difference in the
        // document object model between Netscape and IE the must be done conditionally
        // based on the browser type.
    if ( is.ns ) {
    
        layer.onmouseover = mOver;
        layer.onmouseout  = mOut;
	    layer.onmousemove = mMove;
	    layer.onmousedown = mDown;
	    layer.onmouseup   = mUp;

    }
    else if ( is.ie ) {
    
        document.onmouseover = mOver;
        document.onmouseout  = mOut;
	    document.onmousemove = mMove;
	    document.onmousedown = mDown;
	    document.onmouseup   = mUp;

    }

        // Save some of the layer's attributes for future reference.
    layerInfo.tagName     = layerName;                
    layerInfo.onmouseover = mOver;
    layerInfo.onmouseout  = mOut;
    layerInfo.onmousemove = mMove;
    layerInfo.onmousedown = mDown;
    layerInfo.onmouseup   = mUp;
    layerInfo.vLock       = false;
    layerInfo.hLock       = false;    
}

