function TestDC(){this.base;this.preguntas_fijas=new Array();this.valores_fijos=new Array();this.preguntas_pers=new Array();this.numero_actual=0;this.iniciado=this.enviando=false;this.titulo=this.autor=this.email=this.codigo=null;this.avisar=this.resumen=0;this.mostrar_categoria=function(cat){$('a.e_x[name='+cat+']').show('slow');$('#p_'+cat).slideDown('fast')};this.ocultar_categoria=function(cat){$('a.e_x[name='+cat+']').hide('slow');$('#p_'+cat).slideUp('fast')};this.agregar_categoria=function(cat,revertir){if(revertir){return this.quitar_categoria(cat)}var ref=this;$('#p_'+cat+' :checkbox').each(function(){if(ref.numero_actual<255){this.checked=true;ref.agregar_pregunta(this.name,false)}else{ref.base.aviso('<p>Has alcanzado el límite de preguntas. Muy bien...</p>');return true}})};this.quitar_categoria=function(cat){var ref=this;this.iniciado=true;$('#p_'+cat+' :checkbox').each(function(){this.checked=false;ref.quitar_pregunta(this.name)})};this.agregar_pregunta=function(numero,revertir){this.iniciado=true;if(revertir){return this.quitar_pregunta(numero)}this.preguntas_fijas.push(numero);this.valores_fijos.push($('#v_'+numero).attr('alt'));this.numero_actual++};this.quitar_pregunta=function(numero){var p=jQuery.inArray(numero,this.preguntas_fijas);if(p!=-1){this.preguntas_fijas.splice(p,1);this.valores_fijos.splice(p,1);this.numero_actual--}};this.cambiar_valor=function(numero,valor){var p=jQuery.inArray(numero,this.preguntas_fijas);if(p!=-1){this.valores_fijos[p]=valor}};this.cambiar_valor_pers=function(numero,valor){if(this.preguntas_pers[numero-1]){this.preguntas_pers[numero-1][1]=valor}};this.guardar_test=function(){$('#aviso_guardado').slideDown()};this.nueva_pregunta=function(){$('#nueva_pregunta').slideDown()};this.guardar_temporal=function(){if(this.iniciado){var ref=this;var datos=this.generar_query();this.iniciado=false;$.ajax({type:"POST",cache:false,dataType:'json',url:"index.php?s=guardar_temp",data:datos,success:function(datos){if(datos.exito){ref.codigo=datos.codigo;ref.base.aviso('<img src="img/guardando.gif" width="200" height="40" border="0" alt="Guardado" />'+'<p>Hemos guardado tu test por si tienes algún problema o quieres seguirlo en otro momento. Por favor, anota el código de abajo en alguna parte. Introduciendo el código en "Recuperar Test" (a la izquierda de la  web) podrás seguirlo en cualquier momento (lo guardaremos durante 5 días).</p>'+'<input type="text" size="17" name="" value="'+datos.codigo+'" id="codigo_def" /><input type="image" class="copiar" src="img/copiar.gif" onclick="$.copy(\''+datos.codigo+'\');" /><img class="copialo" src="img/copialo.gif" width="59" height="22" border="0" alt="" />')}}})}};this.guardar_test=function(form){var errores=new Array();var ref=this;var d_test=this.generar_query();var d_gen=$(form);if(this.titulo.length<3){errores.push('Debes introducir un título de 3 carácteres como mínimo.')}if(this.autor.length<2){errores.push('El nombre del autor debe tener 2 caracteres como mínimo.')}if(this.email.length>0&&!this.base.regexp_mail.test(this.email)){errores.push('El e-mail introducido es incorrecto.')}if(d_gen.find(':checked[name=condiciones]').length<1){errores.push('No se puede continuar sin estar de acuerdo con las condiciones.')}if(this.numero_actual<5){errores.push('El número de preguntas actual es demasiado bajo. El mínimo es de 5.')}if(errores.length>0){this.base.mostrar_errores(d_gen.find('.error'),errores)}else{$('a.e_x').each(function(){ref.ocultar_categoria(this.name)});this.enviando=true;d_gen.find('input[type=image]').attr('src','img/guardar_0.gif');$.ajax({type:"POST",cache:false,dataType:'json',url:"index.php?s=guardar",data:d_test,success:function(datos){if(datos.exito){window.location='http://www.testdecompatibilidad.es/test/'+datos.id+'/'+datos.semilla+'?m=1'}else{alert("Error guardando el test :'(");ref.enviando=false;d_gen.find('input[type=image]').attr('src','img/guardar.gif')}}})}};this.guardar_pregunta=function(form){var errores=new Array();var respuestas=new Array();var texto_pregunta;var idc=arguments.length>1?arguments[1]:false;var json=form.constructor==Array;if(!json){var jqform=$(form);texto_pregunta=$(form).find(':input[name=pregunta]').val();$(form).find(':input[name=respuesta]').each(function(){var r=$(this).val().replace('|||','||');if(r.length>0){respuestas.push(r)}});if(texto_pregunta.length<5){errores.push('La pregunta tiene menos de 5 carácteres.')}if(respuestas.length<2){errores.push('Debes introducir 2 respuestas como mínimo.')}}else{var jqform=$('#nueva_pregunta');texto_pregunta=form[0];for(i in form[2]){respuestas.push(form[2][i])}}if(errores.length>0){this.base.mostrar_errores($(form).find('.error'),errores)}else{var pregunta=new Array();pregunta[0]=texto_pregunta;pregunta[1]=5;pregunta[2]=respuestas;if(!idc){this.preguntas_pers.push(pregunta);this.numero_actual++}else{this.preguntas_pers[idc-1]=pregunta}var ref=this;var id_preg=idc?idc:this.preguntas_pers.length;var html='<ul class="p" id="per_'+id_preg+'">'+'   <li class="nav"><a href="#" name="ed">Editar</a> | <a href="#" name="del">Eliminar</a></li>'+'   <li class="p">'+texto_pregunta+' <div class="valor" id="vp_'+id_preg+'">'+'           <span class="valor-Off" style="width:80px;"><span class="valor-On" style="width:40px"></span></span>'+'           <span class="c_val c_val_on"></span>'+'       </div></li>';for(r in respuestas){html+='<li>'+respuestas[r]+'</li>'}if(!idc){jqform.before(html+'</ul>')}else{$('#per_'+id_preg).replaceWith(html+'</ul>')}$('#per_'+id_preg+' a').click(function(){if(this.name=='ed'){ref.editar_pregunta(id_preg)}else{ref.borrar_pregunta(id_preg)}return false});$('#per_'+id_preg+' .c_val').click(function(){if($(this).hasClass('c_val_on')){$(this).removeClass('c_val_on');$(this.parentNode).rater({pers:true})}else{$(this.parentNode).unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave');$(this).addClass('c_val_on')}});jqform.find('.error').hide();jqform.get(0).reset();this.iniciado=true}};this.editar_pregunta=function(id){if($('#edit_'+id).length){return}var respuestas=['','','','',''];var r_reales=this.preguntas_pers[id-1][2];var ref=this;var i,j;for(i=0,j=r_reales.length;i<j;i++){respuestas[i]=r_reales[i]}var html='<form action="#" id="edit_'+id+'" style="display: none">'+'     <ul class="p" style="border:1px solid #000; margin-bottom:20px;">'+'         <li class="p">Pregunta: <input class="w" type="text" size="103" name="pregunta" maxlength="200" value="'+this.preguntas_pers[id-1][0]+'"/></li>'+'         <li class="texto">Puedes añadir hasta 5 respuestas. Como mínimo deben ser 2. Deja en blanco las que no quieras usar.</li>'+'         <li class="edit">Respuesta: <input type="text" size="70" name="respuesta" maxlength="80" value="'+respuestas[0]+'" /> <img class="bor" src="img/borrar.gif" width="16" height="16" border="0" alt="Borrar" /></li>'+'         <li class="edit">Respuesta: <input type="text" size="70" name="respuesta" maxlength="80" value="'+respuestas[1]+'"/> <img class="bor" src="img/borrar.gif" width="16" height="16" border="0" alt="Borrar" /></li>'+'         <li class="edit">Respuesta: <input type="text" size="70" name="respuesta" maxlength="80" value="'+respuestas[2]+'"/> <img class="bor" src="img/borrar.gif" width="16" height="16" border="0" alt="Borrar" /></li>'+'         <li class="edit">Respuesta: <input type="text" size="70" name="respuesta" maxlength="80" value="'+respuestas[3]+'"/> <img class="bor" src="img/borrar.gif" width="16" height="16" border="0" alt="Borrar" /></li>'+'         <li class="edit">Respuesta: <input type="text" size="70" name="respuesta" maxlength="80" value="'+respuestas[4]+'"/> <img class="bor" src="img/borrar.gif" width="16" height="16" border="0" alt="Borrar" /></li>'+'         <li class="error">Para los posibles errores.</li>'+'         <li class="guardar"><input type="image" src="img/guardar.gif" /></li>'+'     </ul>'+'</form>';$('#per_'+id).after(html);$('#edit_'+id).find('img.bor').click(function(){$(this.parentNode).find(':input').val('')}).end().submit(function(){ref.guardar_pregunta(this,id);$(this).slideUp('normal',function(){$(this).remove()});return false}).slideDown();this.iniciado=true};this.borrar_pregunta=function(id){if($('#del_'+id).length){return}var ref=this;var html='<form action="#" id="del_'+id+'" style="display: none">'+'     <ul class="p" style="border:1px solid #000; margin-bottom:20px;">'+'         <li class="p">¿Seguro que quieres borrar la pregunta "'+this.preguntas_pers[id-1][0]+'"?</li>'+'         <li class="guardar"><input type="image" class="boton_si" src="img/si.gif" /><button type="reset" class="boton_no"><img src="img/no.gif" width="112" height="37" border="0" alt="No" /></button></li>'+'     </ul>'+'</form>';$('#per_'+id).after(html);$('#del_'+id).submit(function(){$(this).remove();$('#edit_'+id+', #per_'+id).remove();ref.preguntas_pers[id-1]=null;ref.numero_actual--;return false}).find(':reset').click(function(){$('#del_'+id).slideUp('normal',function(){$(this).remove()});return false}).end().slideDown();this.iniciado=true};this.generar_query=function(){var d_gen=$('#guardar form');this.titulo=d_gen.find(':input[name=titulo]').val();this.autor=d_gen.find(':input[name=autor]').val();this.email=d_gen.find(':input[name=email]').val();if(d_gen.find(':checked[name=resumen]').length>0){this.resumen=1}if(d_gen.find(':checked[name=avisar]').length>0){this.avisar=1}var query='titulo='+this.titulo+'&autor='+this.autor+'&email='+this.email+'&avisar='+this.avisar+'&resumen='+this.resumen;if(this.codigo!=null){query+='&codigo='+this.codigo}if(this.preguntas_fijas.length>0){query+='&p_f[]='+this.preguntas_fijas.join('&p_f[]=');query+='&v_f[]='+this.valores_fijos.join('&v_f[]=')}if(this.preguntas_pers.length>0){for(i in this.preguntas_pers){query+='&p_p[]='+this.preguntas_pers[i][0];query+='&v_p[]='+this.preguntas_pers[i][1];query+='&r_p[]='+this.preguntas_pers[i][2].join('|||')}}return query}}$.fn.rater=function(options){var opts=$.extend({},{units:10,step:1},options);return this.each(function(){var $this=$(this);var $on=$this.find('.valor-On');var $off=$this.find('.valor-Off');opts.size=8;if(opts.rating==undefined)opts.rating=$on.width()/opts.size;if(opts.id==undefined)opts.id=$this.attr('id');$off.mousemove(function(e){var left=e.clientX-$off.offset().left;var width=$off.width()-($off.width()-left);width=Math.ceil(width/(opts.size/opts.step))*opts.size/opts.step;$on.width(width)}).hover(function(e){$on.addClass('valor-Hover')},function(e){$on.removeClass('valor-Hover');$on.width(opts.rating*opts.size)}).click(function(e){var r=Math.round($on.width()/$off.width()*(opts.units*opts.step))/opts.step;$off.unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave');$off.css('cursor','default');$on.css('cursor','default');$this.attr('alt',r);if(opts.pers==undefined)T_TDC.cambiar_valor($this.attr('id').replace('v_',''),r);else T_TDC.cambiar_valor_pers($this.attr('id').replace('vp_',''),r);$on.removeClass('valor-Hover').width(r*opts.size);$this.find('.c_val').addClass('c_val_on')}).css('cursor','pointer');$on.css('cursor','pointer')})};var T_TDC=new TestDC();T_TDC.base=TDC;$(document).ready(function(){$('#preg_pred :checkbox').click(function(){if($(this).hasClass('c_preg')){T_TDC.agregar_categoria(this.name,!this.checked)}else{T_TDC.agregar_pregunta(this.name,!this.checked)}}).each(function(){if(!$(this).hasClass('c_preg')&&this.checked){T_TDC.agregar_pregunta(this.name,false)}});$('a.f').click(function(){T_TDC.mostrar_categoria(this.name);return false});$('a.e_x').click(function(){T_TDC.ocultar_categoria(this.name);return false});$('a.cerrar_aviso').click(function(){T_TDC.base.ocultar_aviso(this.parentNode);return false});$('.c_val').click(function(){if($(this).hasClass('c_val_on')){$(this).removeClass('c_val_on');$(this.parentNode).rater()}else{$(this.parentNode).unbind('click').unbind('mousemove').unbind('mouseenter').unbind('mouseleave');$(this).addClass('c_val_on')}});$(".c_val").hover(function(e){$("body").append("<p id='tooltip'>Edita lo importante que es la pregunta, con un valor de 1 a 10</p>");$("#tooltip").css("top",(e.pageY-10)+"px").css("left",(e.pageX+20)+"px").fadeIn("fast")},function(){$("#tooltip").remove()});$(".c_val").mousemove(function(e){$("#tooltip").css("top",(e.pageY-10)+"px").css("left",(e.pageX+20)+"px")});$('#nueva_pregunta').submit(function(){T_TDC.guardar_pregunta(this);return false}).find('img.bor').click(function(){$(this.parentNode).find(':input').val('')});$('#guardar form').submit(function(){if(T_TDC.enviando==false){T_TDC.guardar_test(this)}return false});setInterval("T_TDC.guardar_temporal()",18000)});
