var nav4=document.layers?true:false;
var iex=document.all?true:false;
var nav6=document.getElementById&&!document.all?true:false;
var old=(!(nav4||iex||nav6));

var JSEffectsHelper =
{
   disableRightClick:function() //can this be undone?
   {
      document.oncontextmenu = function(e){ return false; };
   },

   disableTextSelection:function()
   {
      document.onselectstart = document.ondragstart = function(e){ return false; };
   },

   captureMouseMovement:function()
   {
      JSEffectsHelper.disableTextSelection();
      JSEffectsHelper.CAPTURING_EVENTS = true;
      if (!JSEffectsHelper.IE) document.captureEvents(Event.MOUSEMOVE);
      document.onmousemove = JSEffectsHelper.getMouseXY;
   },
   releaseMouseMovement:function()
   {
      JSEffectsHelper.CAPTURING_EVENTS = false;
      if (!JSEffectsHelper.IE) document.releaseEvents (Event.MOUSEMOVE);
      document.onmousemove = null;
   },

   getMouseXY:function(e)
   {
      if (JSEffectsHelper.IE)
      { // grab the x-y pos.s if browser is IE
         JSEffectsHelper.MOUSE_X = event.clientX + document.body.scrollLeft;
         JSEffectsHelper.MOUSE_Y = event.clientY + document.body.scrollTop;
      }
      else
      {  // grab the x-y pos.s if browser is NS
         JSEffectsHelper.MOUSE_X = e.pageX;
         JSEffectsHelper.MOUSE_Y = e.pageY;
      }
      // catch possible negative values in NS4
      if (JSEffectsHelper.MOUSE_X < 0){JSEffectsHelper.MOUSE_X = 0}
      if (JSEffectsHelper.MOUSE_Y < 0){JSEffectsHelper.MOUSE_Y = 0}
      return true;
   },

   getPageSize:function()
   {
      var myWidth = 0, myHeight = 0;
      if( typeof( window.innerWidth ) == 'number' )
      {  //Non-IE
         myWidth = window.innerWidth;
         myHeight = window.innerHeight;
      }
      else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
      {  //IE 6+ in 'standards compliant mode'
         myWidth = document.documentElement.clientWidth;
         myHeight = document.documentElement.clientHeight;
      }
      else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) )
      {  //IE 4 compatible
         myWidth = document.body.clientWidth;
         myHeight = document.body.clientHeight;
      }
      return {"width":myWidth, "height":myHeight};
   },

   getElementX: function( eElement )
   {
      var nLeftPos = eElement.offsetLeft;            // initialize var to store calculations
      var eParElement = eElement.offsetParent;     // identify first offset parent element
      while (eParElement != null)
      {                                            // move up through element hierarchy
         nLeftPos += eParElement.offsetLeft;        // appending top offset of each parent
         eParElement = eParElement.offsetParent;  // until no more offset parents exist
      }
      return nLeftPos;                              // return the number calculated
   },

   getElementY: function( eElement )
   {
      var nTopPos = eElement.offsetTop;
      var eParElement = eElement.offsetParent;
      while (eParElement != null)
      {
         nTopPos += eParElement.offsetTop;
         eParElement = eParElement.offsetParent;
      }
      return nTopPos;
   },

   getElementPos: function( eElement )
   {
      return {x:JSEffectsHelper.getElementX(eElement),y:JSEffectsHelper.getElementY(eElement)};
   },

   setPosition: function(eElement,x,y)
   {
      eElement.style.left = x + "px";
      eElement.style.top  = y + "px";
   },

   createImage: function( sSource )
   {
      var oImg = new Image();
      oImg.src = sSource;
      return oImg;
   },

   createHiddenAbsoluteDiv: function( sDivID, sCssClass )
   {
      var eDiv = document.createElement( "DIV" );
      eDiv.setAttribute("id",sDivID);
      eDiv.className = sCssClass;
      JSEffectsHelper.showHideElement( eDiv );
      return eDiv;
   },

   showHideElement: function( eElement )
   {
      if ( eElement.style.display == "none" || eElement.style.visibility == "hidden" )
      {
         eElement.style.display = "block";
         eElement.style.visibility = "visible";
      }
      else
      {
         eElement.style.display = "none";
         eElement.style.visibility = "hidden";
      }
   },

   showElement: function( eElement )
   {
      eElement.style.display = "block";
      eElement.style.visibility = "visible";
   },

   hideElement: function( eElement )
   {
      eElement.style.display = "none";
      eElement.style.visibility = "hidden";
   },

   isHidden: function( eElement )
   {
      return eElement.style.display == 'none' || eElement.style.visibility == 'hidden';
   },

   addElementToBody: function ( eElement )
   {
      var oDocBody = document.getElementsByTagName("body")[0];
      if ( oDocBody )
      {
         oDocBody.appendChild( eElement );
      }
   },

   getElementHeight: function( eElement )
   {
      return eElement.offsetHeight;
   },

   getElementWidth: function( eElement )
   {
      return eElement.offsetWidth;
   },

   removeElement: function( eElement )
   {
      eElement.parentNode.removeChild( eElement );
   },

   getElementsByClassName: function( sClassName, eRoot )
   {
      if ( eRoot && typeof eRoot == 'string' ) { eRoot = $(eRoot); }
      var elements = [];
      var children = ( eRoot || document.body ).getElementsByTagName('*');
      for( var idx = 0; idx < children.length; idx ++ ) {
         var child = children[idx];
         if ( child.className.match( new RegExp("(^|\\s)" + sClassName + "(\\s|$)"))) {
            elements[ elements.length ] = child;
         }
      }
      return elements;
   },

   addStyleSheet: function( sStyleSheetName )
   {
      var headElement = document.body.previousSibling;
      var cssElement = document.createElement("link");
      cssElement.setAttribute( "href", sStyleSheetName );
      cssElement.setAttribute( "type", "text/css" );
      cssElement.setAttribute( "rel", "stylesheet" );
      headElement.appendChild( cssElement );
   }
};
JSEffectsHelper.IE = document.all?true:false;
JSEffectsHelper.MOUSE_X = 0;
JSEffectsHelper.MOUSE_Y = 0;
JSEffectsHelper.HIGHEST_DEPTH = 1;
JSEffectsHelper.CAPTURING_EVENTS = false;
JSEffectsHelper.DRAG_AND_DROP_ALPHA = 4; // 4/10 or 40%

if ( !$ ) {
   var $ = function( elementID ) {
      return document.getElementById( elementID );
   }
}