function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            if (oldonload) {
                oldonload();
            }
            func();
        }
    }
}

document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

function strip_tags (input, allowed) {
    allowed = (((allowed || "") + "")
        .toLowerCase()
        .match(/<[a-z][a-z0-9]*>/g) || [])
    .join(''); // making sure the allowed arg is a string containing only tags in lowercase (<a><b><c>)
    var tags = /<\/?([a-z][a-z0-9]*)\b[^>]*>/gi,
    commentsAndPhpTags = /<!--[\s\S]*?-->|<\?(?:php)?[\s\S]*?\?>/gi;
    return input.replace(commentsAndPhpTags, '').replace(tags, function($0, $1){
        return allowed.indexOf('<' + $1.toLowerCase() + '>') > -1 ? $0 : '';
    });
}

function getStringToXMLObject(a) {
    try {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(a);
        return xmlDoc
    } catch (e) {
        try {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(a, "text/xml");
            return xmlDoc
        } catch (e) {
            return false
        }
    }
}

function getParentByTagName(obj, tag) {
    if(obj.tagName.toLowerCase() == tag)
        return obj;

    if (!obj.parentNode)
        return false;

    return getParentByTagName(obj.parentNode, tag);
}

function getNamedMapFromXML(xmlObj) {
    var map = {};
    var buf = "";
    for(var cnt=0; cnt<xmlObj.documentElement.childNodes.length; cnt++){
        var tag = xmlObj.documentElement.childNodes[cnt].tagName;

        if(tag != undefined && tag != "")
            buf += "map." + tag.toLowerCase() + "=" + cnt + ";";
    }
    eval(buf);

    return map;
}

function getXmlNodeValue(xmlObj, nodeMap, tagName) {

    if(nodeMap[tagName] != undefined){
        if(xmlObj.documentElement.childNodes[nodeMap[tagName]].childNodes[0] != undefined)
            return xmlObj.documentElement.childNodes[nodeMap[tagName]].childNodes[0].nodeValue;
    }

    return "";
}

