municware.util.DOMUtils = {};

municware.util.DOMUtils.insertChildAt = function(index, newElement, parentElement) {
    var childNodes = parentElement.childNodes;
    // Validate index
    if (index < 0 || index > childNodes.length) {
        throw new Error("Invalid index: " + index);
    }
    if (childNodes.length > 0) {
        if (index == childNodes.length) {
            parentElement.appendChild(newElement);
        } else {
            parentElement.insertBefore(newElement, childNodes[index]);
        }
    } else {
       parentElement.appendChild(newElement);
    }
};

municware.util.DOMUtils.replaceChildAt = function(index, newElement, parentElement) {
    municware.util.DOMUtils.removeChildAt(index, parentElement);
    municware.util.DOMUtils.insertChildAt(index, newElement, parentElement);
};


municware.util.DOMUtils.removeChildAt = function(index, parentElement) {
    parentElement.removeChild(parentElement.childElements()[index]);
};