// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults
// Run a spinner when an AJAX request in running...
var ComatoseAJAXSpinner = {
  busy : function () {
    if($('spinner') && Ajax.activeRequestCount > 0) {
      Effect.Appear('spinner',{duration:0.5,queue:'end'});
    }
  },

  notBusy: function() {
    if($('spinner') && Ajax.activeRequestCount == 0) {
      Effect.Fade('spinner',{duration:0.5,queue:'end'});
    }
  }  
}
// Register it with Prototype...
Ajax.Responders.register({
  onCreate: ComatoseAJAXSpinner.busy, 
  onComplete: ComatoseAJAXSpinner.notBusy
});

function menu(){
  var c = document.cookie.split(';').find(function(e){return e.match('user')});
  if(c != undefined){
    document.write('<div class="link"><a href="/groups">Obecność</a></div>');
    document.write('<div class="link"><a href="/user/logout">Wyloguj: ');
    document.write(c.split('=')[1]);
    document.write('</a></div>');
  } else {
    document.write('<div class="link"><a href="/user/login">Zaloguj</a></div>');
  }
}

function toc(){
  var tocList = new Element('ul');
  var tocDiv = new Element('p',{"id" : "toc"}).update("Spis treści:")
  tocDiv.hide();
  tocDiv.insert(tocList);
  tocDiv.absolutize();

  $$('#content .divider').first().insert({"after" : tocDiv});
  //stupid work-around for elements returned in incorrect order
  $$('#content h2, #content h3').each(function(e){
    e.addClassName('toccable');
  });
  var elements = new Array();
  var lastSubList = null;
  $$('.toccable').each(function(e){
      var tocLink = new Element('a').update(" ");
      tocLink.insert(new Element('img', {"src" : "/images/toc.png"}));
      tocLink.observe('click',function(ev){
        tocDiv.setStyle({"left": (tocLink.offsetLeft + 15) + "px",
          "top" : (tocLink.offsetTop + 10) + "px", 
          "width" : "auto"});
        tocDiv.toggle();
      });

      var tocItem = new Element('li');
      var link = new Element('a').update(e.innerHTML);
      tocItem.insert(link);

      link.observe('click', function(ev){
        tocDiv.hide();
        e.scrollTo();
      });

//      alert(e.tagName);
      if(e.tagName.match(/h2/i)){
        tocList.insert(tocItem);
        var subList = new Element('ul');
        tocItem.insert(subList);
        lastSubList = subList;
      } else {
        if(lastSubList == null){
          var missingItem = new Element('li').update("Wstęp");
          tocList.insert(missingItem);
          lastSubList = missingItem;
          var subList = new Element('ul');
          missingItem.insert(subList);
          lastSubList = subList;
        } 
        lastSubList.insert(tocItem);
      }
      e.insert(tocLink);
  });
}

function reset_cookie(key){
  var now = new Date();
  now.setYear(1970)
  document.cookie = key + "=;path=/;expires=" + now.toGMTString();
}

function get_cookie(key){
  var cookie = document.cookie.split(';').
    find(function(e){return e.match(key)});
  if(cookie != undefined){
    return decodeURI(cookie.split('=')[1]).gsub("\\+"," ");
  }
}
function unfold(element_id){
  var element = $("cat_" + element_id);
  var children =  $("children_" + element_id);
  if(element.hasClassName("folded")){
    element.innerHTML = "&nbsp;&nbsp;&nbsp;";
    element.removeClassName("folded");
    element.addClassName("unfolded");
    if(children.visible()) {
      new Ajax.Request('/menu/unfold/'+element_id, {asynchronous:true, evalScripts:true});
    } else {
      children.show();
    }
    var unfolded = get_cookie("unfolded"); 
    if(unfolded != undefined){
      document.cookie = "unfolded="+unfolded+"-"+element_id+";path=/";  
    } else {
      document.cookie = "unfolded="+element_id+";path=/";
    }
  } else {
    children.hide();
    element.innerHTML = "&nbsp;&nbsp;&nbsp;";
    element.removeClassName("unfolded");
    element.addClassName("folded");
    var unfolded = get_cookie("unfolded"); 
    if(unfolded != undefined){
      document.cookie = "unfolded=" + 
        (unfolded.split("-").reject(function e(el){return el == element_id}).
        join("-")) + ";path=/";
    }
  }
}

function fetch_categories(supplementary_ids,current_id){
  var unfolded = get_cookie("unfolded") + "-" + supplementary_ids + "+" + current_id;
  if(unfolded != undefined && unfolded != ""){
      new Ajax.Request('/menu/unfold_many/'+unfolded, 
          {asynchronous:true, evalScripts:true});
  }
}
