/*
* searchpaging by AJAX
*/
var request;

function NewHTTP() {
    request=null;
    try {
        return new XMLHttpRequest();
    } 
    catch (e) {
        try {
            return new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e) {
            return new ActiveXObject('Microsoft.XMLHTTP');
        }
    }
}

/**metadatatoshow has been stored in the session
call searchpaging.php
that get the next 10 hits from the session
write out the metadata for these hits
*/
function show10(arrow) {
     var hitsforjs = document.getElementById("hitsforjs").value;
     var readablehits = hitsforjs;
     var hits = readablehits.split("|");
     var numberofhits = hits.length;
     var qry = document.getElementById("qry").value;
     var start;
     var end;
     var prevstart;
    
     if (arrow == 'vorige') {
        start = Number(document.getElementById("prevstart").value);
        end = Number(start+10);
     }
     else {
        start = Number(document.getElementById("nextstart").value);
        if (Number(start+10) < numberofhits-1) {
            end = Number(start+10);
        }
        else {
            end = numberofhits-1;
        }
     }    
    
     var url = thisdomain + "ajax/php/searchpaging.php";
     var params = "firsthit=" + start + "&lasthit=" + end;

//alert(url + '?' + params);

     request = NewHTTP();
     if (request == null) alert('kan geen verbinding maken');
     request.open("POST",url,true);
     request.onreadystatechange = OnPaging;
     request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     request.send(params);
}

