function getCookieValue (o) {
	var dc = document.cookie;
	var es = dc.indexOf (";",o);
	if (es == -1) {
		es = dc.length;
	}
	return unescape(dc.substring(o,es));
}

function dhmsms (ms) {
	var o = new Object();
	o.msTotal = ms;
	var msTotal = Math.abs (ms);
	o.ms = msTotal % 1000; msTotal = (msTotal - o.ms) / 1000;
	o.s = msTotal % 60; msTotal = (msTotal - o.s) / 60;
	o.m = msTotal % 60; msTotal = (msTotal - o.m) / 60;
	o.h = msTotal % 24; o.d = (msTotal - o.h) / 24;
	
	o.s1 = o.s % 10;
	o.s2 = (o.s - o.s1) / 10;
	o.m1 = o.m % 10;
	o.m2 = (o.m - o.m1) / 10;
	o.h1 = o.h % 10;
	o.h2 = (o.h - o.h1) / 10;
	o.d1 = o.d % 10;
	o.d2 = ((o.d - o.d1) / 10) % 10;
	o.d3 = (o.d - (o.d % 100)) / 100;
	return o;
}

function timeUntil (aDate) {
	var today = new Date();
	var target = new Date(aDate); // Set day and month
	var msTotal = today.getTime() - target.getTime();
	return dhmsms (msTotal);
}

function writeUntil (aDate, format) {
	var diff = timeUntil (aDate);
	with (diff) {
		document.write(d, " day", (d==1)?"":"s");
		if (format == "secs") {
			document.write (" ", h, " hr ", m, " min ", s, " sec");
		} else {
			if (d == 0) {
				document.write (" ", h, " hour", (h==1)?"":"s");
			}
		}
	}
	return diff.msTotal;
}

