/**
 * Bloquea/desbloquea, según sea el caso, elementos de un formulario {input,selects}
 *
 * @name toogleFormElements
 * @type jQuery
 */
(function($){
	$.fn.toogleFormElements = function(options){

		var opt = options;

		obj = $(this);

		return this.each(function(){
			if(opt == 'enabled')
			{
				obj.find('input,select').removeAttr('disabled');
			} else {
				obj.find('input,select').attr('disabled','disabled');
			}
		});
	};

	checkUbigeo = function(dis,prov,dep){
		if($(prov).val() == '')
		{
			$(dis).find('option').remove();
		}
		if($(dep).val() == '')
		{
			$(prov).find('option').remove();
			$(dis).find('option').remove();
		}
	};

	$.fn.getProvincias = function(dis,dep){

		prov = $(this);
	  	$(dep).change(function(){

			var n = Math.random();
			$.getJSON('../front-end/responses/json-response.php?select=dep&token='+n,
			{ codDep : $(dep).val() } , function(j){
				var options = '';
				for(var i=0;i<j.length;i++)
				{
				options+='<option value='+j[i].optionValue+'>'+j[i].optionDisplay+'<\/option>';
				}
				prov.html(options);
				if($.browser.mozilla)
				prov.find("option:first").attr('selected', 'selected');
			});

		checkUbigeo(dis,prov,dep);
	  });
	}

	$.fn.getDistritos = function(prov,dep){
		dis = $(this);
	  	$(prov).change(function(){

			var n = Math.random();
			$.getJSON('../front-end/responses/json-response.php?select=prov&token='+n,
			{ codDep : $(dep).val(), codProv : $(prov).val() } , function(j){
				var options = '';
				for(var i=0;i<j.length;i++)
				{
				options+='<option value='+j[i].optionValue+'>'+j[i].optionDisplay+'<\/option>';
				}

				$(dis).html(options);
				if($.browser.mozilla)
				dis.find("option:first").attr('selected', 'selected');
				});

		checkUbigeo(dis,prov,dep);
	  });
	}
})(jQuery);
function changeUserType()
{
	$("select#tipo").click(function(){
		value = parseInt($(this).val());

		tp = $("select#tipoPersona");
		switch(value)
		{
			case 1: // Persona Natural
				hideForms();
				tp.find('option').remove();
				tp.append("<option value='1'>Cliente Final</option>");
			break;
			case 2: // Persona Jurídica
				hideForms();
				tp.find('option').remove();
				tp.append("<option value='1'>Cliente Final</option><option value='2'>Distribuidor");
			break;
		}
	});

	$("select#tipoPersona").click(function(){
		valueT = parseInt($("select#tipo").val());
		valueTp = parseInt($(this).val());

		switch(valueT)
		{
			case 1:
			if(valueTp == 1) {
				hideForms();

				$('li.choices:eq(0)').css('display','block');
				$('li.choices:eq(3)').css('display','block');

				$('li.choices:eq(0)').toogleFormElements('enabled');
				$('li.choices:eq(1)').toogleFormElements('disabled');
				$('li.choices:eq(2)').toogleFormElements('disabled');

				$('#provincia').getProvincias('#distrito','#departamento');
				$('#distrito').getDistritos('#provincia','#departamento');
			}
			break;
			case 2:
			hideForms();
			if(valueTp == 1)
			{
				$('li.choices:eq(1)').css('display','block');
				$('li.choices:eq(3)').css('display','block');

				$('li.choices:eq(0)').toogleFormElements('disabled');
				$('li.choices:eq(1)').toogleFormElements('enabled');
				$('li.choices:eq(2)').toogleFormElements('disabled');

				$('#fprovincia').getProvincias('#fdistrito','#fdepartamento');
				$('#fdistrito').getDistritos('#fprovincia','#fdepartamento');
			} else {
				$('li.choices:eq(2)').css('display','block');
				$('li.choices:eq(3)').css('display','block');

				$('li.choices:eq(0)').toogleFormElements('disabled');
				$('li.choices:eq(1)').toogleFormElements('disabled');
				$('li.choices:eq(2)').toogleFormElements('enabled');

				$('#dprovincia').getProvincias('#ddistrito','#ddepartamento');
				$('#ddistrito').getDistritos('#dprovincia','#ddepartamento');
			}
			break;
		}
	});
}

function hideForms()
{
	$('li.choices').css('display','none');
}

$(window).load(function(){
	hideForms();
})

