/**
 * Persistent Sortable Class
 * 
 * This class converts an ul into a sortable list
 * and saves its state in a cookie named <id>_order.
 *
 * @author Jan Bollacke
 **/
PersistentSortable=function (id, defaultOrder, callback, days) {
  var _id=id;
  var _cookieName=id+'_order';
  var _defaultOrder=defaultOrder;
  var _callback=callback;
  var _days=days||365;

 	Sortable.create(_id, {
		onUpdate: function(element) {
			createCookie(_cookieName,Sortable.sequence(_id),_days);
      if (_callback) _callback(element);
		}
	});

  var cookie=readCookie(_cookieName)||'';
	Sortable.setSequence(_id,cookie.split(',').concat(_defaultOrder).uniq());
	createCookie(_cookieName,Sortable.sequence(_id),_days);

  return {
    getId: function () {return _id;},
    getCookieName: function () {return _cookieName;},
    getDefaultOrder: function () {return _defaultOrder;}
  }
}

document.observe('dom:loaded', function() {
  var growler=new k.Growler({ location: 'br' });
  new PersistentSortable(
    'infobar',
    [1,2,3,4,5],
    function (element) {
      element.pulsate({ pulses: 1, duration: 0.4 });
      var msg='Die Reihenfolge wurde gespeichert und wird in Zukunft beibehalten.';
      growler.info(msg,{ header: 'Information' });
//      displayMessage(msg,4000).highlight();
    }
  );
});

/**
 * Shake updated content
 *
 * @author Jan Bollacke
 **/
document.observe('dom:loaded',function () {
  $$('.updated','.important').each(function (x) {x.pulsate({ pulses: 10, duration: 5.0, from: 0.2 })})
});

/**
 * Periodically updated the statistic
 *
 * @author Jan Bollacke
 **/
function updateStatistics() {
  function handler(x) {
    $('statistik').pulsate({ pulses: 1, duration: 0.2, from: 0.5 });
    var jsonData=x.responseJSON;
    Object.keys(jsonData).each(function (key) {
      $(key).innerHTML=jsonData[key];
    });
  }
  new Ajax.Request('counter.json.php',{ method: 'GET', onSuccess: handler });
}
new PeriodicalExecuter(updateStatistics,10);

/**
 * preload header images after page has been loaded completely
 *
 * @author Jan Bollacke
 **/
Event.observe(window, 'load', function () {
  [
    //'/gfx/beta-bewerbung-hover.png',
    '/gfx/beta-topheader41oben.jpg',
    '/gfx/beta-topheader42oben.jpg',
    '/gfx/beta-topheader43oben.jpg',
    '/gfx/beta-topheader44oben.jpg',
    '/gfx/beta-topheader41unten.jpg',
    '/gfx/beta-topheader42unten.jpg',
    '/gfx/beta-topheader43unten.jpg',
    '/gfx/beta-topheader44unten.jpg'
  ].each(preloadImage);
});
