/**
  Initialisation 
  ----------------------------------------------------------
  Place all loads as input strings into the system event 
  chain
  ----------------------------------------------------------*/

if(sysLoadChain) {
 sysLoadChain[sysLoadChain.length] = 'InitDownloader();';
}
/**
  Saving user ingormation asynchronously
  ----------------------------------------------------------*
  Saves user information by AJAX
  ----------------------------------------------------------*/
var saveRequest = false;
function saveRequestInfo() 
{
  saveRequest = false;
  if (window.XMLHttpRequest) {
    saveRequest = new XMLHttpRequest();
	if (saveRequest.overrideMimeType) {
	  saveRequest.overrideMimeType('text/xml');
	}
  } else if (window.ActiveXObject) { // IE
    try {
	  saveRequest = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
	  try {
		saveRequest = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (e) {
	    saveRequest = false; 
	  }
	}
  }
  if (!saveRequest) {
    return true; // give up and let old school submit kick in
  }
  try {
	saveRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  } catch(e) {
    //return true;
  }
  var url = "http://www.ghanakeyboards.com/cgi-bin/download_ajax.php?";
  var fname = document.getElementById('fname');
  if(fname != null) url += "fname=" + fname.value;
  var lname = document.getElementById('lname');
  if(lname != null) url += "&lname=" + lname.value;
  var email = document.getElementById('email');
  if(email != null) url += "&email=" + email.value;
  var usage = document.getElementById('usage');
  if(usage != null) url += "&usage=" + usage.options[usage.options.selectedIndex].value;
  var pak = document.getElementById('pak');
  if(pak != null) url += "&pak="+ pak.options[pak.options.selectedIndex].value;
  var os = document.getElementById('os');
  if(os != null) {
	url += "&osType="+ os.options[os.options.selectedIndex].value;
	var nom = os.options[os.options.selectedIndex].text;
	var ind = nom.lastIndexOf(" ");
	nom = nom.substring(ind + 1);
	url += "&os=WIN" + nom;
  }
  var cntry = document.getElementById('country');
  if(cntry != null) url += "&country="+ cntry.options[cntry.options.selectedIndex].value
  var layout = document.getElementById('layout');
  if(layout != null && layout.options.selectedIndex >= 0) 
    url += "&layout=" + layout.options[layout.options.selectedIndex].value;
  saveRequest.onreadystatechange = processDownloadLink;
  saveRequest.open('GET', url, true);
  saveRequest.send(null);
  return false;
}
function processDownloadLink() 
{
  if (saveRequest.readyState == 4) 
  {
	if (saveRequest.status == 200) 
	{
	  var doc = saveRequest.responseXML;
	  var urls = doc.getElementsByTagName('link');
	  url = null;
	  for(var i=0; i<urls.length; i++) { url = urls[i];  }
	  if(url != null) {
	    var form = document.getElementById('pak-form');
 	    if(form != null) {
		  form.method ='GET';
		  form.action = url.firstChild.data;
		  form.submit();
		}
	  }
	} else 
	{
	  alert('There was a problem with the request. '+saveRequest.status);
	}
  }
}
/**
  Layout requests
  ----------------------------------------------------------*
  makes layout request by AJAX
  ----------------------------------------------------------*/
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) {
	alert('Giving up( Cannot create an XMLHTTP instance)');
    return false;
  }
  try {
	http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  } catch(e) {}
  http_request.onreadystatechange = processor;
  http_request.open('GET', url, true);
  http_request.send(null);
}
/**
  processOS
  ----------------------------------------------------------*
  makes os request by AJAX
  ----------------------------------------------------------*/
