var xmlData = false;
function makeGalleryRequest(url) {
    xmlhttp = getHTTPObject();
    xmlhttp.open('GET', url, false);           
    xmlhttp.onreadystatechange = function() { FillXML(xmlhttp) };
    xmlhttp.send(null);
}

function FillXML(xmlhttp) {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.status == 200) {
            xmlData = getGalleryPage();
        } else {
            xmlData = 'There was a problem with the request. Status: '+xmlhttp.status;
        }
    }
}

function getElmById(aID){
    if(document.all) {
        return document.all[aID];
    }
    if(document.getElementById) {
        return document.getElementById(aID);
    }
    //return (document.getElementById) ? document.getElementById(aID) : document.all[aID];
}

var xmlDoc = false;
var aantalImages = 9;
var aantal = false;
var remainingAantal = "";
var page = false;
var def_gallery_id = false; // Voor een default galerij als er geeneen gezet is...
var lastPage = false;
var firstPage = false;
var totalPages = 0;
var url = false;
var FilesArray = new Array();
function setAantal(setAantal) {
    if(remainingAantal != "") {
        aantal = remainingAantal;
    } else {
        aantal = setAantal;    
    }    
}

function formatGallery() {
    aantalfotos = FilesArray.length;
    //alert(aantalfotos);
    var columns = 3;
    //alert(aantalfotos+" / "+columns);
    var rows = parseInt(aantalfotos / columns);
    var container = getElmById('gallery');
    alert(columns+" * "+rows);
    container.innerHTML = "";
    var table = document.createElement("table");
    table.style.border = "1px solid #000000";
    table.style.width = "100%";
    table.style.height = "250px";
    for(r = 0; r<rows; r++) {
        var tr = document.createElement("tr");
        for(i = 0; i<columns;i++) {
            var td = document.createElement("td");
            //td.nodeValue = "<a href=\"test\"><img border=0 src=\""+FilesArray[r*i]+"\"></a>";
            td.innerHTML = "test";
            tr.appendChild(td);
        }
        table.appendChild(tr);
    }
    container.appendChild(table);
}

function isset(varname){
  return(typeof(window[varname])!='undefined');
}

function getGallery(gallery_id,pagenr) {
    
    if(pagenr) page = pagenr;
    if(!page) page = 1;
    if(!aantal) aantal = aantalImages;
    if(!gallery_id) {
        if(!def_gallery_id) {
            getElmById("gallery").innerHTML = '<br/><br/><center>Er is geen galerij ID meegegeven...</center><br/><br/>';
            return false; 
        }
        gallery_id = def_gallery_id;
    }
    // als we hier komen dan is alles in orde....

    
    // XML AJAX request doen....
    url = "/opp-gallery/itemsperpage="+aantal+"/gallery_id="+gallery_id+"/page="+page+"/getgallery.xml";
    //alert(url);
    makeGalleryRequest(url);
    formatGallery();
    
    if(lastPage == "no") {
        //alert("last "+lastPage);
        nextpage = parseInt(page * 1 + 1);
        getElmById("nextlink").innerHTML = "<a href=\"javascript:void(0);\" onclick=\"getGallery('"+gallery_id+"','"+nextpage+"')\">Volgende Pagina</a>";
        getElmById("nextlink").style.display = "block";
    } else {
        getElmById("nextlink").style.display = "none";
    }

    getElmById("currentpage").innerHTML = "pagina "+page+" van "+parseInt(totalPages);
    getElmById("currentpage").style.display = "block";
    
    
    if(firstPage == "no") {
        //alert("first "+firstPage);
        prevpage = parseInt(page * 1 - 1);
        getElmById("prevlink").innerHTML = "<a href=\"javascript:void(0);\" onclick=\"getGallery('"+gallery_id+"','"+prevpage+"')\">Vorige Pagina</a>";
        getElmById("prevlink").style.display = "block";
    } else {
        getElmById("prevlink").style.display = "none";
    }
}

/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
var dumped_text = "";
if(!level) level = 0;

