var CABECERA = {};
( function(){
	
	var constantes = {};
	
	CABECERA.setConstantes = function( cons ){
		constantes = cons;
	}
	
	CABECERA.checkValorLocalizador = function(){
		var valorDefecto = $('#buscar_cabecera').attr('title');
		var valor = $('#buscar_cabecera').val();
		if( valor == valorDefecto || valor == ''){
			$('#buscar_cabecera').val(valorDefecto);
		}
	}
	
	CABECERA.eliminaValorLocalizador = function(){
		var valorDefecto = $('#buscar_cabecera').attr('title');
		var valor = $('#buscar_cabecera').val();
		if( valor == valorDefecto ){
			$('#buscar_cabecera').val('');
		}
	}

	CABECERA.buscaLocata = function(valor, evento)
	{
		if (valor.value != '')
		{
			var charCode = 0;
			if ( evento != null )
			{
				charCode = evento.keyCode;	
			}
			// Si se pulsa intro buscamos la reserva o la lupa
			if (charCode == 13) 
			{
				var expreg = /^([0-9])*$/;
				if( expreg.exec(valor.value) )
				{
					$('#form_localizador').submit();
				}else{
					$('#buscar_cabecera').val('');
				}
				return false;
			}
		}
		return true;
	};

	CABECERA.buscaconLupa = function()
	{
		if ($('#buscar_cabecera').val() != '')
		{
			var expreg = /^([0-9])*$/;
			if( expreg.exec($('#buscar_cabecera').val()) )
			{
				$('#form_localizador').submit();
			}else{
				$('#buscar_cabecera').val('');
			}
			return false;
		}
		return false;
	};
	
	CABECERA.showSubmenuCabecera = function(menu){
		CABECERA.selecOpc(menu);
		var opcPosLeft = $('#opc_' + menu ).offset().left - 5;
		var opcPosTop = $('#opc_' + menu ).offset().top;
		$('#opc_' + menu + '_sub').css('left',opcPosLeft);
		$('#opc_' + menu + '_sub').css('top',opcPosTop);
		$('#opc_' + menu + '_sub').css('display','inline');
	};
	
	CABECERA.hideSubmenuCabecera = function(menu){
		CABECERA.desSelecOpc(menu);
		$('#opc_' + menu + '_sub').css('display','none');
	};
	
	CABECERA.selecOpc = function(menu){
		$('#opc_' + menu ).addClass('opc_selec');
	}
	
	CABECERA.desSelecOpc = function(menu){
		$('#opc_' + menu ).removeClass('opc_selec');
	}
	
	
	function setValueCookie( nombre, valor ) {
		$gp.setCookie(nombre, valor, true, "/", document.location.hostname );
	}
	
	
	CABECERA.setOrigenXDefecto = function( input ){
		var valor = ( ( input==undefined || ( input!=undefined && $(input).val() == '' ) ) ? $(this).val(): $(input).val() );
		if( !constantes.ESTA_LOGUEADO ){
			setValueCookie( 'origen_defecto', valor );
		}
	}
	
	CABECERA.selectOrigenXDefecto = function( id ){
		//Si no se esta logueado y el origen seleccionado es el origen vacio o diferente al almacenado en la cookie intenta asignarle el ultimo origen almacenado en la cookie.
		var selectedOrigen = $('#' + id ).val();
		var origenXDefecto = $gp.getCookie('origen_defecto');
		if( !constantes.ESTA_LOGUEADO && ( selectedOrigen == '-' || selectedOrigen != origenXDefecto ) ){
			if( origenXDefecto.length != 0 ){
				var existeOrigenXDefecto = false; //Indica si el origen x defecto almacenado anteriormente se encuentra entre alguna de las opciones.
				//Si el origen x defecto se encuentra entre alguna de las opciones...
				//1 - lo selecionamos:
				$('#' + id + ' option').each( function(){
					if( $(this).val() == origenXDefecto ){
						$(this).attr('selected','selected');
						existeOrigenXDefecto = true;
						return;
					}
				});
				//2 - eliminamos la opcion vacía:
				if( existeOrigenXDefecto ){
					$('#' + id + ' option[value=-]').remove();
				}
			}
		}
	}
	
	//Carga el formulario de login con los valores almacenados en la cookie
	function carga_cookies() {
		$('#p_usuarioAL').val( $gp.getCookie('p_usuario') );
		$('#p_passwordAL').val( $gp.getCookie('p_password') );
		$('#recodar_pass_h').val( $gp.getCookie('recodar_pass_h') );
		if( $('#recodar_pass_h').val() != 1){
			 $('#recodar_pass').attr('checked',false);
		}
		else{
			$('#recodar_pass').attr('checked',true);
		}
	}
	
	CABECERA.login = function(){
		var usuario = $('#p_usuarioAL').val();
		var password =  $('#p_passwordAL').val();
		if( usuario.length > 2 && usuario.length < 21 && password.length > 2 && password.length < 21 ){
			$('#p_usuarioAL').val( usuario.toUpperCase() );
			$('#p_passwordAL').val( password.toUpperCase() );
			//El nombre del usuario se guarda siempre en la cookie
			setValueCookie( 'p_usuario' , usuario );
			var passwordAlmacenado = $gp.getCookie('p_password');
			//Si se ha marcado guardar la contraseña, se guarda en la coookie la contraseña
			if( $('#recodar_pass').is(':checked') ){
				savePassword();
			}
			//Si no se ha marcado guardar la contraseña y ya hay una contraseña guardada, se borra la contraseña guardada en la cookie
			else if( passwordAlmacenado.length > 0 ){
				borraPassword();
			}
			$('#formAgeLogin').submit();
		}
		else{
			 alert( constantes.TEXTOS_AGENCIA.FALTA_USU_PASS );
		}
	}
	
	function savePassword(){
		$('#recodar_pass_h').val('1');
		setValueCookie( 'p_password', 	$('#p_passwordAL').val() );
		setValueCookie( 'recodar_pass_h', $('#recodar_pass_h').val() );
	}
	
	function borraPassword(){
		$('#p_passwordAL').val('');
		$('#recodar_pass_h').val('0');
		setValueCookie( 'p_password' , '' );
		setValueCookie( 'recodar_pass_h' , '0' );
	}
	
	//Borra el password almacenado si se ha desmarcado el checkbox del guardar.
	CABECERA.checkPass = function(){
		if( !$('#recodar_pass').is(':checked') ){
			borraPassword();
		}
	}
	
	//Deja sin informar todos los campos del formulario de solicitud de acceso
	CABECERA.resetearCamposSolAcceso = function(){
		$('#solicitudAcceso input[type=text]').each( function( index, element ){
			$(element).val('');
		});
		$('#obserSA').val('');
	}
	
	function situa_cursor(){
		var usuario = $('#p_usuarioAL').val();
		if( usuario == '' ){
			var usuario = $('#p_usuarioAL').focus();
		}
		else{
			$('#p_passwordAL').focus();
		}
	}
	
	//Realiza el login al detectar la tecla 'ENTER'
	function activarEnter(){
		$(document).keydown( function(event) {
			if( event.keyCode == 13 ){ //Return
				CABECERA.login();
			}
		});
	}
	
	function desactivarEnter(){
		$(document).unbind( 'keydown' );
	}
	
	CABECERA.addColorboxAgencia = function(){
		$('#enlaceAgeViajes').colorbox({
			opacity: '0.2',
			inline: true,
			title: ' ',
			href: '#boxAgeViajes',
			onLoad: function(){
				carga_cookies();
				$('#boxAgeViajes').show();
				$('#loginAgeViajes').show();
			},
			onComplete: function(){
				situa_cursor();
				activarEnter();
			},
			onCleanup: function(){
				//Ocultamos todos los divs que puedan estar abiertos dentro del colorbox
				$('#boxAgeViajes').hide();
				$('#loginAgeViajes').hide();
				$('#solicitudAcceso').hide();
				$('#realizandoPeticion').hide();
				$('#resultadoPeticion').hide();
				$('#recuperarPassword').hide();
				
				//Vaciamos los campos de los formularios de solicitud de acceso y de recuperación de contraseña
				CABECERA.resetearCamposSolAcceso();
				CABECERA.resetearCamposRecPass();
				
				//Desactivamos la búsqueda al presionar la tecla de 'ENTER'.
				desactivarEnter();
			}
		});
	}
	
	CABECERA.cerrarColorboxAgencia = function(){
		$('#enlaceAgeViajes').colorbox.close();
	}
	
	CABECERA.mostrarSolicitudAcceso = function(){
		desactivarEnter();
		$('#loginAgeViajes').hide();
		$('#solicitudAcceso').show();
		resizeColorboxAge();
	}
	
	CABECERA.mostrarRecuperarPass = function(){
		desactivarEnter();
		$('#loginAgeViajes').hide();
		$('#recuperarPassword').show();
		resizeColorboxAge();
	}
	
	//Devuelve true si el email es valido y false en caso contrario.
	function validaEmail(email)
    {  
        var i = 1;
        var sLength = email.length;
        // look for @
        while ((i < sLength) && (email.charAt(i) != "@"))
        {
        i++
        }
        if ((i >= sLength) || (email.charAt(i) != "@")) return false;
        else i += 2;
        // look for .
        while ((i < sLength) && (email.charAt(i) != "."))
        { i++
        }
        // there must be at least one character after the .
        if ((i >= sLength - 1) || (email.charAt(i) != ".")) return false;
        else return true;
    }
	
	//Devuelve true en caso que todos los campos del formulario de solicitud de acceso esten informados correctamente y false en caso contrario
	function validaFormSolAge(){
		var valido = true;
		//Comprueba que todos los campos del formulario menos las observaciones esten informados
		$('#solicitudAcceso input[type=text]').each( function( index, element ){
			if( $(element).val().length == "" ){
				alert( constantes.TEXTOS_AGENCIA.FALTAN_CAMPOS );
				$(element).focus();
				valido = false;
				return valido;
			}
		});
		//Comprueba que el mail sea valido
		if( valido && !validaEmail( $('#emailSA').val() ) ){
			alert( constantes.TEXTOS_AGENCIA.MAIL_INVALIDO );
			 $('#emailSA').focus();
			valido = false;
		}
		return valido;
	}
	
	function mostrarLoading( idDivAEsconder ){
		$('#' + idDivAEsconder).hide();
		$('#realizandoPeticion').show();
		resizeColorboxAge();//Adapta el tamaño del colorbox en función del nuevo contenido
	}
	
	function mostrarResultadoAcceso( resultado ){
		CABECERA.resetearCamposSolAcceso();
		if( "OK" == resultado ){
			$('#textoResultadoPeticion').html( constantes.TEXTOS_AGENCIA.SOLICITUD_OK );
		}
		else{
			$('#textoResultadoPeticion').html( constantes.TEXTOS_AGENCIA.SOLICITUD_ERR );
		}
		$('#realizandoPeticion').hide();
		$('#resultadoPeticion').show();
		resizeColorboxAge();//Adapta el tamaño del colorbox en función del nuevo contenido
	}
	
	function realizarPeticionAcceso(){
		$.ajax({
			async: false,
			url: appContext + '/slt/agencia/SolicitudAlta',
			data: {
				agencia: $('#agenciaSA').val(),
				codipost: $('#codipostSA').val(),
				contacto: $('#contactoSA').val(),
				domicilio: $('#domicilioSA').val(),
				email: $('#emailSA').val(),
				gat: $('#gatSA').val(),
				localidad: $('#localidadSA').val(),
				obser: $('#obserSA').val(),
				sucursal: $('#sucursalSA').val()
			},
			dataType: 'json',
			success: function( data ){
				mostrarResultadoAcceso( data );
			},
			error: function(){
				mostrarResultadoAcceso( null );
			}
		});
	}
	
	CABECERA.enviarSolicitudAcceso = function (){
		if( validaFormSolAge() ){
			mostrarLoading( 'solicitudAcceso' );
			realizarPeticionAcceso();
		}
	}
	
	//Devuelve true en caso que todos los campos del formulario de recuperacion de password esten informados correctamente y false en caso contrario
	function validaFormRecuperarPass(){
		var valido = true;
		var vObligatorios = new Array("codUsuRP", "agenciaRP", "direcRP", "gatRP", "poblaRP", "telRP", "codPosRP", "persRP", "emailRP");
		//Comprueba que todos los campos obligatorios del formulario esten informados
		$(vObligatorios).each( function( index, idElement ){
			var element = $('#' + idElement);
			if( $(element).val().length == 0 ){
				alert( constantes.TEXTOS_AGENCIA.FALTAN_OBLIGAT );
				$(element).focus();
				valido = false;
				return valido;
			}
		});
		//Comprueba que el mail sea valido
		if( valido && !validaEmail( $('#emailRP').val() ) ){
			alert( constantes.TEXTOS_AGENCIA.MAIL_INVALIDO );
			$('#emailRP').focus();
			return false;
		}
		return valido;
	}
	
	CABECERA.resetearCamposRecPass = function(){
		$('#recuperarPassword input[type=text]').each( function( index, element ){
			$(element).val('');
		});
		$('#obsRP').val('');
	}
	
	function mostrarResultadoPass( resultado ){
		CABECERA.resetearCamposRecPass();
		if( "OK" == resultado ){
			$('#textoResultadoPeticion').html( constantes.TEXTOS_AGENCIA.SOLICITUD_OK );
		}
		else{
			$('#textoResultadoPeticion').html( constantes.TEXTOS_AGENCIA.SOLICITUD_ERR );
		}
		$('#realizandoPeticion').hide();
		$('#resultadoPeticion').show();
		resizeColorboxAge();//Adapta el tamaño del colorbox en función del nuevo contenido
	}
	
	function realizarPeticionPass(){
		$.ajax({
			async: false,
			url: appContext + '/slt/agencia/RecuperarPassword',
			data: {
				codUsu: $('#codUsuRP').val(),
				gat: $('#gatRP').val(),
				agencia: $('#agenciaRP').val(),
				direc: $('#direcRP').val(),
				pobla: $('#poblaRP').val(),
				pers: $('#persRP').val(),
				tel: $('#telRP').val(),
				email: $('#emailRP').val(),
				obs: $('#obsRP').val(),
				codPos: $('#codPosRP').val()
			},
			dataType: 'json',
			success: function( data ){
				mostrarResultadoPass( data );
			},
			error: function(){
				mostrarResultadoPass( null );
			}
		});
	}
	
	CABECERA.enviarRecuperarPass = function(){
		if( validaFormRecuperarPass() ){
			mostrarLoading( 'recuperarPassword' );
			realizarPeticionPass();
		}
	}
	
	CABECERA.mostrarLogin = function(){
		//Ocultamos todos los divs que puedan estar abiertos dentro del colorbox
		$('#solicitudAcceso').hide();
		$('#realizandoPeticion').hide();
		$('#resultadoPeticion').hide();
		$('#recuperarPassword').hide();
		//Vaciamos los campos de los formularios de solicitud de acceso y de recuperación de contraseña
		CABECERA.resetearCamposSolAcceso();
		CABECERA.resetearCamposRecPass();
		
		//Mostramos de nuevo el formulario de login
		$('#loginAgeViajes').show();
		resizeColorboxAge();//Adaptamos el tamaño del colorbox en función del nuevo contenido
		
		//Situamos el cursor
		situa_cursor();
	}
	
	function addColorboxInfoImportante(id){
		$('#' + id).colorbox({
			inline: true,
			opacity: '0.2',
			title: ' ',
			height: '650px',
			width: '982px',
			data: true,
		 	href:"#panelInfoImportante",
		 	onComplete: function(){
				if( idioma == 'es' ){
					$('#iframeImportante').attr('src','http://' + document.location.hostname + '/sltwww/st/pdf/tk268cx.pdf');
				}else{
					$('#iframeImportante').attr('src','http://' + document.location.hostname + '/sltwww/st/pdf/tk877cx.pdf');
				}
		 		$('#panelInfoImportante').show();
		 	},
		 	onCleanup: function(){
				$('#panelInfoImportante').hide();
			}
		});
	}
	
	CABECERA.addColorboxsInfoImportante = function(){
		addColorboxInfoImportante('opc_pie_8');
		addColorboxInfoImportante('opc_home_pub_infImp');
	}
	
	function resizeColorboxAge(){
		$.colorbox.resize();
		posicionarColorboxAge();
	}
	
	function posicionarColorboxAge(){
		var top = $('#boxAgeViajes').offset().top;
		$(document).scrollTop( top - 20 );
	}
})();