function processOS() 
{
  if (http_request.readyState == 4) 
  {
	if (http_request.status == 200) 
	{
	  var doc = http_request.responseXML;
	  var osSelector = document.getElementById('os');
	  if(osSelector == null) return;
	  if(osSelector.options.length > 0) osSelector.options.length = 0;
	  var os  = doc.getElementsByTagName('os');
	  for(var i=0; i<os.length; i++) {
		var osType = os[i];
		var option = document.createElement('option');
		var text   = document.createTextNode(osType.firstChild.data);
		option.setAttribute('value', osType.getAttribute('type'));
		option.appendChild(text);
		osSelector.appendChild(option);
	  }
	  var osChoice = document.getElementById('osChoice');	  
	  osChoice.className = "visible";
	  var osChoice = document.getElementById('langChoice');
	  osChoice.className = "hidden";
	} else 
	{
	  alert('There was a problem with the request.');
	}
  }
}

/**
  processLanguage
  ----------------------------------------------------------*
  makes language request by AJAX
  ----------------------------------------------------------*/
function processLanguage() 
{
  if (http_request.readyState == 4) 
  {
	if (http_request.status == 200) 
	{
	  var doc = http_request.responseXML;
	  var lang= doc.getElementsByTagName('keyboard');
	  var lSelector = document.getElementById('layout');
	  if(lSelector == null) return;
	  if(lSelector.options.length > 0) lSelector.options.length = 0;
	  for(var i=0; i< lang.length; i++) {
		var lType = lang[i];
		var option = document.createElement('option');
		var text   = document.createTextNode(lType.firstChild.data);
		option.setAttribute('value', lType.getAttribute('id'));
		option.appendChild(text);
		lSelector.appendChild(option);
	  }
	  var langChoice = document.getElementById('langChoice');
	  langChoice.className = "visible";
	} else 
	{
	  alert('There was a problem with the request.');
	}
  }
}

function DownloadKeyboard(){
  var submitButton = document.getElementById('download');
  if(submitButton == null) return false;
  //submitButton.disabled = true;
  var pak = document.getElementById('pak');
  if(pak != null) {
	if(pak.options.selectedIndex < 0) {
	  pak.className = 'visible';
	  pak.className = "error";
	  setTimeout("MakeVisible('pak', true)", 1000);
	  return false;
	}
  } else return false;
  var os = document.getElementById('os');
  if(os != null) {
	if(os.options.selectedIndex < 0) {
	  os.className = 'visible';
	  os.className = "error";
	  setTimeout("MakeVisible('os', true)", 1000);
	  return false;
	}
  } else return false;
  var lite = (pak.options[pak.options.selectedIndex].value != 'PE');
  var layout = document.getElementById('layout');
  if(layout != null ) {
	if(layout.options.selectedIndex < 0 && (lite == true)) {
	  layout.className = 'visible';
	  layout.className = "error";
	  setTimeout("MakeVisible('layout', true)", 1000);
	  return false;
	}
  } else return false;
  return saveRequestInfo();
}

function MakeVisible(nom, state){
  var obj = document.getElementById(nom);  
  if(obj == null) return;
  if(state == false) {
    obj.className = 'unseen';
  } else {
    obj.className = 'seen';
  }
}
/**
  processLanguage
  ----------------------------------------------------------*
  makes language request by AJAX
  ----------------------------------------------------------*/
function ShowChoices(type) 
{
  if(type == 'os') {
    makeRequest('keyboards.xml', processOS);
  }
  if(type == 'lang') {
	var pak = document.getElementById('pak');
	if(pak == null) return;
	if(pak.options[pak.options.selectedIndex].value == 'PE') {
	  var layout = document.getElementById('layout');
	  if(layout != null) layout.className = 'hidden';
	  return;
	} else {
	  var layout = document.getElementById('layout');
	  if(layout != null) layout.className = 'visible';
	}
    makeRequest('keyboards.xml', processLanguage);
  }
}

function InitDownloader(){
  MakeVisible('select-set', true);  
  var type = document.getElementById('type');
  if(type == null) return;
  type.value = "live";
  var pak = document.getElementById('pak');
  if(pak == null) return;
  if(pak.options.selectedIndex >=0) {
	  ShowChoices('os');
  }
}