function GetCookie (n) {
	var arg = n + "=";
	var alen = arg.length;
	var dc = document.cookie;
	var clen = dc.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (dc.substring(i, j) == arg) {
			return getCookieValue (j);
		}
		i = dc.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

function SetCookie (name, value) {
	var argv = SetCookie.arguments;
	var argc = SetCookie.arguments.length;
	var expires = (argc > 2) ? argv[2] : null;
	var path = (argc > 3) ? argv[3] : null;
	var domain = (argc > 4) ? argv[4] : null;
	var secure = (argc > 5) ? argv[5] : false;
	document.cookie = name + "=" + escape (value) +
		((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
		((path == null) ? "" : ("; path=" + path)) +
		((domain == null) ? "" : ("; domain=" + domain)) +
		((secure == true) ? "; secure" : "");
}

function DeleteCookie (name) {
	var exp = new Date();
	exp.setTime (exp.getTime() - 1);
	var cval = GetCookie (name);
	SetCookie (name, cval, exp);
}

function GetLastModified () {
	var lm = new Date (document.lastModified);
	if (navigator.appName.indexOf ("Microsoft") >= 0) {
		// for some asinine reason, Microsoft gets the timezone wrong - fix it
		lm.setTime (lm.getTime() - lm.getTimezoneOffset () * 60 * 1000);
    // also fix Y2K bug
    if (lm.getYear()<50) lm.setYear (lm.getYear()+2000);
	}
	return lm.toLocaleString ();
}

function gz (hires, alt) {
	with (document) {
		close ();
		writeln ("<html><head><title>" + hires + "</title></head>");
		writeln ("<body><table summary='alignment' width='100%' height='100%'>");
		write ("<tr align=CENTER valign=MIDDLE><td>");
		writeln ("<img src=\"" + hires + "\" alt=\"" + unescape(alt) + "\">");
		writeln ("<br><a href='javascript:history.back()'>Back</a>");
		writeln ("</td></tr></table></body>");
		writeln ("</html>");
		close ();
	}
}

function gi (thumb, fullres, alt) {
	document.write ("<a href='javascript:gz(\"" + fullres + "\",\"" + escape(alt) + "\")'><img src=\"" + thumb + "\" alt=\"" + alt + "\"></a>");
}

function gis (thumb, fullres, alt, w, h) {
	document.write ("<a href='javascript:gz(\"" + fullres + "\",\"" + escape(alt) + "\")'><img src=\"" + thumb + "\" alt=\"" + alt + "\" width="+w+" height="+h+"></a>");
}

function gisz (thumb, fullres, alt) {
  gis (thumb, fullres, alt, 128, 96)
}

function zp (i, count) {
	var clen = (count + "").length;
	var zeros = "00000000000000";
	var istr = i + "";
	if (istr.length < clen) {
		istr = zeros.substr (1, clen - istr.length) + i;
	}
	return istr;
}

function gzx2 (count, basedir, basename, suffix, i, w) {
	with (w.document) {
		close ();
		writeln ("<html><head><title>Image ", i, " of ", count, "</title></head>");
		writeln ("<body><table summary='alignment' width='100%' height='100%'>");
		write ("<tr align=CENTER valign=MIDDLE><td>");
		writeln ("<h1>Image ", i, "</h1><img src=\"" + basedir + "/" + basename + 
		w.parent.zp(i,count) + "." + suffix + "\">");
	
		writeln ("<table align=center width=640 cols=3><tr align=center valign=middle><td width=210>");
		if (i > 1) {
			writeln ("<a onmouseout='status=defaultStatus' onmouseover='status=\"Display previous image\";return true' href='javascript:parent.gzx2(" + count + ", \"" + basedir + 
			"\", \"" + basename + "\", \"" + suffix + "\", " + (i-1) + 
			", self)'>Prev &nbsp;<img align=center src=\"" + basedir + "/t_" + basename + 
			w.parent.zp(i-1,count) + "." + suffix + "\" alt=\"Prev\"></a>");
		}
		writeln ("</td><td><a onmouseout='status=defaultStatus' onmouseover='status=\"Display previous page\";return true' href='javascript:history.back()'>Back</a></td><td width=210>");
		if (i < count) {
			writeln ("<a onmouseout='status=defaultStatus' onmouseover='status=\"Display next image\";return true' href='javascript:parent.gzx2(" + count + ", \"" + basedir + 
			"\", \"" + basename + "\", \"" + suffix + "\", " + (i+1) + 
			", self)'><img align=center src=\"" + basedir + "/t_" + basename + 
			w.parent.zp(i+1,count) + "." + suffix + "\" alt=\"Next\">&nbsp; Next</a>");
		}
		writeln ("</td></tr></table>");
	
		writeln ("</td></tr></table></body>");
		writeln ("</html>");
		close ();
	}
}

function setprmt (word)
{
	status = "Display " + word + " set of thumbnails"
	return true;
}

function resetprmt()
{
  status = defaultStatus;
}

function selmi2 (count, basedir, basename, suffix, w, prefix, func, postfix) {
//  with (w.document) {
	  var i
		var p=(count<=36)?"Page ":""
	  for (i = 0; i * 9 < count; i++) {
		  var first = i*9 + 1
			var last = first + 8
			if (last > count) last = count
		  w.document.write ("<a onmouseout='",prefix,"resetprmt()' onmouseover='return ",prefix,"setprmt(\"Images ",first,"-",last)
			w.document.write ("\");' href=\"javascript:",prefix,func,"(",count)
			w.document.writeln (",'",basedir,"','",basename,"','",suffix,"',",first,postfix,")\">",p,i+1,"</a>",(last==count)?"":" |")
		}
//	}
}

function selmi (count, basedir, basename, suffix) {
  selmi2 (count, basedir, basename, suffix, self, "", "gmi", "")
}

function selmip (count, basedir, basename, suffix, w) {
  selmi2 (count, basedir, basename, suffix, w, "parent.", "gmi2", ",self")
}

function gmi2 (count, basedir, basename, suffix, i, w) {
	with (w.document) {
		close ();
		open ();
		writeln ("<html><head>");
		
		writeln ("</head><body>");
		writeln ("<center>");
		writeln ("<table summary='alignment' width='100%' height='100%'><tr align='center' valign='middle'><td>");
		writeln ("<h1>Images ", i, " - ", (i+8<count)? i+8 : count, "</h1>");
		writeln ("<table summary='grid' width=640 height=480>");
		var ii = i;
		for (row = 0; row < 3; row++) {
			writeln ("<tr align='center' valign='middle'>");
			for (col = 0; col < 3; col++) {
				write ("<td>");
				if (ii <= count) {
					write ("<a href='javascript:parent.gzx2(" + count + ", \"" + basedir + "\", \"" + basename + "\", \"" + suffix + "\", " + ii + ", self)'>");
					write ("<img src='" + basedir + "/t_" + basename + w.parent.zp(ii,count) + "." + suffix + "'>");
					write ("<br>", ii);
					write ("</a>");
				}
				writeln ("</td>");
				ii++;
			}
			writeln ("</tr>");
		}
		writeln ("</table>");
		writeln ("<table align=center width=640 cols=3><tr align=center><td width=210>");
		if (i - 9 > 0) {
			writeln ("<a onmouseout='status=defaultStatus' onmouseover='status=\"Display previous set of thumbnails\";return true' href='javascript:parent.gmi2(" + count + ", \"" + basedir + "\", \"" + basename + "\", \"" + suffix + "\", " + (i-9) + ", self)'>Prev</a>");
		}
		writeln ("</td><td><a onmouseout='status=defaultStatus' onmouseover='status=\"Display previous page\";return true' href='javascript:history.back()'>Back</a></td><td width=210>");
		if (i + 9 <= count) {
			writeln ("<a onmouseout='status=defaultStatus' onmouseover='status=\"Display next set of thumbnails\";return true' href='javascript:parent.gmi2(" + count + ", \"" + basedir + "\", \"" + basename + "\", \"" + suffix + "\", " + (i+9) + ", self)'>Next</a>");
		}
		writeln ("</td></tr></table>");
		writeln ("<br>")
		parent.selmip (count, basedir, basename, suffix, w)
		writeln ("</td></tr></table>")
		writeln ("</center></body></html>");
		close ();
	}
}

function gmi (count, basedir, basename, suffix, i) {
	gmi2 (count, basedir, basename, suffix, i, self);
}