function OnPaging() {
    if (request.readyState==4) {
	    if (request.status==200) {
	        if (request.responseXML != null  ) {
	            var qry = document.getElementById("qry").value;
	                
	            var userid = document.getElementById("userid").innerHTML;    
	                
	            var resultstable = document.getElementById("searchresultstable");
	            var rows = resultstable.rows;
	            var l = rows.length;
	            for (w=0; w<l; w++) {
	                resultstable.deleteRow(0);
	            }

	            var xmlDoc = request.responseXML;
	            var start = xmlDoc.documentElement.getElementsByTagName("first");
	            var startvalue = start[0].firstChild.nodeValue;
	            var end = xmlDoc.documentElement.getElementsByTagName("last");
	            var endvalue = end[0].firstChild.nodeValue;
	            var total = xmlDoc.documentElement.getElementsByTagName("total");
	            var totalvalue = total[0].firstChild.nodeValue;

	            var hits = xmlDoc.documentElement.getElementsByTagName("hit");
                    var rownumber = 0;
                    
                    var numbertoget;
                    if (parseInt(endvalue) < parseInt(totalvalue)) {
                        numbertoget = 10;
                    }
                    else {
                        numbertoget = parseInt(endvalue) % 10;
                    }

                    var hitcountnotice = document.getElementById("totalhits");
                    hitcountnotice.innerHTML = "totaal " + totalvalue + " hits - treffer " + startvalue + " t/m " + endvalue;

	            var i;
                    for (i=0; i<numbertoget; i++) {
 	                var references = hits[i].getElementsByTagName("reference");
	                var hitreference = references[0].firstChild.nodeValue;
	                
	                var objectids = hits[i].getElementsByTagName("objectid");
	                var hitobjectid = objectids[0].firstChild.nodeValue;
	                
	                var tfiles = hits[i].getElementsByTagName("thumbnailfile");
	                var thumbnailfile = tfiles[0].firstChild.nodeValue;
	                
	                var titles = hits[i].getElementsByTagName("title");
   	                var htitle = titles[0].firstChild.nodeValue;
   	                
   	                //unescape <>
   	                var escaped_opentag = new RegExp(/&lt;/g);
   	                var escaped_closetag = new RegExp(/&gt;/g);
   	                var hittitle = htitle.replace(escaped_opentag, "<");
   	                hittitle = hittitle.replace(escaped_closetag, ">");
   	                
	                var authorline = '';
                        var authors = hits[i].getElementsByTagName("author");
                        for (var a=0; a<authors.length; a++) {
                      	    var author = authors[a].firstChild.nodeValue;
                    	    authorline += author + ' ';
                        }
                        var publyears = hits[i].getElementsByTagName("published");
                        var published = publyears[0].firstChild.nodeValue;
                        var material = hits[i].getElementsByTagName("contenttype");
                        var contenttype = material[0].firstChild.nodeValue;
                        var subjectline = '';
                        var subs = hits[i].getElementsByTagName("subjectdiscipline");
                        for (var s=0; s<subs.length; s++) {
                       	    var sublabels = subs[s].getElementsByTagName("subjectlabel");
                       	    var subjectlabel = sublabels[0].firstChild.nodeValue;
                    	    subjectline += subjectlabel + ' ';
                        }
                        var timetoshow = '';
                        var timeperiods = hits[i].getElementsByTagName("timeperiod");
                        for (var t=0; t<timeperiods.length; t++) {
	                    var pstart = timeperiods[t].getElementsByTagName("periodstart");
	                    var periodstart = pstart[0].firstChild.nodeValue;
	                    var pend = timeperiods[t].getElementsByTagName("periodend");
	                    var periodend = pend[0].firstChild.nodeValue;
	                    var plabel = timeperiods[t].getElementsByTagName("periodlabel");
	                    var periodlabel = plabel[0].firstChild.nodeValue;
	                    timetoshow += periodlabel + " (" + periodstart + " - " + periodend + ") "; 
	                }
	                
	                var pshow = hits[i].getElementsByTagName("timeperiodtoshow");
	                var periodtoshow = pshow[0].firstChild.nodeValue;

                        var thumbcellcontents = '';
                        var titlecellcontents = 'Titel: ';
                        var exp = new RegExp("Boeken");
                        var domain = new RegExp("http://digbijzcoll.library.uu.nl/");
                        if (exp.test(hitreference) == true) {
                            thumbcellcontents += '<a href="context.php?type=ft&objectid=' + hitobjectid + '&qry=' + qry + '" class="titlelink"><img src="showthumbnail.php?imgfile=' + thumbnailfile + '" alt="afbeelding"/></a>';
                            titlecellcontents += '<a href="context.php?type=ft&objectid=' + hitobjectid + '&qry=' + qry + '" class="titlelink">' + hittitle + '</a>';
                            titlecellcontents += '<br/><span class="metadatatext">hits in fulltext</span>';
                        }
                        else {
                            thumbcellcontents += '<a href="context.php?type=mt&objectid=' + hitobjectid + '" class="titlelink"><img src="showthumbnail.php?imgfile=' + thumbnailfile + '" alt="afbeelding"/></a>';
                            titlecellcontents += '<a href="context.php?type=mt&objectid=' + hitobjectid + '" class="titlelink">' + hittitle + '</a>';
                        }
          
	                var streepje = new RegExp("-");
	                if (streepje.test(authorline) == false && authorline != '') {
                            titlecellcontents += '<br/>Auteurs: ' + authorline;
                        }
                        if (published != '' && published != '-') {
                            titlecellcontents += '<br/>Jaar van publicatie: ' + published;
                        }
                        titlecellcontents += '<br/>Materiaalsoort: ' + contenttype;
                        titlecellcontents += '<br/>Onderwerpen: ' + subjectline;
                        titlecellcontents += '<br/>Tijdvak: ' + timetoshow;
                        if (periodtoshow != '' && periodtoshow != '-') {
                            titlecellcontents += '<br/>Periode: ' + periodtoshow;
                        }
                    
	                    
	                var tbl = resultstable.insertRow(rownumber);
	                var a = tbl.insertCell(0);
	                var b = tbl.insertCell(1);
	                var c = tbl.insertCell(2);
	                
	                //a.innerHTML = '<img src="showthumbnail.php?imgfile=' + thumbnailfile + '" alt="afbeelding"/>';
	                a.innerHTML = thumbcellcontents;
	                b.innerHTML = titlecellcontents;
	                
	                
	                if (userid != '-') {
	                    userid = userid.replace(/^\s+/,''); 
	                    userid = userid.replace(/\s+$/,'');
	                    c.id = "fav_" + hitobjectid;
	                    c.className = "favouritelink";
	                    c.innerHTML = '<span onclick="addfavourite(\'' + userid + '\', \'' + hitobjectid + '\')">Voeg toe aan favorieten</span>';
	                }
	                else {
	                    c.innerHTML = '<span title="Log in om favorieten te gebruiken"> &gt; Voeg toe aan favorieten</span>';
	                }
	                  
	                rownumber++;
	            }

	            var prevstart;
	            
	            if (Number(startvalue-10) > 0) {
	                prevstart = Number(startvalue-10);
	            }
	            else {
	                prevstart = Number(0);
	            }
	            document.getElementById("prevstart").value = prevstart;
	            document.getElementById("nextstart").value = endvalue;
	                
	            if (prevstart == 0 && endvalue == 10) { //we are on the first page
	                document.getElementById("prevlink").style.visibility="hidden";
	            }
	            else {
	                document.getElementById("prevlink").style.visibility="visible";
	            }
	            
	            if (endvalue == totalvalue) { //we are on the last page
	                document.getElementById("nextlink").style.visibility="hidden";
	            }
	            else {
	                document.getElementById("nextlink").style.visibility="visible";
	            }
 	        }
	        else {
	        	alert('er is iets mis');
	        }
	    }
	    else {
	    	alert('er is iets mis');
	    }
    }
}

