if(undefined===window.siteurl){
    window.siteurl = "http://widgets.d4h.org/";
}

function initD4HWidget() {
    var loadingimg = new Image();
    loadingimg.src = siteurl+"/ajax-loader.gif";
    var widgets = getElementsByClassName('d4hwidget','div');
    if (widgets.length>0) {
        for (xx=0;xx<widgets.length;xx++) {
            var key = widgets[xx].getAttribute('key');
            var widgetwidth = widgets[xx].getAttribute('width');
            var widgetheight = widgets[xx].getAttribute('height');

            if (widgetwidth==null) {
                widgetwidth = "210";
            }
            if (widgetheight==null) {
                widgetheight = "510";
            }
            widgets[xx].setAttribute("style","width: "+widgetwidth+"px; height: "+widgetheight+"px;");
           
            var loader = document.createElement('div');
            loader.setAttribute("style","width: "+widgetwidth+"px; height: "+widgetheight+"px; background: url('"+siteurl+"/ajax-loader.gif') #ffffff center center no-repeat; border:1px solid #505050");
            loader.setAttribute("id","d4hloader"+key);
            widgets[xx].appendChild(loader);

            var iframe = document.createElement('iframe');
            iframe.setAttribute("src", siteurl+"widget.php?id="+key);
            iframe.setAttribute("style", "display: none;");
            iframe.setAttribute("width", widgetwidth);
            iframe.setAttribute("height", widgetheight);
            iframe.setAttribute("scrolling", "no");
            iframe.setAttribute("frameborder", "0");
            iframe.setAttribute("onload", "D4HWidgetLoaded('"+key+"');");
            iframe.setAttribute("id", "d4hframe"+key);
            iframe.onload = function() {
                D4HWidgetLoaded(key);
            }
            widgets[xx].appendChild(iframe);
        }
    }

}

function D4HWidgetLoaded(key) {
    document.getElementById('d4hloader'+key).setAttribute("style", "display: none;");
    var frame = document.getElementById('d4hframe'+key);
    frame.setAttribute("style", frame.getAttribute("style").replace(/display: none/gi, "display: block"));
}

function isNumber(o) {
    return typeof o === 'number' && isFinite(o);
}

var alreadyrunflag=0 //flag to indicate whether target function has already been run

if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", function(){
        alreadyrunflag=1;
        initD4HWidget()
    }, false)
else if (document.all && !window.opera){
    document.write('<script type="text/javascript" id="contentloadtag" defer="defer" src="javascript:void(0)"><\/script>')
    var contentloadtag=document.getElementById("contentloadtag")
    contentloadtag.onreadystatechange=function(){
        if (this.readyState=="complete"){
            alreadyrunflag=1
            initD4HWidget();
        }
    }
}

window.onload=function(){
    setTimeout("if (!alreadyrunflag) initD4HWidget()", 0)
}

/*
	Developed by Robert Nyman, http://www.robertnyman.com
	Code/licensing: http://code.google.com/p/getelementsbyclassname/
*/
var getElementsByClassName = function (className, tag, elm){
    if (document.getElementsByClassName) {
        getElementsByClassName = function (className, tag, elm) {
            elm = elm || document;
            var elements = elm.getElementsByClassName(className),
            nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
            returnElements = [],
            current;
            for(var i=0, il=elements.length; i<il; i+=1){
                current = elements[i];
                if(!nodeName || nodeName.test(current.nodeName)) {
                    returnElements.push(current);
                }
            }
            return returnElements;
        };
    }
    else if (document.evaluate) {
        getElementsByClassName = function (className, tag, elm) {
            tag = tag || "*";
            elm = elm || document;
            var classes = className.split(" "),
            classesToCheck = "",
            xhtmlNamespace = "http://www.w3.org/1999/xhtml",
            namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
            returnElements = [],
            elements,
            node;
            for(var j=0, jl=classes.length; j<jl; j+=1){
                classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
            }
            try	{
                elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
            }
            catch (e) {
                elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
            }
            while ((node = elements.iterateNext())) {
                returnElements.push(node);
            }
            return returnElements;
        };
    }
    else {
        getElementsByClassName = function (className, tag, elm) {
            tag = tag || "*";
            elm = elm || document;
            var classes = className.split(" "),
            classesToCheck = [],
            elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
            current,
            returnElements = [],
            match;
            for(var k=0, kl=classes.length; k<kl; k+=1){
                classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
            }
            for(var l=0, ll=elements.length; l<ll; l+=1){
                current = elements[l];
                match = false;
                for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
                    match = classesToCheck[m].test(current.className);
                    if (!match) {
                        break;
                    }
                }
                if (match) {
                    returnElements.push(current);
                }
            }
            return returnElements;
        };
    }
    return getElementsByClassName(className, tag, elm);
};
