cont=0;
contgs=0;
checkmsgs=0;
insession=0;
sessiontimeout=5; //5 minutos
lastaccess = GetTimeSec1970();
urlcaptcha = '/dyn/xml/byext1/smsweb/get_captcha1.wireless';

function chatThis() {
/*
enviar mensaje ->
	* error:
		- notificar usuario y no hacer nada

	* todo ok:
		- finalizar post
		- refrescar CHATAREA con parametro WS, SID y NICKNAME
		- activar / actualizar mensajes recibidos

	* actualizar CAPTCHA
*/
  // url para posts
  var url = '/dyn/xml/smsweb1/chat/servlet_mensajero.wireless';
  //var urlcaptcha = '/dyn/xml/byext1/smsweb/get_captcha.wireless';
  // parametros (serializacion automatica de los inputs de formulario)
  var params = $('chatform').serialize(true);
  // DIV para notificaciones
  var messages = 'messages';
  
  
  lastaccess = GetTimeSec1970(); //actualizamos el tiemout
  
  new Ajax.Request(
  	url, {
	  method: 'post',
	  parameters: params,	
	  // se envio post
	  onSuccess: function(transport) {			
		query = transport.responseText.toQueryParams(); // convertir recibido a los parametros

		reqMSG = "";
		showResponse;
		if ( query.status == '0' ) {
			// $(messages).addClassName('errors'); 
			// Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			// reqMSG = "<p>Servicio no disponible "+query.status+".</p>";
			alert('Se ocurrió un error de envió de formulario. Todos los campos son obligatorios. El numero de teléfono tiene que ser de caracteres numéricos solamente! Por favor, revise todo y vuelva a intentar. Gracias!');
		} 
		if ( query.status == '1' || query.status == '8' || query.status == '9' ) {
			// $(messages).addClassName('errors'); 
			// Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			// reqMSG = "<p>Servicio no disponible "+query.status+".</p>";
			alert('Servicio no disponible '+query.status);
		} 
		if ( query.status == '2' ) {
			//$(messages).addClassName('errors'); 
			//Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});		
			//reqMSG = "<p>Ingrese su nickname, por favor.</p>";
			alert('Ingrese su FIRMA, por favor');
		} 
		if ( query.status == '3' ) {
			//$(messages).addClassName('errors'); 
			//Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});		
			//reqMSG = "<p>El código que ingreso no coincide, inténtelo nuevamente.</p>";
			alert('El código que ingreso no coincide, inténtelo nuevamente');
		} 
		if ( query.status == '4' ) {
			//$(messages).addClassName('errors'); 
			//Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			//reqMSG = "<p>El cliente se encuentra ocupado chateando, intente mas tarde.</p>";
			alert('El cliente se encuentra ocupado chateando, intente mas tarde.');
		} 
		if ( query.status == '5' ) {
			//$(messages).addClassName('errors'); 
			//Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			//reqMSG = "<p>Lo sentimos su mensaje no pudo ser enviado, intente nuevamente.</p>";
			alert('Lo sentimos su mensaje no pudo ser enviado, intente nuevamente.');
		} 
		if ( query.status == '6' ) {
			//$(messages).addClassName('errors'); 
			//Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			//reqMSG = "<p>Lo sentimos sus envíos sobrepasan las reglas permitidas en cuanto a tiempo y cantidad de mensajes.</p>";
			alert('Lo sentimos sus envíos sobrepasan las reglas permitidas en cuanto a tiempo y cantidad de mensajes.');
		} 
		if ( query.status == '7' ) {
			//$(messages).addClassName('errors'); 
			//Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			//reqMSG = "<p>Lo sentimos su mensaje no pudo ser enviado, intente nuevamente.</p>";
			alert('Lo sentimos su mensaje no pudo ser enviado, intente nuevamente.');
		}
                if ( query.status == '10' ) {
                        //$(messages).addClassName('errors');
                        //Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
                        //reqMSG = "<p>Lo sentimos su mensaje no pudo ser enviado, intente nuevamente.</p>";
                        alert('El celular al que esta enviando requiere que ingrese el pin web.\nPara sacar un pin web envie PIN al 844.');
                }

		
		//refresca catcha prueba aca	   
	 	document.getElementById('imgcaptcha').src = 
	                urlcaptcha + '?sid=' + gsid + '&s=60x30&ps=14&g=16,15&c=' + cont++ ;
	
	                
		if ( query.status == 'OK' ) 
		{
		  
		        
			msje = '<strong style="color: blue;">'+$F('nickname')+'</strong>: '+$F('message')+'\<br/>';

			// insertar en mensajes recibidos
			$('mensajesRecibidos').insert( {top:msje} ); 
			// limpiar campo de texto con mensaje
			//$F('message').clear(); // unicamente al envio satisfactorio.
			contgs= contgs + 1;
                        if ( typeof(remote_updater) != 'undefined' )
                        {
			     if ( remote_updater.ws != query.ws )
			    {
                                  remote_updater.options.parameters.ws = query.ws;
			    }
			    remote_updater.options.parameters.contgs= contgs ;
                        }
			if ( insession == 0 )
			{
			   insession = 1 ;
			   
			   if (checkmsgs > 0  )
			   {
			      remote_updater.start() ;
			   }
			   
			}
			
			if ( checkmsgs == 0 )
			{
			   // !!!! Este handler se debe instalar 1 sola vez			
			   
			   checkmsgs = 1;
			  remote_updater = new Ajax.PeriodicalUpdater({ success: 'mensajesRecibidos' }, url, {
					method: 'post',
					parameters: { 
					  action: 'getsms',
					  ws: query.ws,
					  contgs: contgs
					},
					asynchronous: true,
					frequency: 10,
					insertion: Insertion.Top
				});
		         }
                        document.getElementById('message').value = '';
                        document.getElementById('textcode').value = '';

		}				
	  }, // transport / Success
	onComplete: showResponse
	}  // opciones de Request
  ); // Ajax.Request 
} // enf of funciont

