var g_speed = 3;

function Photo(path, description) {
    this.path = path;
    this.description = description;
}

Photo.prototype.getDescription = function() {
    if(this.description != null) {
	return this.description;
    } else {
	return "";
    }
}

Photo.prototype.print = function(params) {
    var nr = params.nr;
    var newLink = new Parameters(params);

    document.write("<table width=100%>");
    document.write("<tr><td colspan=3 align=center width=100%>");
	document.write("<div id=\"pageHeader\"><h1>" + Titel + "</h1></div>");
    document.write("</td></tr>");
    document.write("<tr><td align=\"right\" width=250>")
    if(nr>0) {
		newLink.nr = nr-1;
		newLink.auto = 0;
		document.write("<a href=\"" + newLink.toURL() + "\">");
		document.write("<div id=\"noborder\"><img  src=../../images/zigoplaatjes/prev.gif alt=|&lt; border=0></div>");
		document.write("</a>");
    } else {
	document.write("&nbsp;");
    }
    document.write("</td><td  width=300>");
	newLink.auto = 0;
	newLink.delay = g_speed;
	newLink.index = 1;
	newLink.deel = nr;
	document.write("<A href=\"" + newLink.toURL() + "\">");
	document.write("Index");
	document.write("</A>");
    document.write("</td><td align=left width=200>");
    if(nr<photos.getLength()-1) {
		newLink.index = 0;
		newLink.nr = nr+1
		newLink.auto = 0;
		document.write("<a href=\"" + newLink.toURL() + "\">");
		document.write("<div id=\"noborder\"><img src=../../images/zigoplaatjes/next.gif alt=&gt;| border=0 ></div>");
		document.write("</a>");
    } else {
		document.write("&nbsp;");
    }
    document.write("</td></tr>");
    document.write("<tr><td align=left colspan=3>")
    document.write("<img src=\""  + this.path + "\"");
    document.write(">");
    document.write("</td></tr>");
    document.write("</table>");
    delete newLink;
}

//----------------------------------------------------------------------//

function PhotoList() {
    this.list = new Array();
}

PhotoList.prototype.add = function(photo) {
    this.list[this.list.length] = photo;
}

PhotoList.prototype.print = function(params) {
    var nr = params.nr;
    if(nr>=0 && nr<this.list.length) {
	this.list[nr].print(params);
    }
}

PhotoList.prototype.getLength = function() {
    return this.list.length;
}

PhotoList.prototype.printIndex = function(params) {
    var parts = 5;
    var maxdeel = 20;
    var deel = params.deel;
    var nr = params.nr;
    deel = Math.floor(deel/maxdeel)*maxdeel;
    var part = deel+maxdeel;
    var width = Math.floor(100/parts);

    var newLink = new Parameters(params);
    newLink.auto = 0;
    newLink.delay = g_speed;

    document.write("<table width=80%>");
	document.write("<tr><td colspan=5>");
	document.write("<div id=\"pageHeader\"><h1>" + Titel + "</h1></div>");
	document.write("</td></tr>");
	document.write("<tr><td>");
	newLink.index = 1;
	if (deel>=maxdeel) {
		newLink.deel = deel-maxdeel;
		document.write("<a href=\"" + newLink.toURL() + "\">");
		document.write("<div id=\"noborder\"><img src=../../images/zigoplaatjes/prev.gif alt=|&lt; border=0></div>");
		document.write("</a>");
	}
	document.write("</td><td colspan=3>");
	document.write("</td><td width=200>");
	newLink.deel = part;
	if (newLink.deel<this.list.length) {
		document.write("<a href=\"" + newLink.toURL() + "\">");
		document.write("<div id=\"noborder\"><img src=../../images/zigoplaatjes/next.gif alt=&gt;| border=0 align=\"right\"></div>");
		document.write("</a>");
	}
	document.write("</td></tr>");
    for(var i=deel; i<part; i+=parts) {
		document.write("<tr>");
		for(var j=0; j<parts; j++) {
		    document.write("<td valign=top width=" + width + "%>");
		    var nr = i+j;
		    newLink.nr = nr;
		    newLink.deel = deel;
	    	newLink.index = 0;
		    if(nr<this.list.length) {
				document.write("<a href=\"" + newLink.toURL() + "\">"
			       + "<img src=\"" + this.list[nr].getDescription() + "\"></a>");
		    } else {
				document.write("&nbsp;");
		    }
		    document.write("</td>");
		}
		document.write("</tr>");
    }
    document.write("</table>");
}

