/**
 * Általános funkciók
 *
 * @author      Aurum <aurum@aurum.hu>
 * @copyright   Copyright (c)2005 by Aurum
 * @version     0.1
 */

/**
 * 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;
    }
}


/**
 * Ellenőrzi, hogy a rádiógomb-csoportból van-e gomb kiválasztva
 *
 * @param   Object      buttonGroup     Gomb csoport objektuma
 *
 * @return  integer     -1, ha nincs gomb kiválasztva, a gomb indexe, ha van
 */
function checkRadioButtonGroup(buttonGroup) {
    selected = -1;
    for (i=0; i<buttonGroup.length; i++) {
        if (buttonGroup[i].checked) {
            selected = i;
            i = buttonGroup.length;
        }
    }
    return selected;
}
 


/**
 * Kiolvas egy sütit
 *
 * @param   string      name        A süti neve
 *
 * @return  string      A süti tartalma
 */
function getCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) {
            var endstr = document.cookie.indexOf(";", j);
            if (endstr == -1) {
                endstr = document.cookie.length;
            }
            return unescape(document.cookie.substring(j, endstr));
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) {
            break;
        }
    }
    return null;
}

/**
 * Beállítja egy süti tartalmát
 *
 * @param   string      name        A süti neve
 * @param   string      value       A süti beállítandó tartalma
 * @param   string      expires     A süti lejáratának időpontja
 * @param   string      path        A süti útvonala
 * @param   string      domain      A domain neve
 * @param   boolean     secure      true, ha biztonságos kapcsolatot igényel
 */
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires.toGMTString() : "") + 
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") + 
        ((secure) ? "; secure" : "");
}

/**
 * Töröl egy beállított sütit
 *
 * @param   string      name        A süti neve
 * @param   string      path        A süti útvonala
 * @param   string      domain      A domain neve
 */
function deleteCookie(name, path, domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" + 
            ((path) ? "; path=" + path : "") + 
            ((domain) ? "; domain=" + domain : "") + 
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

/**
 * 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;
    }
}