function nextCommand (req)
{ 
  showResponse;  
  document.getElementById('imgcaptcha').src = 
	                urlcaptcha + '?sid=' + gsid + '&c=' + cont++ ; 
}

function finishSession() {

  insession = 0;
  if ( typeof(remote_updater) != 'undefined' )
  {
    remote_updater.stop() ;
  }
  if ( typeof(query ) == 'undefined')
  {
    //window.location = '/dyn/xml/smsweb/index_desa.wireless';
    return;
  }
  

  var url = '/dyn/xml/smsweb1/chat/servlet_mensajero.wireless';
  var messages = 'messages';
  var pars = 'action=finish'+'&ws='+query.ws;
  
  new Ajax.Request(
  	url, {
	  method: 'post',
	  parameters: pars,	
	  // se envio post
	  onSuccess: function(transport) {
		var query = transport.responseText.toQueryParams(); // convertir recibido a los parametros  
		
		if ( query.status == '0' || query.status == '1' || query.status == '8' || query.status == '9' ) {
			$(messages).addClassName('errors'); 
			Effect.Appear(messages, {duration: 2, from:0.0, to:1.0});
			reqMSG = "<p>Servicio no disponible "+query.status+".</p>";
		}		
		
	      //window.location = '/dyn/xml/smsweb1/index_desa.wireless';

	  }, // transport / Success
	onComplete: showResponse
	}  // opciones de Request
  ); // Ajax.Request		
}

function showResponse(req) {
	$('messages').innerHTML = reqMSG;
}

/* FUNCION DE CIERRE DE VENTANAS / TABS  -> */
/* Comentado ... no se detona */
/*
window.onbeforeunload= function (evt) {

	if (quit()) {

		finishSession();
		}
}

function quit() {
	if (confirm("Al apretar boton OK se terminara sesion de chat. Esta seguro que quiere salir?"))
	{

		return true;
	} else {
		return false;
	}
}
*/
/* <- */

/* Contador de caracteres para textarea */
function textCounter(field, countfield, maxlimit) {
	if (field.value.length > maxlimit) // if too long...trim it!  
	field.value = field.value.substring(0, maxlimit);
	// otherwise, update 'characters left' counter
	else
	countfield.value = maxlimit - field.value.length;
}
/*
 SessionExit
*/
function SessionExit()
{
  if ( insession == 1 && ( (GetTimeSec1970() - lastaccess)/1000)/60 > sessiontimeout )
  {
     finishSession();
     //alert ('Su sesion expiro ' + (((GetTimeSec1970() - lastaccess)/1000)/60) + ' ' +  sessiontimeout);
     alert ('Su sesión de ' + sessiontimeout  + ' minutos expiró gracias por usar el servicio de webchat');
     //window.location = '/dyn/xml/smsweb/index_desa.wireless';
     insession = 0;
  }
  return;
}
/*
 CheckTimeout
*/
function CheckTimeout()
{  
  intervalID = setInterval(SessionExit, 1000*10); //cada 10 segundos.
}
/*
 CheckTimeout
*/
function GetTimeSec1970()
{
  var oDate = new Date();
  return oDate.getTime();
}

