/*
 Copyright (c) Jean-Marc Delafont, kttp://www.ksp.fr
License:
	MIT-style license.
*/
function update_news(anchor, keep_flags) {
  anchors = $$('.news ul li a.title');
  anchor = $(anchor);

  used_fade_effect = true;
  if (anchor.getParent().hasClass('on')) {
    used_fade_effect = false;
  }

  new Request.HTML({
    url:anchor.href,
    method: 'get',
    update: 'ghost_container',
    onRequest: function() {
      document.body.style.cursor = 'wait';
      anchors.setStyles({cursor: 'wait'});
      if (used_fade_effect) {
        show_hide_news_content($('news_bloc'), 0, true, keep_flags);
      }
      anchor.getParent().getParent().getChildren('li').each(function(item) {
        if (anchor.getParent() == item) {
          item.addClass('on');
        } else {
          item.removeClass('on');
        }
      });
    },
    onComplete: function(){
      document.body.style.cursor = '';
      anchors.setStyles({cursor: ''});

      if (entry_to_display = $('ghost_container').getElement('.entry_container')) {
        if (used_fade_effect) {
          show_hide_news_content($('ghost_container'), 0, false, keep_flags);
        }
        entry_container = $('news_bloc').getElement('.entry_container');

        fx = new Fx.Tween(entry_container);
        fx.start('height', entry_to_display.getSize()['y']).chain( function() { 
          entry_to_display.replaces(entry_container); 
          [ '.date_time', '.title', '.flags' ].each(function (item) {
            if ((elt_to_display = $('ghost_container').getElement(item)) && (elt_to_replace = $('news_bloc').getElement(item))) {
              elt_to_display.replaces(elt_to_replace);
            } 
          });
          if (used_fade_effect) {
            show_hide_news_content($('news_bloc'), 1, true, keep_flags);
          }
        });
      }
    }
  }).send();

  return false;
}

function show_hide_news_content(container, opacity, transition, keep_flags)
{
    entry = container.getElement('.entry');
    head = container.getElement('.head');
    elts_to_fade = [ entry ];
    effects = {};
    effects[0]= { 'opacity': opacity };
    elt_class_name = [ '.title', '.date_time' ];
    if (!keep_flags) {
      elt_class_name.push('.flags');
    }
    elt_class_name.each(function(item,idx) {
      if (elt = head.getElement(item)) {
        elts_to_fade.push(elt);
        effects[idx+1] = { opacity: opacity };
      }
    });
    if (transition) {
      return new Fx.Elements(elts_to_fade).start(effects);
    } else {
      return new Fx.Elements(elts_to_fade).set(effects);
    }
}

var AnchorMover = new Class();
AnchorMover.scanPage = function() {
	var links = $$("a").filter(function(el) {
		return el.rel && el.rel.test(/^anchor_scroll/i);
	});

  links.each(function(item) {
    var reg = /#(.*)$/;
    if (matches = item.href.match(reg)) {
      var anchor;
      if (anchor = $(matches[1])) {
        item.addEvent('click', function(event) {
          event = new Event(event).stop();
          sc = new Fx.Scroll(window);
          sc.toElement(anchor);
        });
      }
    }
  });
}

