var zmienna = 0;
var zmienna2 = 0

function hideAllPodmenu(){
  ContainerMenu.childElements().each(function(element){
    element.hide();
  }) 
}

function hendlerContainerMenu(li){
  ContainerMenu.observe('mouseover',function(event){
    var container = event.target;
    if(container.id == 'container_menu'){
      zmienna2 = 0
      ContainerMenu.hide();
      hideAllPodmenu()
      li.removeClassHover()
    }
  })
  ContainerMenu.observe('click',function(event){
    var container = event.target;
    if(container.id == 'container_menu'){
      ContainerMenu.hide();
      hideAllPodmenu();
      li.removeClassHover()
    }
  })
}   

function removeAllClassHover(){
  links.each(function(li){
    li.removeClassHover();
  });
}

function updateSpanCounter(pair){
  links.each(function(li){
    if(li.getId() == pair.key ){
      if(pair.value > 9 ){
        li.getSpanCounter().update('9+')
      }
      else {
      li.getSpanCounter().update(pair.value)
      }
      if(pair.value > 0){
        li.getSpanCounter().show();
      }
    }
  })
}

function getSpanCounter(){
  new Ajax.Request('/home/get_counts_for_menu',{
    method: 'get',
    onSuccess: function(response){
      var hash = $H(response.responseJSON);
      hash.each(function(pair){
        updateSpanCounter(pair);    
      })
    } 
  });    
}

function hideSpanCounter(){
  links.each(function(link){
    link.getSpanCounter().hide();
  })
}

function showMenuElement(){
  clearTimeout(time); 
  if(zmienna == 0){
    zmienna2 = 1
    ContainerMenu.show();
    ContainerMenu.style.display = "block" 
    current_div.show();
    objectLi.addClassHover('hover');  
    objectLi.getSpanCounter().hide();
    objectLi.getSpanCounter().update("0");
    hendlerContainerMenu(objectLi);
  }else{
    zmienna = 0
    objectLi.removeClassHover(); 
  }
}
function showMenuElement1(){
  if(zmienna2 == 0) zmienna = 1
}
function showMenuElements(){
  hideAllPodmenu();
  removeAllClassHover();
  objectLi = this;
  current_div = submenuElements.get(objectLi.getId().toString()) 
  if(zmienna2 == 1){
    showMenuElement()
  }else{
    time = setTimeout("showMenuElement()",1000)
  }
}

function doNothing(event){
  //var objectLi = this
  //event.stop();
}

function showArticleObjects(limit){
  article_object_li_tags.each(function(li,index){
    li.show(); if(index >= limit) li.hide();
  });
}

function showFriendObjects(limit){
  friend_object_li_tags.each(function(li,index){
    li.show(); if(index >= limit) li.hide();
  });
}

function showNewsitemObjects(limit){
  newsitem_object_li_tags.each(function(li,index){
    li.show(); if(index >= limit) li.hide();
  });
}

function showGroupObjects(limit){
  group_object_li_tags.each(function(li,index){
    li.show(); if(index >= limit) li.hide();
  });
}

function showVideoObjects(limit){
  video_object_li_tags.each(function(li,index){
    li.show(); if(index >= limit) li.hide();
  });
}

function showBlogPostObjects(limit){
  blog_post_object_li_tags.each(function(li,index){
    li.show(); if(index >= limit) li.hide();
  });
}

function limitArticleObjects(event){
  var current_link = event.findElement();
  var index = article_object_link_tags.indexOf(current_link);
  var limit = article_object_limits.get(index);
  article_object_link_tags.invoke('removeClassName','active');
  current_link.addClassName('active');
  showArticleObjects(limit);
  Cookie.setData('index_menu_visible_articles', index);
  event.stop();
}

function limitFriendObjects(event){
  var current_link = event.findElement();
  var index = friend_object_link_tags.indexOf(current_link);
  var limit = friend_object_limits.get(index);
  friend_object_link_tags.invoke('removeClassName','active');
  current_link.addClassName('active');
  showFriendObjects(limit);
  Cookie.setData('index_menu_visible_friends', index);
  event.stop();
}

function limitNewsitemObjects(event){
  var current_link = event.findElement();
  var index = newsitem_object_link_tags.indexOf(current_link);
  var limit = newsitem_object_limits.get(index);
  newsitem_object_link_tags.invoke('removeClassName','active');
  current_link.addClassName('active');
  showNewsitemObjects(limit);
  Cookie.setData('index_menu_visible_newsitems', index);
  event.stop();
}

function limitGroupObjects(event){
  var current_link = event.findElement();
  var index = group_object_link_tags.indexOf(current_link);
  var limit = group_object_limits.get(index);
  group_object_link_tags.invoke('removeClassName','active');
  current_link.addClassName('active');
  showGroupObjects(limit);
  Cookie.setData('index_menu_visible_groups', index);
  event.stop();
}

function limitVideoObjects(event){
  var current_link = event.findElement();
  var index = video_object_link_tags.indexOf(current_link);
  var limit = video_object_limits.get(index);
  video_object_link_tags.invoke('removeClassName','active');
  current_link.addClassName('active');
  showVideoObjects(limit);
  Cookie.setData('index_menu_visible_videos', index);
  event.stop();
}

