/* Registro ajax - por bdsg1, angel*/



/* Abrir registro */
function abrir_registro(){
	mydialog.cargando('Cargando registro, espere...');
	$.ajax({
		cache: false,
		type: 'POST',
		data: 'mostrar=mregistro',
		url: board + '/ajax/registro.php',
		success: function(h) { //Ok
			mydialog.fin_cargando();
			switch(h.charAt(0)){
				case '0':
					mydialog.titulo('Ups!'); break;
				case '1':
					mydialog.titulo('Crear una cuenta'); break;
			}
			mydialog.body(h.substring(3));
			mydialog.buttons(Array('Continuar'), Array('paso_dos'), Array(false));
		},
		error: function() { error(1); }, //nderakooree :D
	});
}

// Funcion para muestra de errores...
function error(op) {
    mydialog.show(true);
    if (op == 1) {
        mydialog.alert('Error de conexion', 'No pudimos procesar tu pedido...');
    }
    else {
        mydialog.alert('Operacion incorrecta', 'No estas autorizado para realizar esta operacion.');
    }
}

/* 

	MyDialog ( Idea Original JonatanTubeQueCosa o algo asi de nick. Gracias chabon
	Adaptado por Angel Camacho para ParaguayWarez - bdsg1 igual a taringa
			 
*/
			 
var mydialog = {
    _close: false,
    mostrado: false,
    easy_close: true,
    show: function (css) {
        if (this.mostrado) return;
        else this.mostrado = true;
		
		//Defino mis propiedades de altura y anchura
        var popheight 	= $(document).height();
        var popwidth 	= $(window).width();
        var mydialogh 	= $(window).height();
        var mydialogw 	= $(window).width();
		//Hago el centrado en pantalla
		$('#mydialog').css('top',  mydialogh  / 2 - $('#mydialog').height() / 2 - 260);
        $('#mydialog').css('left', mydialogw  / 2 - $('#mydialog').width()  / 2 - 150);
        $('#mascara').css({
            'width': 	popwidth,
            'height': 	popheight
        });
	    if ($('#mydialog').html() == '') {
            $('#mydialog').html('<div id="dialog"><div id="title_dialog"></div><div id="dialog_content"><div id="cargando"></div><div id="body_dialog"></div><div id="buttons_dialog"></div></div></div>');
        }

        if (!this._close) 
			$('#dialog').append('<a id="dialog_close" onclick="mydialog.close()"></a>');
        if (this.easy_close)
			$('#mascara').click(function () {
            	mydialog.close()
	        });
		else 
			$('#mascara').unbind('click');
        if (css) 
			$('#dialog').addClass(css);
        else 
			$('#dialog').removeClass(css);
		//Muestro mi ventana ;) 
        $('#dialog').show();
        $('#mascara').css('display', 'block');
    },
	
	//Funcion de salida
    close: function (recarga) {
        this.img_close = false;
        this.easy_close = true;
        this.mostrado = false;
        if (recarga) {
            $('#mascara').css('display', 'none');
            $('#dialog').fadeOut('fast', function () {
                setTimeout(function () {
                    location.reload();
                }, 500);
            });
        } else {
            $('#dialog').fadeOut();
            $('#mascara').css('display', 'none');
            $('#dialog').remove();
        }
	},
	//Titulo!
    titulo: function (titulo) {
        $('#title_dialog').html(titulo);
    },
	//Cuerpo de la ventana :D
    body: function (msg, ancho) {
        if (ancho) 
		$('#dialog').css('width', ancho);
	    $('#body_dialog').html(msg);
    },
	//Funcion de carga de contenido
    cargando: function (title,mensaje) {
		this.close();
        if (!this.mostrado) {
            this.show();
            this.titulo(title);
            this.body(mensaje);
        }
        $('#body_dialog').css('position', 'relative');
        $('#cargando').show();
    },
	//Fuera carga :p
    fin_cargando: function () {
        $('#cargando').hide();
    },
	//Funcion de botones y la mas complicada :s
	buttons: function (btns, functions, css, where) {
        $('#buttons_dialog').html('');
        // btn 1 btn 2?.  Array()!			
        if (btns != 'empty') {
            for (i = 0; i <= btns.length - 1; i++) {
                $('#buttons_dialog').append('<input type="button" class="large button input '+((!css[i]) ? '' : ' ' + css[i] ) +'" value="' + btns[i] + '" onclick="' + (where[i] ? 'mydialog.' : '') + functions[i] + '">&nbsp;');
            }
        }
    },
	//Funcion de alerta y el mas usado
    alert: function (titulo, msg, recarga, btncolor) {
		this.close();
        this.show();
        this.titulo(titulo);
        this.body(msg);
        this.buttons(Array('Aceptar'), Array('close(' + (recarga ? 'true' : 'false') + ')'), Array((btncolor ? btncolor : 'blue')), Array(true))
    }
}

