var responses = new Object();
var extradata = new Object();
var responseimages = new Object();
var demographics = new Object();
var tStart  = new Date();
var modulename;

function nextpage(el,subq)
{
	// recurse upwards until page is found

	/*while(el.className!="page"){
		el = el.parentNode;	
	}
	el.style.display = "none";*/

	var key;

	// hide current page
	if(page!=""){
		$("page"+page).style.display="none";
	}
	
	// find next page
	if(page!=""){
		do{
			page = pages[page];
		}while(page!="" && pagetypes[page]=="imModulePageVRSub")
	}
	else{// find first page
		for (key in pages) {
		   page=key;
	   	   loadImages(page);
		   break;
		}
	}
	
	if(subq!="")
		page = subq;

	if(page!=""){
		$("page"+page).style.display="block";
	}else{
		$("submitpage").style.display="block";
		finishUp();
		return;
	}
	
	inner=$("page"+page).getElementsByTagName("div")[0];

	if (window.ActiveXObject) // for ie
		efx = new fx.Opacity(inner,{onComplete: function()
			{
			this.el.style.filter = "";
			}});
	else
		efx = new fx.Opacity(inner);
	efx.setOpacity(0.01);
	

	
	randomizeImages(page);
	
	
	// load next page's images
	npage = pages[page];
	while(npage!="" && pagetypes[npage]=="imModulePageVRSub"){
		if(npage!="")
			loadImages(npage);
		npage = pages[npage];
	}
	if(npage!="")
		loadImages(npage);


	if(pagetypes[page]=="imModulePageSummary")
	{
		showSummary(page);
	}

	efx.custom(0,0.999);
	
	registerHit("page/"+page);

}

function loadImages(page)
{

	ims = $("page"+page).getElementsByTagName("img");
	
	for(i=0;i<ims.length;i++){
		if(ims[i].src==""){
			ims[i].src = ims[i].alt;
			ims[i].alt = "";
		}
	}
}

function randomizeImages(page)
{
	
	ims = $("page"+page).getElementsByTagName("a");
	
	for(i=0;i<ims.length*2;i++){
		el1=ims[Math.round(getRandomArbitary(0,ims.length-1))];
		el2=ims[Math.round(getRandomArbitary(0,ims.length-1))];
		el2.parentNode.insertBefore(el2,el1);	
	}

}

function getRandomArbitary(min, max) {
  return Math.random() * (max - min) + min;
}

function r(el, page, response,subq)
{
	img=el.childNodes[0];
	if(img.src=="") return false;
	if(isImageLoaded(img)==false) return false;

	responses[page]=response;
	responseimages[page]=img.src;

	nextpage(el,subq);
	
	return false;
}

function rf(el, page)
{
	var i,form,vars,error;
	
	error=0;
	
	form = ($("page"+page).getElementsByTagName("form"))[0];
	
	vars = Form.getElements(form);
	
	for (i=0;i<vars.length;i++){
		if(vars[i].type=='radio'){
			demographics[vars[i].name] = getRadioValue(form,vars[i].name)
		}
		else{
			demographics[vars[i].name] = $F(vars[i]);
			if(demographics[vars[i].name]=='-')
				demographics[vars[i].name] = null;
		}
		
		// no value given - release the hounds
		if(demographics[vars[i].name]==null){
			error = 1;
			Element.addClassName('label'+vars[i].name,"errorlabel");
		} else {
			Element.removeClassName('label'+vars[i].name,"errorlabel");
		}
		
		
	}

	if(error==0)
		nextpage(el,"");
	
	return false;
}

function getRadioValue(form,name)
{
	vars = Form.getInputs(form,'radio',name);
	
	retval = null;
	
	for (i=0;i<vars.length;i++){
		//alert(vars[i]);
		if(vars[i].checked)
			retval=vars[i].value;
	}
	
	return retval;
	
}

