/**
 * Ellenőrzi egy email cím formai helyességét
 *
 * @param   String      email       Ellenőrizendő email
 *
 * @return  Boolean     true, ha az email nem üres és formailag helyes
 */
function validEmail(email) {
    if (email=="" || email== null) {
        return false;
    } else {
        var emailReg = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,6}|[0-9]{1,3})(\]?)$/; // valid
        if (!emailReg.test(email)) { // if syntax is valid
            return false;
        }
        return true;
    }
}

/**
 * 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 == "") {
                continue;
            }
            classes = alltags[i].className.split(" ");
            for (ii=0; ii<classes.length; ii++) {
                if (classes[ii] == name) {
                    elems[found++] = alltags[i];
                    continue;
                }
            }
        }
    }
    return(elems);
}

/**
 * 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);
    }
}

/**
 * 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;
    }
}
