var all_rolesRegistroPublico = null;

$(document).ready(function(){
	
	all_rolesRegistroPublico = jsonrpc.cc0400e09863db1061f0e8305ca94c98.e56b374c0c4b2f50c582eb7ae9f082c2();
	
	if(osm_esVacio(osm_getValor("proceso_token"))){
		
		$("#barra_botones").show();
		
		$('#block_window').fadeIn("slow");
		
		allNamesTemplates = obtenerTemplatesRegistro();
		
		changeTipoRegistro(osm_getValor('tipoRegistro'));
		obtenerRolesRegsitroPublico( osm_getValor('identificadorTipoRegistro'));
		var tipoRegsitroTemporal = osm_getValor("rolesDisponiblesTmp");
		 if (!osm_esVacio(tipoRegsitroTemporal))
			 {
			 osm_setValor("rolesDisponibles",tipoRegsitroTemporal);
			 }
		 
		chanceTipoPersona(osm_getValor('rolesDisponibles'));
		
	}
	
	setTooltip();
	
	$('#block_window').hide();
	
});

function recargarCaptcha(){
	osm_getObjeto('imagenCaptcha').src = CONTEXTPATH + '/jcaptcha/T' + osm_secureRamdom() + '/jcaptcha.jpg';
}

function mostrarPopup(msg){
	$('#block_window').fadeIn("slow");
	osm_getObjeto('msg_detail').innerHTML = msg;
	$('#msg_validacion').fadeIn("slow");
	$("#msg_content").attr("class", "mesg2 red");
	$("#msg_buttom").click(function(ev) {
		$('#msg_validacion').fadeOut("slow");
		$('#block_window').fadeOut("slow");
	});
}

function obtenerRolesRegsitroPublico(tipoRegistro) {

	 var rolesRegistroPublico = obtenerRolesRegPublicoByTipoRegistro(tipoRegistro);
	 	
	 var posicionInsercion = 0;
	 $("#rolesDisponibles" + " > option[value!='']").remove();	
	 
	 for(var i=0; i<rolesRegistroPublico.list.length; i++){
			osm_getObjeto('rolesDisponibles' ).options[posicionInsercion++]=new Option(rolesRegistroPublico.list[i].nombre_rol, rolesRegistroPublico.list[i].id_rol+"|"+rolesRegistroPublico.list[i].relacion);
		}
	 
		if(rolesRegistroPublico.list.length > 1){
			$("#div_roles_disponibles").show();
			}
		else{
			$("#div_roles_disponibles").hide();
		}
		
		chanceTipoPersona(osm_getValor('rolesDisponibles'));
}


function changeTipoRegistro(val){
	

	osm_block_window();
	$(".error").removeClass('error');
    var signindex = document.form_registro.tipoRegistro.selectedIndex;
    var multiplenaturaleza = document.form_registro.tipoRegistro.options[signindex ].id;
    //seteamos el valor del id del tipod e regsitro en un imput para  manejaro lmas adelante
    osm_setValor('identificadorTipoRegistro',val);
    
    obtenerRolesRegsitroPublico( val);

	
	if(multiplenaturaleza == 'N'){
		$("#div_naturaleza").hide();
		}
	else{
		$("#div_naturaleza").show();
	}
	
	osm_unblock_window();
	
}

