var blnSafari = navigator.userAgent.toLowerCase().indexOf('safari') != -1;
var blnFF = navigator.userAgent.toLowerCase().indexOf('firefox') != -1;
var blnIE = navigator.userAgent.toLowerCase().indexOf('ie') != -1;

function insertAdjacentElementCross(dom, where, parsedNode)
{
    switch(where)
    {
            case 'beforeBegin':
                     if (blnIE) dom.insertAdjacentElement(where, parsedNode);
                     else
                     if (blnFF || blnSafari) dom.parentNode.insertBefore(parsedNode, dom);
              break;
            case 'afterBegin':
                     if (blnIE) dom.insertAdjacentElement(where, parsedNode);
                     else
                     if (blnFF || blnSafari) dom.insertBefore(parsedNode, dom.firstChild);
              break; 
            case 'beforeEnd':
                     if (blnIE) dom.insertAdjacentElement(where, parsedNode);
                     else
                     if (blnFF || blnSafari) dom.appendChild(parsedNode);
              break;
            case 'afterEnd':
                     if (blnIE) dom.insertAdjacentElement(where, parsedNode);
                     else
                     if (dom.nextSibling && (blnFF || blnSafari)) dom.parentNode.insertBefore(parsedNode,this.nextSibling);
	     else
                     dom.parentNode.appendChild(parsedNode);
            break;
    }
}

function insertAdjacentHTMLCross(dom, where, htmlStr)
{
    if (blnIE) dom.insertAdjacentHTML(where, htmlStr);
    else
    if (blnFF || blnSafari)
    {
         var r = dom.ownerDocument.createRange();
         r.setStartBefore(dom);
        var parsedHTML = r.createContextualFragment(htmlStr);
        insertAdjacentElementCross(dom, where, parsedHTML);
    }
}

function insertAdjacentTextCross(don, where, txtStr)
{
    if (blnIE) dom.insertAdjacentText(where, htmlStr);
    else
    if (blnFF || blnSafari)
    {
        var parsedText = document.createTextNode(txtStr);
        insertAdjacentElementCross(dom, where, parsedText);
    }
}