/* 
_____________________________________________________________
Función para generar DIV con mensajes al usuario
_____________________________________________________________

tipo = aviso 		: se utiliza para avisar al usuario ante un suceso del sistema.
tipo = error 		: se utiliza para avisar al usuario ante un error del sistema.
tipo = info			: se utiliza para mostrar informacion al usuario.
tipo = carga		: se utiliza para indicar que se está procesando una peticion AJAX o se está efectuando una validacion.

mensaje				: es el mensaje a mostrar al usuario

accion = mostrar	: muestra el cuadro de mensaje
accion = ocultar	: oculta el cuadro de mensaje
_____________________________________________________________
*/
function modal(tipo,accion,mensaje){
	
	switch(tipo){
		case 'aviso':
			titulo_color	= 'FFD65C';
			titulo_texto	= 'Aviso';
			icono			= 'modal_icono_aviso';
			botones			= '<input type="button" class="boton_activo right" value="Aceptar" onclick="modal(\'\',\'ocultar\',\'\');">';
		break;
		case 'error':
			titulo_color	= 'FA6757';
			titulo_texto	= 'Error';
			icono			= 'modal_icono_error';
			botones			= '<input type="button" class="boton_activo right" value="Aceptar" onclick="modal(\'\',\'ocultar\',\'\');">';
		break;
		case 'info':
			titulo_color	= '0085D4';
			titulo_texto	= 'Información';
			icono			= 'modal_icono_info';
			botones			= '<input type="button" class="boton_activo right" value="Aceptar" onclick="modal(\'\',\'ocultar\',\'\');">';
		break;
		case 'carga':
			titulo_color	= 'DDD';
			titulo_texto	= 'Procesando...';
			icono			= 'modal_icono_carga';
			botones			= '';
		break;
	}
	$('modal_icono').className				= icono;
	$('modal_titulo').style.backgroundColor	= '#'+titulo_color;
	$('modal_titulo').innerHTML				= titulo_texto;
	$('modal_mensaje').innerHTML			= mensaje;
	$('modal_botonera').innerHTML			= botones;
	
	if(accion=='mostrar'){
		$('modal').appear();
		if(tipo!='carga'&&tipo!='info'){
			$('modal').fade({delay: 7})
		}
	}else{
		$('modal').fade();
	}
	
}

function sintaxisDominio(dominio,NoWWW,compruebaTLD) {
	// NoWWW y CheckTLD son opcionales, ambos aceptan los valores true, false, y null.
	// NoWWW se utiliza para verificar que un nombre de dominio no comience con 'www.', ejem. para WHOIS.
	var tlds=/^(com|net|org|edu|biz|name|coop|info|pro|museum|tv|ar)$/;
	var dominio=dominio.toLowerCase();
	
	if (compruebaTLD==null) { compruebaTLD=true }
	var specialChars="/\\(\\)><@+_ñáéíóúü,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var atom=validChars + '+';
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=dominio.split(".");
	var len=domArr.length;
	var error = false;
	if(len==1){ 
		error = 'Dominio inválido';
	}
	for(i=0;i<len;i++){
		if (domArr[i].search(atomPat)==-1){
			error = 'Dominio inválido'; 
		}
	}
	if ((compruebaTLD) && (domArr[domArr.length-1].search(tlds)==-1)){
		error='Sólo se comprueban dominios terminados en: .com, .net, .org, .edu, .biz, .name, .info, .pro, .tv, .com.ar, .net.ar, .org.ar'; 
	}
	if ((NoWWW) && (dominio.substring(0,4).toLowerCase()=="www.")){
		error='No se puede ingresar "WWW." en el nombre del dominio';
	}
	if(!error){
		return true;
	}else{
		return error;
	}
}

function sintaxisEmail(email){
	var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+\.[A-Za-z0-9_.]+[A-za-z]$/;
	if(email.length==0) {
		return false;
	}
	if(filter.test(email)){
		return true;
	}else{
		return false;
	}
}