function chanceTipoPersona(id){
	
	osm_block_window();
	$(".error").removeClass("error");
	
	var valores = id.split("|");
	var id_real=valores[0];
	var desplegarpreguntas = isPreguntasEnabled(id_real);
	
	var visualizartoken = isTokenEnable(id_real);
	
	var divDesHabilitado = allNamesTemplates;
	
	for(var i=0; i<divDesHabilitado.list.length; i++){
		$(osm_getObjeto("div_"+divDesHabilitado.list[i])).hide().find("input, select").attr("disabled", true);
	}
	
	//--------------------------------------------------------
	
	// obtengo los templates que debo habilitar para este registro de usuario 
	var divHabilitado = obtenerTemplatesRegistroRol(id_real); 
	
	for(var i=0; i<divHabilitado.list.length; i++){
		
		var ddv = $(osm_getObjeto("div_"+divHabilitado.list[i]));
		
		$("#full_area_registro").append(ddv);
		ddv.show().find("input, select").removeAttr("disabled");
		
	}
	//

	
	
	if(visualizartoken) {
		$("#BLOQUE_CS").hide();
		$("#preguntasSeguridad").hide();
		$("#clave").val("");
		$("#clave2").val("");
	}else{
		$("#BLOQUE_CS").show();
		
		if(desplegarpreguntas) {
			$("#preguntasSeguridad").show();
		}
	}
	
	osm_unblock_window();
}

function validarRegistro(){
	
	$('#block_window').fadeIn("slow");
	
	try{
	
		var rolValidacion = osm_getValor("rolesDisponibles");
		var valores = rolValidacion.split("|");
		var id_real=valores[0];
		
		
		var camposValidar = ["jcaptcha"];
		
		var preguntasEnabled = isPreguntasEnabled(id_real);
		
		if( preguntasEnabled) {
			
			if($("#preguntasSeguridad").is(":visible")){
				camposValidar.push(
				"respuestas_1_id_pregunta", "respuestas_1_id_respuesta",
				"respuestas_2_id_pregunta", "respuestas_2_id_respuesta",
				"respuestas_3_id_pregunta", "respuestas_3_id_respuesta"	);
			};
		}
		
		var camposClaveConValidacion=[];
		var camposClaveValidacion=[];
		var etiquetas_CCCV = [];
		var etiquetasCCV=[];
		
		if($("#BLOQUE_CS").is(":visible")){
			camposValidar.push("clave", "clave2");
			camposClaveConValidacion=["clave"];
			camposClaveValidacion=["clave2"];
			etiquetas_CCCV = ["CLAVE"];
			etiquetasCCV=["CONFIRMAR CLAVE"];
		}
		 
		var mensajeValidacion=""; //almacena el resultado final
		
		// -------------------------------------------------------------------------
		
		var camposValidarEspecificos = new Array();
		
		var camposNumericos = new Array();
		var etiquetas_CN = new Array();
		
		var camposAlfa = new Array();
		var etiquetas_CA = new Array();
		
		var camposEmail = new Array();
		var etiquetas_CE = new Array();
		
		var camposEmailConConfirmacion = new Array();
		var camposEmailConfirmacion = new Array();
		var etiquetas_CECC = new Array();
		var etiquetas_CEC = new Array();
		
		var inputs = $(".area_registro:visible").find("input,select");
		
		for(var i=0; i<inputs.length; i++){
			var ipt = inputs.get(i);
			
			if($(ipt).is(".obliga_S")){
				var ni = camposValidarEspecificos.length;
				camposValidarEspecificos[ni] = ipt.id;
			}
			
			if($(ipt).is(".valida_number")){
				var ni = camposNumericos.length;
				camposNumericos[ni] = ipt.id;
				etiquetas_CN[ni] = $("#label_" + ipt.id).html();
			}
			
			if($(ipt).is(".valida_alfa")){
				var ni = camposAlfa.length;
				camposAlfa[ni] = ipt.id;
				etiquetas_CA[ni] = $("#label_" + ipt.id).html();
			}
			
			if($(ipt).is(".valida_email")){
				
				if($("#"+ipt.id + "2").length>0){
					var ni = camposEmailConConfirmacion.length;
					camposEmailConConfirmacion[ni] = ipt.id;
					camposEmailConfirmacion[ni] = ipt.id + "2";
					etiquetas_CECC[ni] = $("#label_" + ipt.id).html();
					etiquetas_CEC[ni] = $("#label_" + ipt.id + "2").html();
					
				}else{
					
					var ni = camposEmail.length;
					camposEmail[ni] = ipt.id;
					etiquetas_CE[ni] = $("#label_" + ipt.id).html();
				}
			}
			
		}
		
		$.merge(camposValidar, camposValidarEspecificos);
		
		mensajeValidacion = validarCamposFormulario(camposValidar, camposNumericos, etiquetas_CN, camposAlfa, etiquetas_CA,
				camposEmail, etiquetas_CE, camposEmailConConfirmacion, camposEmailConfirmacion, etiquetas_CECC, etiquetas_CEC,
				camposClaveConValidacion, camposClaveValidacion, etiquetas_CCCV, etiquetasCCV);
		
		// --------------------------------------------------------------------------
		
	} catch(e) {
		
		mensajeValidacion = "Se present� un problema de validaci�n de datos. Intente nuevamente.";
	}
	
	if(mensajeValidacion == ""){
		osm_enviarFormulario('form_registro');
	}
	else{
		mostrarPopup(mensajeValidacion);
	}
	
	
	
}