function populateAd() {
    var bightml = document.getElementById( 'atakoad' ).innerHTML,ahtml="";

    var hstart = bightml.toLowerCase().indexOf( "<wp>" );
    var hend = bightml.toLowerCase().indexOf( "</wp>" );

    if( hstart != -1 && hend != -1 ) {

        ahtml = bightml.substring(hstart,hend+5);
        ahtml = ahtml.replace( /\<apptype\>/gi, '<apptype><![CDATA[');
        ahtml = ahtml.replace( /\<\/apptype\>/gi, ']]></apptype>');
        ahtml = ahtml.replace( /\<ptitle\>/gi, '<ptitle><![CDATA[');
        ahtml = ahtml.replace( /\<\/ptitle\>/gi, ']]></ptitle>');
        ahtml = ahtml.replace( /\<pcontent\>/gi, '<pcontent><![CDATA[');
        ahtml = ahtml.replace( /\<\/pcontent\>/gi, ']]></pcontent>');
        ahtml = ahtml.replace( /\<author\>/gi, '<author><![CDATA[');
        ahtml = ahtml.replace( /\<\/author\>/gi, ']]></author>');
        ahtml = ahtml.replace( /\<cthrough\>/gi, '<cthrough><![CDATA[');
        ahtml = ahtml.replace( /\<\/cthrough\>/gi, ']]></cthrough>');
        ahtml = ahtml.replace( /\<cimage1\>/gi, '<cimage1><![CDATA[');
        ahtml = ahtml.replace( /\<\/cimage1\>/gi, ']]></cimage1>');
        ahtml = ahtml.replace( /\<fblikeurl\>/gi, '<fblikeurl><![CDATA[');
        ahtml = ahtml.replace( /\<\/fblikeurl\>/gi, ']]></fblikeurl>');
        ahtml = ahtml.replace( /\<moduleid\>/gi, '<moduleid><![CDATA[');
        ahtml = ahtml.replace( /\<\/moduleid\>/gi, ']]></moduleid>');
        ahtml = ahtml.replace( /\<video\>/gi, '<video><![CDATA[');
        ahtml = ahtml.replace( /\<\/video\>/gi, ']]></video>');
        ahtml = ahtml.replace( /\<fbbtn\>/gi, '<fbbtn><![CDATA[');
        ahtml = ahtml.replace( /\<\/fbbtn\>/gi, ']]></fbbtn>');
        ahtml = ahtml.replace( /\n/g, '' );
    }
    if(ahtml != "") {
        var xmlObj = getStringToXMLObject( ahtml );

        if(!xmlObj) {
            alert("No XML parser found.");
            return;
        }

        var namedNodeMap = getNamedMapFromXML(xmlObj);

        if(document.getElementById("ep-post-title")) {
            var bodyObj = null;
            var titleObj = null;

            if(ep_settings.ep_identifier){
                posts = document.getElementsByClassName(ep_settings.ep_identifier);
                posts[0].parentNode.insertBefore(document.getElementById("ep-post"), posts[1]);

                titleObj = document.getElementById("ep-post-title");
                bodyObj = document.getElementById("ep-post-desc");

            } else {
                titleObj = document.getElementById("ep-post-title").parentNode;
                bodyObj = document.getElementById("ep-post-desc").parentNode
                bodyObj.innerHTML = "<div id='ep-fb-btn' style='display:block;float:left;clear:both;width:100%;margin:3px 0;height:80px;'><fb:like id='fb-like-btn' layout='standard' show-faces='true' width='450' colorscheme='light' height='80'></fb:like></div>" + bodyObj.innerHTML;
            }

            titleObj.innerHTML = strip_tags(getXmlNodeValue(xmlObj, namedNodeMap, "ptitle"), "");
            var anchorElement = getParentByTagName(titleObj, 'a');

            if(anchorElement) {
                anchorElement.id = "ep-permalink-anchor";
                anchorElement.href = (window["atako_clickthru"] || window["atako_clickthru" + getXmlNodeValue(xmlObj, namedNodeMap, "moduleid")] || "") + getXmlNodeValue(xmlObj, namedNodeMap, "cthrough");
                anchorElement.target = "_blank";
            }

            var bodyDivContent = document.getElementById("ep-post-desc");
            bodyDivContent.style.styleFloat = "left";
            bodyDivContent.style.clear = "left";
            bodyDivContent.style.display = "block";
            bodyDivContent.style.width = "100%";

            var postBody = "";
            var apptype = parseInt(getXmlNodeValue(xmlObj, namedNodeMap, "apptype"), 10);

            if(apptype == 1 || apptype == 2) {
                if(getXmlNodeValue(xmlObj, namedNodeMap, "cimage1")) {
                    postBody += "<a target='_blank' href='"+(window["atako_clickthru"] || window["atako_clickthru" + getXmlNodeValue(xmlObj, namedNodeMap, "moduleid")] || "") + getXmlNodeValue(xmlObj, namedNodeMap, "cthrough")+"'><img src='" + getXmlNodeValue(xmlObj, namedNodeMap, "cimage1") + "'></img></a><br /><br />";
                }

                if(apptype == 2) {
                    postBody += strip_tags(getXmlNodeValue(xmlObj, namedNodeMap, "pcontent"), "<br><b><u><i><a><img><p>");
                }
            } else if(apptype == 3) {
                if(getXmlNodeValue(xmlObj, namedNodeMap, "video")) {
                    postBody += '<embed width="450" align="middle" height="250"';
                    postBody +='pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" ';
                    postBody +='allowfullscreen="true" allowscriptaccess="always" name="player" bgcolor="#ff0000" quality="high"';
                    postBody +=' src="http://fileserver.glam.com/special-projects/widgets/video_player/player.swf?volumelimit=100&amp;flv_tab='+getXmlNodeValue(xmlObj, namedNodeMap, "video")+'&amp;autoplay=false&amp;videono=1"/><br /><br />';
                }
                postBody += strip_tags(getXmlNodeValue(xmlObj, namedNodeMap, "pcontent"), "<br><b><u><i><a><img><p>");
            }

            bodyDivContent.innerHTML += postBody;

            var FB_params = {
                "fblikeurl": getXmlNodeValue(xmlObj, namedNodeMap, "fblikeurl"),
                "fbbtn": getXmlNodeValue(xmlObj, namedNodeMap, "fbbtn")
            };

            document.getElementById("fb-like-btn").href=FB_params.fblikeurl;
            document.getElementById("fb-like-btn").action=FB_params.fbbtn;

            if(document.getElementById("ep-post-author")) {
                document.getElementById("ep-post-author").innerHTML = strip_tags(getXmlNodeValue(xmlObj, namedNodeMap, "author"), "");
                document.getElementById("ep-post-author").title = "";
            }
            ep_settings.at_moduleid = getXmlNodeValue(xmlObj, namedNodeMap, "moduleid");
            toggleEPVisibility("block");
        }  else {
            throw "Post content missing";
        }
    }
}

function toggleEPVisibility(display) {
    var obj = document.getElementById("ep-marker");
    while(obj.nextSibling !== undefined && obj.nextSibling !== null) {
        obj = obj.nextSibling;
        if(obj.nodeName != "#text" && obj.nodeName != "#comment") {
            if(obj.id == "ep-marker2") {
                return;
            }

            obj.style.display = display;
        }
    }
}

