includes/clientside/static/faders.js
changeset 628 ab6f55abb17e
parent 627 460e483987ab
child 629 8733c22969e7
--- a/includes/clientside/static/faders.js	Sat Jul 12 00:31:44 2008 -0400
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,821 +0,0 @@
-// Message box and visual effect system
-
-/**
- * Darkens the browser screen. This will make the entire page un-clickable except for any floating divs created after this is called. Restore with enlighten().
- * @param bool Controls whether the fade should be disabled or not. aclDisableTransitionFX will override this if set to true, and fades are never fired on IE.
- * @param int When specified, represents the numeric opacity value to set the fade layer to. 1-100.
- */
-
-var darkener_index = 0;
-
-function darken(nofade, opacVal)
-{
-  if(IE)
-    nofade = true;
-  if ( !opacVal )
-    opacVal = 70;
-  darkener_index++;
-  if(document.getElementById('specialLayer_darkener'))
-  {
-    if(nofade)
-    {
-      changeOpac(opacVal, 'specialLayer_darkener');
-      document.getElementById('specialLayer_darkener').style.display = 'block';
-      document.getElementById('specialLayer_darkener').myOpacVal = opacVal;
-    }
-    else
-    {
-      if ( document.getElementById('specialLayer_darkener').style.display != 'none' )
-      {
-        var currentOpac = document.getElementById('specialLayer_darkener').myOpacVal;
-        opacity('specialLayer_darkener', currentOpac, opacVal, 1000);
-        document.getElementById('specialLayer_darkener').myOpacVal = opacVal;
-      }
-      else
-      {
-        document.getElementById('specialLayer_darkener').style.display = 'block';
-        document.getElementById('specialLayer_darkener').myOpacVal = opacVal;
-        opacity('specialLayer_darkener', 0, opacVal, 1000);
-      }
-    }
-  } else {
-    w = getWidth();
-    h = getHeight();
-    var thediv = document.createElement('div');
-    if(IE)
-      thediv.style.position = 'absolute';
-    else
-      thediv.style.position = 'fixed';
-    if ( IE )
-    {
-      var top = getScrollOffset();
-      thediv.style.top = String(top) + 'px';
-    }
-    else
-    {
-      thediv.style.top = '0px';
-    }
-    thediv.style.left = '0px';
-    thediv.style.opacity = '0';
-    thediv.style.filter = 'alpha(opacity=0)';
-    thediv.style.backgroundColor = '#000000';
-    thediv.style.width =  '100%';
-    thediv.style.height = '100%';
-    thediv.zIndex = getHighestZ() + 5;
-    thediv.id = 'specialLayer_darkener';
-    thediv.myOpacVal = opacVal;
-    if(nofade)
-    {
-      thediv.style.opacity = ( parseFloat(opacVal) / 100 );
-      thediv.style.filter = 'alpha(opacity=' + opacVal + ')';
-      body = document.getElementsByTagName('body');
-      body = body[0];
-      body.appendChild(thediv);
-    } else {
-      body = document.getElementsByTagName('body');
-      body = body[0];
-      body.appendChild(thediv);
-      opacity('specialLayer_darkener', 0, opacVal, 1000);
-    }
-  }
-}
-
-/**
- * Un-darkens the screen and re-enables clicking of on-screen controls.
- * @param bool If true, disables the fade effect. Fades are always disabled if aclDisableTransitionFX is true and on IE.
- */
-
-function enlighten(nofade)
-{
-  if(IE)
-    nofade = true;
-  darkener_index -= 1;
-  if ( darkener_index > 0 )
-    return false;
-  if(document.getElementById('specialLayer_darkener'))
-  {
-    if(nofade)
-    {
-      document.getElementById('specialLayer_darkener').style.display = 'none';
-    }
-    else
-    {
-      var from = document.getElementById('specialLayer_darkener').myOpacVal;
-      // console.info('Fading from ' + from);
-      opacity('specialLayer_darkener', from, 0, 1000);
-      setTimeout("document.getElementById('specialLayer_darkener').style.display = 'none';", 1000);
-    }
-  }
-}
-
-/**
- * The ultimate message box framework for Javascript
- * Syntax is (almost) identical to the MessageBox command in NSIS
- * @param int type - a bitfield consisting of the MB_* constants
- * @param string title - the blue text at the top of the window
- * @param string text - HTML for the body of the message box
- * Properties:
- *   onclick - an array of functions to be called on button click events
- *             NOTE: key names are to be strings, and they must be the value of the input, CaSe-SeNsItIvE
- *   onbeforeclick - same as onclick but called before the messagebox div is destroyed
- * Methods:
- *   destroy: kills the running message box
- * Example:
- *   var my_message = new MessageBox(MB_OK|MB_ICONSTOP, 'Error logging in', 'The username and/or password is incorrect. Please check the username and retype your password');
- *   my_message.onclick['OK'] = function() {
- *       document.getElementById('password').value = '';
- *     };
- * Deps:
- *   Modern browser that supports DOM
- *   darken() and enlighten() (above)
- *   opacity() - required for darken() and enlighten()
- *   MB_* constants are defined in enano-lib-basic.js
- */
-
-var mb_current_obj;
-var mb_previously_had_darkener = false;
-
-function MessageBox(type, title, message)
-{
-  var y = getScrollOffset();
-  
-  // Prevent multiple instances
-  if ( document.getElementById('messageBox') )
-    return;
-  
-  if ( document.getElementById('specialLayer_darkener') )
-    if ( document.getElementById('specialLayer_darkener').style.display == 'block' )
-      mb_previously_had_darkener = true;
-  if ( !mb_previously_had_darkener )
-    darken(true);
-  if ( aclDisableTransitionFX )
-  {
-    document.getElementById('specialLayer_darkener').style.zIndex = '5';
-  }
-  var master_div = document.createElement('div');
-  master_div.style.zIndex = String(getHighestZ() + 5);
-  var mydiv = document.createElement('div');
-  mydiv.style.height = '200px';
-  w = getWidth();
-  h = getHeight();
-  if ( aclDisableTransitionFX )
-  {
-    master_div.style.left = ((w / 2) - 200)+'px';
-    master_div.style.top = ((h / 2) + y - 120)+'px';
-    master_div.style.position = 'absolute';
-  }
-  else
-  {
-    master_div.style.top = '-10000px';
-    master_div.style.position = ( IE ) ? 'absolute' : 'fixed';
-  }
-  z = ( aclDisableTransitionFX ) ? document.getElementById('specialLayer_darkener').style.zIndex : getHighestZ();
-  mydiv.style.backgroundColor = '#FFFFFF';
-  mydiv.style.padding = '10px';
-  mydiv.style.marginBottom = '1px';
-  mydiv.id = 'messageBox';
-  mydiv.style.overflow = 'auto';
-  
-  var buttondiv = document.createElement('div');
-  
-  mydiv.style.width = '400px';
-  buttondiv.style.width = '400px';
-  
-  w = getWidth();
-  h = getHeight();
-  if ( aclDisableTransitionFX )
-  {
-    //buttondiv.style.left = ((w / 2) - 200)+'px';
-    //buttondiv.style.top = ((h / 2) + y + 101)+'px';
-  }
-  //buttondiv.style.position = ( IE ) ? 'absolute' : 'fixed';
-  z = ( aclDisableTransitionFX ) ? document.getElementById('specialLayer_darkener').style.zIndex : getHighestZ();
-  buttondiv.style.backgroundColor = '#C0C0C0';
-  buttondiv.style.padding = '10px';
-  buttondiv.style.textAlign = 'right';
-  buttondiv.style.verticalAlign = 'middle';
-  buttondiv.id = 'messageBoxButtons';
-  
-  this.clickHandler = function() { messagebox_click(this, mb_current_obj); };
-  
-  if( ( type & MB_ICONINFORMATION || type & MB_ICONSTOP || type & MB_ICONQUESTION || type & MB_ICONEXCLAMATION ) && !(type & MB_ICONLOCK) )
-  {
-    mydiv.style.paddingLeft = '50px';
-    mydiv.style.width = '360px';
-    mydiv.style.backgroundRepeat = 'no-repeat';
-    mydiv.style.backgroundPosition = '8px 8px';
-  }
-  else if ( type & MB_ICONLOCK )
-  {
-    mydiv.style.paddingLeft = '50px';
-    mydiv.style.width = '360px';
-    mydiv.style.backgroundRepeat = 'no-repeat';
-  }
-  
-  if(type & MB_ICONINFORMATION)
-  {
-    mydiv.style.backgroundImage = 'url(\''+scriptPath+'/images/info.png\')';
-  }
-  
-  if(type & MB_ICONQUESTION)
-  {
-    mydiv.style.backgroundImage = 'url(\''+scriptPath+'/images/question.png\')';
-  }
-  
-  if(type & MB_ICONSTOP)
-  {
-    mydiv.style.backgroundImage = 'url(\''+scriptPath+'/images/error.png\')';
-  }
-  
-  if(type & MB_ICONEXCLAMATION)
-  {
-    mydiv.style.backgroundImage = 'url(\''+scriptPath+'/images/warning.png\')';
-  }
-  
-  if(type & MB_ICONLOCK)
-  {
-    mydiv.style.backgroundImage = 'url(\''+scriptPath+'/images/lock.png\')';
-  }
-  
-  if(type & MB_OK)
-  {
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_ok');
-    btn._GenericName = 'OK';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-  }
-  
-  if(type & MB_OKCANCEL)
-  {
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_ok');
-    btn._GenericName = 'OK';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-    
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_cancel');
-    btn._GenericName = 'Cancel';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-  }
-  
-  if(type & MB_YESNO)
-  {
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_yes');
-    btn._GenericName = 'Yes';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-    
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_no');
-    btn._GenericName = 'No';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-  }
-  
-  if(type & MB_YESNOCANCEL)
-  {
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_yes');
-    btn._GenericName = 'Yes';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-    
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_no');
-    btn._GenericName = 'No';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-    
-    btn = document.createElement('input');
-    btn.type = 'button';
-    btn.value = $lang.get('etc_cancel');
-    btn._GenericName = 'Cancel';
-    btn.onclick = this.clickHandler;
-    btn.style.margin = '0 3px';
-    buttondiv.appendChild(btn);
-  }
-  
-  heading = document.createElement('h2');
-  heading.innerHTML = title;
-  heading.style.color = '#50A0D0';
-  heading.style.fontFamily = 'trebuchet ms, verdana, arial, helvetica, sans-serif';
-  heading.style.fontSize = '12pt';
-  heading.style.fontWeight = 'lighter';
-  heading.style.textTransform = 'lowercase';
-  heading.style.marginTop = '0';
-  mydiv.appendChild(heading);
-  
-  var text = document.createElement('div');
-  text.innerHTML = String(message);
-  this.text_area = text;
-  mydiv.appendChild(text);
-  
-  this.updateContent = function(text)
-    {
-      this.text_area.innerHTML = text;
-    };
-    
-  this.destroy = function()
-    {
-      var mbdiv = document.getElementById('messageBox');
-      mbdiv.parentNode.removeChild(mbdiv.nextSibling);
-      mbdiv.parentNode.removeChild(mbdiv);
-      if ( !mb_previously_had_darkener )
-        enlighten(true);
-    };
-  
-  //domObjChangeOpac(0, mydiv);
-  //domObjChangeOpac(0, master_div);
-  
-  body = document.getElementsByTagName('body');
-  body = body[0];
-  master_div.appendChild(mydiv);
-  master_div.appendChild(buttondiv);
-  
-  body.appendChild(master_div);
-  
-  if ( !aclDisableTransitionFX )
-    setTimeout('mb_runFlyIn();', 100);
-  
-  this.onclick = new Array();
-  this.onbeforeclick = new Array();
-  mb_current_obj = this;
-}
-
-var messagebox = MessageBox;
-
-function mb_runFlyIn()
-{
-  var mydiv = document.getElementById('messageBox');
-  var maindiv = mydiv.parentNode;
-  fly_in_top(maindiv, true, false);
-}
-
-function messagebox_click(obj, mb)
-{
-  val = ( typeof ( obj._GenericName ) == 'string' ) ? obj._GenericName : obj.value;
-  if(typeof mb.onbeforeclick[val] == 'function')
-  {
-    var o = mb.onbeforeclick[val];
-    var resp = o();
-    if ( resp )
-      return false;
-    o = false;
-  }
-  
-  var mydiv = document.getElementById('messageBox');
-  var maindiv = mydiv.parentNode;
-  
-  if ( aclDisableTransitionFX )
-  {
-    var mbdiv = document.getElementById('messageBox');
-    mbdiv.parentNode.removeChild(mbdiv.nextSibling);
-    mbdiv.parentNode.removeChild(mbdiv);
-    if ( !mb_previously_had_darkener )
-      enlighten(true);
-  }
-  else
-  {
-    var to = fly_out_top(maindiv, true, false);
-    setTimeout("var mbdiv = document.getElementById('messageBox'); mbdiv.parentNode.removeChild(mbdiv.nextSibling); mbdiv.parentNode.removeChild(mbdiv); if ( !mb_previously_had_darkener ) enlighten(true);", to);
-  }
-  if(typeof mb.onclick[val] == 'function')
-  {
-    o = mb.onclick[val];
-    o();
-    o = false;
-  }
-}
-
-function testMessageBox()
-{
-  mb = new MessageBox(MB_OKCANCEL|MB_ICONINFORMATION, 'Javascripted dynamic message boxes', 'This is soooooo coool, now if only document.createElement() worked in IE!<br />this is some more text<br /><br /><br /><br /><br />this is some more text<br /><br /><br /><br /><br />this is some more text<br /><br /><br /><br /><br />this is some more text<br /><br /><br /><br /><br />this is some more text<br /><br /><br /><br /><br />this is some more text<br /><br /><br /><br /><br />this is some more text<br /><br /><br /><br /><br />this is some more text');
-  mb.onclick['OK'] = function()
-    {
-      alert('You clicked OK!');
-    }
-  mb.onbeforeclick['Cancel'] = function()
-    {
-      alert('You clicked Cancel!');
-    }
-}
-
-/**
- * The miniPrompt function, for creating small prompts and dialogs. The window will be flown in and the window darkened with opac=0.4.
- * @param function Will be passed an HTMLElement that is the body of the prompt window; the function can do with this as it pleases
- */
-
-function miniPrompt(call_on_create)
-{
-  if ( document.getElementById('specialLayer_darkener') )
-  {
-    if ( document.getElementById('specialLayer_darkener').style.display != 'none' )
-    {
-      var opac = parseFloat(document.getElementById('specialLayer_darkener').style.opacity);
-      opac = opac * 100;
-      darken(aclDisableTransitionFX, opac);
-    }
-    else
-    {
-      darken(aclDisableTransitionFX, 40);
-    }
-  }
-  else
-  {
-    darken(aclDisableTransitionFX, 40);
-  }
-  
-  var wrapper = document.createElement('div');
-  wrapper.className = 'miniprompt';
-  var top = document.createElement('div');
-  top.className = 'mp-top';
-  var body = document.createElement('div');
-  body.className = 'mp-body';
-  var bottom = document.createElement('div');
-  bottom.className = 'mp-bottom';
-  if ( typeof(call_on_create) == 'function' )
-  {
-    call_on_create(body);
-  }
-  wrapper.appendChild(top);
-  wrapper.appendChild(body);
-  wrapper.appendChild(bottom);
-  var left = ( getWidth() / 2 ) - ( 388 / 2 );
-  wrapper.style.left = left + 'px';
-  var top = getScrollOffset() - 27;
-  wrapper.style.top = top + 'px';
-  domObjChangeOpac(0, wrapper);
-  var realbody = document.getElementsByTagName('body')[0];
-  realbody.appendChild(wrapper);
-  
-  if ( aclDisableTransitionFX )
-  {
-    domObjChangeOpac(100, wrapper);
-  }
-  else
-  {
-    fly_in_top(wrapper, true, true);
-    
-    setTimeout(function()
-      {
-        domObjChangeOpac(100, wrapper);
-      }, 40);
-  }
-}
-
-/**
- * For a given element, loops through the element and all of its ancestors looking for a miniPrompt div, and returns it. Returns false on failure.
- * @param object:HTMLElement Child node to scan
- * @return object
- */
-
-function miniPromptGetParent(obj)
-{
-  while ( true )
-  {
-    // prevent infinite loops
-    if ( !obj || obj.tagName == 'BODY' )
-      return false;
-    
-    if ( $dynano(obj).hasClass('miniprompt') )
-    {
-      return obj;
-    }
-    obj = obj.parentNode;
-  }
-  return false;
-}
-
-/**
- * Destroys the first miniPrompt div encountered by recursively checking all parent nodes.
- * Usage: <a href="javascript:miniPromptDestroy(this);">click</a>
- * @param object:HTMLElement a child of the div.miniprompt
- * @param bool If true, does not call enlighten().
- */
-
-function miniPromptDestroy(obj, nofade)
-{
-  obj = miniPromptGetParent(obj);
-  if ( !obj )
-    return false;
-  
-  // found it
-  var parent = obj.parentNode;
-  if ( !nofade )
-    enlighten(aclDisableTransitionFX);
-  if ( aclDisableTransitionFX )
-  {
-    parent.removeChild(obj);
-  }
-  else
-  {
-    var timeout = fly_out_top(obj, true, true);
-    setTimeout(function()
-      {
-        parent.removeChild(obj);
-      }, timeout);
-  }
-}
-
-/**
- * Simple test case
- */
-
-function miniPromptTest()
-{
-  miniPrompt(function(div) { div.innerHTML = 'hello world! <a href="#" onclick="miniPromptDestroy(this); return false;">destroy me</a>'; });
-}
-
-/**
- * Message box system for miniPrompts. Less customization but easier to scale than the regular messageBox framework.
- * @example
- <code>
- miniPromptMessage({
-   title: 'Delete page',
-   message: 'Do you really want to delete this page? This is reversible unless you clear the page logs.',
-   buttons: [
-     {
-       text: 'Delete',
-       color: 'red',
-       style: {
-         fontWeight: 'bold'
-       },
-       onclick: function() {
-         ajaxDeletePage();
-         miniPromptDestroy(this);
-       }
-     },
-     {
-       text: 'cancel',
-       onclick: function() {
-         miniPromptDestroy(this);
-       }
-     }
-   ]
- });
- </code>
- */
-
-function miniPromptMessage(parms)
-{
-  if ( !parms.title || !parms.message || !parms.buttons )
-    return false;
-  
-  return miniPrompt(function(parent)
-    {
-      try
-      {
-        var h3 = document.createElement('h3');
-        h3.appendChild(document.createTextNode(parms.title));
-        var body = document.createElement('p');
-        var message = parms.message.split(unescape('%0A'));
-        for ( var i = 0; i < message.length; i++ )
-        {
-          body.appendChild(document.createTextNode(message[i]));
-          if ( i + 1 < message.length )
-            body.appendChild(document.createElement('br'));
-        }
-        
-        parent.style.textAlign = 'center';
-        
-        parent.appendChild(h3);
-        parent.appendChild(body);
-        parent.appendChild(document.createElement('br'));
-        
-        // construct buttons
-        for ( var i = 0; i < parms.buttons.length; i++ )
-        {
-          var button = parms.buttons[i];
-          button.input = document.createElement('a');
-          button.input.href = '#';
-          button.input.clickAction = button.onclick;
-          button.input.className = 'abutton';
-          if ( button.color )
-          {
-            button.input.className += ' abutton_' + button.color;
-          }
-          button.input.appendChild(document.createTextNode(button.text));
-          if ( button.style )
-          {
-            for ( var j in button.style )
-            {
-              button.input.style[j] = button.style[j];
-            }
-          }
-          button.input.onclick = function(e)
-          {
-            try
-            {
-              this.clickAction(e);
-            }
-            catch(e)
-            {
-              console.error(e);
-            }
-            return false;
-          }
-          parent.appendChild(button.input);
-        }
-        if ( parms.buttons[0] )
-        {
-          setTimeout(function()
-            {
-              parms.buttons[0].input.focus();
-            }, 300);
-        }
-      }
-      catch ( e )
-      {
-        console.error(e);
-      }
-    });
-}
-
-function testMPMessageBox()
-{
-  miniPromptMessage({
-    title: 'The Game of LIFE question #73',
-    message: 'You just got your girlfriend pregnant. Please select an option:',
-    buttons: [
-      {
-        text: 'Abort',
-        color: 'red',
-        style: {
-          fontWeight: 'bold'
-        },
-        onclick: function() {
-          miniPromptDestroy(this);
-        }
-      },
-      {
-        text: 'Retry',
-        color: 'blue',
-        onclick: function() {
-          miniPromptDestroy(this);
-        }
-      },
-      {
-        text: 'Ignore',
-        color: 'green',
-        onclick: function() {
-          miniPromptDestroy(this);
-        }
-      }
-    ]
-  });
-}
-
-// Function to fade classes info-box, warning-box, error-box, etc.
-
-function fadeInfoBoxes()
-{
-  var divs = new Array();
-  d = document.getElementsByTagName('div');
-  j = 0;
-  for(var i in d)
-  {
-    if ( !d[i] )
-      continue;
-    if ( !d[i].tagName )
-      continue;
-    if(d[i].className=='info-box' || d[i].className=='error-box' || d[i].className=='warning-box' || d[i].className=='question-box')
-    {
-      divs[j] = d[i];
-      j++;
-    }
-  }
-  if(divs.length < 1) return;
-  for(i in divs)
-  {
-    if(!divs[i].id) divs[i].id = 'autofade_'+Math.floor(Math.random() * 100000);
-    switch(divs[i].className)
-    {
-      case 'info-box':
-      default:
-        from = '#3333FF';
-        break;
-      case 'error-box':
-        from = '#FF3333';
-        break;
-      case 'warning-box':
-        from = '#FFFF33';
-        break;
-      case 'question-box':
-        from = '#33FF33';
-        break;
-    }
-    Fat.fade_element(divs[i].id,30,2000,from,Fat.get_bgcolor(divs[i].id));
-  }
-}
-
-// Alpha fades
-
-function opacity(id, opacStart, opacEnd, millisec) {
-    //speed for each frame
-    var speed = Math.round(millisec / 100);
-    var timer = 0;
-
-    //determine the direction for the blending, if start and end are the same nothing happens
-    if(opacStart > opacEnd) {
-        for(i = opacStart; i >= opacEnd; i--) {
-            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
-            timer++;
-        }
-    } else if(opacStart < opacEnd) {
-        for(i = opacStart; i <= opacEnd; i++)
-            {
-            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
-            timer++;
-        }
-    }
-}
-
-var opacityDOMCache = new Object();
-function domOpacity(obj, opacStart, opacEnd, millisec) {
-    //speed for each frame
-    var speed = Math.round(millisec / 100);
-    var timer = 0;
-    
-    // unique ID for this animation
-    var uniqid = Math.floor(Math.random() * 1000000);
-    opacityDOMCache[uniqid] = obj;
-
-    //determine the direction for the blending, if start and end are the same nothing happens
-    if(opacStart > opacEnd) {
-        for(i = opacStart; i >= opacEnd; i--) {
-            setTimeout("var obj = opacityDOMCache["+uniqid+"]; domObjChangeOpac(" + i + ",obj)",(timer * speed));
-            timer++;
-        }
-    } else if(opacStart < opacEnd) {
-        for(i = opacStart; i <= opacEnd; i++)
-            {
-            setTimeout("var obj = opacityDOMCache["+uniqid+"]; domObjChangeOpac(" + i + ",obj)",(timer * speed));
-            timer++;
-        }
-    }
-    setTimeout("delete(opacityDOMCache["+uniqid+"]);",(timer * speed));
-}
-
-//change the opacity for different browsers
-function changeOpac(opacity, id) {
-    var object = document.getElementById(id).style;
-    object.opacity = (opacity / 100);
-    object.MozOpacity = (opacity / 100);
-    object.KhtmlOpacity = (opacity / 100);
-    object.filter = "alpha(opacity=" + opacity + ")";
-}
-
-function mb_logout()
-{
-  var mb = new MessageBox(MB_YESNO|MB_ICONQUESTION, $lang.get('user_logout_confirm_title'), $lang.get('user_logout_confirm_body'));
-  mb.onclick['Yes'] = function()
-    {
-      window.location = makeUrlNS('Special', 'Logout/' + csrf_token + '/' + title);
-    }
-}
-
-function whiteOutElement(el)
-{
-  var top = $(el).Top();
-  var left = $(el).Left();
-  var width = $(el).Width();
-  var height = $(el).Height();
-  
-  var blackout = document.createElement('div');
-  blackout.style.position = 'absolute';
-  blackout.style.top = top + 'px';
-  blackout.style.left = left + 'px';
-  blackout.style.width = width + 'px';
-  blackout.style.height = height + 'px';
-  
-  blackout.style.backgroundColor = '#FFFFFF';
-  domObjChangeOpac(60, blackout);
-  blackout.style.backgroundImage = 'url(' + scriptPath + '/includes/clientside/tinymce/themes/advanced/skins/default/img/progress.gif)';
-  blackout.style.backgroundPosition = 'center center';
-  blackout.style.backgroundRepeat = 'no-repeat';
-  blackout.style.zIndex = getHighestZ() + 2;
-  
-  var body = document.getElementsByTagName('body')[0];
-  body.appendChild(blackout);
-  
-  return blackout;
-}
-