function finishUp()
{
	
	var urlParts = window.location.href.split("#");

	// record how long it took to complete surve
	var   tDate = new Date();
    var   tDiff = tDate.getTime() - tStart.getTime();
    tDate.setTime(tDiff);
    extradata['timer'] = "" + tDate.getMinutes() + ":" + tDate.getSeconds();


    var anchor = urlParts[1];
	if(anchor){
		extradata['argv']=anchor
		}
	
	// build invisible form and submit
	form = $('submitform');
	
	for (i in responses) {
	
		if (typeof document.createElementNS != 'undefined') {
   			  	element=document.createElementNS('http://www.w3.org/1999/xhtml', "input");
				element.setAttribute("name", 'resp-'+i);
				element.setAttribute("type", "hidden");
				element.setAttribute("value", responses[i]);

  		}else{
	
			try {
				element = document.createElement("<input name='resp-"+i+"' type='hidden' value='"+responses[i]+"'/>");
			} catch (e) {
				element = document.createElement("input");
				element.setAttribute("name", 'resp-'+i);
				element.setAttribute("type", "hidden");
				element.setAttribute("value", responses[i]);
			}
		}
	
		
		form.appendChild(element);

	}
	
	for (i in demographics) {
	
		if (typeof document.createElementNS != 'undefined') {
   			  	element=document.createElementNS('http://www.w3.org/1999/xhtml', "input");
				element.setAttribute("name", 'demog-'+i);
				element.setAttribute("type", "hidden");
				element.setAttribute("value", demographics[i]);
  		}else{
	
			try {
				element = document.createElement("<input name='demog-"+i+"' type='hidden' value='"+demographics[i]+"'/>");
			} catch (e) {
				element = document.createElement("input");
				element.setAttribute("name", 'demog-'+i);
				element.setAttribute("type", "hidden");
				element.setAttribute("value", demographics[i]);
			}
		}
		
		form.appendChild(element);

	}

	for (i in extradata) {

		if (typeof document.createElementNS != 'undefined') {
   			  	element=document.createElementNS('http://www.w3.org/1999/xhtml', "input");
				element.setAttribute("name", 'data-'+i);
				element.setAttribute("type", "hidden");
				element.setAttribute("value", extradata[i]);

		}else{
		
			try {
				element = document.createElement("<input name='data-"+i+"' type='hidden' value='"+extradata[i]+"'/>");
			} catch (e) {
				element = document.createElement("input");
				element.setAttribute("name", 'data-'+i);
				element.setAttribute("type", "hidden");
				element.setAttribute("value", extradata[i]);
			}
		}
				
		form.appendChild(element);

	}
	
	
			
	submitForm();


}

function showSummary(pageid)
{
	
	pagediv = $("summary"+pageid);
	
	for (i in responseimages) {

		try {
			div = document.createElement("<div class='summaryimage'>");
		} catch (e) {
			div = document.createElement("div");
			div.setAttribute("class", "summaryimage");
		}
		img = document.createElement("img");
		img.setAttribute("src", responseimages[i]);

		try {
			div2 = document.createElement("<div class='caption'>");
		} catch (e) {
			div2 = document.createElement("div");
			div2.setAttribute("class", "caption");
		}
		
		txt = document.createTextNode(pagenames[i]);

		div.appendChild(img);
		div.appendChild(div2);
		div2.appendChild(txt);
		pagediv.appendChild(div);

	}	
}

function getHTTPObject() {
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
		try {
			xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (E) {
			xmlhttp = false;
			}
		}
	@else
	xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		xmlhttp.overrideMimeType("text/xml"); 
		} catch (e) {
			xmlhttp = false;
		}
	}
	return xmlhttp;
}
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
function testBrowser(){

	ob = getHTTPObject();
//	cookie = readCookie("Gargravarr5");	

	if(!ob){
		window.location = "sorry.html"
		return false;
	}
	
	return true;

}

function loadJS(url)
{
	var headTag = document.getElementsByTagName("head").item(0);
	var scriptTag = document.createElement("script");
	scriptTag.src = url;
	headTag.appendChild( scriptTag );
}

function submitForm()
{
	ourDate = new Date();
	cachebreak = ourDate.getMilliseconds() 

	// check main server working
	setTimeout("pingFail()",10*1000);
	loadJS(primaryServer+"ping.php?"+cachebreak);
}

var pingStatus = "";

function pingSuccess()
{
	form = $('submitform');
	if(form.action!="") return; // ping already timed out and is failing over to backup
	form.action=primaryServer+"finish.php";
	registerHit("submitresponse");
	form.submit();

}
function pingFail()
{
	form = $('submitform');
	if(form.action!="") return; // ping already succeeded
	form.action=backupServer+"finish.php";
	registerHit("submitresponse");
	form.submit();
}

function registerHit(page)
{	
	urchinTracker("/" + modulename + "/" + page);
}

function isImageLoaded(img) {
    if (typeof img.complete != "undefined" && !img.complete) {
        return false;
    }
    if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
        return false;
    }

    // No other way of checking: assume it's ok.
    return true;
}
