includes/clientside/static/sliders.js
author Dan
Mon, 16 Feb 2009 16:17:25 -0500
changeset 832 7152ca0a0ce9
parent 779 609e35845ec3
child 855 4f7521dd981f
permissions -rw-r--r--
Major redesign of rendering pipeline that separates pages saved with MCE from pages saved with the plaintext editor (full description in long commit message) - Pages are now stored with an extra metadata field called page_format which is "wikitext" or "xhtml" - New $flags parameter + RENDER_* constants added that control RenderMan::render() behavior - Several other changes: * Added a sprite API for Javascript and made editor use sprites when possible * Removed a number of config options from the default install schema, replaced with second parameter to getConfig() calls * MessageBox in editor mostly replaced with miniPrompt * A few bugfixes related to password changes (registration didn't even work) * Rewrote the bitfield compression algorithm used to serialize allowed MIME types * Fixed some typos in language files and strings * Fixed a Text_Wiki bug in Heading parser

// Sliding drawers on the sidebar

// our global vars
// the delay between the slide in/out, and a little inertia

/*
pseudocode:
  oninit():
    i = 0
    for every div with class "slideblock", do
      if ( cookie['mdgSliderState_' || i] == 'closed' )
        hide(div)
        
      div.trigger.addEvent onclick():
        if ( div.hidden )
          div.show()
          cookie['mdgSliderState_' || i] = 'open'
        else
          div.hide()
          cookie['mdgSliderState_' || i] = 'closed
          
      i++
    
*/


var sliders_initted = false;
      
var initSliders = function()
{
  if ( KILL_SWITCH || IE )
    return false;
  
  var divs = getElementsByClassName(document, "div", "slideblock");
  var divs2 = getElementsByClassName(document, "div", "slideblock2");
  for ( var i = 0; i < divs2.length; i++ )
  {
    divs.push(divs2[i]);
  }
  delete divs2;
  
  if ( divs.length < 1 )
    return false;
  
  for ( var i = 0; i < divs.length; i++ )
  {
    var div = divs[i];
    // set a unique id for this slider
    div.metaid = i;
    
    var cookiename = 'mdgSliderState_' + i;
    if ( readCookie(cookiename) == 'closed' )
    {
      div.style.display = 'none';
    }
    
    var el = div.previousSibling;
    if ( !el )
      continue;
    while ( el.tagName != 'DIV' )
    {
      el = el.previousSibling;
      if ( !el )
        break;
    }
    if ( !el )
      continue;
    var toggler = el.getElementsByTagName('a')[0];
    if ( !toggler )
      continue;
    toggler.onclick = function()
    {
      load_component(['jquery', 'jquery-ui']);
      
      var mydiv = this.parentNode.nextSibling;
      while ( mydiv.tagName != 'DIV' )
        mydiv = mydiv.nextSibling;
      if ( mydiv.style.display == 'none' )
      {
        $(mydiv).show('blind');
        var cookiename = 'mdgSliderState_' + mydiv.metaid;
        createCookie(cookiename, 'open', 365);
      }
      else
      {
        $(mydiv).hide('blind');
        var cookiename = 'mdgSliderState_' + mydiv.metaid;
        createCookie(cookiename, 'closed', 365);
      }
      
      return false;
    }
  }
}

addOnloadHook(initSliders);