/* 
  Javascript for bbwidget = Beeldbank Widget
  André van Toly <http://www.toly.nl> for Teleac/NOT <http://www.teleacnot.nl>
 */

var bbServer = "http://www.schooltv.nl/";
var bbDir    = "beeldbank/";
var bbData   = bbServer + bbDir + "xml/widget.jsp"
var bbClip   = bbServer + bbDir + "clip/"

function writeWidget() {
    if (!document.write) return;
    document.write(''
    + '<div id="bbwidget" class="ntr">'
    + '<form name="bbwidgetform" onsubmit="bbSearch(this.action);return false;" action="' + bbData + '" method="post">'
    + '  <fieldset>'
    + '    <input name="q" id="bbsearchbox" type="text" size="24" maxlength="255" />'
    + '    <input name="search" id="bbsearchbutton" type="image" src="' + bbServer + bbDir + 'gfx/button_zoek.gif" value="search" />'
    + '  </fieldset>'
    + '</form>'
    + '<div id="bbsearchresults"></div><div class="bbclear"> </div>'
    + '</div>');
}

writeWidget();

function setSearchValue(value) {
  var el = document.getElementById('bbsearchbox');
  document.getElementById('bbsearchbox').value = value;
}

function bbResults(result) {
    var el = document.getElementById('bbsearchresults');
    var div = document.createElement('div');
    var str = document.createTextNode(result);
    div.appendChild(txt);
    
    el.innerHTML = "";
    el.appendChild(div);
}

function bbXmlResults(doc) {
    var divResults = document.getElementById('bbsearchresults');
    divResults.innerHTML = "";
    
    var found = doc.documentElement.getAttribute('total');
    var query = doc.documentElement.getAttribute('query');
    var results = [];
    results = doc.getElementsByTagName('result');

    var strong = document.createElement("strong");
    strong.appendChild(document.createTextNode(results.length + " van in totaal " + found + " voor '" + query + "'"));
    divResults.appendChild(strong);
    
    for (var i = 0; i < results.length; i++) {
        // dom
        var clipid = results[i].getAttribute('id');
        var title = results[i].getElementsByTagName('title')[0].firstChild.data;
        var subtitle = results[i].getElementsByTagName('subtitle')[0].firstChild.data;
        var img = results[i].getElementsByTagName('img')[0].firstChild.data;

        // html
        var a = document.createElement("a");
        a.setAttribute("href", bbClip + clipid);
        a.appendChild(document.createTextNode(title));
        
        var dl = document.createElement("dl");
        var dt = document.createElement("dt");
        dt.appendChild(a);
        dl.appendChild(dt);
        
        var imgEl = document.createElement("img");
        if (img != '') {
            imgEl.setAttribute("src", bbServer + img);
            imgEl.setAttribute("alt", title);
        } else {
            imgEl.setAttribute("src", bbServer + bbDir + "gfx/oogje.jpg");
            imgEl.setAttribute("alt", 'Geen afbeelding gevonden');
        }
        imgEl.setAttribute("width", "40");
        imgEl.setAttribute("height", "30");

        var dd1 = document.createElement("dd");
        dd1.className = "img";
        dd1.appendChild(imgEl);
        dl.appendChild(dd1);
        
        var dd2 = document.createElement("dd");
        dd2.appendChild(document.createTextNode(subtitle));
        dl.appendChild(dd2);
        
        divResults.appendChild(dl);
    }
    if (found > 5) {
        var dl = document.createElement("dl");
        var a = document.createElement("a");
        a.setAttribute("href", bbServer + bbDir + "zoek?q=" + query);
        a.appendChild(document.createTextNode("Bekijk alle resultaten"));
        a.className = "alle";
        var dt = document.createElement("dt");
        dt.appendChild(a);
        dl.appendChild(dt);
        divResults.appendChild(dl);
    }
}

function bbSearch(url) {
    var query = document.getElementById('bbsearchbox').value;
    if (query == 'Zoek clips' || query == '') {
        alert("Je hebt nog niets ingevuld om te zoeken.");
    } else {
        var script = document.createElement("script");
        script.src = bbData + '?q=' + query;
        script.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(script);
    }
}

function newXMLDocument(rootTagName, namespaceUrl) {
    if (!rootTagName) rootTagName = "";
    if (!namespaceUrl) namespaceUrl = "";
    
    if (document.implementation && document.implementation.createDocument) {
        return document.implementation.createDocument(namespaceUrl, rootTagName, null);
    } else {    // the IE way
        var doc = new ActiveXObject("MSXML2.DOMDocument");
        if (rootTagName) {
            var prefix = "";
            var tagname = rootTagName;
            var p = rootTagName.indexOf(':');
            if (p != -1) {
                prefix = rootTagName.substring(0, p);
                tagname = rootTagName.substring(p + 1);
            }
        }
        if (namespaceUrl) {
            if (!prefix) prefix = "aO"; // Firefox
        } else prefix = "";
        
        var text = "<" + (prefix?(prefix+":"):"") + tagname + 
                    (namespaceUrl?(" xmlns:" + prefix + '="' + namespaceUrl + '"'):"") + " />";
        doc.loadXML(text);
        return doc;
    }
}

function parseXML(text) {
    if (typeof DOMParser != "undefined") {  // Mozilla, Firefox etc
        return (new DOMParser()).parseFromString(text, "application/xml");
    } else if (typeof ActiveXObject != "undefined"){    // IE
        var doc = newXMLDocument();
        doc.loadXML(text);
        return doc;
    } else {
        var url = "data:text/xml;charset=utf-8," + encodeURIComponent(text);
        var request = new XMLHttpRequest();
        request.open("GET", url, false);
        request.send(null);
        return request.responseXML;
    }
    
}