function compruebaDominio(dominio){
	if(dominio==''){
		modal('error','mostrar','Debe ingresar el dominio que desea comprobar');
		$('submit_siguiente').disable;
		$('submit_siguiente').className='boton_inactivo right';
		$('dominio_disponible').className='oculto';
		$('dominio_nodisponible').className='oculto';
		return false;
	}
	modal('carga','mostrar','Comprobando sintaxis del dominio...');
	var sintaxis = sintaxisDominio(dominio,true,true);
	
	if(sintaxis!=true){
		modal('error','mostrar',sintaxis);
		$('submit_siguiente').disable;
		$('submit_siguiente').className='boton_inactivo right';
		$('dominio_disponible').className='oculto';
		$('dominio_nodisponible').className='oculto';
		return false;	
	}else{
		modal('carga','mostrar','Comprobando la disponibilidad del dominio...');
		var parametros		= 'dominio='+dominio;
		var url				= '/sistema/whois.dp';
		var peticionAJAX	= new Ajax.Request(url, {
	                                method: 'post',
	                                parameters: parametros,
	                                asynchronous: true,
	                                onComplete: function(respuesta){
	                                	json = eval(respuesta.responseText);
	                                	switch(json.error){
	                                		case 0: 	modal('','ocultar','');
	                                					$('ordenar_plan').enable('submit_siguiente');
	                                					$('submit_siguiente').className='boton_activo right';
	                                					$('dominio_disponible').className='';
	                                					$('plan_dominio_periodo_registro').checked='checked';
	                                					$('dominio_nodisponible').className='oculto';
	                                			break;
	                                		case 1: 	modal('error','mostrar',json.mensaje);
	                                					$('submit_siguiente').disable;
	                                					$('submit_siguiente').className='right boton_inactivo';
	                                					$('dominio_disponible').className='oculto';
	                                					$('dominio_nodisponible').className='oculto';
	                                			break;
	                                		case 2: 	modal('aviso','mostrar',json.mensaje);
	                                					$('ordenar_plan').enable('submit_siguiente');
	                                					$('submit_siguiente').className='boton_activo right';
	                                					$('dominio_disponible').className='oculto';
	                                					$('dominio_nodisponible').className='';
	                                			break;
	                                	}
	  								}
		                        });
	
		
	}
}

function altaCliente(){
	if(!validaCamposAltaCliente()){ return false; }
	var email = $('email').getValue();
	if(!sintaxisEmail(email)) return false;
	consultaCliente(email);
}

function validaCamposAltaCliente(){
	var mensaje = 'Los siguientes campos deben completarse antes de poder enviar la solicitud: <br />';
	var error	= 0;
	
	if($('nombre').getValue()==''){
		mensaje += '- Nombre <br />';
		$('nombre').className='input_error_validacion'; 
		error = 1;
	}
	if($('apellido').getValue()==''){
		mensaje += '- Apellido<br />';
		$('apellido').className='input_error_validacion'; 
		error = 1;
	}
	if($('email').getValue()==''){
		mensaje += '- Correo Electrónico<br />';
		$('email').className='input_error_validacion'; 
		error = 1;
	}
	if($('domicilio').getValue()==''){
		mensaje += '- Domicilio<br />';
		$('domicilio').className='input_error_validacion'; 
		error = 1;
	}
	if($('cpostal').getValue()==''){
		mensaje += '- Código Postal<br />';
		$('cpostal').className='input_error_validacion'; 
		error = 1;
	}
	if($('localidad').getValue()==''){
		mensaje += '- Localidad<br />';
		$('localidad').className='input_error_validacion'; 
		error = 1;
	}
	if($('provincia').getValue()==''){
		mensaje += '- Provincia<br />';
		$('provincia').className='input_error_validacion'; 
		error = 1;
	}
	if($('pais').getValue()==''){
		mensaje += '- País<br />';
		$('pais').className='input_error_validacion'; 
		error = 1;
	}
	if(error==1){
		cuadro_mensaje('error',mensaje,'mostrar');
		return false;
	}else{
		return true;
	}
}

function clienteExiste(email){
	modal('carga','mostrar','Verificando datos del cliente...');
	
	var parametros		= 'email='+email;
	var url				= '/sistema/cliente.existe.dp';
	var peticionAJAX	= new Ajax.Request(url, {
                                method: 'post',
                                parameters: parametros,
                                asynchronous:true,
                                onComplete: function(respuesta){
                                	json = eval(respuesta.responseText);
                                	if(json.existe==1) {
                                		modal('error','mostrar','El email ingresado corresponde a un cliente existente.');
                                		$('email').className='input_error';
                                		return false;
                                	}else{
                                		$('ordenar_plan').submit();
                                	}
  								}
	                        });
}

