function IsDefined( variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function checkEmail() {
  var correo = document.getElementById('email1');
  var filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  if (!filtro.test(correo.value)) {
    return false;
  }
  return true;
}

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);

   return output;
}


function getXmlHttpRequestObject() {
 if (window.XMLHttpRequest) {
    return new XMLHttpRequest(); //Mozilla, Safari ...
 } else if (window.ActiveXObject) {
    return new ActiveXObject("Microsoft.XMLHTTP"); //IE
 } else {
    alert("Your browser doesn't support the XmlHttpRequest object.");
    return false;
 }
}

var receiveReq = getXmlHttpRequestObject();

function makeRequest(url, param) {
 if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {

   receiveReq.open("POST", url, true);
   receiveReq.onreadystatechange = updatePage; 

   receiveReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
   receiveReq.setRequestHeader("Content-length", param.length);
   receiveReq.setRequestHeader("Connection", "close");

   receiveReq.send(param);
 }   
}

function RenewCaptcha() {

  img = document.getElementById('imgCaptcha');
  img.src = 'create_image.php?' + Math.random();
  document.getElementById('txtCaptcha').value = '';
  
}

function CreaCancel(Texto) {


  document.getElementById('todo').style.display = "none";
  document.getElementById('titulo').innerHTML = '<ul class="pasos"> \
                                                       <li class="p1 atenuado"><span class="num">1</span> <span class="txt">Elige tu alias</span></li> \
                                                       <li class="p1"><span class="num">2</span> <span class="txt">Reserva tu alias</span></li> \
                                                       </ul>';

  document.getElementById('err_fin1').innerHTML = Texto;
  document.getElementById('err_fin2').innerHTML = '<input name="nodisponible" id="boton" class="boton186" value="VOLVER" onmouseover="document.getElementById(\'boton\').className=\'boton186b\'" \
                                              onmouseout="document.getElementById(\'boton\').className=\'boton186\'" onclick="Restaurar(); this.blur();" type="button" />';

  document.getElementById('err_fin1').style.display = "inline";
  document.getElementById('err_fin2').style.display = "inline";

}

function updatePage() {

  if (receiveReq.readyState == 4) {

    var res = receiveReq.responseText;

    document.getElementById('espere').style.display = "none";
    document.getElementById('espere2').style.display = "none";
    document.getElementById('errores').style.display = "inline";

//    alert('->' + res + '<-');

    switch (res) {

      case "0": 
      case "10":
        alias = document.getElementById('nick').value;
        email = document.getElementById('email1').value;


        document.getElementById('titulo').innerHTML = '<ul class="pasos"> \
                                                       <li class="p1 atenuado"><span class="num">1</span> <span class="txt">Elige tu alias</span></li> \
                                                       <li class="p1"><span class="num">2</span> <span class="txt">Reserva tu alias</span></li> \
                                                       </ul>';

        document.getElementById('pie').innerHTML = '<div class="tit_paso3"><img src="media/sonrisa.gif" title="Enhorabuena!" alt="Enhorabuena!" /> \
                                       <span class="final1">Enhorabuena!</span> \
                                       <span class="final2">Tu alias se ha guardado con &eacute;xito.</span> \
                                       </div>';

        document.getElementById('todo').innerHTML = '<br> \
          <div class="f1">Alias</div> \
          <div class="f2">' + alias + '</div><br> \
          <div class="f3">Email</div> \
          <div class="f4">' + email + '</div><br> \
          <div class="f5">Ahora s&oacute;lo tienes que <b>consultar tu email</b> para conocer la <b>contrase&ntilde;a</b> y \
          podr&aacute;s empezar a chatear con tu nuevo alias.<br><br> \
          Una vez registrados, los alias se gestionan mediante el servicio de <a href="">RedAlias</a>. \
          Puedes <a href="http://www.terra.es/chat/ayuda/portada.htm">acceder a su tutorial desde la Ayuda</a>.</div>';

        document.getElementById('todo').style.display = "inline";
        document.getElementById('pie').style.display = "inline";
        break;
   
      case "200":
        RenewCaptcha();
        document.getElementById('errc').innerHTML = '<img alt="Falta la palabra clave" title="Falta la palabra clave" src="media/ico_mal.gif" border="0">';
        //document.getElementById('errc').innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt="Palabra clave no valida" src="media/error-01.png" border="0">';
        document.getElementById('errc').style.display = "inline";
        document.getElementById('todo').style.display = "inline";
        document.getElementById('pie').style.display = "inline";
        document.getElementById('txtCaptcha').focus();
        break;

      case "102":
      case "9":
        RenewCaptcha();
        document.getElementById('correo1').innerHTML = ' \
          <div> \
            <img alt="E-mail no v&aacute;lido." src="media/235-u-l.gif" border="0"> \
          </div> \
          <div class="falta_email"> \
            El e-mail introducido no es v&aacute;lido. \
          </div> \
        ';
        document.getElementById('correo1').style.display = "inline";
        document.getElementById('todo').style.display = "inline";
        document.getElementById('email1').focus();
        document.getElementById('pie').style.display = "inline";
        break;

      case "101":
        RenewCaptcha();
        document.getElementById('correo2').innerHTML = ' \
          <div> \
            <img alt="Los e-mail no coinciden" src="media/269-u-l.gif" border="0"> \
          </div> \
          <div class="falta_email"> \
            Los e-mail introducidos no coinciden. \
          </div> \
        ';
        document.getElementById('correo2').style.display = "inline";
        document.getElementById('todo').style.display = "inline";
        document.getElementById('email2').focus();
        document.getElementById('pie').style.display = "inline";
        break;  

      case "103":
      case "8":
        RenewCaptcha();
        document.getElementById('errores').innerHTML = 'El dominio especificado no puede utilizarse.';
        document.getElementById('email2').value = '';
        document.getElementById('todo').style.display = "inline";
        document.getElementById('email1').focus();
        document.getElementById('pie').style.display = "inline";
        break;

      case "6":
        RenewCaptcha();
        CreaCancel("El alias especificado est&aacute; disponible pero en uso por otra persona.");
        break;

      case "4":
        RenewCaptcha();
        CreaCancel("El alias especificado ya estaba registrado.");
        break;

      case "5":
        RenewCaptcha();
        CreaCancel("El alias especificado no puede ser registrado.");
        break;

      case "7":
        RenewCaptcha();
        CreaCancel("El email especificado no puede ser utilizado para guardar m&aacute;s alias.");
        break;

      case "1":
      case "2":
      case "3":
        RenewCaptcha();
        CreaCancel("El alias no es v&aacute;lido.");
        break;

      case "300":
        RenewCaptcha();
        CreaCancel("No se pueden guardar m&aacute;s alias desde tu IP.");
        break;

      case "400":
      default:
        RenewCaptcha();
        var ErrMsg = 'Error interno (' + res + '). Consulta en #opers_help';
        CreaCancel(ErrMsg);
      
    }

  }

}

