// ez a javascript a metadata-ban megadható kérések wrapper-e.

// ez a tömb funkció szkópokat gyűjt.
// minden jPlugin, amihez tartozik kérés, valamint a speciális javascriptek is,
// ide veszik fel a saját kéréskezelőjüket.
// az ide kerülő funkciók element és data paramétert kapnak
requestHandlers = new Array();

// ez a tömb azon funkciók sorát tartalmazza, amiket egy elem frissítése után
// újra futtatni kell. Ide is felvehetnek saját dolgokat az egyes javascriptek
// lefuttatásra kerül a lista document.ready-kor is, tehát elég ide megadni
// az ide kerülő funkciók element paramétert kapnak
updateRunList = new Array();

// felvesszük az updateRunList-be a request handler-eket feldolgozó funkciót!
// element-nek vagy egy konkrét elemet kapunk vagy magát a dokumentumot, mindegy
updateRunList.push(function(element) {

  // maga az element
  var allData = element.metadata();
  $.each(allData,function(index,data) {
    if ($.isFunction(requestHandlers[data.func]))
      requestHandlers[data.func](element,data);
  });

  // az element gyermekei
  element.find('.metadata').each(function(index) {
    currEl = $(this);
    var allData = currEl.metadata();
    $.each(allData,function(index,data) {
      if ($.isFunction(requestHandlers[data.func]))
        requestHandlers[data.func](currEl,data);
    })
  });
});



window.onload = function () {
  // document ready-kor lefuttatjuk az updateRunList elemeit,
  // így a request wrappert-t is, amely a kéréseket futtatja
  $.each(updateRunList,function(index,data) {
    if ($.isFunction(data)) data($('body'));
  });

  // ha a hash-ban más URL szerepel, (korábbi ajax modifyURL)
  // akkor ajaxon arra frissítjük a tartalmat
  if (location.hash.length > 0) {
    updateElement({
      elName: 'content',
      newUrl: location.hash.substr(2),
      showOverlay: true
    });
  }
};
