/**
 * Elhelyezi az openPopup funkciót a popup osztályú linkek onclick eseményén
 */
function managePopup() {
    var popup = getElementsByClass("popup");
    
    for(i=0; i<popup.length; i++) {
        if (popup[i].href && popup[i].href != "") {
            addEvent(popup[i], "click", openPopup);
        }
    }
}

/**
 * Megkeresi az adott elem legelső megadott típusú parent elemét
 *
 * Ha a paraméterben átadott objektum típusa azonos a kerestt típussal, akkor
 * önmagát adja vissza.
 *
 * @param       Object      element     Elem, amelynek a parentjét kell keresni
 * @param       string      tagName     Szülő elem típusa
 *
 * @return      Object      A keresett szülő objektum
 */
function getParent(element, tagName) {
    if (element == null) {
        return null;
    } else if (element.nodeType == 1 && element.tagName.toLowerCase() == tagName.toLowerCase()) {
        return element;
    } else {
        return getParent(element.parentNode, tagName);
    }
}

/**
 * Lekérdezi és visszaadja a megadott stílusosztályba tartozó elemeket
 *
 * @param   string      name        A keresett osztály neve
 *
 * @return  Array       A keresett stílusosztályba tartozó tartozó elemek tömbje
 */
function getElementsByClass(name) {
  var found = 0;
  var elems = new Array();
  var alltags = document.getElementsByTagName("*");
  if (alltags) {
    for (i=0; i < alltags.length; i++) {
        if (alltags[i].className == name) {
          elems[found++] = alltags[i];
        }
    }
  }
  return(elems);
}

/**
 * Hozzárendel egy objektumhoz egy eseménykezelőt
 *
 * @param   Object          object      Az objektum, amihez az eseménykezelőt rendelni kell
 * @param   DOMString       type        Az esemény típusa
 * @param   EventListener   listener    Eseménykezelő függvény neve  
 */
function addEvent(object, type, listener) {
    if (object.addEventListener) {
        object.addEventListener(type, listener, true);
        return true;
    } else if (object.attachEvent) {
        return object.attachEvent("on"+type, listener);
    } else {
        return false;
    }
}

/**
 * Megnyitja a linket popup ablakként
 *
 * @param   Object      event       Esemény objektum
 */
function openPopup(event) {
    // Esemény objektum meghatározása, ha nem kapta meg a funkció
    event || (event = window.event);
    
    // Esemény forrásának felderítése
    var source;
    if (typeof event.target != "undefined") {
        source = event.target;
    } else if (typeof event.srcElement != "undefined") {
        source = event.srcElement;
    } else {
        return(true); 
    }
    
    source = getParent(source, "a");
    window.open(source.href, "", "width=780, height=570, left=0, top=0");
    
    // Esemény elpusztítása, a link ne működjön
    if (event.preventDefault) {
        event.preventDefault(); event.stopPropagation();
    } else {
        event.cancelBubble = true; 
        event.returnValue = false;
    }
    return false;
}
