var doFinalCallbackFlag = false

function doFinal() {
	// alert('submitting')
	// setPage(false, 'Final', false)
	setTimeout("setPageNoBar(false, 'Final')", 1000)
	// alert('submitted...')
}

function onSuccess(response) {
	document.getElementById('overlay').style.display = 'none'
	document.getElementById("page").innerHTML = response

	if (doFinalCallbackFlag) {
		doFinal()
	}
}

function onError(errorMessage) {
	document.getElementById('overlay').style.display = 'none'
	alert("Error communicating with server.  Please try again.\n\n" + errorMessage)
}

function setPage(frm, page, doFinalCallback) {
	// show the 'please wait' thingy...
	document.getElementById('overlay').style.display = 'block'

	setPageNoBar(frm, page, doFinalCallback)
}

function setPageNoBar(frm, page, doFinalCallback) {
	if (doFinalCallback) {
		// alert('finalCallback')
		doFinalCallbackFlag = true
	} else {
		// alert('NOT finalCallback')
		doFinalCallbackFlag = false
	}

	var pageURI = "registration.co?action=page" + page
	var qs = ""
	if (frm) {
		qs = formToQueryString(frm)
	}

	// alert(pageURI + " POST: " + qs)
	loadPage(pageURI, qs, onSuccess, onError)
}

function formToQueryString(frm) {
	var qs = ""
	for (var e=0; e<frm.elements.length; e++) {
		var elem = frm[e]
		if (elem == null) {
			continue  // IE fix
		}

		if (typeof(elem) == 'object' && elem.name && elem.type) {
			qs += encodeElement(elem)
		}
	}

	if (qs.length > 1) {
		return qs.substring(0, qs.length - 1)
	} else {
		return ""
	}
}

function escapeAll(val) {
//	val = escape(val)
//	return val.replace(/\+/g, "%2B")
	return encodeURIComponent(val)
}

function encodeElement(elem) {
	var elemType = elem.type
	switch (elemType) {
		case 'checkbox':
			if (elem.checked) {
				return elem.name + "=" + escapeAll(elem.value) + "&"
			}
			break

		case 'radio':
			if (elem.checked) {
				return elem.name + "=" + escapeAll(elem.value) + "&"
			}
			break

		case 'select-one':
		case 'text':
		case 'textarea':
		case 'hidden':
			if (elem.value) {
				return elem.name + "=" + escapeAll(elem.value) + "&"
			} else {
				return elem.name + "=&"
			}
			break
	}

	return ""
}

function popUp(URL,xx,yy) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=0,width='+xx+',height='+yy+',left=15,top=15');");
}