function obtenerTemplatesRegistro() {
	var list = new Array();
	var n = 0;
	for(var i = 0; i < all_rolesRegistroPublico.list.length; i++){
		var templates = all_rolesRegistroPublico.list[i].templates;
		for(var j = 0; j < templates.list.length; j++){
			list[n++] = templates.list[j].template;
		}
	}
	
	return crearObjetoConlist(list);
}

function obtenerTemplatesRegistroRol(idRol) {
	var list = new Array();
	var n = 0;
	for(var i = 0; i < all_rolesRegistroPublico.list.length; i++){
		if(all_rolesRegistroPublico.list[i].id_rol == idRol) {
			var templates = all_rolesRegistroPublico.list[i].templates;
			for(var j = 0; j < templates.list.length; j++){
				list[n++] = templates.list[j].template;
			}
		}
	}
	
	return crearObjetoConlist(list);
}

function obtenerRolesRegPublicoByTipoRegistro(tipoRegistro) {
	var list = new Array();
	var n = 0;
	for(var i = 0; i < all_rolesRegistroPublico.list.length; i++){
		if(all_rolesRegistroPublico.list[i].tiporegistro == tipoRegistro) {
			list[n++] = all_rolesRegistroPublico.list[i];
		}
	}
	
	return crearObjetoConlist(list);
}

function isTokenEnable(idRol) {
	
	var act = false;
	
	for(var i = 0; i < all_rolesRegistroPublico.list.length; i++){
		if(all_rolesRegistroPublico.list[i].id_rol == idRol) {
			if(all_rolesRegistroPublico.list[i].validaTokenRegistro){
				act = true;
			}
		}
	}
	
	osm_setValor("tokenActivo", act); 


	return act;
}

function isPreguntasEnabled(idRol) {
	var res = false;
	for(var i = 0; i < all_rolesRegistroPublico.list.length; i++){
		if(all_rolesRegistroPublico.list[i].id_rol == idRol) {
			res = all_rolesRegistroPublico.list[i].preguntasenabled == 'S';
			break;
		}
	}
	return res;
}

function crearObjetoConlist(list) {
	var res = new Object();
	res.list = list;
	return res;
}

function setTooltip() {
	$(":input[title]").tooltip({
		position: "center right",
		// Ajuste de Posici�n (Opcional)
		offset: [0, 5],
		// Efecto
		effect: "fade",
		// Qu� tan opaco
		opacity: 0.8
	});
}

function validarDigitoVerificacion(id_dig, id_num){

	var nit = osm_getValor(id_num);
	if(!osm_esVacio(nit) && osm_validarNumero(nit)){
		var digito = osm_calcularDigitoVerificacion(nit);
		osm_setValor(id_dig, digito);
	}else{
		osm_setValor(id_dig, '');
	}
}