function validaPaso3(){

	var error = false;
	if($('nombre').value==''){
		$('nombre').className='input_error';
		error = true;
	}
	if($('apellido').value==''){
		$('apellido').className='input_error';
		error = true;
	}
	if($('direccion').value==''){
		$('direccion').className='input_error';
		error = true;
	}
	if($('localidad').value==''){
		$('localidad').className='input_error';
		error = true;
	}
	if($('codigo_postal').value==''){
		$('codigo_postal').className='input_error';
		error = true;
	}
	if($('provincia').value==''){
		$('provincia').className='input_error';
		error = true;
	}
	if($('pais').value==''){
		$('pais').className='input_error';
		error = true;
	}
	if($('telefono').value==''){
		$('telefono').className='input_error';
		error = true;
	}
	if($('email').value==''){
		$('email').className='input_error';
		error = true;
	}
	if($('clave').value==''){
		$('clave').className='input_error';
		error = true;
	}
	if($('clave_confirma').value==''){
		$('clave_confirma').className='input_error';
		error = true;
	}
	
	if(error){
		modal('error','mostrar','Falta completar información. Revise los campos marcados en rojo y complételos para poder continuar');
		return false;
	}

	var formapago_transfer	= $('formapago_transfer').checked;
	var formapago_cdigital		= $('formapago_cdigital').checked;
	if(!formapago_transfer&&!formapago_cdigital){
		error = true;
	}
	if(error){
		modal('error','mostrar','Debe elegir el método de pago para poder continuar');
		return false;
	}
	
	if(!sintaxisEmail($('email').value)){
		$('email').className='input_error';
		modal('error','mostrar','El email ingresado es incorrecto.');
		return false;
	}
	if($('clave').value!=$('clave_confirma').value){
		$('clave').className='input_error';
		$('clave_confirma').className='input_error';
		modal('error','mostrar','Las contraseñas ingresadas no coinciden.');
		return false;
	}
	clienteExiste($('email').value)
}

function loginCliente(urldestino){
	var email			= $('login_email').value;
	var clave			= $('login_contrasena').value;
	
	if(email==''||clave==''){
		modal('error','mostrar','No se pudo iniciar la sesión porque faltan completar datos');
		return false;
	}
	modal('carga','mostrar','Iniciando sesión, por favor espere...');
	var parametros		= 'email='+email+'&clave='+clave;
	var url				= '/sistema/login.dp';
	var peticionAJAX	= new Ajax.Request(url, {
                                method: 'post',
                                parameters: parametros,
                                asynchronous: true,
                                onComplete: function(respuesta){
                                	json = eval(respuesta.responseText);
                                	
                                	if(json.error==1) {
                                		modal('error','mostrar','Error al iniciar sesión. Verifique los datos e intente nuevamente')
                                		return false;
                                	}else{
                                		location.href=urldestino;
                                	}
  								}
	                        });
}


function periodoPago(){

	var idplan			= $('idplan').value;
	var parametros		= 'idplan='+idplan;
	var url				= '/consultas/periodo.pago.mte';
	var peticionAJAX	= new Ajax.Request(url, {
                                method: 'post',
                                parameters: parametros,
                                asynchronous: true,
                                onComplete: function(respuesta){
                                	json = eval(respuesta.responseText);
                                	if(json.costomensual=='NA'){
                                		$('costomensual').hide();
                                		$('pagoanual').checked=true;
                                	}else{
                                		$('costomensual').show();
                                	}
  								}
	                        });
}

function validaFormulario(formulario){
	switch(formulario){
		case 'nuevo_plan': 
			cuadro_mensaje('carga','Validando los datos ingresados. Por favor espere...','mostrar');
			return validacionFormularioNuevoPlan(); break;
	}
}

function validacionFormularioNuevoPlan(){
	
	var dominio		= $('dominio').value;
	var idplan		= $('idplan').value;
	var pagomensual	= $('pagomensual').checked;
	var pagoanual	= $('pagoanual').checked;
	var idformapago	= $('idformapago').value;
	var condiciones	= $('condiciones').checked;
	var mensaje		= 'Los siguientes campos deben completarse antes de poder enviar la solicitud: <br /><br />';
	var error		= 0;
	
	if(!dominio){
		mensaje += '- dominio<br />';
		error	= 1;
	}
	if(!idplan){
		mensaje += '- plan a contratar<br />';
		error	= 1;
	}
	if(!pagomensual&&!pagoanual){
		mensaje += '- período de pago<br />';
		error	= 1;
	}
	if(!idformapago){
		mensaje += '- forma de pago<br />';
		error	= 1;
	}
	if(!condiciones){
		mensaje += '- debés aceptar las condiciones de uso del servicio!<br />';
		error	= 1;
	}
	
	if(!sintaxisDominio(dominio,true,true)){
		mensaje += 'El dominio no fue ingresado correctamente. Recordá que no debés incluir "www" ni "http://"';
		error	= 1;
	}
	
	if(error==1){
		cuadro_mensaje('carga','','ocultar');
		cuadro_mensaje('error',mensaje,'mostrar');
		return false;
	}else{
		$('nuevo_plan').submit();
		return true;
	}
	
}