uiej = {};

/* slides */
uiej.slides = function(){
  this.active = null;
  this.childId = '_slide';
  this.activeClassName = 'on';
  this.contents = [];
  this.timer = false;
  this.fadeTime = 300;
  this.autoSlide = false;
  this.slideInterval = 4000;
  this.mo = false;
};

uiej.slides.prototype.addImage = function(id){
  var o = {};
  o.parent = $('#' + id);
  o.child = $('#' + id + this.childId);
  this.contents.push(o);
};

uiej.slides.prototype.addImages = function(ids){
  var _self = this;
  $.each(ids.split(','), function(){
    _self.addImage(this);
  });
};

uiej.slides.prototype.init = function(n){
  var _self = this;
  $.each(_self.contents, function(i, o){
    (i != n) ? o.child.fadeOut(0) : o.child.show(0);
    o.parent.hover(function(){
      _self.select(i);
      _self.mo = true;
    }, function(){
      _self.mo = false;
    });
		o.child.hover(function(){
      _self.mo = true;
    }, function(){
      _self.mo = false;
    });
    o.parent.click(function(e){
      e.preventDefault();
    });
  });
  this.select(n);
  if (this.autoSlide) 
    this.start();
};

uiej.slides.prototype.select = function(n){
  if (this.active != n) {
    var _con = this.contents;
    var _cls = this.activeClassName;
    var _fad = this.fadeTime;
    if (this.active != null) {
      _con[this.active].child.fadeOut(_fad);
      _con[this.active].parent.removeClass(_cls);
      _con[n].child.fadeIn(_fad);
    }
    _con[n].parent.addClass(_cls);
    this.active = n;
  }
};

uiej.slides.prototype.start = function(){
  var _self = this;
  this.timer = setInterval(function(){
    if (!_self.mo) 
      _self.next();
  }, _self.slideInterval);
};

uiej.slides.prototype.stop = function(){
  clearInterval(this.timer);
};

uiej.slides.prototype.next = function(){
  var n = (this.active + 1 >= this.contents.length) ? 0 : this.active + 1;
  this.select(n);
};

/* menu */
uiej.menu = function(){
	this.menuOn = false;
  this.activeCategory = null;
  this.activeClassName = 'act';
  this.contents = [];
  this.fadein = 80;
  this.fadeout = 120;
	this.menuOnWait = 50;
	this.fadeoutWait = 20;
  this.rootid = null;
};

uiej.menu.prototype.addMenu = function(id){
  var o = {};
  o.parent = $('#' + id);
  o.self = o.parent.children('a');
  o.child = o.self.next();
  this.contents.push(o);
};

uiej.menu.prototype.addMenus = function(ids){
  var _self = this;
  $.each(ids.split(','), function(){
    _self.addMenu(this);
  });
};

uiej.menu.prototype.init = function(){
  var _self = this;
  var _cls = this.activeClassName;
  $.each(_self.contents, function(i, o){
    o.self.hover(function(e){
      _self.show(i);
      _self.menuOn = true;
    }, function(){
      _self.menuOn = false;
    });
    o.child.hover(function(e){
      e.stopPropagation();
      o.parent.addClass(_cls);
    }, function(e){
      e.stopPropagation();
      _self.hide();
      o.parent.removeClass(_cls);
    });
  });
  $(this.rootid).hover(function(){
  }, function(){
    _self.hide();
  });
};

uiej.menu.prototype.show = function(n){
  var _self = this;
  setTimeout(function(){
    if (_self.menuOn) {
      if (_self.activeCategory != null) {
        $.each(_self.contents, function(){
          this.child.stop(false, true).hide();
        });
        _self.contents[n].child.fadeIn(0);
      }
      else {
        _self.contents[n].child.fadeIn(_self.fadein);
      }
      _self.activeCategory = n;      
    }    
  }, _self.menuOnWait);
};

uiej.menu.prototype.hide = function(txt){
  var _self = this;
  setTimeout(function(){
    if (!_self.menuOn && _self.activeCategory != null) {
      _self.contents[_self.activeCategory].child.fadeOut(_self.fadeout, function(){
        _self.activeCategory = null;
      });
    }
  }, _self.fadeoutWait);
};

if ($.browser.msie) {
  uiej.menu.prototype.show = function(n){
    var _self = this;
    setTimeout(function(){
      if (_self.menuOn) {
        if (_self.activeCategory != null) {
          $.each(_self.contents, function(){
            this.child.hide();
          });
        }
        _self.contents[n].child.show();
        _self.activeCategory = n;
        $('#indexSearch').hide();
      }
    }, 60);
  };
  uiej.menu.prototype.hide = function(txt){
    var _self = this;
    setTimeout(function(){
      if (!_self.menuOn && _self.activeCategory != null) {
        _self.contents[_self.activeCategory].child.hide(0, function(){
          _self.activeCategory = null;
        });
        $('#indexSearch').show();
      }
    }, 80);
  };
}


$(function(){
  var gmenu = new uiej.menu();
  gmenu.rootid = "#gNavi";
  gmenu.addMenus("gNavi0,gNavi1,gNavi2,gNavi3,gNavi4");
  gmenu.init();
});