function getParam(theForm) {

 document.getElementById('correo1').style.display = "none";
 document.getElementById('correo2').style.display = "none";
 document.getElementById('errc').style.display = "none";
 document.getElementById('errores').style.display = "none";

 if (theForm.email1.value.length==0) {

   document.getElementById('correo1').innerHTML = ' \
      <div> \
        <img alt="Falta el correo" src="media/235-u-l.gif" border="0"> \
      </div> \
      <div class="falta_email"> \
        Por favor, introduce tu e-mail. \
      </div> \
   ';

   document.getElementById('correo1').style.display = "inline";
   return false;
 }

 if (!checkEmail()) {
   document.getElementById('correo1').innerHTML = ' \
      <div> \
        <img alt="E-mail no v&aacute;lido." src="media/235-u-l.gif" border="0"> \
      </div> \
      <div class="falta_email"> \
        El e-mail introducido no es v&aacute;lido. \
      </div> \
   ';

  document.getElementById('correo1').style.display = "inline";
   return false;
 }

 if (theForm.email2.value.length==0) {

   document.getElementById('correo2').innerHTML = ' \
      <div> \
        <img alt="Falta el correo" src="media/235-u-l.gif" border="0"> \
      </div> \
      <div class="falta_email"> \
        Por favor, introduce tu e-mail. \
      </div> \
   ';

   document.getElementById('correo2').style.display = "inline";
   return false;
 }

 if (theForm.email1.value != theForm.email2.value) {

   document.getElementById('correo2').innerHTML = ' \
      <div> \
        <img alt="Los e-mail no coinciden" src="media/269-u-l.gif" border="0"> \
      </div> \
      <div class="falta_email"> \
        Los e-mail introducidos no coinciden. \
      </div> \
   ';

   document.getElementById('correo2').style.display = "inline";
   return false;
 }

 if (theForm.txtCaptcha.value.length==0) {

   document.getElementById('errc').innerHTML = '<img alt="Falta la palabra clave" title="Falta la palabra clave" src="media/ico_mal.gif" border="0">';
   document.getElementById('errc').style.display = "inline";
   document.getElementById('txtCaptcha').focus();
   return false;
 }

 var url = 'reg_nick.php?nick=' + encode64 ( theForm.nick.value ) + "&email1=" + encode64 ( theForm.email1.value ) + "&email2=" + encode64 ( theForm.email2.value );
 var postStr = theForm.txtCaptcha.name + "=" + encodeURIComponent( theForm.txtCaptcha.value );

 document.getElementById('titulo').innerHTML = '<ul class="pasos"> \
                                                <li class="p1 atenuado"><span class="num">1</span> <span class="txt">Elige tu alias</span></li> \
                                                <li class="p1"><span class="num">2</span> <span class="txt">Reserva tu alias</span></li> \
                                                </ul>';

 document.getElementById('todo').style.display = "none";

 document.getElementById('espere').innerHTML = '<br><div class="guardar"><b>Guardando alias.</b> Espera por favor...</div>';
 document.getElementById('espere2').innerHTML = '<img alt="Registrando" src="media/registrando.gif" border="0">';
 
 document.getElementById('pie').style.display = "none";
 document.getElementById('espere').style.display = "inline";
 document.getElementById('espere2').style.display = "inline";

 makeRequest(url, postStr);
 return true;
}


