function make_text(text)
{
	var re = /\&\#(\d*)\;/g	
	text = text.replace(re, get_unicode);
    var new_node = document.createTextNode(text);
    return new_node;
}

function get_unicode(str, digits, offset, s)
{
	// create a unicode string from the digits in an xmlcharref
	digits = parseInt(digits);
	return String.fromCharCode(digits);
}

function make_node(which,attrs,children)
{
    var new_node = document.createElement(which);
    if(attrs!=undefined)
    {
        for(var attr in attrs)
        {
            //doing `.className` is cross-browser compatible
            if(attr.toLowerCase()=='class'||attr.toLowerCase()=='classname')
                new_node.className = attrs[attr];
            else
                new_node.setAttribute(attr, attrs[attr]);
        }
    }
    if(children!=undefined)
    {
        //make sure in array
        if(!children.push || !children.join)
            children = [children];
        for(var x=0; x<children.length; x++)
        {
            try
            {
                new_node.appendChild(children[x]);
            }
            catch(e){}
        }
    }
    return new_node;
}

function swap_node(elem, new_elem) {
    elem.parentNode.replaceChild(new_elem, elem);
    return new_elem;
}
