var camino = Array();
var secciones = Array();
var tipo_web = '';
var paso_actual = 'paso1';
var siguiente_paso = '';
var descripcion_paso = '';
var tipo_mto = '';
var tipo_seo = '';
var tipo_dominio = '';
var tipo_tienda = '';
var sugerencia_dominio = '';
var tipo_alojamiento = '';
var idea_proyecto = '';
var secciones_mantenidas = Array();
var mostrar_avance = 0;
var enviando = 0;

camino[0] = 'paso1';
document.observe('dom:loaded',function(){
	
	$('formulario_presupuesto').observe('submit',function(ev){
		ev.stop();	
	});
	
	$$('#paso1 INPUT').each(function(el){
		el.observe('click',function(ev){
		  seleccion_tipo_web(this);
	  });
		if(el.checked){
			seleccion_tipo_web(el);
		}
	});
	
	$$('#paso1 .tipo_web A').each(function(el){
		el.observe('click',function(ev){
			ev.stop();
			input = ev.findElement().previous();
			if(!input.checked){
				input.checked = true;	
			}
			seleccion_tipo_web(input);
	  });
	});
	
	$$('#paso-secciones INPUT').each(function(el){
		el.observe('click',function(ev){
			seleccion_seccion_web(this);
	  });
		if(el.checked){
			seleccion_seccion_web(el);
		}
	});
	
	$$('#paso-secciones .seccion_web A').each(function(el){
		el.observe('click',function(ev){
			ev.stop();
			if(el.up('.opcion').hasClassName('no-seleccionable')){
				alert('Esta sección sólo puede seleccionarse en Páginas Web, no en Postales Web.');
			}
			else{
				input = ev.findElement().previous();
				input.checked = !input.checked;	
				seleccion_seccion_web(input);
			}
			
	  });
	});
	
	$$('#paso-mantenimiento INPUT').each(function(el){
		el.observe('click',function(ev){
			seleccion_tipo_mantenimiento(this);
	  });
		if(el.checked){
			el.checked = false;
		}
	});
	$$('#paso-mantenimiento .tipo_mto A').each(function(el){
		el.observe('click',function(ev){
			ev.stop();
			input = ev.findElement().previous();
			if(!input.checked){
				input.checked = true;	
			}
			$('zona_secciones_seleccionadas').hide();
			secciones_mantenidas.clear();
			seleccion_tipo_mantenimiento(input);
	  });
	});
	$$('#paso-seo INPUT').each(function(el){
		el.observe('click',function(ev){
			seleccion_tipo_seo(this);
	    });
		el.next('a').observe('click',function(ev){
			ev.stop();
			if(!el.checked){
				el.checked = true;	
			}
			seleccion_tipo_seo(el);
		});
		//si está marcado lo desmarcamos inicialmente
		if(el.checked){
			el.checked = false;
		}
	});
	
	$$('#paso-hosting .tipo_dominio INPUT').each(function(el){
		el.observe('click',function(ev){
			seleccion_tipo_dominio(this);
	    });
		el.next('a').observe('click',function(ev){
			ev.stop();
			if(!el.checked){
				el.checked = true;	
			}
			seleccion_tipo_dominio(el);
		});
		//si está marcado lo desmarcamos inicialmente
		if(el.checked){
			el.checked = false;
		}
	});
	
	$$('#paso-hosting .tipo_alojamiento INPUT').each(function(el){
		el.observe('click',function(ev){
			seleccion_tipo_alojamiento(this);
	    });
		el.next('a').observe('click',function(ev){
			ev.stop();
			if(!el.checked){
				el.checked = true;	
			}
			seleccion_tipo_alojamiento(el);
		});
		//si está marcado lo desmarcamos inicialmente
		if(el.checked){
			el.checked = false;
		}
	});
	
	$$('#paso-tipo-tienda .tipo_tienda INPUT').each(function(el){
		el.observe('click',function(ev){
			seleccion_tipo_tienda(this);
	    });
		el.next('a').observe('click',function(ev){
			ev.stop();
			if(!el.checked){
				el.checked = true;	
			}
			seleccion_tipo_tienda(el);
		});
		//si está marcado lo desmarcamos inicialmente
		if(el.checked){
			el.checked = false;
		}
	});
	
	$('algunas_secciones').observe('click', function(ev){
		mostrar_secciones_seleccionadas(ev);
		Effect.toggle('zona_secciones_seleccionadas','blind');
	});
	$('algunas_secciones').next('a').observe('click', function(ev){
		mostrar_secciones_seleccionadas(ev);
		Effect.toggle('zona_secciones_seleccionadas','blind');
	});
	$('algunas_secciones').observe('secciones_seleccionadas:cambiadas', mostrar_secciones_seleccionadas);
	
	$('sugerencia_dominio').observe('keyup',establecer_sugerencia);
	$('sugerencia_dominio').observe('sugerencia:establecida',establecer_sugerencia);
	
	$$('#paso-contacto INPUT').each(function(el){
		el.observe('keyup',function(ev){
			if(ev.keyCode==Event.KEY_RETURN){
				ev.stop();
				avanzar();
			}
		});
		el.observe('blur',function(ev){
			if(el.hasClassName('marcado_obligatorio') && el.value.strip()!=''){
				el.removeClassName('marcado_obligatorio');
			}
		});
	});
	
	$('descripcion-proyecto').observe('keyup',function(ev){
			idea_proyecto = this.value;
			actualizar_zona_resumen();
		
	});
	
});
function establecer_sugerencia(){
	sugerencia_dominio = this.value;
	if($('suger_dom')){
		$('suger_dom').update(sugerencia_dominio);
	}
}
function mostrar_secciones_seleccionadas(ev){
	ev.stop();
	var cadena = 'Por favor, indique que secciones quiere actualizar:';
	secciones.each(function(id){
		cadena += '<span class="valor-seleccionado"><input type="checkbox" class="mantener_seccion" name="secciones_mantenidas[]" id="seccion_mantenida_'+id+'" value="'+id+'"><a href="">'+$('seccion_'+id).next('a').innerHTML+'</a></span>';
	});
	$('zona_secciones_seleccionadas').update(cadena);
	//Si ya tenemos secciones porque hemos navegado las activamos
	secciones_mantenidas.each(function(id){
		$('seccion_mantenida_'+id).checked = true;
	});
	
	mostrar_avance = secciones_mantenidas.size()>0;
	actualizar_zona_resumen();
	
	$$('.mantener_seccion').each(function(el){
		el.observe('click',function(ev){
			if(el.checked && secciones_mantenidas.indexOf(el.value)==-1){
				secciones_mantenidas.push(el.value);
			}
			else{
				secciones_mantenidas = secciones_mantenidas.without(el.value);
			}
			mostrar_avance = secciones_mantenidas.size()>0;
			actualizar_zona_resumen();
		});
		el.next('a').observe('click', function(ev){
			ev.stop();
			var input = this.previous('input');
			input.checked = !input.checked;
			var id = input.value;
			if(input.checked && secciones_mantenidas.indexOf(input.value)==-1){
				secciones_mantenidas.push(input.value);
			}
			else{
				secciones_mantenidas = secciones_mantenidas.without(input.value);
			}
			mostrar_avance = secciones_mantenidas.size()>0;
			actualizar_zona_resumen();
		});
	});
	
	
}
function seleccion_tipo_web(el){
	mostrar_avance = 1;
	tipo_web = el.value;
	actualizar_zona_resumen();
}
function actualizar_zona_resumen(){
	//generamos la cadena en base a las opciones seleccionadas
	switch(paso_actual){
		case 'paso1':
			camino.clear();
			camino.push('paso1');
			switch(tipo_web){
				case 'Postal web':
					siguiente_paso = 'paso-secciones';
					$$('#paso-secciones .opcion').each(function(el){
						if(!el.hasClassName('postal')){
							el.addClassName('no-seleccionable');
							el.down('input').disable();
						}
					});
					break;
				case 'Página web':
					siguiente_paso = 'paso-secciones';
					$$('#paso-secciones INPUT').each(function(el){
						el.checked = false;
					});
					$$('#paso-secciones .opcion').each(function(el){
						if(!el.hasClassName('postal')){
							el.removeClassName('no-seleccionable');
							el.down('input').enable();
						}
					});
					break;
				case 'Tienda Online':
					siguiente_paso = 'paso-tipo-tienda';
					break;
				case 'Proyecto Personalizado':
					siguiente_paso = 'paso-proyecto-personalizado';
					break;
			
			}
			
		break;
		case 'paso-secciones':
			siguiente_paso = 'paso-mantenimiento';
			if(secciones.size()>0){
				mostrar_avance = 1;
			}
		break;
		case 'paso-mantenimiento':
			siguiente_paso = 'paso-seo';
		break;
		case 'paso-seo':
			siguiente_paso = 'paso-hosting';
			if(tipo_seo!=''){
				mostrar_avance = 1;
			}
		break;
		case 'paso-hosting':
			siguiente_paso = 'paso-contacto';
		break;
		case 'paso-contacto':
			siguiente_paso = 'envio-formulario';
			mostrar_avance = 1;
		break;
		case 'paso-tipo-tienda':
			siguiente_paso = 'paso-contacto';
		break;
		case 'paso-proyecto-personalizado':
			siguiente_paso = 'paso-contacto';
		break;
	}
	switch(siguiente_paso){
		case 'paso-secciones':
			descripcion_paso = 'Selección de secciones';
		break;
		case 'paso-mantenimiento':
			descripcion_paso = 'Mantenimiento y Posicionamiento';
		break;
		case 'paso-tipo-tienda':
			descripcion_paso = 'Selección de tipo de tienda';
		break;
		case 'paso-proyecto-personalizado':
			descripcion_paso = 'Cuéntanos tu idea';
		break;
		case 'paso-seo':
			descripcion_paso = 'Posicionamiento en Buscadores';
		break;
		case 'paso-hosting':
			descripcion_paso = 'Dominio y Alojamiento';
		break;
		case 'paso-contacto':
			descripcion_paso = 'Datos de Contacto';
		break;
		case 'envio-formulario':
			descripcion_paso = 'Solicitar Presupuesto Web';
		break;
	
	}
	
	//tipo de  web
	var enlace_cambio = '';
	if(camino.last()!='paso1' && !enviando){
		enlace_cambio = '<a href="" onclick="retroceder(\'paso1\', event); return false; ">Cambiar</a>';
	}
	var cadena = '<span class="seccion">Tipo de Web'+enlace_cambio+'</span><span class="valor-seleccionado">'+tipo_web+'</span>';
	
	//secciones de la web
	if(secciones.length>0){
		secciones.sort(function(a,b){
			return a - b;
		});
		enlace_cambio = '';
		if(camino.last()!='paso-secciones' && !enviando){
			enlace_cambio = '<a href="" onclick="retroceder(\'paso-secciones\', event); return false; ">Cambiar</a>';
		}
		cadena += '<span class="seccion">'+secciones.size()+' Secciones'+enlace_cambio+'</span>';
		secciones.each(function(id){
			cadena += '<span class="valor-seleccionado">'+$('seccion_'+id).next('a').innerHTML+'</span>';
		});
	}
	if(camino.indexOf('paso-mantenimiento')!=-1 && tipo_mto!=''){
		enlace_cambio = '';
		if(camino.last()!='paso-mantenimiento' && !enviando){
			enlace_cambio = '<a href="" onclick="retroceder(\'paso-mantenimiento\', event); return false; ">Cambiar</a>';
		}
		cadena += '<span class="seccion">Mantenimiento Web '+enlace_cambio+'</span>';
		cadena += '<span class="valor-seleccionado">'+tipo_mto+'</span>';
		if(secciones_mantenidas.size()>0){
			secciones_mantenidas.sort(function(a,b){
				return a - b;
			});
			secciones_mantenidas.each(function(id){
				cadena += '<span class="valor-seleccionado seccion-mantenida">'+$('seccion_mantenida_'+id).next('a').innerHTML+'</span>';
			});
		}
	}
	if(camino.indexOf('paso-seo')!=-1 && tipo_seo!=''){
		enlace_cambio = '';
		if(camino.last()!='paso-seo' && !enviando){
			enlace_cambio = '<a href="" onclick="retroceder(\'paso-seo\', event); return false; ">Cambiar</a>';
		}
		cadena += '<span class="seccion">Posicionamiento Web '+enlace_cambio+'</span>';
		cadena += '<span class="valor-seleccionado">'+tipo_seo+'</span>';
	}
	
	if(camino.indexOf('paso-hosting')!=-1 && (tipo_dominio!='' || tipo_alojamiento!='' )){
		enlace_cambio = '';
		if(camino.last()!='paso-hosting' && !enviando){
			enlace_cambio = '<a href="" onclick="retroceder(\'paso-hosting\', event); return false; ">Cambiar</a>';
		}
		cadena += '<span class="seccion">Dominio y Alojamiento '+enlace_cambio+'</span>';
		if(tipo_dominio!=''){
			cadena += '<span class="valor-seleccionado">'+tipo_dominio+'</span><span id="suger_dom">'+sugerencia_dominio+'</span>';
		}
		if(tipo_alojamiento!=''){
			cadena += '<span class="valor-seleccionado">'+tipo_alojamiento+'</span>';
		}
		if(tipo_dominio=='' || tipo_alojamiento==''){
			mostrar_avance = 0;
			cadena += '<span class="aviso-seleccion">Por favor, seleccione una opción de dominio y alojamiento</a>';
		}
		else{
			mostrar_avance = 1;
		}
	}
	
	if(camino.indexOf('paso-tipo-tienda')!=-1 && tipo_tienda!='' ){
		enlace_cambio = '';
		if(camino.last()!='paso-tipo-tienda' && !enviando){
			enlace_cambio = '<a href="" onclick="retroceder(\'paso-tipo-tienda\', event); return false; ">Cambiar</a>';
		}
		cadena += '<span class="seccion">Tipo de Tienda'+enlace_cambio+'</span>';
		cadena += '<span class="valor-seleccionado">'+tipo_tienda+'</span>';
	}
	
	if(camino.indexOf('paso-proyecto-personalizado')!=-1){
		if(idea_proyecto!=''){
			enlace_cambio = '';
			if(camino.last()!='paso-proyecto-personalizado' && !enviando){
				enlace_cambio = '<a href="" onclick="retroceder(\'paso-proyecto-personalizado\', event); return false; ">Cambiar</a>';
			}
			cadena += '<span class="seccion">Proyecto Personalizado'+enlace_cambio+'</span>';
			cadena += '<span class="valor-seleccionado">Idea Registrada</span>';
			mostrar_avance = 1;
		}
		else{
			mostrar_avance = 0;
		}
	}
	
	if(!enviando){
		if(mostrar_avance){
				$('boton_siguiente').update('<a href="#" title="Continúe elaborando su presupuesto web" id="enlace-siguiente-paso" class="siguiente-paso" onclick="avanzar(event); return false;">Continuar al siguiente Paso &raquo;<br>( '+descripcion_paso+' )</a>');
				$('zona_seleccion').show();
			}
			else{
				$('boton_siguiente').update('');
				$('zona_seleccion').hide();
			}
		}
	else{
		$('boton_siguiente').update('Enviando datos...');
		$('zona_seleccion').show();
	}

	$('zona-resumen').update(cadena);
	//$('zona-resumen').highlight();
}

