// javascript here

var camtimer
var refreshtime
var seqset
var xmlreq = null
var dodebug = 0
var stopisnext = 0

function now() {
	var t = new Date()
	return t.getTime()
}

function starttimer() {
	camtimer = 0
	if(refreshtime > 0){
		debug("start timer for "+refreshtime+"\n")
		camtimer = now()+refreshtime*1000
		debug("camtimer = "+camtimer+"\n")
		countdown(refreshtime)
	}else
		countdown("")
}

function stoptimer() {
	if(stopisnext){
		seqload()
		return
	}
	camtimer = 0
	countdown("")
	var t = document.getElementById("reload")
	t.selectedIndex = 0
	changetime()
}

function changetime(x) {
	var t = document.getElementById("reload")
	refreshtime = t.value
	debug("change time to "+t.value+"\n")
	var b = document.getElementById("stop-button");
	if(t.value != 0 && stopisnext){
		stopisnext = 0
		b.value = "Stop Camera"
	}else if(t.value == 0 && !stopisnext){
		stopisnext = 1
		b.value = "Next Sequence"
	}
	starttimer()
}

function changeset() {
	var t = document.getElementById("set")
	seqset = t.value
	var h = document.getElementById("heading")
	var o = t.options[t.selectedIndex]
	debug("change sequence set to "+t.value+"\n")
	h.innerHTML = "The OEIS WebCam: "+o.text
	seqload()
}

function seqload() {
	debug("seqload\n")
	camtimer = 0
	var u = window.location
	// The random number helps avoid caching by the browser.
	u = u+"?fromjavascript=1&set="+seqset+"&random="+Math.random()
	startxmlreq(u)
}

function countdown(s) {
	var t = document.getElementById("countdown")
	t.innerHTML = "<font size=-1>"+s+"</font>"
}

function tick() {
	if(camtimer){
		var d = (camtimer - now())/1000
		d = d-d%1
		if(d > 0)
			countdown(d)
		else{
			countdown("")
			camtimer = 0
			seqload()
		}
	}
	setTimeout("tick()", 250)
}

function xonload() {
	debug("onload\n")
	changetime()
	camtimer = 0
	countdown("")
	changeset()
	setTimeout("tick()", 250)
}

function startxmlreq(url) {
	var r
	
	debug("startxml "+url+"\n")
	if(window.XMLHttpRequest){
		r = new XMLHttpRequest()
		xmlreq = r
		r.onreadystatechange = xmlupdate
		r.open("GET", url, true)
		r.send(null)
	}else if(window.ActiveXObject){
		r = new ActiveXObject("Microsoft.XMLHTTP")
		xmlreq = r
		if(r){
			r.onreadystatechange = xmlupdate
			r.open("GET", url, true)
			r.send()
		}
	}
	return r
}

function xmlupdate() {
	var r
	
	r = xmlreq
	if(!r)
		return

	if(r.readyState == 4 && r.status == 200){
		debug("got xml\n")
		var t = document.getElementById("seqwin")
		t.innerHTML = r.responseText
		starttimer()
	}
}

function debug(s)
{
	if(!dodebug)
		return
	var t = document.getElementById("debug")
	t.innerHTML = t.innerHTML + s + "<br>"
}