$(document).ready(function(){

	changeUserType();

	$("html").css("overflow-y","scroll");

	$.metadata.setType("attr", "validate");

	//$('#form-register').fadeOut('slow');

	hide('.loading');

	$(".loading").ajaxStart(function(){
 		 $(this).show();
	});

	$(".loading").ajaxStop(function(){
 		 $(this).fadeOut('slow');
	});

	/*$("#telefono1").mask("(***) 999-9999");
 	$("#telefono2").mask("(***) *999-9999");*/

	var options = {
		target:'#response',
		success: function(html){
			matches = html.match('success_messages');
			//return false;
			if(matches)
			{
				$('#form-register').resetForm().fadeOut('slow');
			}
		}
	};

	var v = $("#form-register").validate({
		debug:true,
		errorElement : 'span',
		onkeyup: false,
		onblur: false,
		errorClass: "invalid",
		rules: {
			// Persona Natural - Final
			apellidos	:	{ required: true },
			nombres		:	{ required: true },
			dni			:	{ required: true, minlength: 8, number: true , remote: "../front-end/responses/ajax-response.php?remote=dni&t=cliente&f=numDocumento" },
			direccion	:	{ required: true },
			departamento:	{ required: true },
			provincia	:	{ required: true },
			distrito	:	{ required: true },
			telefono1	:	{ required: true, minlength: 7 },
			telefono2	:	{ minlength: 7 },
			email		:	{ required: true, email: true , remote: "../front-end/responses/ajax-response.php?remote2=email&f=email" },
			username	:	{ required: true, minlength:5, remote: "../front-end/responses/ajax-response.php?remote2=username&f=usuario" },
			password	:	{ required: true, minlength:5 },
			checkpassword:	{ required: true, equalTo: "#password" },

			// Persona Jurídica - Final
			fempresa		:	{ required: true },
			fruc			:	{ required: true, minlength:8, validRuc:true, remote:"../front-end/responses/ajax-response.php?remote=fruc&t=cliente&f=numDocumento"},
			fdireccion	:	{ required: true },
			fdepartamento:	{ required: true },
			fprovincia	:	{ required: true },
			fdistrito	:	{ required: true },
			ftelefono1	:	{ required: true, minlength: 7 },
			ftelefono2	:	{ minlength: 7 },
			fUserLastName	:	{ required: true },
			fUserName		:	{ required: true },
			fUserPhone		:	{ required: true, minlength: 7 },
			fUserEmail		:	{ required: true, email:true, remote:"../front-end/responses/ajax-response.php?remote2=femail&f=email" },
			fUserLogin		:	{ required: true, minlength:5, remote:"../front-end/responses/ajax-response.php?remote2=fusuario&f=usuario" },
			fUserPass		:	{ required: true },

			// Persona Jurídica - Distribuidor
			dempresa		:	{ required: true },
			druc			:	{ required: true, minlength:8, validRuc:true, remote:"../front-end/responses/ajax-response.php?remote=druc&t=cliente&f=numDocumento"},
			ddireccion	:	{ required: true },
			ddepartamento:	{ required: true },
			dprovincia	:	{ required: true },
			ddistrito	:	{ required: true },
			dtelefono1	:	{ required: true, minlength: 7 },
			dtelefono2	:	{ minlength: 7 },
			dUserLastName	:	{ required: true },
			dUserName		:	{ required: true },
			dUserPhone		:	{ required: true, minlength: 7 },
			dUserEmail		:	{ required: true, email:true, remote:"../front-end/responses/ajax-response.php?remote2=demail&f=email" },
			dUserLogin		:	{ required: true, minlength:5, remote:"../front-end/responses/ajax-response.php?remote2=dusuario&f=usuario" },
			dUserPass		:	{ required: true },
			dconcepts		:	{ required: true, minlength: 1},

			// Spam validation

			mcvalue			:	{ required: true }

		},
		messages: {
			// Persona Natural -Final
			apellidos	: 	{ required: 'Debe ingresar sus apellidos' },
			nombres		:   { required: 'Debe ingresar su nombre' },
			dni			:	{ required: 'Ingrese un N&deg; DNI',minlength:'Son 8 caracteres', number: '8 n&uacute;meros, recuerdas?', remote: jQuery.format("{0} ya est&aacute; registrado.") },
			direccion	:	{ required: '&iquest;Donde vive?'},
			departamento:	{ required: '&iquest;En que departamento?'},
			provincia	:	{ required: '&iquest;En que provincia?'},
			distrito	:	{ required: '&iquest;En que distrito?'},
			telefono1	:	{ required: 'Debe al menos indicar un tel&eacute;fono', minlength: 'Son 7 d&iacute;gitos como m&iacute;nimo '},
			telefono2	:	{ minlength: 'Son 7 d&iacute;gitos como m&iacute;nimo ' },
			email		:	{ required: 'Es importante que indique su email', email:'Ingrese un email v&aacute;lido', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.") },
			username	:	{ required:	'Elija un nombre de usuario', minlength:'Con m&aacute;s de 5 caracteres por favor.', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.")},
			password	:	{ required: 'Escriba una clave', minlength:'S&iacute;, tambi&eacute;n de 5 caracteres como m&iacute;nimo' },
			checkpassword:	{ required: 'Confirme su clave',equalTo:'Las dos claves deben coincidir'},

			// Persona Jurídica - Final

			fempresa		:	{ required:	'&iquest;C&oacute;mo se llama su empresa?' },
			fruc			:	{ required: 'Ingrese su ruc', minlength:'Son 11 caracteres', validRuc:'Ruc inv&aacute;lido, trate de nuevo', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.") },
			fdireccion	:	{ required: '&iquest;Donde esta ubicada su empresa?'},
			fdepartamento:	{ required: '&iquest;En que departamento?'},
			fprovincia	:	{ required: '&iquest;En que provincia?'},
			fdistrito	:	{ required: '&iquest;En que distrito?'},
			ftelefono1	:	{ required: 'Debe al menos indicar un tel&eacute;fono', minlength: 'Son 7 d&iacute;gitos como m&iacute;nimo '},
			ftelefono2	:	{ minlength: 'M&iacute;nimo 8 digitos'},
			fUserLastName	:	{ required: 'Ingrese sus apellidos' },
			fUserName		:	{ required: 'Ingrese su nombre' },
			fUserPhone		:	{ required: 'Ingrese un tel&eacute;fono' ,minlength: 'Son 7 d&iacute;gitos como m&iacute;nimo ' },
			fUserEmail		:	{ required: 'Ingrese un email', email:'Ingrese un email v&aacute;lido', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.") },
			fUserLogin		:	{ required: 'Elija un nombre de usuario', minlength:'Al menos 5 caracteres', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.")},
			fUserPass		:	{ required: 'Ingrese una clave' },

			// Persona Jurídica - Distribuidor

			dempresa		:	{ required:	'&iquest;C&oacute;mo se llama su empresa?' },
			druc			:	{ required: 'Ingrese su ruc', minlength:'Son 11 caracteres', validRuc:'Ruc inv&aacute;lido, trate de nuevo', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.") },
			ddireccion	:	{ required: '&iquest;Donde esta ubicada su empresa?'},
			ddepartamento:	{ required: '&iquest;En que departamento?'},
			dprovincia	:	{ required: '&iquest;En que provincia?'},
			ddistrito	:	{ required: '&iquest;En que distrito?'},
			dtelefono1	:	{ required: 'Debe al menos indicar un tel&eacute;fono', minlength: 'Son 7 d&iacute;gitos como m&iacute;nimo '},
			dtelefono2	:	{ minlength: 'M&iacute;nimo 8 digitos'},
			dUserLastName	:	{ required: 'Ingrese sus apellidos' },
			dUserName		:	{ required: 'Ingrese su nombre' },
			dUserPhone		:	{ required: 'Ingrese un tel&eacute;fono' ,minlength: 'Son 7 d&iacute;gitos como m&iacute;nimo ' },
			dUserEmail		:	{ required: 'Ingrese un email', email:'Ingrese un email v&aacute;lido', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.") },
			dUserLogin		:	{ required: 'Elija un nombre de usuario', minlength:'Al menos 5 caracteres', remote: jQuery.format("{0} ya est&aacute; en uso, escoja otro.")},
			dUserPass		:	{ required: 'Ingrese una clave' },
			dconcepts : { required: 'Debe escojer una opci&oacute;n', minlength: 'Al menos una opci&oacute;n' },
			// Ambos
			mcvalue		:	{ required: 'Sumar es f&aacute;cil... :)'}
		},
		submitHandler: function(form) {
			$(form).ajaxSubmit(options);
			$(options.target).css('display','block');
			//alert(form);

		$.blockUI('<h1><img src="../images/backgrounds/busy.gif" /> Espere un momento...<\/h1>');
		window.location = 'register.php#response';
		},
		success: function(span) {
            // set   as text for IE
            span.html(" ").addClass("checked");
        }
 	});

	$().ajaxStop($.unblockUI);

	$('#departmento').change(function(){ $('#distrito').find('option').remove()});
	$('#ddepartmento').change(function(){ $('#ddistrito').find('option').remove()});
	$('#fdepartmento').change(function(){ $('#fdistrito').find('option').remove()});
});