function validarToken(){
	
	var tipodoc_usuario = osm_getValor("proceso_token.tipodoc_usuario");
	var identif_usuario = osm_getValor("proceso_token.identif_usuario");
	var tipodoc_cliente = osm_getValor("proceso_token.tipodoc_cliente");
	var identif_cliente = osm_getValor("proceso_token.identif_cliente");
	
	if(osm_esVacio(tipodoc_cliente) &&  osm_esVacio(identif_cliente)){
		tipodoc_cliente = tipodoc_usuario;
		identif_cliente = identif_usuario;
	}
	
	var tipoRegistro = osm_getValor("tk_tipoRegistro");
	
	var rolValidacion = osm_getValor("tk_rolesDisponibles");
	var valores = rolValidacion.split("|");
	var id_rol=valores[0];
	
	var nombreUsuario = osm_trimToEmpty(osm_getValor("tk_personaNombre") + " " + osm_getValor("tk_administradorNombre") );
	var nombreCliente = osm_getValor("tk_clienteNombre"); 
	
	var r = jsonrpc.f61e9607317ebec99810baad3b915ec87.d9ff0d5e1eea06ad5b6eea1b9ef58e27(tipoRegistro, id_rol, nombreUsuario, tipodoc_usuario, identif_usuario, nombreCliente, tipodoc_cliente, identif_cliente, osm_getValor("token"));
	if(r.autorizacion_registrousuario){
		
		//mostrarMensaje("Validaci�n Clave Aleatoria", "La validaci�n de la Clave Aleatoria ha sido exitosa, El codigo de verificacion es " + r.respuesta.hostid, true);
		
		//ACCION_VALIDACION = function(){
			
			var rolValidacion = osm_getValor("tk_rolesDisponibles");
			var valores = rolValidacion.split("|");
			var id_rol=valores[0];
			
			$("#BLOQUE_CS").show();
			
			if(isPreguntasEnabled(id_rol)) {
				$("#preguntasSeguridad").show();
			}
			$("#BLOQUE_T").hide();
			$("#barra_botones").show();
		//};
		
		
	}else{
		mostrarMensaje("Validaci�n Clave Aleatoria", r.respuesta.mensaje, false);
	}
}

//----------------------------------------------------------

function mostrarMensaje(mensajeHead, mensajeDetalle, noError) {
	$('#block_window').fadeIn(100);
	$('#msg_validacion').fadeIn(100);

	osm_getObjeto('msg_head').innerHTML = mensajeHead;
	osm_getObjeto('msg_detail').innerHTML = mensajeDetalle;

	var clase = "mesg2";

	if (noError == null) {
		clase = "mesg2";
	}
	
	if (noError == true) {
		clase = "mesg2 green";
	}
	
	if (noError == false) {
		clase = "mesg2 red";
	}

	$("#msg_content").attr("class", clase);
}

function verMensaje(msg){
	$("#msg_detail").html(msg);
	$('#block_window').fadeIn(100);
	$('#msg_validacion').fadeIn(100);
	$("#msg_content").attr("class", "mesg2");
}

var ACCION_VALIDACION = null;
$(function(){
	$("#msg_buttom").click(function(ev) {
		$('#msg_validacion').hide();
		$('#block_window').hide();
		$('#pop_rta').hide();
		$('#block_window').hide();
		
		if(ACCION_VALIDACION!=null){
			ACCION_VALIDACION();
			ACCION_VALIDACION = null;
		}
	});
	
	$("#msg_buttom2").click(function(ev) {
		$('#pop_rta').hide();
		$('#block_window').hide();
		var rolValidacion = osm_getValor("rolesDisponibles");
		if(null != rolValidacion) {
			var valores = rolValidacion.split("|");
			if (null != valores) {
				var id_rol = valores[0];
				if (null != id_rol && isPreguntasEnabled(id_rol)) {
					$("#preguntasSeguridad").show();
				}
			}
		}
	});
});
