var MainMenu = new Class({
  initialize: function(menu){
    this.menu = menu;
    this.current = null;
    if (this.menu) {
      this.items = this.menu.getElements('.parent');
      this.items.each (function(item){
        item.addEvents({
          'mouseover':this.over.bind(this),
          'mouseout':this.out.bind(this),
        });
      }.bind(this));
    }
  },
  over:function(item){
    clearTimeout(this.timer);
    var el = item.event.currentTarget;
    this.hide();
    el.addClass('hover');
    this.current = el;
    
  },
  out:function(item){
    var el = item.event.currentTarget;
    this.timer = this.hide.delay(500,this);
  },
  hide:function(){
    if (this.current)
      this.current.removeClass('hover');
  }
});

function cloud_check(idx,check) {
  var data = Cookie.read('clouds') || 0;
  var el = $('cloud_'+idx);
  idx = Math.pow(2,idx);
  if (check) {
    data |= idx;
    if (el)
      el.addClass('cloud'); 
  } else {
    data &= ~idx;
    if (el)
      el.removeClass('cloud'); 
  } 
  Cookie.write('clouds', data);
}
function cloud_load(idx) {
  var data = Cookie.read('clouds') || 0;
  var el = $('cloud_'+idx);
  idx = Math.pow(2,idx);
  if (el && (data & idx)) {
    el.addClass('cloud'); 
  } else {
    el.removeClass('cloud'); 
  }   
}
function updateTips(el) {
    new Tips(el.getElements('.tip'),{className:'tool-tip',text: function (el){
      var dual = el.title.split('::');
			if (dual.length > 1) {
        var text = dual[1].trim();
        if (text.length > 1) {
          return text;
        } else {
          return null;
        }
      }
    },
    title: function (el){
      var dual = el.title.split('::');
			if (dual.length > 1) 
        return dual[0].trim();
			else 
        return el.title; 
    }
    });
  }
window.addEvent('domready',function() {
  /*$$('input[type=submit], button, input[type=button]').each(function(element) {
    if (element && !element.hasClass('skip')) {
      var a = new Element('a');
      ['style','class'].each(function(param){
        var p = element.get(param);
        if (p)
          a.set(param,p);
      });
      a.addClass('button');
      if (element.tag == 'button') {
        a.set('html',element.get('html'));
      } else {
        a.set('html',element.value);
      }
      a.addEvent('click',function(e){
        element.form.submit();
      });
      a.inject(element,'after');
      element.setStyles({
        opacity:0,
        position:'absolute'
      });
    }
  });*/
  //Tips
  
  updateTips(document);
  //Mootabs
  $$('.mootabs').each(function(element){
    var titles = element.getElements('.mootabs-title');
    var content = element.getElements('.mootabs-content');
    new mootabs(titles,content,{mouseOverClass:'hover',changeTransition:'none'});
  });
  $$('.accordion').each(function(element){
    var titles = element.getElements('.accordion-title');
    var content = element.getElements('.accordion-content');
    this.display = -1;
    if (titles.length > 1)
      this.display = 0;
    var index = element.getElement('#index');
    if (index)
      this.display = index.value;
    titles.each(function(a,b){
        if (a.hasClass('active')) {
          this.display = b;
        }
        var event = a.getProperty('event');
        if (event) {
          a.addEvent(event,function(e){
            a.fireEvent('click',e);
          }.bind(a));
        }
      }.bind(this));
    var myURI = new URI();
    var frag = myURI.get('fragment');
    if (frag) {
      content.each(function(a,b){
        if ((a.id && a.id == frag) || a.hasClass(frag)) {
          this.display = b;
        }
      }.bind(this));
    }
    new Fx.Accordion(titles, content,{
      onActive: function(toggler, section){
        toggler.addClass('active');
        section.addClass('active');
      },
      onBackground: function(toggler, section){
        toggler.removeClass('active');
        section.removeClass('active');
      },
      opacity:false, 
      show: false,
      initialDisplayFx:false,
      alwaysHide:(titles.length<=1),
      display:display
      });
  });
  $$('.subaccordion').each(function(element){
    var titles = element.getElements('.subaccordion-title');
    var content = element.getElements('.subaccordion-content');
    var index = element.getElement('#index');
    element.store('accordion:instance',new Fx.Accordion(titles, content,{
      onActive: function(toggler, section){
        if (toggler)
          toggler.addClass('active');
        if (section)
          section.addClass('active');
      },
      onBackground: function(toggler, section){
        if (toggler)
          toggler.removeClass('active');
        if (section)
          section.removeClass('active');
      },
      opacity:false, 
      show: false,
      initialDisplayFx:false,
      alwaysHide:(titles.length<=1),
      display:(index?index.value:-1)
      }));
  });
  if (typeof Slimbox !== 'undefined' && !/android|iphone|ipod|series60|symbian|windows ce|blackberry/i.test(navigator.userAgent)) {
    $$("a").filter(function(el) {
      return el.rel && el.rel.test(/^lightbox/i);
    }).slimbox({}, null, function(el) {
      return (this == el) || ((this.rel.length > 8) && (this.rel == el.rel));
    });
  }
  
  $$('.datapicker').each(function(element){
    this.format = null;
    if (element.title) {
      this.format = element.title;
      element.title = '';
    }
    new DatePicker(element,{
      timePicker:element.hasClass('withTime'),
      format: this.format
    });
  });
  function readmin(elements) {
    elements.each(function(element){
      if (!element.retrieve('readmin')) {
        element.addEvent('click',function(e){
          e.stop();
          var container = $(element.get('rev'));
          new Request.HTML({url:'/module.php',update:container,onSuccess:function(responseTree, responseElements, responseHTML, responseJavaScript){
            readmin($$('.remodule'));     
          },
          onRequest:function() {
            container.addClass('wait');
          },
          onComplete:function() {
            container.removeClass('wait');
          },
          }).post(element.get('href').replace(/^\?/, ''));
        });
        element.store('readmin',true);
      }
    });
    new Tips('.calendartip',{className:'tool-tip',text: function (el){
      var dual = el.title.split('::');
			if (dual.length > 1) return dual[1].trim();
    },
    title: function (el){
      var dual = el.title.split('::');
			if (dual.length > 1) 
        return dual[0].trim();
			else 
        return el.title; 
    }
    });
  }
  readmin($$('.remodule'));
   
});

function updateModule(module,container,vars,call) {
  container = $(container);
  new Request.HTML({
    url:'/module.php?module='+module,
    update:container,
    onRequest:function() {
      container.addClass('wait');
    },
    onComplete:function() {
      container.removeClass('wait');
      if (call) {
        call();
      }
    },
  }).post(vars);
}

