var elHash = document.location.hash;
var anteriorHash = "inicio";
var anteriorHashEmergente = "inicio";
cambiamosHash = true;
ocultarErrorJS();
rePosiciona();
reHash();
arrancarSocketCon("");
var iIE = 0; 
function reSetelHashIE(que){
	if( esNavegadorIE() ){
		// Solo procesamos este tipo de peticiones si nos encontramos en IE
		iIE++; // incrementamos este valor
		if( iIE > 1 || document.location.hash == "" || document.location.hash == "#" ){
			iIE = 2; // lo volvemos a poner a '2' para que no quede sumando toda la vida
			// solo entramos si el valor es mayor que 1, es decir, si no es la primera vez que se realiza
			reSetelHash(que);// y lo que se hace es solicitar el ritual de actualización del hash POR PULSAR "ATRÁS"
			// única y exclusivamente
		}
	}
}
function reSetelHash(que){
	if( que == undefined ){ que = "inicio"; }
	if( elHash != "#"+que ){
		// Solo procesamos este tipo de peticiones si la copia del hash es distinta a la que vamos a poner
		document.location.hash = elHash = "#"+que; // se actualiza la copia y el hash real con el nuevo
		rePosiciona(); //y se realiza una navegación forzada a la sección indicada
	}
}
function reSetHash(que){
	if( que.charAt(0) == "#" ){
		que = que.substr(1);
	}
	if( que == undefined ){ que = "inicio"; }
	if( cambiamosHash ){
		// Esta es la función TÍPICA para cambiar el hash
		elHash = "#"+que;
		if( elHash != document.location.hash ){
			actualizaAnteriorHash();
			document.location.hash = elHash;
			if( esNavegadorIE() ){
				document.getElementById("iframme").src = "iframme.php?time=" +new Date().valueOf()+":"+que+"&"+ elHash;
			}
		}
	}
}
function actualizaAnteriorHash(){
	return anteriorHash = document.location.hash.substr(1);
}
function reHash(){
	redimensionoVentana(); // también verifica el tamaño de la pantalla
	// Esta es la función que verificará si se ha cambiado el hash real (excepto en iExplorer)
	page_timer = setTimeout("reHash()", 200); //cada 200 ms se llamará a si misma
	if( elHash != document.location.hash ){
		// si los hashes concuerdan, este ciclo no continúa
		// pero si no coinciden, se solicita un cambio típico de hash
		reSetHash(document.location.hash.substr(1));
		rePosiciona(); // en este caso, también se fuerza la navegación a la sección indicada
	}
	document.getElementById('cerrarEmergente').href = "#"+anteriorHashEmergente;
}
function rePosiciona(){	
	h = document.location.hash;
	array = h.split("_");
	try {
		switch( array[0] ){
			case "":
			case "#":
			case "#inicio":
			case "#logout":
				cerrarEmergente();
				break;
			case '#iniciandosesionemal':
				document.iniciaSesion.email.value = array[1];
				darAvisoEmailMal(array);
				break;
			case '#iniciandosesionmal':
				document.iniciaSesion.email.value = array[1];
				darAvisoContraMal(array);
				break;
			case '#registrandopaso1':
				irToRegistro("registrandopaso1");
				break;
			case '#regleecondiciones':
				irToRegistro("regleecondiciones");
				break;
			case '#regleecondicionesabajo':
				irToRegistro("regleecondicionesabajo");
				break;
			case '#regacpetacondiciones':		
				irToRegistro("regacpetacondiciones");
				break;
			case '#recuperarClave':
				irToRecuperarClave("recuperarClave", array[1]);
				break;
			case '#dardebajalacuenta':
				irToDarDeBajaCuenta("dardebajalacuenta");
				break;
				
			case "#au":
			case "#vy":
			case "#sg":
			case "#wf":
				var temporal = array[0]; array[0] = ""; array[1] = array.join("_").substr(1); array[0] = temporal;
				reproducirColgado( array[0].substr(1), urlescape(array[1]) );
				break;
			
			case '#registrandopaso2':
				irToRegistro("registrandopaso2");
				break;
			case '#registrandopaso4':
				irToRegistro("registrandopaso4", h);
				break;
			case '#registrandopaso5':
				irToRegistro("registrandopaso5", h);
				break;
			case '#registrocaducado':
				irToRegistro("registrocaducado");
				break;
			case '#registrocritico':
				irToRegistro("registrocritico");
				break;
			case '#registrousado':
				irToRegistro("registrousado", h);
				break;
			case '#registrofatal':
				irToRegistro("registrofatal", h);
				break;
			case '#sugyerr':
				irToSugerenciasAndErrores(array);
				break;
			case '#quienes':
				irToQuienesSomos(array);
				break;
			case '#irablog':
				irToNuestroBlog(array);
				break;
			case '#irayuda':
				irToAyuda(array[1]);
				break;
			case '#avlegal':
				irToAvisoLegal(array);
				break;
			case "#subirMedio":
				if( aplicacionCargada ){
					irToSubirMedio();
				}
				break;
				
			case "#cargandosesion":
				cerrarEmergente();
				break;
			case "#entidad":
			case "#tuentidad":
				if( aplicacionCargada ){
					if( array.length>1 ){
						irToTuentidadDe(array[1]);
					}else{
						irToTuentidad();
					}
					cerrarEmergente();	
				}else{
					if( array.length > 1 ){
						sitioInicial = h;
						inicioVisita();
//						setTimeout('irToTrasIniciarSesion( "", "00112233445566778899AABBCCDDEEFF2012")', 200);
						return;
					}else{
						cerrarEmergente();	
					}
				}
				break;

			case "#medio":
				if( aplicacionCargada ){
					if( array.length>1 ){
						irToMedio(array[1]);
					}
					cerrarEmergente();	
				}else{
					if( array.length > 1 ){
						sitioInicial = h;
						inicioVisita();
//						setTimeout('irToTrasIniciarSesion( "", "00112233445566778899AABBCCDDEEFF2012")', 200);
						return;
					}else{
						cerrarEmergente();	
					}
				}
				break;

			case "#album":
				if( aplicacionCargada ){
					if( array.length>1 ){
						irToAlbum(array[1]);
					}
					cerrarEmergente();	
				}else{
					if( array.length > 1 ){
						sitioInicial = h;
						inicioVisita();
//						setTimeout('irToTrasIniciarSesion( "", "00112233445566778899AABBCCDDEEFF2012")', 200);
						return;
					}else{
						cerrarEmergente();	
					}
				}
				break;
				
			case "#verCuenta":
				if( aplicacionCargada ){
					verTuCuenta();
				}
				break;
			case "#creaEntidad":
				if( aplicacionCargada ){
					irToCreaEntidad();
				}
				break;
				
			case "#gestionarAtributos":
				if( aplicacionCargada ){
					irToModificaAtributos(-1);
				}
				break;

			case "#entidades":
				irToEntidades();
				break;
		}
	} catch(error) {
		emergenteAnone();
	}
//	reSetHash("inicio");
	mostrarInicioSesion();
}
function esNavegadorIE(){
	// hay muchas maneras a mi me gusta esta: este componente solo tiene Internet Explorer apartir de la versión 5.5
	if( window.ActiveXObject){ return true }else{ return false;}
}
