/**
  Initialisation 
  ----------------------------------------------------------
  Place all loads as input strings into the system event 
  chain
  ----------------------------------------------------------*/

if(sysLoadChain) {
 sysLoadChain[sysLoadChain.length] = 'InitFeedbackSystem();';
}
/**
  XMLHttp requests
  ----------------------------------------------------------*
  makes an XMLHttp request
  ----------------------------------------------------------*/
var http_request = false;
function MakeRequest(url, processor) 
{
  http_request = false;
  if (window.XMLHttpRequest) {
    http_request = new XMLHttpRequest();
	if (http_request.overrideMimeType) {
	  http_request.overrideMimeType('text/xml');
	}
  } else if (window.ActiveXObject) { 
    try {
	  http_request = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	  try {
		http_request = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (e) {}
	}
  }
  if (!http_request) {
    return false;
  }
  try {
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	http_request.onreadystatechange = processor;
	http_request.open('GET', url, true);
	http_request.send(null);
	return true;
  } catch(e) {
    alert(e + "Returning false");
    return false;
  }
}
/**
  Validation Functions
  ----------------------------------------------------------*
  Validate input
  ----------------------------------------------------------*/
function ValidateNameEntry(tag){
  var name = document.getElementById(tag);
  if(name == null) return false;
  var value = "" + name.value;
  if(value.length <= 0) {
    ErrorAlert(tag);
	return false;
  }
  return true;  
}
function ValidateEmailEntry(){
  var email = document.getElementById('email');
  if(email == null) return false;
  var value = email.value;
  var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (!filter.test(value)) {
    ErrorAlert('email');
	return false;
  }
  return true;  
}
function ValidateMessageEntry(){
  var msg = document.getElementById('message');
  if(msg == null) return false;
  var value = "" + msg.value;
  if(value.length <= 0) {
    ErrorAlert('message');
	return false;
  }
  return true;
}
function ErrorAlert(nom) {
  var obj = document.getElementById(nom);
  if(obj != null) {
    MakeVisible(obj, true);
	obj.className = "error";
	var snippet = "MakeVisible('"+nom+"', true)";
    setTimeout(snippet, 500);
  }
}
function MakeVisible(nom, state){
  var obj = document.getElementById(nom);  
  if(obj == null) return;
  if(state == false) {
    obj.className = 'unseen';
  } else {
    obj.className = 'seen';
  }
}
/**
  Send Message Functions
  ----------------------------------------------------------*
  Logic for sending the feedback message
  ----------------------------------------------------------*/
function SendMessage(){
  var sender = document.getElementById('send');
  if(sender != null) sender.disabled = true;
  var url = 'http://www.ghanakeyboards.com/cgi-bin/feedback_ajax.php';
  var result = MakeRequest(url, ProcessMessageResult);
  return (result == false);
}
function ProcessMessageResult(){
  if (http_request.readyState == 4) 
  {
    var message;
	if (http_request.status == 200) 
	{
	  var doc = http_request.responseXML;
	  var msg = doc.getElementsByTagName('<result>');	 
	  message = result.innerHTML;	  
	} else 
	{
	  message = 'There was a problem with the request.';
	}
	var output = document.getElementById('feedback.message');
	if(output == null) {
	  alert(message);
	}  else  {
	  result.innerText = message;
	  MakeVisible('feedback.out', true);
	  MakeVisible('feedback.in', false);
	}
  }
}
function SubmitFeedback(){
  var feedback = document.getElementById('feedback');
  if(feedback == null) return false;
  if(!ValidateNameEntry('fname')) return false;
  if(!ValidateNameEntry('lname')) return false;
  if(!ValidateEmailEntry()) return false;
  if(!ValidateMessageEntry()) return false;
  return SendMessage();
}
function InitFeedbackSystem(){
}

