function AJAXInteraction(url, callback) {

    var req = init();
    req.onreadystatechange = processRequest;
        
    function init() {
      if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
      } else if (window.ActiveXObject) {
        return new ActiveXObject("Microsoft.XMLHTTP");
      }
    }
    
    function processRequest () {
      // readyState of 4 signifies request is complete
      if (req.readyState == 4) {
	// status of 200 signifies sucessful HTTP call
        if (req.status == 200) {
          if (callback) callback(req.responseXML);
        }
      }
    }

    this.doGet = function() {
      // make a HTTP GET request to the URL asynchronously
      req.open("GET", url, true);
      req.send(null);
    }
}

//****************************************//
// NAME
function validateRedirName() {
    var target = document.getElementById("f_name");
	if (target.value == "" ) {
		return false;
	} else {
    var url = "code/validate.asp?a=redirname&v=" + encodeURIComponent(target.value); 
   	var ajax = new AJAXInteraction(url, validateCallbackRedirName); 
    ajax.doGet();
	}
}

function validateCallbackRedirName(responseXML) {

   var msg = responseXML.
       getElementsByTagName("valid")[0].firstChild.nodeValue;
	var msg_tx = responseXML.
       getElementsByTagName("text")[0].firstChild.nodeValue;

   if (msg == "false") {

       var mdiv = document.getElementById("f_name");
	   var mdiv_tx = document.getElementById("f_name_tx");

       // set the style on the div to invalid

       mdiv.className = "short invalid";
       mdiv_tx.innerHTML = msg_tx;

    } else {

       var mdiv = document.getElementById("f_name");
	   var mdiv_tx = document.getElementById("f_name_tx");

       // set the style on the div to valid

       mdiv.className = "short valid";
	   mdiv_tx.innerHTML = msg_tx;
    }  
}
//****************************************//

//****************************************//
// URL
function validateRedirURL() {
    var target = document.getElementById("f_url");
	if (target.value == "" ) {
		return false;
	} else {
    var url = "code/validate.asp?a=redirurl&v=" + encodeURIComponent(target.value); 
    var ajax = new AJAXInteraction(url, validateCallbackRedirURL); 
    ajax.doGet();
	}
}

function validateCallbackRedirURL(responseXML) {

   var msg = responseXML.
       getElementsByTagName("valid")[0].firstChild.nodeValue;
	var msg_tx = responseXML.
       getElementsByTagName("text")[0].firstChild.nodeValue;

   if (msg == "false") {

       var mdiv = document.getElementById("f_url");
	   var mdiv_tx = document.getElementById("f_url_tx");

       // set the style on the div to invalid

       mdiv.className = "short invalid";
	   mdiv_tx.innerHTML = msg_tx;
       /*var submitBtn = document.getElementById("regsend");
       submitBtn.disabled = true;*/

    } else {

       var mdiv = document.getElementById("f_url");
	   var mdiv_tx = document.getElementById("f_url_tx");

       // set the style on the div to valid

       mdiv.className = "short valid";
       mdiv_tx.innerHTML = msg_tx;
       /*var submitBtn = document.getElementById("regsend");
       submitBtn.disabled = false;*/
    }  
}
//****************************************//

//****************************************//
// EMAIL
function validateRedirEmail() {
    var target = document.getElementById("f_email");
	if (target.value == "" ) {
		return false;
	} else {
    var url = "code/validate.asp?a=rediremail&v=" + encodeURIComponent(target.value); 
    var ajax = new AJAXInteraction(url, validateCallbackRedirEmail); 
    ajax.doGet();
	}
}

function validateCallbackRedirEmail(responseXML) {

   var msg = responseXML.
       getElementsByTagName("valid")[0].firstChild.nodeValue;
	var msg_tx = responseXML.
       getElementsByTagName("text")[0].firstChild.nodeValue;

   if (msg == "false") {

       var mdiv = document.getElementById("f_email");
	   var mdiv_tx = document.getElementById("f_email_tx");

       // set the style on the div to invalid

       mdiv.className = "normal invalid";
	   mdiv_tx.innerHTML = msg_tx;
       /*var submitBtn = document.getElementById("regsend");
       submitBtn.disabled = true;*/

    } else {

       var mdiv = document.getElementById("f_email");
	   var mdiv_tx = document.getElementById("f_email_tx");

       // set the style on the div to valid

       	mdiv.className = "normal valid";
		mdiv_tx.innerHTML = msg_tx;
       /*var submitBtn = document.getElementById("regsend");
       submitBtn.disabled = false;*/
    }  
}
//****************************************//

//****************************************//
// REGISTER
function registerRedir() {
    var redirname = document.getElementById("f_name");
	var redirurl = document.getElementById("f_url");
	var rediremail = document.getElementById("f_email");
	
	var div_barwait = document.getElementById("barwait");
	var div_barerror = document.getElementById("barerror");
	var div_bartx = document.getElementById("bartx");
	
	div_barwait.className = "visible";
	div_bartx.className = "hidden";
	div_barerror.className = "hidden";
	
	var div_regform = document.getElementById("regform");
	var div_regwait = document.getElementById("regwait");
	div_regform.className = "hidden";
	div_regwait.className = "visible";
	
    var url = "code/register.asp?a=register&redirname=" + encodeURIComponent(redirname.value) + "&redirurl=" + encodeURIComponent(redirurl.value) + "&rediremail=" + encodeURIComponent(rediremail.value); 
    var ajax = new AJAXInteraction(url, validateCallbackRegister); 
    ajax.doGet();
}

function validateCallbackRegister(responseXML) {

   var msg = responseXML.
       getElementsByTagName("valid")[0].firstChild.nodeValue;
	var div_barwait = document.getElementById("barwait");
	var div_barerror = document.getElementById("barerror");
	var div_bartx = document.getElementById("bartx");

   if (msg == "false") {
   
   		var msg_label = responseXML.getElementsByTagName("label")[0].firstChild.nodeValue;
		var msg_tx = responseXML.getElementsByTagName("text")[0].firstChild.nodeValue;
		var error_label = document.getElementById("error_label");
		var error_tx = document.getElementById("error_tx");
   
		div_barwait.className = "hidden";
		div_bartx.className = "hidden";
		div_barerror.className = "visible";

		//div_reglabel.innerHTML = msg_label + '<br/>' + msg_tx;
		//div_reglabel.className = "error_sublabel";
		error_label.innerHTML = msg_label;
		error_tx.innerHTML = msg_tx;

    } else {

	   div_barwait.className = "hidden";
	   div_barerror.className = "hidden";
	   div_bartx.className = "visible";

       // set the style on the div to valid

       //div_regwaittext.innerHTML = msg_tx;
    }  
}
//****************************************//

function returntonormal() {
	var div_regform = document.getElementById("regform");
	var div_regwait = document.getElementById("regwait");

	div_regform.className = "visible";
	div_regwait.className = "hidden";
}