var organization = "HEALTH PROMOTION";
var ajaxUrl = null;
var proxyFilename = "form_confirmation_proxy.htm";
var help = "Please call the UNIT Help Desk at x97777 for assistance.";

Event.observe(window, 'load', init, false);

function init() {
	var params = location.search.toQueryParams();
	if(params["organization"]) {
		organization = params["organization"];
	}
	$("survey").removeClassName("showSurvey"); 
	$("survey").addClassName("hideSurvey"); 
	locateProxy();
	loadSurvey();
}

function locateProxy() {
  ajaxUrl = location.pathname;
  if(ajaxUrl.substring(ajaxUrl.length-1) != "/") {
    ajaxUrl = ajaxUrl.substring(0, ajaxUrl.lastIndexOf("/")+1);
  }
  ajaxUrl += proxyFilename + "?template=no";
}

function loadSurvey() {
  var success = function(transport){loadSurveySuccess(transport);}
  var failure = function(transport){loadSurveyError(transport);}
  var missing = function(){loadSurveyMissing();}
  var pars = "subcommand=Load&organization=" + organization;
  new Ajax.Request(ajaxUrl,
	{
	  method: "post",
	  postBody: pars,
	  onSuccess: success,
	  onFailure: failure,
	  on404: missing
	}
  );
}

function loadSurveySuccess(transport) {
  var survey = transport.responseText.strip();
  if(survey.length != 0) {
    $("survey").innerHTML = survey;
    $("survey").addClassName("showSurvey"); 
    $("survey").removeClassName("hideSurvey");
    if($$("#surveyForm .submit").length != 0) {
      Event.observe($$("#surveyForm .submit")[0], 'click', storeResponses, false);
    }
  }
}

function loadSurveyError(transport) {
	alert("Survey could not be loaded.\n" + help);
	$("survey").removeClassName("showSurvey");
	$("survey").addClassName("hideSurvey"); 
}

function loadSurveyMissing() {
	alert("Survey could not be found.\n" + help);
	$("survey").removeClassName("showSurvey"); 
	$("survey").addClassName("hideSurvey"); 
}

function storeResponses() {
	var success = function(transport){storeResponsesSuccess(transport);}
  var failure = function(transport){storeResponsesError(transport);}
  var missing = function(){storeResponsesMissing();}
  var pars = Form.serialize($("surveyForm"));
  new Ajax.Request(ajaxUrl,
	{
	  method: "get",
	  parameters: pars,
	  onSuccess: success,
	  onFailure: failure,
	  on404: missing
	}
  );
}

function storeResponsesSuccess(transport) {
  var acknowledgement = transport.responseText.strip();
  $("survey").innerHTML = acknowledgement;
  $("survey").addClassName("showSurvey");
  $("survey").removeClassName("hideSurvey");
  Event.observe($$("#survey a")[0], 'click', displayResults, false);
}

function storeResponsesError(transport) {
	alert("Responses could not be submitted.\n" + help);
	$("survey").removeClassName("showSurvey");
	$("survey").addClassName("hideSurvey"); 
}

function storeResponsesMissing() {
	alert("Responses could not be submitted.\n" + help);
	$("survey").removeClassName("showSurvey"); 
	$("survey").addClassName("hideSurvey"); 
}

function displayResults() {
  var success = function(transport){displayResultsSuccess(transport);}
  var failure = function(transport){displayResultsError(transport);}
  var missing = function(){displayResultsMissing();}
  var pars = "subcommand=Display&organization=" + organization;
  new Ajax.Request(ajaxUrl,
	{
	  method: "post",
	  postBody: pars,
	  onSuccess: success,
	  onFailure: failure,
	  on404: missing
	}
  );
}

function displayResultsSuccess(transport) {
  var results = transport.responseText.strip();
  $("survey").innerHTML = results;
  $("survey").addClassName("showSurvey"); 
  $("survey").removeClassName("hideSurvey");
}

function displayResultsError(transport) {
	alert("The results could not be loaded.\n" + help);
	$("survey").removeClassName("showSurvey");
	$("survey").addClassName("hideSurvey"); 
}

function displayResultsMissing() {
	alert("The results could not be found.\n" + help);
	$("survey").removeClassName("showSurvey"); 
	$("survey").addClassName("hideSurvey"); 
}

