/*
 *
 * Copyright 2009 finenight.org
 *
 */

function findElementsByClassName(className) {
    var elementArray = document.getElementsByTagName('*');
    var matchingArray = new Array();
    for(var i=0; i<elementArray.length; i++) {
        if(elementArray[i].className == className) {
            matchingArray[matchingArray.length] = elementArray[i];
        }
    }
    return matchingArray;
}

function findElementsByTagName(tagName) {
    return document.getElementsByTagName(tagName);
}

function findElementsByTagAndClassName(tagName, className) {
    var elementArray = document.getElementsByTagName(tagName);
    var matchingArray = new Array();
    for(var i=0; i<elementArray.length; i++) {
        if(elementArray[i].className == className) {
            matchingArray[matchingArray.length] = elementArray[i];
        }
    }
    return matchingArray;
}

function findChildElementByTagName(element, tagName) {
    var childArray = element.childNodes;
    for(var i=0; i<childArray.length; i++) {
        if(childArray[i].tagName != null && childArray[i].tagName.toLowerCase() == tagName) {
            return childArray[i];
        }
    }
    return null;
}

function findChildElementByClassName(element, className) {
    var childArray = element.childNodes;
    for(var i=0; i<childArray.length; i++) {
        if(childArray[i].className == className) {
            return childArray[i];
        }
    }
    return null;
}

function findChildElementsByTagName(element, tagName) {
    var elementArray = new Array();
    var childArray = element.childNodes;
    for(var i=0; i<childArray.length; i++) {
        if(childArray[i].tagName != null && childArray[i].tagName.toLowerCase() == tagName) {
            elementArray[elementArray.length] = childArray[i];
        }
    }
    return elementArray;
}

function findParentElementByTagName(element, tagName) {
    var parentElement = element.parentNode;
    while(parentElement != null) {
        if(parentElement.tagName.toLowerCase() == tagName) {
            return parentElement;
        }
        parentElement = parentElement.parentNode;
    }
    return null;
}

function findParentElementByClassName(element, className) {
    var parentElement = element.parentNode;
    while(parentElement != null) {
        if(parentElement.className == className) {
            return parentElement;
        }
        parentElement = parentElement.parentNode;
    }
    return null;
}

function findElementByName(name) {
    var elementArray = document.getElementsByName(name);
    if(elementArray.length == 0) {
        return null;
    }
    return elementArray[0];
}

function findElementsByName(name) {
    return document.getElementsByName(name);
}

function findElementById(id) {
    return document.getElementById(id);
}