//----------------------------------------------------------------------//

function Parameters(orig) {
    if(orig!=null) {
	for(var i in orig) {
	    this[i] = orig[i];
	}
    } else {
	var query = (new String(document.location)).split('?');
	if(query.length>1) {
	    this.parseAndAdd(query[1]);
	    var nr = parseInt(this.nr);
	    if(!isNaN(nr)) {
		this.nr = nr;
	    }
	}
	this.URL = query[0];

	this.nrOfPhotos = photos.getLength();
    }
}

Parameters.prototype.parseAndAdd = function(string) {
    var pairs = string.split('&');
    for(var i=0; i<pairs.length; i++) {
	var nvp = pairs[i].split('=');
	var name = nvp[0];
	var value = "";
	for(var j=1; j<nvp.length; j++) {
	    if(j>1) {
		value += '=';
	    }
	    value += unescape(nvp[j]);
	}
	this[name] = value;
    }
}

Parameters.prototype.toURL = function() {
    var urlParams = new Array();
    urlParams[0] = "nr";
    urlParams[1] = "auto";
    urlParams[2] = "delay";
    urlParams[3] = "index";
    urlParams[4] = "deel";
    var string = this.URL;
    var count=0;
    for(var i=0; i<urlParams.length; i++) {
	if(this[urlParams[i]]!=null) {
	    if(count==0) {
		string += "?";
	    } else {
		string += "&";
	    }
	    string += urlParams[i] + "=" + this[urlParams[i]];
	    count++;
	}
    }

    delete urlParams;
    return string;
}
//----------------------------------------------------------------------//

function printPage(params) {
    if(params.index == 1) {
	photos.printIndex(params);
    } else if(params.nr != null) {
	photos.print(params);
    } else {
	var newLink = new Parameters(params);

	document.write("<DIV id=\"pageHeader\">");
	document.write("<H1>" + Titel + "</H1>");
	document.write("</DIV>");
	document.write("<P><UL>");

	newLink.nr = 0;
	newLink.auto = 0;
	newLink.delay = 5;
	document.write("<LI><A href=\"" + newLink.toURL() + "\">");
	document.write("De foto's een voor een bekijken op mijn eigen gemak.");
	document.write("</A></LI>");

	newLink.auto = 1;
	document.write("<LI><A href=\"" + newLink.toURL() + "\">");
	document.write("Een langzame slide-show zien van alle foto's.");
	document.write("</A></LI>");

	newLink.delay = 3;
	document.write("<LI><A href=\"" + newLink.toURL() + "\">");
	document.write("Een normale slide-show zien van alle foto's.");
	document.write("</A></LI>");

	newLink.delay = 1;
	document.write("<LI><A href=\"" + newLink.toURL() + "\">");
	document.write("Een snelle slide-show zien van alle foto's.");
	document.write("</A></LI>");

	newLink.delay = 0;
	document.write("<LI><A href=\"" + newLink.toURL() + "\">");
	document.write("Alle foto's zo snel mogelijk achterelkaar bekijken.");
	document.write("</A></LI>");

	newLink.auto = 0;
	newLink.delay = g_speed;
	newLink.index = 1;
	newLink.deel = 0;
	document.write("<LI><A href=\"" + newLink.toURL() + "\">");
	document.write("Index.");
	document.write("</A></LI>");
	document.write("</UL></P>");
	document.write("<DIV align=center>")
	document.write("</DIV>");
	document.write("</DIV>");

	delete newLink;
    }
}

function printRefresh(params) {
    if(params.auto==1 && params.nr<params.nrOfPhotos-1) {
	var delay = params.delay;
	if(isNaN(delay) || delay<0) {
	    delay = g_speed;
	}

	var newLink = new Parameters(params);
	newLink.nr++;

	document.write("<META HTTP-EQUIV=Refresh CONTENT=\""
		       + delay + "; URL=" + newLink.toURL() + "\">");

	delete newLink;
    }
}

function dump(ob, name) {
    document.write("<pre>");
    for(var i in ob) {
	document.write(name + "." + i + " = " + ob[i] + "\n");
    }
    document.write("</pre>");
}

var photos = new PhotoList();
