// JavaScript Document

var request;
var queryString;   //will hold the POSTed data

function debug(str) {
	document.getElementById("debug").innerHTML = str;	
}

function restorepanels() {
	window.location.reload();
	/*
	document.getElementById("e3").style.display = 'none';
	document.getElementById("controls").style.display='block';
	*/
}

function sendData(url,hook){
    setQueryString(hook);
    httpRequest("POST",url,true,hook);
}


//event handler for XMLHttpRequest
function defaultHook(){
	var now = new Date();
    if(request.readyState == 4){
        if(request.status == 200){
			
		//alert(request.responseText);
		//debug(request.responseText);
		response = request.responseText.split("[+]");
		hook = response[1];
		switch(hook) {
			
			case "1": // coming back from registration
			errordisplay = response[0].split(",");
			if (response[0] == "none,none,none,none,none") {
				//alert("show acknowledgement");
				document.getElementById("prompt").style.display = "none";
				document.getElementById("acknowledgement").style.display = "block";
			}
			for (i=0;i<errordisplay.length;i++) { document.getElementById("e"+i).style.display = errordisplay[i]; }
			break;
			
			case "2": // coming back from adding a comment
			errordisplay = response[0].split(",");
			
			for (i=0;i<errordisplay.length;i++) { document.getElementById("e"+i).style.display = errordisplay[i]; }
			if (response[0] == "none,none,none,block") {
				
				document.getElementById("e3").style.display = "block";
				document.getElementById('controls').style.display='none';
				document.getElementById("title").value = "";
				document.getElementById("_cbody").value = "";
				document.charsleft = document.maxchars;
				document.getElementById("charsleft").innerHTML = document.maxchars+" characters remaining";
				setTimeout("restorepanels();",5000);
				
			}
			/**/
			break;
			
		}
		
        } else {
            alert("A problem occurred with communicating between the XMLHttpRequest object and the server program.");
        }
    }//end outer if
}

/* Initialize a Request object that is already constructed */

function initReq(reqType,url,bool,hook){
    /* Specify the function that will handle the HTTP response */
	
	switch (hook) {
		
		default:
		request.onreadystatechange=defaultHook;
		break;
		
	}
	
    request.open(reqType,url,bool);
    request.setRequestHeader("Content-Type",
            "application/x-www-form-urlencoded; charset=UTF-8");
    request.send(queryString);
}

/* Wrapper function for constructing a Request object.
 Parameters:
  reqType: The HTTP request type such as GET or POST.
  url: The URL of the server program.
  asynch: Whether to send the request asynchronously or not. */
  
function httpRequest(reqType,url,asynch,hook){
    //Mozilla-based browsers
    if(window.XMLHttpRequest){
        request = new XMLHttpRequest();
    } else if (window.ActiveXObject){
        request=new ActiveXObject("Msxml2.XMLHTTP");
        if (! request){
            request=new ActiveXObject("Microsoft.XMLHTTP");
        }
     }
    //the request could still be null if neither ActiveXObject
    //initializations succeeded
    if(request){
       initReq(reqType,url,asynch,hook);
    }  else {
        alert("Your browser does not permit the use of all "+
        "of this application's features!");}
}

function setQueryString(hook){
	
    queryString="";
	
	switch (hook) {
		
		case 1:
    	var frm = document.forms[0];
		for (i=0;i<4;i++) { document.getElementById("e"+i).style.display = "none"; }
		break;
		
		default:
    	var frm = document.forms[0];
		break;
		
	}
	
    var numberElements =  frm.elements.length;
    for(var i = 0; i < numberElements; i++)  {
            if(i < numberElements-1)  {
                queryString += frm.elements[i].name+"="+
                               encodeURIComponent(frm.elements[i].value)+"&";
            } else {
                queryString += frm.elements[i].name+"="+
                               encodeURIComponent(frm.elements[i].value);
            }

    }
}

