Ext.namespace('Ext.av');

LightboxOptions = 
  {
  fileLoadingImage:        '_lib/Lightbox-2.04/images/loading.gif',     
  fileBottomNavCloseImage: '_lib/Lightbox-2.04/images/closelabel.gif',

	labelImage: "Rysunek",
	labelOf: "z"
  };

Ext.av.FadeOutParams = 
  {
  duration: 0.10,
  useDisplay: true,
	stopFx: true
  };

Ext.av.FadeInParams =
  {
  useDisplay: true,
	stopFx: true
  };

function avOnSubMenuMouseLeave(aEvent, aTarget, aOptions)
  {
  var ul;
  if (aTarget.nodeName != 'UL')
    ul = Ext.fly(aTarget).parent('ul');
  else
    ul = Ext.fly(aTarget);

  ul.removeClass('clsSubMenuMenuHidden');
  }

function avOnContentLinkClick(aEvent, aTarget)
  {
  var a;
  if (aTarget.nodeName != 'A')
    a = Ext.fly(aTarget).parent('A');
  else
    a = aTarget;

  //
  if (a)
    {
    var rel = a.rel || (a.dom && a.dom.rel);
    var re = /^lightbox.*/
    if (re.test(rel) === false)
      {
      var href = a.href || (a.dom && a.dom.href);
      var baseUrl = document.URL;
      var idx = baseUrl.indexOf('?');
      if (idx >= 0)
        baseUrl = baseUrl.substr(0, idx);
      if (href.search(baseUrl) === 0)
        {
        Ext.av.theActiveTabUrl = href;
        Ext.av.theLoading.fadeIn(Ext.av.FadeInParams);
        Ext.av.theContent.fadeOut(Ext.av.FadeOutParams);
        Ext.av.theContent.select('a').removeAllListeners();
        Ext.av.theContent.load(
          {
          url: href,
          params: { raw: 1 },
          method: 'GET',
          scope: this,
          success: avOnContentLoaded
          });
  
        aEvent.stopEvent();
        }
      }
    }
  if (Ext.av.theDebug)
    Ext.av.theDebug.insertHtml('beforeEnd', 'avOnContentLinkClick()<br>');
  }

function avConnectContentLinks()
  {
  var links = Ext.av.theContent.select('a');
  for (var i = 0; i < links.getCount(); i++)
    {
    var link = links.item(i);
    link.on('click', this.avOnContentLinkClick, this);
    }
  }

function avOnContentLoaded(aScope, aResponse, aOptions)
  {
  Ext.av.theLoading.fadeOut(Ext.av.FadeOutParams);
  avConnectContentLinks();
  Ext.av.theLightbox.updateImageList();
  Ext.av.theContent.fadeIn(Ext.av.FadeInParams);
  if (Ext.av.theDebug)
    Ext.av.theDebug.insertHtml('beforeEnd', 'avOnContentLoaded()<br>');
  }

function avOnMenuItemClick(aEvent, aTarget)
  {
  var a;
  var close = false;
  var t = Ext.fly(aTarget);
  if ((aTarget.nodeName == 'A') && (t.hasClass('cTopMenuTopLink') || t.hasClass('cTopMenuTopLinkCurrent')))
    a = aTarget;
  else if (aTarget.nodeName == 'SPAN')
    a = aTarget.parentNode;
  else
    {
    a = aTarget;
    close = true;
    }

  //
  Ext.av.theActiveTabUrl = a.href;
  Ext.av.theLoading.fadeIn(Ext.av.FadeInParams);
  Ext.av.theContent.fadeOut(Ext.av.FadeOutParams);
  Ext.av.theContent.select('a').removeAllListeners();
  Ext.av.theContent.load(
    {
    url: a.href,
    params: { raw: 1 },
    method: 'GET',
    scope: this,
    success: avOnContentLoaded
    });
   
  //
  var newItem = Ext.fly(a);
  if (close == true)
    {
    var subMenu = newItem.parent('ul');
    if (subMenu.hasClass('cTopMenuSubMenu') == true)
      {
      if (!subMenu.theInitialized)
        {
        subMenu.on('mouseleave', this.avOnSubMenuMouseLeave, this);
        subMenu.theInitialized = true;
        }
      subMenu.addClass('clsSubMenuMenuHidden');
      }
    }

  //
  var curItem = Ext.select('#dMenu li a.cTopMenuTopLinkCurrent');
  curItem.replaceClass('cTopMenuTopLinkCurrent', 'cTopMenuTopLink');
  //
  if (close == true)
    newItem = subMenu.parent('li').select('a.cTopMenuTopLink');
  else
    newItem = newItem;
  newItem.replaceClass('cTopMenuTopLink', 'cTopMenuTopLinkCurrent');
  
  //
  aEvent.stopEvent();
  }

function avReloadTab()
  {
  Ext.av.theLoading.fadeIn(Ext.av.FadeInParams);
  Ext.av.theContent.fadeOut(Ext.av.FadeOutParams);
  Ext.av.theContent.select('a').removeAllListeners();
  Ext.av.theContent.load(
    {
    url: Ext.av.theActiveTabUrl,
    params: { raw: 1 },
    method: 'GET',
    scope: this,
    success: avOnContentLoaded
    });
  }

function avOnSkinItemClick(aEvent, aTarget)
  {
  var anchor;
  if (aTarget.nodeName == 'IMG')
    anchor = aTarget.parentNode;
  else
    anchor = aTarget;
  var t = Ext.fly(anchor);
  if (t.hasClass('aSkinOn') === true)
    {
    // Turn it off.
    t.removeClass('aSkinOn');
    }
  else
    {
    // Turn it on.
    t.addClass('aSkinOn');
    }

  var skins = Ext.select('#dSkins a.aSkinOn');
  var animals = 0;
  for (var i = 0; i < skins.getCount(); i++)
    {
    anchor = skins.item(i);
    switch (anchor.dom.id)
      {
      case 'aSkinDog':
        animals |= 1;
        break;
      case 'aSkinCat':
        animals |= 2;
        break;
      case 'aSkinMouse':
        animals |= 4;
        break;
      case 'aSkinParrot':
        animals |= 8;
        break;
      }
    }

  Ext.Ajax.request(
    {
    url: 'tools/avSetAnimals.php',
    success: this.avReloadTab,
    params:
      {
      aAnimals: animals
      }
    });

  aEvent.stopEvent();
  }

Ext.onReady(function()
  {
  Ext.av.theActiveTabUrl = 'onas.php';
  Ext.av.theContent = Ext.select('#dRightContent');
  Ext.av.theLoading = Ext.select('#dvLoading');
  Ext.av.theDebug = Ext.select('#dvDebug');

  var i;
  var menuItems = Ext.select('#dMenu li a');
  for (i = 0; i < menuItems.getCount(); i++)
    {
    var item = menuItems.item(i);
    item.on('click', this.avOnMenuItemClick, this);
    }

  var skinItems = Ext.select('#dSkins a');
  for (i = 0; i < skinItems.getCount(); i++)
    {
    var item = skinItems.item(i);
    item.on('click', this.avOnSkinItemClick, this);
    }

  avConnectContentLinks();
  });