function avanzar(ev){
	
	if(siguiente_paso=='envio-formulario'){
		//procesamos el envío del formulario
		if(verificar_datos_contacto('paso-contacto')){
			//procedemos al envio de los datos
			var envio = 'ac=solicitud_presupuesto&tipo_pagina='+tipo_web;
			switch(tipo_web){
			case 'Tienda Online':
				envio += '&tipo_tienda='+tipo_tienda;
			break;
			case 'Proyecto Personalizado':
				envio += '&idea_proyecto='+idea_proyecto;
			break;
			default:
				//envío de datos de Postal y Página
				
				envio += '&secciones='+secciones.toJSON();
				envio += '&tipo_mto='+tipo_mto;
				if(tipo_mto=='Actualizar yo mismo las secciones...'){
					envio += '&secciones_actualizadas_por_cliente='+secciones_mantenidas.toJSON();
				}
				envio += '&tipo_seo='+tipo_seo;
				envio += '&tipo_dominio='+tipo_dominio;
				if(tipo_dominio=='No tengo Dominio'){
					envio += '&sugerencia_dominio='+sugerencia_dominio;
				}
				envio += '&tipo_alojamiento='+tipo_alojamiento;
				
			break;
			}
			envio += '&nombre='+$('nombre').value;
			envio += '&email='+$('email').value;
			envio += '&telefono='+$('telefono').value;
			envio += '&nos_conocio_por='+$('nos_conocio_por').value;
			
			enviando = 1;
			//realizamos el envío
			actualizar_zona_resumen();
			new Ajax.Request('control.php',
					//opciones
					{
					method:'post',
					parameters: envio,
					onSuccess:function(respuesta){
						//alert(res.responseText);
						res = respuesta.responseJSON;
						if(res && res.estado){
							$('boton_siguiente').update('Datos enviados');
							alert('Presupuesto enviado correctamente.');
							//reseteamos el formulario
							
						}
						else{
							enviando = 0;
							actualizar_zona_resumen();
						}
					},
					onFailure:function(res){
						alert('Se produjo un fallo en el envío.\nPor favor vuelva a intentarlo más tarde.');
					}
					});
			
		}
	}
	else{
		if(camino.indexOf(siguiente_paso)==-1){
			camino.push(siguiente_paso);
		}
		Effect.BlindUp(paso_actual);
		Effect.BlindDown(siguiente_paso);
		paso_actual = siguiente_paso;
		$(paso_actual).down('span.numero-paso').update(camino.size());
		mostrar_avance = 0;
		actualizar_zona_resumen();	
	}
	
}
function seleccion_seccion_web(el){
	if(el.checked){
		secciones.push(el.value);
	}
	else{
		secciones = secciones.without(el.value);
	}
	if(secciones_mantenidas.indexOf(el.value)!=-1){
		secciones_mantenidas = secciones_mantenidas.without(el.value);
	}
	$('algunas_secciones').fire('secciones_seleccionadas:cambiadas');
	mostrar_avance = secciones.size()>0;
	
	siguiente_paso = 'paso-mantenimiento';
	descripcion_paso = 'Selección de Mantenimiento Web';
	actualizar_zona_resumen();
}
function retroceder(paso, ev){
	
	
	if(paso!=paso_actual){
		if($('enlace-siguiente-paso')){
			$('enlace-siguiente-paso').hide();
		}
		mostrar_avance = 1;
		//$(paso_actual).toggle('blind');
		switch(paso){
			case 'paso1':
				//iniciamos todas las variables
				secciones.clear();
				secciones_mantenidas.clear();
				tipo_mto = '';
				tipo_seo = '';
			break;
				
			
		}
		Effect.BlindUp(paso_actual);
		//$(paso_actual).toggle('blind');
		paso_actual = paso;
		Effect.BlindDown(paso_actual,{afterFinish:actualizar_zona_resumen});
	}
}
function seleccion_tipo_mantenimiento(el){
	mostrar_avance = 1;
	tipo_mto = el.value;
	actualizar_zona_resumen();
}
function seleccion_tipo_seo(el){
	mostrar_avance = 1;
	tipo_seo = el.value;
	actualizar_zona_resumen();
}
function seleccion_tipo_dominio(el){
	if(el.id=='no-dominio'){
		if(!$('capa_sugerencia_dominio').visible()){
			Effect.BlindDown('capa_sugerencia_dominio',{duration:0.2});
		}
	}
	else{
		Effect.BlindUp('capa_sugerencia_dominio',{duration:0.2});
		$('sugerencia_dominio').value = '';
	}
	mostrar_avance = 1;
	tipo_dominio = el.value;
	actualizar_zona_resumen();
	$('sugerencia_dominio').fire('sugerencia:establecida');
}
function seleccion_tipo_alojamiento(el){
	mostrar_avance = 1;
	tipo_alojamiento = el.value;
	actualizar_zona_resumen();
}
function verificar_datos_contacto(id_capa_contenedora){
	var ok = true;
	$$('#'+id_capa_contenedora+' INPUT').each(function(el){
		if(el.hasClassName('obligatorio') && (el.value.strip()=='')){
			el.addClassName('marcado_obligatorio');
			ok = false;
		}
		else{
			el.removeClassName('marcado_obligatorio');
		}
	});
	if(ok){
		if(!$('aviso_legal').checked){
			ok = false;
			alert('Debe leer y aceptar el Aviso Legal.\nLo hacemos por su seguridad.');
		}	
	}
	else{
		alert('Por favor, rellene los campos obligatorios.');
	}
	return ok;
}
function seleccion_tipo_tienda(el){
	mostrar_avance = 1;
	tipo_tienda = el.value;
	actualizar_zona_resumen();
}