//The padding given at the beginning of the line.
var level_padding = "";
for(var j=0;j<level+1;j++) level_padding += "    ";

if(typeof(arr) == 'object') { //Array/Hashes/Objects
 for(var item in arr) {
  var value = arr[item];
 
  if(typeof(value) == 'object') { //If it is an array,
   dumped_text += level_padding + "'" + item + "' ...\n";
   dumped_text += dump(value,level+1);
  } else {
   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
  }
 }
} else { //Stings/Chars/Numbers etc.
 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
}
return dumped_text;
} 

function getGalleryPage() {
    if(aantal == '') aantal = aantalImages;
    //alert(xmlDoc);
    //alert(xmlhttp.responseText);
    xmlDoc = xmlParserObject(xmlhttp.responseText);
    if(false !== xmlDoc) {
        var Root = xmlDoc;

        if(Root.hasChildNodes != "") {
            if(Root.hasChildNodes()) {
                var Images = Root.getElementsByTagName("images")[0];
                alert(Images);
                if(typeof Images == undefined) {
                    Images = false;
                }
            } else {
                var Images = false;
            }
        } else {
            var Images = false;
        }
        lastPage = Root.getElementsByTagName("lastpage")[0].childNodes[0].nodeValue;
        firstPage = Root.getElementsByTagName("firstpage")[0].childNodes[0].nodeValue;
        totalPages = Root.getElementsByTagName("aantalpaginas")[0].childNodes[0].nodeValue;
        if(false !== Images && Images != "") {
            if(typeof Images.hasChildNodes != "undefined" && Images.hasChildNodes()) {
                Files = Images.getElementsByTagName("file");
                var ImageFiles = new Array();
                for(i = 0; i<Files.length; i++) {
                    for(x = 0; x<Files[i].childNodes.length; x++) {
                        ImageFiles[i] = Files[i].childNodes[x].nodeValue;
                    }
                }
                
                /*
                ROTZOOI ERUIT HALEN.... JSON ROTZOOI ZO TE ZIEN....
                */
                
                for(key in ImageFiles) {
                    //alert(key);
                    if(!isNaN(key))
                        FilesArray[key] = ImageFiles[key];
                }
                //getElmById('gallery').innerHTML = "<pre>"+dump(ImageFiles)+"</pre>";
            } else {
                var Message = Root.getElementsByTagName("text");//[0].childNodes[0].nodeValue;
                if(typeof Message != 'undefined') {
                    if(typeof Message.hasChildNodes != "undefined" && Message.hasChildNodes()) {
                        Message = Message[0].childNodes[0].nodeValue;
                    } else {
                        Message = false;
                    }
                } else {
                    Message = false;
                }
                if(false !== Message) {
                    getElmById("gallery").innerHTML = "<center><br /><br />"+Message+"<br /> <br /></center>";
                } else {
                    getElmById("gallery").innerHTML = "<center><br /><br />Gallery not available.... Unknown error...<br /> <br /></center>";
                }
            }
        } else {
            var Message = Root.getElementsByTagName("text")[0].childNodes[0].nodeValue;
            if(false !== Message) {
                getElmById("gallery").innerHTML = "<center><br /><br />"+Message+"<br /> <br /></center>";
            } else {
                getElmById("gallery").innerHTML = "<center><br /><br />Gallery not available.... Unknown error...<br /> <br /></center>";
            }
        }
    } else {
        getElmById("gallery").innerHTML = "<center><br /><br />Gallery not available.... XML Document not found...<br /> URI:"+url+" <br /></center>";
    }
}


function xmlParserObject(text) {
    if (window.ActiveXObject)
    {
        var doc=new ActiveXObject("Microsoft.XMLDOM");
        doc.async="false";
        doc.loadXML(text);
    }
    // code for Mozilla, Firefox, Opera, etc.
    else
    {
        var parser=new DOMParser();
        var doc=parser.parseFromString(text,"text/xml");
    }
    
    xmlDoc = doc.documentElement;
    return xmlDoc;
}