/* Registro con Ajax - Angel Camacho - bdsg1 */

var registro = {
	
	// Un elemento gana el foco
	focus: function(elemento){
		registro.blur(elemento);	
	},
	
	// Un elemento pierde el foco
	blur: function(elemento){
		var value 	= $(elemento).attr('value');
		var name 	= $(elemento).attr('name');
		var campo 	= '#' + name;
	
		// Verifico que el campo no este vacio y muestro un mensaje de error
		if(value == ''){
			this.muestra_mensaje(campo, 'Campo obligatorio.', 'rojo');
		} else {
			this.verificar_campo(name, campo);
		}
		return;
	},
	
	// Muestra el mensaje en pantalla
	muestra_mensaje: function(campo,mensaje,tipo){
		// Defino mi variable a agregar
		var nuevo = '<div id="bubbles"><div class="bubble-'+tipo+'">'+mensaje+'<div class="bubble-'+tipo+'-ab"></div><div class="bubble-'+tipo+'-a"></div></div></div>';
		$(campo).html(nuevo); //Escribo el mensaje
		return;
	},
	
	// Hace la verificacion de un campo y me devuelve un bool
	verificar_campo: function(name,campo){
		var value 	= $('#registro [name=' + name + ']').val();
		// Hago un switch para saber de que se trata :)
		switch(name){
			// Para el usuario
			case 'user':
								
				// Que no contenta solo numeros
				if(/^([0-9])*$/.test(value)){
					this.muestra_mensaje(campo,'No debe ser solo n&uacute;meros.','rojo');
					return false;	
				}
				
				// Que contenga aracteres permitidos
				if(/[^a-zA-Z0-9_/\s/]/.test(value)){
					this.muestra_mensaje(campo,'S&oacute;lo se permiten letras, n&uacute;meros y guiones(_)','rojo');
					return false;
				}
				
				// Verifico si el user esta disponible
				if(this.verifica_existe('user',value)){
					this.muestra_mensaje(campo,'Ok, nick disponible!','verde'); 
					return true;	
				} else {
					this.muestra_mensaje(campo,'Nick en uso!','rojo'); 
					return false;
				}
				break;
		
			// Para la contraseņa
			case 'passwrd1':
				// Extraigo el valor del nick
				var usuario = $('#registro [name=user]').val();
				
				// Longitud
				if(value.length < 4){
					this.muestra_mensaje(campo,'Contrase&ntilde;a muy corta.', 'rojo');
					return false;
				}
				
				// Verifico que sea distinto a mi nick
				if(usuario != value){
					this.muestra_mensaje(campo,'Ok, perfecto!', 'verde');
					return true;
				} else {
					this.muestra_mensaje(campo,'La contrase&ntilde;a no puede ser igual al nick.', 'rojo');
					return false;	
				}
				break;
			
			// Verificar contraseņas
			case 'passwrd2':
				// Extraigo las contraseņas
				var pass1 = $('#registro [name=passwrd1]').val();
				
				// Longitud
				if(value.length < 4){
					this.muestra_mensaje(campo,'Contrase&ntilde;a muy corta.', 'rojo');
					return false;
				}
							
				// Verifico que sean iguales las contraseņas
				if(pass1 != value){
					this.muestra_mensaje(campo,'Contrase&ntilde;a err&oacute;nea.','rojo');
					return false;
				} else {
					this.muestra_mensaje(campo,'Ok, perfecto','verde'); 
					return true;
				}
				break;
				
			// Verificar email
			case 'email':
				// Tamaņo
				if(value.length > 35){
					this.muestra_mensaje(campo,'El email es demasiado largo.','rojo'); 
					return false;
				}

				// Caracteres validos
				if(!/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/.exec(value)){
					this.muestra_mensaje(campo,'Formato incorrecto.','rojo'); 
					return false;
				}
				
				// Verifico si el mail esta disponible
				if(this.verifica_existe('mail',value)){
					this.muestra_mensaje(campo,'Ok, email disponible!','verde'); 
					return true;	
				} else {
					this.muestra_mensaje(campo,'Email en uso!','rojo'); 
					return false;
				}
				break;
			
			// Pais
			case 'usertitle':
				// Elijio el pais?
				if(value == '-1'){
					this.muestra_mensaje(campo, 'Seleccione un pa&iacute;s!','rojo');
					return false;				
				}
				
				// Pais OK
				this.muestra_mensaje(campo,'Ok, pa&iacute;s correcto!','verde');
				return true;
				break;
				
			// Ciudad
			case 'location':
				
				
				// Que no contenta solo numeros
				if(/^([0-9])*$/.test(value)){
					this.muestra_mensaje(campo,'No debe ser solo n&uacute;meros.','rojo');
					return false;	
				}
				
			
				// todo bien
				this.muestra_mensaje(campo,'Ok, perfecto','verde');
				return true;
				break;		

			// Sexo
			case 'gender':
				this.muestra_mensaje(campo,'Ok, perfecto','verde');
				return true;
				break;
			
			// Nacimiento
			case 'bday1':
			case 'bday2':
			case 'bday3':
			
				// Extraigo los datos de mis campos
				var dia  = $('#registro [name=bday2]').val();
				var mes  = $('#registro [name=bday1]').val();
				var anio = $('#registro [name=bday3]').val();				
				
				// Verifico la validez de la fecha ingresada
				if(!checkdate(mes,dia,anio)){
			
					this.muestra_mensaje('#nacimiento','Ok, perfecto!','verde');
					return true;	
				}
				break;
			
			// Recaptcha
			case 'visual_verification_code':
				
				//Verifico que el captcha sea correcto ( Aguante SMF ) :D
				if(this.verifica_existe('recaptcha',value)){
					this.muestra_mensaje(campo,'Ok, perfecto!','verde');
					return true;
				} 
				break;
				
			// Terminos
			case 'regagree':
				// Saco el valor de mi check
				var check = $('#registro [name=regagree]').is(':checked');
					this.muestra_mensaje(campo,'Ok, perfecto!','verde');

				if(check)
					return true;
				else
					return false;
				break;
		}
	},
	
	// Verifica si existe o es valido un determinado valor
	verifica_existe: function(tipo,value){
		var data = 'mostrar=v' + tipo + '&' + tipo +'=' + value;
		var ok = true;		
		$.ajax({
			async: false,
			type: 'POST',
			url: board + '/ajax/registro-verificaciones.php',
			data: data,
			success: function(h){
				switch(h.charAt(0)){
					case '0':
						ok = false;
						break;
				}
			},
		})
		return ok;
	},
	
	// Verificar paso al otro paso
	verificar_cambio: function(paso){
		var ok = true;
		//Ejecuto comprobacion de cada input dentro del paso
		switch(paso){
			case 1:
				var inputs = $('#registro .pasoUno :input');
				inputs.each(function(){
					if(!registro.verificar_campo(this.name,'#' + this.name)){
						ok = false;
					}
				});
				break;
				
			case 2:
				var inputs = $('#registro .pasoDos :input');
				inputs.each(function(){
					if(!registro.verificar_campo(this.name,'#' + this.name)){
						ok = false;
					}
				});
				break;
		}
		return ok;
	},
	
	cambiar_paso: function(paso) {
		if(this.verificar_cambio(paso)){
			$('.pasoUno').hide(); // Oculto el pasoUno
			$('#btnsig').hide();  // Oculto el boton de siguiente
			$('.pasoDos').show(); // Muestro el paso siguiente
			$('#btnr').show(); // Muestro el boton registrate
		} else {
			return; 
		}
	},
	
	submit: function(paso){
		if(this.verificar_cambio(paso)){
			// Todo OK, hago el registro :)
			document.creator.submit();   
         mydialog.alert('Registro Completo!', '<center>Has finalizado Con exito el registro<br /> esperamos que disfrutes al maximo nuestra comunidad<br />...</center>');
} else {
			return;
		}
		
	},	
}



/* empty (php.js) 911.1619 */
function empty(a){var b;if(a===""||a===0||a==="0"||a===null||a===false||typeof a==="undefined")return true;if(typeof a=="object"){for(b in a)return false;return true}return false};

/* checkdate (php.js) 911.2217 */
function checkdate(a,c,b){return a>0&&a<13&&b>0&&b<32768&&c>0&&c<=(new Date(b,a,0)).getDate()};