function limitBlogPostObjects(event){
  var current_link = event.findElement();
  var index = blog_post_object_link_tags.indexOf(current_link);
  var limit = blog_post_object_limits.get(index);
  blog_post_object_link_tags.invoke('removeClassName','active');
  current_link.addClassName('active');
  showBlogPostObjects(limit);
  Cookie.setData('index_menu_visible_blog_posts', index);
  event.stop();
}

function markFirstLimitOption(){
  newsitem_object_li_tags = $$('li.newsitem_menu');
  newsitem_object_link_tags = $$('a.newsitem_menu_limit');
  newsitem_object_limits = $H({0:5,1:10,2:15});
  var idx = Cookie.getData('index_menu_visible_newsitems', 0);
  if(newsitem_object_link_tags.size() > idx) newsitem_object_link_tags[idx].addClassName('active');

  article_object_li_tags = $$('li.article_menu');
  article_object_link_tags = $$('a.article_menu_limit');
  article_object_limits = $H({0:5,1:10,2:15});
  idx = Cookie.getData('index_menu_visible_articles', 0);
  if(article_object_link_tags.size() > idx) article_object_link_tags[idx].addClassName('active');
    
  friend_object_li_tags = $$('li.friend_menu');
  friend_object_link_tags = $$('a.friend_menu_limit');
  friend_object_limits = $H({0:5,1:10,2:15});
  idx = Cookie.getData('index_menu_visible_friends', 0);
  if(friend_object_link_tags.size() > idx) friend_object_link_tags[idx].addClassName('active');

  group_object_li_tags = $$('li.group_menu');
  group_object_link_tags = $$('a.group_menu_limit');
  group_object_limits = $H({0:5,1:10,2:15});
  idx = Cookie.getData('index_menu_visible_groups', 0);
  if(group_object_link_tags.size() > idx) group_object_link_tags[idx].addClassName('active');

  video_object_li_tags = $$('#tv_podmenu ul.list li.video');
  video_object_link_tags = $$('a.video_menu_limit');
  video_object_limits = $H({0:5,1:10,2:15});
  idx = Cookie.getData('index_menu_visible_videos', 0);
  if(video_object_link_tags.size() > idx) video_object_link_tags[idx].addClassName('active');

  blog_post_object_li_tags = $$('li.blog_posts_menu');
  blog_post_object_link_tags = $$('a.blog_posts_menu_limit');
  blog_post_object_limits = $H({0:5,1:10,2:15});
  idx = Cookie.getData('index_menu_visible_blog_posts', 0);
  if(blog_post_object_link_tags.size() > idx) blog_post_object_link_tags[idx].addClassName('active');
}

function setArticleObjectHandlers(){
  article_object_link_tags.invoke('observe','click',limitArticleObjects);
}

function setFriendObjectHandlers(){
  friend_object_link_tags.invoke('observe','click',limitFriendObjects);
}

function setNewsitemObjectHandlers(){
  newsitem_object_link_tags.invoke('observe','click',limitNewsitemObjects);
}

function setGroupObjectHandlers(){
  group_object_link_tags.invoke('observe','click',limitGroupObjects);
}

function setVideoObjectHandlers(){
  video_object_link_tags.invoke('observe','click',limitVideoObjects);
}

function setBlogPostObjectHandlers(){
  blog_post_object_link_tags.invoke('observe','click',limitBlogPostObjects);
}

function fetchMenuLinks(){
  submenuElements = new Hash();
  ContainerMenu.childElements().each(function(div){
    submenuElements.set(div.id.split('_').first(),div) 
  }) 
  links = []
  $$('ul.menu_list li').each(function(l){
    var link = new Link(l);
    links.push(link);
    link.reference.down(0).observe('click',doNothing.bind(link));
    link.reference.down(0).observe('mouseenter',showMenuElements.bind(link));
    link.reference.down(0).observe('mouseleave',showMenuElement1.bind(link));
  });
}

function initMenu(){
  Cookie.init({name: 'local_settings', expires: 90});
  ContainerMenu = $('container_menu');
  ContainerMenu.hide();
  fetchMenuLinks();
  hideSpanCounter();
  getSpanCounter();
  markFirstLimitOption();
  setArticleObjectHandlers();
  setFriendObjectHandlers();
  setNewsitemObjectHandlers();
  setGroupObjectHandlers();
  setVideoObjectHandlers();
  setBlogPostObjectHandlers();
  showArticleObjects(article_object_limits.get(Cookie.getData('index_menu_visible_articles', 0)));
  showFriendObjects(friend_object_limits.get(Cookie.getData('index_menu_visible_friends', 0)));
  showNewsitemObjects(newsitem_object_limits.get(Cookie.getData('index_menu_visible_newsitems', 0)));
  showGroupObjects(group_object_limits.get(Cookie.getData('index_menu_visible_groups', 0)));
  showVideoObjects(video_object_limits.get(Cookie.getData('index_menu_visible_videos', 0)));
  showBlogPostObjects(blog_post_object_limits.get(Cookie.getData('index_menu_visible_blog_posts', 0)));
}

document.observe('dom:loaded',initMenu)

var Link = Class.create({
  initialize: function(reference){
    this.reference = reference;
  },
  getUrl: function(){
    return this.reference.down(0).readAttribute('href');
  },
  getSpanCounter: function(reference){
    return this.reference.down(1).next(0);
  },
  getId: function(reference){
    return this.reference.id;
  },
  addClassHover: function(reference){
    this.reference.addClassName('hover');
  },
  removeClassHover: function(reference){
    this.reference.removeClassName('hover');
  }
})


