function validator ( field, formok, position )
{
	var error = "<span>¡Algo va mal!</span> - Los campos que aparecen en rojo están vacíos o los datos son incorrectos. <br />Échale un ojo, por favor.";
	if ( field.val() == '' )
	{
		formok = false;
		$( ".error" ).eq( position ).html( error );
		$( ".error" ).eq( position ).slideDown( "slow" );
		field.addClass( "invalidinput" );
		field.prev().addClass( "rojo" );
	}
	else
	{
		field.removeClass( "invalidinput" );
		field.prev().removeClass( "rojo" );
	}

	return formok;
}

//Retorna: 1 = NIF ok, 2 = CIF ok, 3 = NIE ok, -1 = NIF error, -2 = CIF error, -3 = NIE error, 0 = ??? error
function valida_nif_cif_nie(a) 
{
	var temp=a.toUpperCase();
	var cadenadni="TRWAGMYFPDXBNJZSQVHLCKE";
 
	if (temp!==''){
		//si no tiene un formato valido devuelve error
		if ((!/^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$/.test(temp) && !/^[T]{1}[A-Z0-9]{8}$/.test(temp)) && !/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			return 0;
		}
 
		//comprobacion de NIFs estandar
		if (/^[0-9]{8}[A-Z]{1}$/.test(temp))
		{
			posicion = a.substring(8,0) % 23;
			letra = cadenadni.charAt(posicion);
			var letradni=temp.charAt(8);
			if (letra == letradni)
			{
			   	return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//algoritmo para comprobacion de codigos tipo CIF
		suma = parseInt(a[2])+parseInt(a[4])+parseInt(a[6]);
		for (i = 1; i < 8; i += 2)
		{
			temp1 = 2 * parseInt(a[i]);
			temp1 += '';
			temp1 = temp1.substring(0,1);
			temp2 = 2 * parseInt(a[i]);
			temp2 += '';
			temp2 = temp2.substring(1,2);
			if (temp2 == '')
			{
				temp2 = '0';
			}
 
			suma += (parseInt(temp1) + parseInt(temp2));
		}
		suma += '';
		n = 10 - parseInt(suma.substring(suma.length-1, suma.length));
 
		//comprobacion de NIFs especiales (se calculan como CIFs)
		if (/^[KLM]{1}/.test(temp))
		{
			if (a[8] == String.fromCharCode(64 + n))
			{
				return 1;
			}
			else
			{
				return -1;
			}
		}
 
		//comprobacion de CIFs
		if (/^[ABCDEFGHJNPQRSUVW]{1}/.test(temp))
		{
			temp = n + '';
			if (a[8] == String.fromCharCode(64 + n) || a[8] == parseInt(temp.substring(temp.length-1, temp.length)))
			{
				return 2;
			}
			else
			{
				return -2;
			}
		}
 
		//comprobacion de NIEs viejos T
		if (/^[T]{1}/.test(temp))
		{
			if (a[8] == /^[T]{1}[A-Z0-9]{8}$/.test(temp))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
 
		//XYZ
		if (/^[XYZ]{1}/.test(temp))
		{
			temp = temp.replace('X', '0');
			temp = temp.replace('Y','1');
			temp = temp.replace('Z','2');
			pos = temp.substring(0, 8) % 23;
					
			if (a[8] == cadenadni.substring(pos, pos + 1))
			{
				return 3;
			}
			else
			{
				return -3;
			}
		}
	}
 
	return 0;
}

$(document).ready(function ()
{
	if( $( '#central-faq dl dd' ).length > 0 )
	{
		$faq_dl = $( '#central-faq dl' );
		$faq_dl.find( 'dd' ).hide();
		$faq_dl.find( 'dt' ).each( function(i,el){
			$(this).bind('click',function(evt){
				if(  $faq_dl.find( 'dd:eq('+i+')' ).is(':hidden') )
				{
					$faq_dl.find( 'dd:not(eq('+i+'))' ).slideUp('slow');
				}
				$faq_dl.find( 'dd:eq('+i+')' ).slideToggle('slow');
				return false;
			});
		});
	}
	
	Cufon.replace('#intro h1');
	Cufon.replace('#intro h1 span');
	Cufon.replace('#alta ul li.box-01li span');
	Cufon.replace('#video .titulo');

	var bars = $(".progress-bar");
	for(var i=0; i<bars.length; i++)
	{
		bar = $(bars[i]);
		percent = bar.attr("class").split(" ")[1].split("-")[1];
		$( bar ).progressbar( { value: parseInt(percent) } );

	}

	var $progtoeic = $("#progress-toeic");
	for( var j=0; j<$progtoeic.length; j++ )
	{
		toeic_percent = $progtoeic.attr("class").split("-")[1];
		$progtoeic.progressbar( { value: parseInt(toeic_percent) } );
		$("#toeic-progress-flag").css( "margin-left", toeic_percent+"%" );
	}

	function accessCourse( e ){
		window.open( e.target.href , null, 'width=980,height=680,scrollbars=yes,menubar=no,toolbar=no,statusbar=no,location=no,directories=no,resizable=no' );
		return false;
	}

	$(".empezado").click( accessCourse );
	$(".link_lastaccess").click( accessCourse );

	function fadeHelp( e )
	{
		//alert( "X:" + e.pageX + " Y:" + e.pageY );
		$(".ayuda_gen").fadeToggle();
		return false;
	}

	function fadeToeic( e )
	{
		//alert( "X:" + e.pageX + " Y:" + e.pageY );
		$(".ayuda_toeic").fadeToggle();
		return false;
	}

	$("#help_btn_gen").mouseover( fadeHelp );
	$("#help_btn_gen").mouseout( fadeHelp );
	$("#help_btn_toeic").mouseover( fadeToeic );
	$("#help_btn_toeic").mouseout( fadeToeic );

	$(".form-loggin").hide();
	$( "[name = passport]" ).hide();
	$( "[name = passport]" ).prev().hide();
	$( ".box-01li" ).eq( 1 ).addClass( "box-01li_inactivo" );
	$( ".box-01li" ).eq( 2 ).addClass("box-01li_inactivo");
	$( ".box-01li_inactivo" ).eq(0).removeClass( "box-01li" );
	$( ".box-01li_inactivo" ).eq(0).removeClass( "box-01li" );
	$( ".box-02ul" ).eq( 1 ).hide();
	$( ".box-02ul" ).eq( 2 ).hide();
	$( "#empieza" ).hide();
	$( ".error" ).hide();
	$( ".error_duplicate" ).hide();

	if ( $( '#form-login[rel=display]' ).length > 0 )
	{
		$( ".form-loggin" ).slideDown( 'slow' );
		$( "#content" ).hide();		        		
	}
	
	$( "[name = pais]" ).change( function(){
		
		if( $( this ).val() != "ES" )
		{
			$( "[name = dni]" ).slideUp("slow");
			$( "[name = dni]" ).prev().slideUp( "slow" );
			$( "[name = passport]" ).slideDown("slow");
			$( "[name = passport]" ).prev().slideDown( "slow" );
		}
		else
		{
			$( "[name = dni]" ).slideDown("slow");
			$( "[name = dni]" ).prev().slideDown("slow");
			$( "[name = passport]" ).slideUp("slow");
			$( "[name = passport]" ).prev().slideUp("slow");
		}
		
	});
	
	$( "[name = dni]" ).blur( function(){
		
		var dniok = valida_nif_cif_nie( $( this ).val() );
		if( dniok == 2 )
		{
			$( ".cif-form" ).slideDown( "slow" );			
		}
		else
		{
			$( ".cif-form" ).slideUp( "slow" );
		}
		
	});
	
	$( "[name = email]" ).blur( function(){
		var email = $( this ).val();
		$.post(
		        "ajax/user-exist",
		        { username: email },
		        function FuncionRecepcion( respuesta ) {
		            if ( respuesta )
		        	{
		        		$( ".form-loggin" ).slideDown( 'slow' );
		        		$( "[name=username]" ).val( email );
		        		$( "#content" ).hide();		        		
		        	}
		        });		
	});
	
	var error = "<span>¡Algo va mal!</span> - Los campos que aparecen en rojo están vacíos o los datos son incorrectos. <br />Échale un ojo, por favor."

	$( "[name=firstbutton_special]" ).click( function () {
		var pwd = $( "[name = pwd]" ).val();
		var error_duplicate = "<span>¡Algo va mal!</span> - La contraseña que has enviado es erróneo no es válida.<br />Échale un ojo, por favor.";

		var formok = true;
		formok = validator( $( "[name = pwd]" ), formok, 0 );
		if ( formok )
		{
			$( ".error" ).eq( 0 ).slideUp( "slow" );
			$.post(
			        "ajax-first-step-special",
			        { pwd: pwd },
			        function FuncionRecepcion( respuesta ) {
			            if ( respuesta )
			        	{
			        		$( ".box-01li" ).eq(0).addClass( "box-01li_inactivo" );
			    			$( ".box-01li_inactivo" ).eq(0).removeClass( "box-01li" );
			    			$( ".box-01li_inactivo" ).eq(1).addClass( "box-01li" );
			    			$( ".box-01li" ).eq(0).removeClass( "box-01li_inactivo");
			    			$( ".box-02ul" ).eq(0).slideUp( "slow ");
			    			$( ".box-02ul" ).eq(1).slideDown( "slow ");
			        	}
			        	else
			        	{
			        		$( "[name = pwd]" ).addClass( "invalidinput" );
			        		$( "[name = pwd]" ).prev().addClass( "rojo" );
			        		$( ".error_duplicate" ).eq( 0 ).html(error_duplicate);
			        		$( ".error_duplicate" ).eq( 0 ).slideDown( "slow" );
			        	}
			        }
			    );

		}
		else
		{
			$( ".error_duplicate" ).eq( 0 ).slideUp( "slow" );
		}
		return false;

     });

	$( "[name=firstbutton]" ).click( function () {
		var locator = $( "[name = localizador]" ).val();
		var againstcode = $( "[name = ccodigo]" ).val();
		var error_duplicate = "<span>¡Algo va mal!</span> - El número de vale que has enviado es erróneo o ya está registrado en el sistema.<br />Échale un ojo, por favor.";

		var formok = true;

		formok = validator( $( "[name = localizador]" ), formok, 0 );
		formok = validator( $( "[name = ccodigo]" ) , formok, 0 );

		if ( formok )
		{
			$( ".error" ).eq( 0 ).slideUp( "slow" );
			$.post(
			        "ajax-first-step",
			        { locator: locator, againstcode: againstcode },
			        function FuncionRecepcion( respuesta ) {
			            if ( respuesta )
			        	{
			        		$( ".box-01li" ).eq(0).addClass( "box-01li_inactivo" );
			    			$( ".box-01li_inactivo" ).eq(0).removeClass( "box-01li" );
			    			$( ".box-01li_inactivo" ).eq(1).addClass( "box-01li" );
			    			$( ".box-01li" ).eq(0).removeClass( "box-01li_inactivo");
			    			$( ".box-02ul" ).eq(0).slideUp( "slow ");
			    			$( ".box-02ul" ).eq(1).slideDown( "slow ");
			        	}
			        	else
			        	{
			        		$( "[name = localizador]" ).addClass( "invalidinput" );
			        		$( "[name = localizador]" ).prev().addClass( "rojo" );
			        		$( "[name = ccodigo]" ).addClass( "invalidinput" );
			        		$( "[name = ccodigo]" ).prev().addClass( "rojo" );
			        		$( ".error_duplicate" ).eq( 0 ).html(error_duplicate);
			        		$( ".error_duplicate" ).eq( 0 ).slideDown( "slow" );
			        	}
			        }
			    );

		}
		else
		{
			$( ".error_duplicate" ).eq( 0 ).slideUp( "slow" );
		}
		return false;

     });


	$( "[name=secondbutton]" ).click(function () {
		var name = $( "[name = nombre]" ).val();
		var surname = $( "[name = apellidos]" ).val();
		var telephone = $( "[name = telefono]" ).val();
		var email = $( "[name = email]" ).val();
		var dni;
		var has_dni;
		var is_passport;
		
		if ( $( "[name = dni]" ).css('display') != "none"  )
		{
			if( $( "[name = dni]" ).length > 0 )
			{
				dni	= $( "[name = dni]" ).val();
				has_dni = true;
				is_passport = false;
			}
			else
			{
				dni = '';		
				has_dni = false;
				is_passport = false;
			}			
		}
		else
		{
			if( $( "[name = passport]" ).length > 0 )
			{
				dni	= $( "[name = passport]" ).val();
				has_dni = false;
				is_passport = true;
			}
			else
			{
				dni = '';		
				has_dni = false;
				is_passport = false;
			}		
			
		}	
	
		var country = $( "[name = pais]" ).val();
		var born_day = $( "[name = nac_d]" ).val();
		var born_month = $( "[name = nac_m]" ).val();
		var born_year = $( "[name = nac_y]" ).val();
		var legal = $( "[name = legal_advice]" ).val();
		var social = $( "[name = razon-fact]" ).val();
		var adress = $( "[name = direccion-fact]" ).val();
		var postalcode = $( "[name = cp-fact]" ).val();
		var city = $( "[name = poblacion-fact]" ).val();
		var lssi1 = $( "[name = lssi1]" ).val();
		var lssi2 = $( "[name = lssi2]" ).val();
		var lopd = $( "[name = lopd]" ).val();
		var es_telefono	= /^(6|8|9)[0-9]{8}$/;
		var es_cp = /^[0-9]{5}$/;
        var telefono_incorrecto = /0{6,}|1{6,}|2{6,}|3{6,}|4{6,}|5{6,}|6{6,}|7{6,}|8{6,}|9{6,}/;
		var email_correcto = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/;
		var dni_correcto = /^[0-9]{8}[a-z]$/i;
		var error_duplicate = "<span>¡Ups!</span> - Esta dirección de correo-e ya se ha utilizado antes. Sólo se puede usar una dirección de correo por registro. Prueba con otra.";
		var formok = true;

		formok = validator( $( "[name = nombre]" ), formok, 1 );
		formok = validator( $( "[name = apellidos]" ), formok, 1 );
		formok = validator( $( "[name = telefono]" ), formok, 1 );

		if( ( !es_telefono.test( telephone ) || telefono_incorrecto.test( telephone ) ) && country == 'ES' )
		{
			formok = false;
			$( ".error" ).eq( 1 ).html( error );
			$( ".error" ).eq( 1 ).slideDown( "slow" );
			$( "[name = telefono]" ).addClass( "invalidinput" );
			$( "[name = telefono]" ).prev().addClass( "rojo" );
		}

		formok = validator( $( "[name = email]" ), formok, 1 );

		if( !email_correcto.test( email ) )
		{
			formok = false;
			$( ".error" ).eq( 1 ).html( error );
			$( ".error" ).eq( 1 ).slideDown( "slow" );
			$( "[name = email]" ).addClass( "invalidinput" );
			$( "[name = email]" ).prev().addClass( "rojo" );
		}

		formok = validator( $( "[name = pais]" ), formok, 1 );
				
		
		if( $("[name = dni]").css('display') != 'none' )
		{	
			formok = validator( $( "[name = dni]" ), formok, 1 );
			var dniok = valida_nif_cif_nie( dni );
			
			if( has_dni && dniok <= 0 )
			{
				formok = false;
				$( ".error" ).eq( 1 ).html( error );
				$( ".error" ).eq( 1 ).slideDown( "slow" );
				$( "[name = dni]" ).addClass( "invalidinput" );
				$( "[name = dni]" ).prev().addClass( "rojo" );
			}
		}
		
		if( $("[name = passport]").css('display') != 'none' )
		{
			formok = validator( $( "[name = passport]" ), formok, 1 );
		}
		if ( born_day == 0 || born_month == 0 || born_year == 0 )
		{
			formok = false;
			$( ".error" ).eq( 1 ).html( error );
			$( ".error" ).eq( 1 ).slideDown( "slow" );
			$( "[name = nac_d]" ).prev().addClass( "rojo" );
			$( "[name = nac_d]" ).addClass( "invalidinput" );
			$( "[name = nac_m]" ).addClass( "invalidinput" );
			$( "[name = nac_y]" ).addClass( "invalidinput" );
		}
		else
		{
			$( "[name = nac_d]" ).prev().removeClass( "rojo" );
			$( "[name = nac_d]" ).removeClass( "invalidinput" );
			$( "[name = nac_m]" ).removeClass( "invalidinput" );
			$( "[name = nac_y]" ).removeClass( "invalidinput" );

		}

		/*if( $("#dni").css('display') != 'none' )
		{	
			formok = validator( $( "[name = razon-fact]" ), formok, 1 );
			formok = validator( $( "[name = direccion-fact]" ), formok, 1 );
			formok = validator( $( "[name = cp-fact]" ), formok, 1 );
			
			if( $( "[name = cp-fact]" ).length > 0 && !es_cp.test( $( "[name = cp-fact]" ).val() ) )
			{
				formok = false;
				$( ".error" ).eq( 1 ).html( error );
				$( ".error" ).eq( 1 ).slideDown( "slow" );
				$( "[name = cp-fact]" ).addClass( "invalidinput" );
				$( "[name = cp-fact]" ).prev().addClass( "rojo" );
			}
			else
			{
				$( "[name = cp-fact]" ).removeClass( "invalidinput" );
				$( "[name = cp-fact]" ).prev().removeClass( "rojo" );
			
			}
			formok = validator( $( "[name = poblacion-fact]" ), formok, 1 );
		}
		*/
		if ( $( "[name = legal_advice]:checked" ).val() )
		{
			$( ".legal" ).removeClass( "rojo" );
		}
		else
		{
			formok = false;
			$( ".error" ).eq( 1 ).html( error );
			$( ".error" ).eq( 1 ).slideDown( "slow" );
			$( ".legal" ).addClass( "rojo" );
		}

		if ( formok )
		{
			$.post(
			        "ajax-second-step",
			        { name: name, surname: surname, telephone: telephone, dni: dni, is_passport: is_passport, email: email, country: country, born_day: born_day, born_month: born_month, born_year: born_year, social: social, adress: adress, postalcode: postalcode, city: city, legal_advice: legal, lssi: lssi1, lssi2: lssi2, lopd: lopd},
			        function FuncionRecepcion( respuesta ) {

			        	if( typeof( respuesta ) == "object" )
			        	{
			        		$.each( respuesta, function( k, v ){
				        		if ( v.error == 'session_expires'  )
				        		{
					        		alert( "Tu sesión ha expirado.\n ¿Te lo estás pensando demasiado? Por seguridad deberás volver a completar el formulario desde el principio. ¡Ánimo! " );
					        		location.reload();
				        		}
				        		else if ( v.error == 'error_duplicate' )
				        		{
				        			$( ".error" ).eq( 1 ).slideUp( "slow" );
				        			$( "." + v.error ).eq( 1 ).html( error_duplicate );
					        		$( "." + v.error ).eq( 1 ).slideDown( "slow" );
					        		$( "[name = " + v.field +  "]" ).addClass( "invalidinput" );
					        		$( "[name = " + v.field +  "]" ).prev().addClass( "rojo" );
				        		}
			        		});
			        	}
			        	else if ( respuesta )
			        	{
			        		$( ".box-01li" ).eq(0).addClass( "box-01li_inactivo" );
			        		$( ".box-01li_inactivo" ).eq(1).removeClass( "box-01li" );
			        		$( ".box-01li_inactivo" ).eq(2).addClass( "box-01li" );
			        		$( ".box-01li").eq(0).removeClass( "box-01li_inactivo" );
			        		$( ".box-02ul").eq( 1 ).slideUp( "slow" );
			        		$( ".box-02ul" ).eq( 2 ).slideDown( "slow" );
			        		$( "#empieza" ).show();
			        	}
			        },
			        "json"
			    );
		}
		else
		{
			$( ".error_duplicate" ).eq( 1 ).slideUp( "slow" );
		}
		return false;
	});

	$( "[name = thirdbutton]" ).click(function (){
		if ( $( "[name = course]" ).val() == '' )
		{
			$( ".error" ).eq( 2 ).html( error );
			$( ".error" ).eq( 2 ).slideDown( "slow" );
			return false;
		}
		return true;

	});

	$( "[class = access-course]" ).click( function( e ){
		window.open( e.target.href , null, 'width=980,height=680,scrollbars=yes,menubar=no,toolbar=no,statusbar=no,location=no,directories=no,resizable=no' );
		return false;
	});

	$( "[class = anchor-aviso-legal]" ).click( function( e ){
		window.open( e.target.href, null, 'width=500,height=680,scrollbars=yes' );
		return false;
	});

	$( "[class = access-level-test]" ).click( function( e ){
		window.open( $(this).attr( "href" ) , null, 'width=964,height=700,scrollbars=yes,menubar=no,toolbar=no,statusbar=no,location=no,directories=no,resizable=no' );
		return false;
	});
});



