/***[AJAX]***/
var _HTTPFactories = [
  function () { return new XMLHttpRequest(); },
  function () { return new ActiveXObject("Msxml.XMLHTTP"); },
  function () { return new ActiveXObject("Microsoft.XMLHTTP"); }
];

var _HTTPFactory = null;

function HTTPRequest() {
  if(_HTTPFactory) return _HTTPFactory();
  for(var i=0; i < _HTTPFactories.length; i++) {
    try {
      var factory = _HTTPFactories[i];
      var request = factory();
      if(request != null) {
        _HTTPFactory = factory;
        return request;
      }
    }
    catch(e) { continue; }
  }
}

function ajax(path, cmd, cbk, method)
{
    var req = HTTPRequest();
    cbk = cbk || function(status, text) { alert("Unhandled response(" + status + "): " + text); };
    req.onreadystatechange = function() {
	{ cbk(req.readyState, req.status, req.responseText); }
    };
    if (method == 'GET')
	{
	    var opt_string;
	    if (cmd.length > 0)
		opt_string = "?" + cmd.join("&");
	    else
		opt_string = "";
	    req.open(method, path + opt_string);
	    req.send(null);
	}
    else if (method == 'POST')
	{
	    req.open(method, path);
	    req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	    req.send(cmd.join('&'));
	}
    return false;
}

/***[CheckURL]***/

function	change_msg(msg)
{
    var		box = document.getElementById('form_msgbox');

    if (box)
	box.innerHTML = msg;
}

function	call_cbk(readyState, status, text)
{
    switch (readyState)
	{
	case 0:
	    /*Uninitialized: non initialisé*/
	    change_msg("Uninitialized");
	    break;
	case 1:
	    /*Loading: Debut du transfert des donnee*/
	    change_msg("Loading");
	    break;
	case 2:
	    /*Loaded: Donnee transferee*/
	    change_msg("Loaded");
	    break;
	case 3:
	    /*Intereactive: Les donnee recues sont accessible en partie*/
	    change_msg("Loading");
	    break;
	case 4:
	    /*Complete: Les donnee sont completement accessible*/
	    if (status == 200)
		{
		    if (text == "FALSE")
			change_msg("Erreur humaine ou adresse déjà soumise.");
		    else if (text == "TRUE")
			change_msg("<img src='http://geekeries.fr/galaxie/wp-content/themes/galaxie/style/validate.png' style='border: 0px; margin-right: 2px;' />Lien ajouté avec succès !");
		}
	    if (status == 404)
		change_msg("La page est introuvable");
	    break;
	}
}

function	check_format(url_to_test)
{
    format_url = new RegExp("^^http://([a-zA-Z0-9-]+.)?([a-zA-Z0-9-]+.)?[a-zA-Z0-9-]+\.[a-zA-Z]{2,4}(:[0-9]+)?(/[a-zA-Z0-9-]*)?(.[a-zA-Z0-9]{1,4})?$", "gi");
    if (!format_url.test(url_to_test))
	return false;
    else
	return true;
}

function	url_send()
{
    var url_to_test = document.getElementById('url').value;

    if (url_to_test && check_format(url_to_test))
	{
	    var opt = new Array();
	    opt.push("url_send=" + url_to_test);
	    ajax("http://www.geekeries.fr/galaxie/wp-content/themes/galaxie/send_url.php", opt, call_cbk, "GET");
	}
    else
	change_msg("L'adresse est invalide. Essayez avec le préfixe 'http://'");
    return false;
}
