// Flag de la primera carrrega de les inscripcions de l'usuari var primera_carrega = true; // Funcio jQuery d'inicialitzacio del document $(document).ready(function() { // Defininim el comportament de l'scroll per a mostrar el menu fixat a una certa altura $(window).scroll(function () { var top_limit = 0; // Mirem de calcular el top limit per mostrar la capcalera reduida // segons si tenim capcalera principal o secundaria if ($('#imatge-principal').length > 0) top_limit = $('#imatge-principal').offset().top; else top_limit = $('#imatge-secundaria').offset().top; // Adaptem la capcalera segons la posicio de l'scroll if ($(window).scrollTop() > top_limit) { $('#capcalera').addClass('scroll'); $('#contenidor-contingut').addClass('scroll'); $('#logo-titol').removeClass('col-lg-4').addClass('col-lg-3'); $('#menus').removeClass('col-lg-8').addClass('col-lg-9'); } else if($(window).scrollTop() <= 47) { $('#capcalera').removeClass('scroll'); $('#contenidor-contingut').removeClass('scroll'); $('#logo-titol').removeClass('col-lg-3').addClass('col-lg-4'); $('#menus').removeClass('col-lg-9').addClass('col-lg-8'); } }); }); // Aplicar el boto de netejar als camps de text amb la classe netejable $(document).on('input', '.netejable', function() { $(this)[mostraAmagaBotoNeteja(this.value)]('x'); }).on('mousemove', '.x', function(e) { $(this)[mostraAmagaBotoNeteja(this.offsetWidth - 35 < e.clientX - this.getBoundingClientRect().left)]('onX'); }).on('touchstart click', '.onX, .x', function(ev) { //ev.preventDefault(); $(this).removeClass('x onX').val('').change(); }); // Funcio que retorna la funcio per mostrar o amagar el boto de netejar un camp de text // valor: Valor que determina si es mostra el boto o no function mostraAmagaBotoNeteja(valor) { return valor ? 'addClass':'removeClass'; } // Funcio que mostra el dialeg de missatge // titol: Titol del missatge // missatge: Text del missatge function missatge(titol, missatge) { $('#missatge #titolMissatge').html(titol); $('#missatge div.modal-body').html(missatge); $('#missatge').modal('show'); } // Funcio que mostra el dialeg de pregunta // titol: Titol del missatge // missatge: Text del missatge // codi: Codi que cal executar en cas de que es respongui ok function pregunta(titol, missatge, codi) { $('#pregunta #titolPregunta').html(titol); $('#pregunta div.modal-body').html(missatge); $('#pregunta .btn-success').unbind('click'); $('#pregunta .btn-success').bind('click', codi); $('#pregunta').modal('show'); } // Funcio que executa el formulari de cerca // id_formulari: Identificador del formulari // on_cercar: On cal executar la cerca function executarFormulariCerca(id_formulari, on_cercar) { // Preparem les dades i executem el formulari corresponent a la seleccio if (on_cercar == 'cataleg') { var res = window.open('https://discovery.upc.edu/discovery/search?query=any,contains,' + encodeURI(jQuery('#' + id_formulari).find('#Text').val()) + '&vid=34CSUC_UPC:VU1&lang=ca'); } else location.href = 'http://bibliotecnica.upc.edu/search/node/' + encodeURI($('#' + id_formulari).find('#Text').val()); } // Funcio que canvia la seleccio del formulari de cerca // selector: Objecte HTML que ha executat l'accio function seleccionaFormulariCerca(selector) { var cercador = $(selector).parent().parent().parent(); var valor = $(selector).val(); // Posem el text de placeholder if ($(selector).val() == 'cataleg') $(cercador).find('input[type="text"]').eq(0).attr('placeholder', 'Llibres, revistes, articles, ...'); else $(cercador).find('input[type="text"]').eq(0).attr('placeholder', 'Continguts a la web'); // Posem la funcio que executara el cercador $(cercador).attr('action', 'javascript:executarFormulariCerca(\'' + $(cercador).attr('name') + '\', \'' + valor + '\');'); } // Funcio que comprova les dades del cercador // formulari: Objecte HTML del formulari function comprovarDadesCercador(formulari) { // Treiem la marca d'error de tots els controls $('.form-group').removeClass('has-error'); // Comprovem les dades de cada control i donem error en cas de detectar // algun error if (jQuery.trim($(formulari).find('#Text').val()) == '') { missatge('Error', 'Cal que introdueixis un text de cerca.'); $(formulari).find('#Text').parent().addClass('has-error'); $(formulari).find('#Text').focus(); return false; } return true; } // Mostra el menu per a dispositius mobils function mostrarAmagarMenuMobil() { $('#menu-mobil').toggleClass('obert'); } // Funcio que mostra la informacio de la cerca function mostrarInformacioCerca() { $('#informacio-cerca').modal('show'); } // Funcio que comprova les dades del formulari de login function comprovarDadesUsuari() { // Treiem la marca d'error de tots els controls $('.form-group').removeClass('has-error'); // Comprovem les dades de cada control i donem error en cas de detectar // algun error if ($.trim($('#Tipus_usuari').val()) == '') { missatge('Error', 'Cal que seleccionis el tipus d\'usuari.'); $('#Tipus_usuari').parent().addClass('has-error'); $('#Tipus_usuari').focus(); return false; } else if (($.trim($('#Tipus_usuari').val()) == 'Altres') && ($.trim($('#Nom_usuari_convidat').val()) == '')) { missatge('Error', ''); $('#Nom_usuari_convidat').parent().addClass('has-error'); $('#Nom_usuari_convidat').focus(); return false; } else if (($.trim($('#Tipus_usuari').val()) == 'Altres') && ($.trim($('#Contrasenya_convidat').val()) == '')) { missatge('Error', ''); $('#Contrasenya_convidat').parent().addClass('has-error'); $('#Contrasenya_convidat').focus(); return false; } else if (($.trim($('#Tipus_usuari').val()) == 'FUB') && ($.trim($('#Nom_usuari_FUB').val()) == '')) { missatge('Error', ''); $('#Nom_usuari_FUB').parent().addClass('has-error'); $('#Nom_usuari_FUB').focus(); return false; } else if (($.trim($('#Tipus_usuari').val()) == 'FUB') && ($.trim($('#Contrasenya_FUB').val()) == '')) { missatge('Error', ''); $('#Contrasenya_FUB').parent().addClass('has-error'); $('#Contrasenya_FUB').focus(); return false; } return true; } // Funcio que modifica el formulari de login segons el tipus d'usuari seleccionat function seleccionarTipusUsuari() { if ($.trim($('#Tipus_usuari').val()) == 'Altres') { $('#Nom_usuari_convidat').val(''); $('#Contrasenya_convidat').val(''); $('#dades-altres').removeClass('hide'); } else { $('#dades-altres').addClass('hide'); } if ($.trim($('#Tipus_usuari').val()) == 'FUB') { $('#Nom_usuari_FUB').val(''); $('#Contrasenya_FUB').val(''); $('#dades-fub').removeClass('hide'); } else { $('#dades-fub').addClass('hide'); } } // Funcio que carrega les inscripcions d'un usuari function carregarInscripcionsUsuari() { // Mostrem el carregant if (primera_carrega) { $('#inscripcions_vigents').html('
'); primera_carrega = false; } // Realitzem una peticio AJAX $.ajax({ type: 'POST', url: './carregar_inscripcions.php', data: {Nom_usuari: ''}, dataType: 'html' }).done(function(data) { // Afegim les inscripcions a la pantalla $('#inscripcions_vigents').html(data); // Adaptem les taules a versio mobils, si cal adaptarTaules(); }); } // Funcio que carrega els equipaments d'una biblioteca function carregarEquipamentsBiblioteca() { // Recuperem les sigles de la biblioteca var sigles_biblioteca = $.trim($('#Sigles_biblioteca').val()); // Si tenim sigles, recuperem els equipaments de la biblioteca if (sigles_biblioteca != '') { // Realitzem una peticio AJAX $.ajax({ type: 'POST', url: './carregar_equipaments.php', data: {Sigles: sigles_biblioteca}, dataType: 'html' }).done(function(data) { // Afegim les dades al desplegable d'equipaments $('#Id_equipament').find('option').remove(); $('#Id_equipament').append(data); }); } } // Funcio que comprova les dades del formulari d'inscripcio function comprovarDadesInscripcio() { // Expressio regular per comprovar el mobil i el correu electronic var mobil_exp = /7|6\d{8}/; var mail_exp = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; // Treiem la marca d'error de tots els controls $('.form-group').removeClass('has-error'); // Comprovem les dades de cada control i donem error en cas de detectar // algun error if ($.trim($('#Sigles_biblioteca').val()) == '') { missatge('Error', 'Cal que seleccionis una biblioteca.'); $('#Sigles_biblioteca').parent().addClass('has-error'); $('#Sigles_biblioteca').focus(); return false; } else if ($.trim($('#Id_equipament').val()).length == '') { missatge('Error', 'Cal que seleccionis un equipament.'); $('#Id_equipament').parent().addClass('has-error'); $('#Id_equipament').focus(); return false; } else if ($.trim($('#Nom').val()) == '') { missatge('Error', 'Cal que introdueixis el teu nom.'); $('#Nom').parent().addClass('has-error'); $('#Nom').focus(); return false; } else if ($.trim($('#Cognoms').val()) == '') { missatge('Error', 'Cal que introdueixis els teus cognoms.'); $('#Cognoms').parent().addClass('has-error'); $('#Cognoms').focus(); return false; } else if ($.trim($('#Mobil').val()) == '') { missatge('Error', 'Cal que introdueixis el teu mòbil.'); $('#Mobil').parent().addClass('has-error'); $('#Mobil').focus(); return false; } else if (!mobil_exp.test($.trim($('#Mobil').val()))) { missatge('Error', 'El mòbil és incorrecte.'); $('#Mobil').parent().addClass('has-error'); $('#Mobil').focus(); return false; } else if ($.trim($('#Mail').val()) == '') { missatge('Error', 'Cal que introdueixis el teu correu electrònic.'); $('#Mail').parent().addClass('has-error'); $('#Mail').focus(); return false; } else if (!mail_exp.test($.trim($('#Mail').val()))) { missatge('Error', 'El correu electrònic és incorrecte.'); $('#Mail').parent().addClass('has-error'); $('#Mail').focus(); return false; } return true; } // Funcio que confirma si cal anul.lar una inscripcio // id_inscripcio: Identificador de la inscripcio function confirmarAnullarInscripcio(id_inscripcio) { var codi = function() { anullarInscripcio(id_inscripcio); }; pregunta('Anul·lar', 'Realment vols anul·lar aquesta inscripció?', codi); } // Funcio que anul.la una inscripcio // id_inscripcio: Identificador de la inscripcio function anullarInscripcio(id_inscripcio) { // Mostrem el carregant $('#inscripcions_vigents').html(''); $.ajax({ type: 'POST', url: './anullar.php', data: {Id: id_inscripcio}, dataType: 'html' }).done(function(data) { carregarInscripcionsUsuari(); }); } // Funcio que comprova si l'usuari es pot inscriure a la cua de de l'equipament // seleccionat function comprovarInscripcioEquipament() { // Recuperem les sigles de la biblioteca var id_equipament = $.trim($('#Id_equipament').val()); // Si tenim equipament, recuperem la disponibilitat if (id_equipament != '') { // Mostrem el carregant $('.carregant').removeClass('hide'); // Realitzem una peticio AJAX $.ajax({ type: 'POST', url: './inscripcio_equipament.php', data: {Id: id_equipament}, dataType: 'html' }).done(function(data) { // Amaguem el carregant $('.carregant').addClass('hide'); // Si rebem un OK, vol dir que l'usuari es pot inscriure if (data == 'OK') { $('#formulari').removeClass('hide'); $('#no-disponible').addClass('hide'); } else { $('#formulari').addClass('hide'); $('#no-disponible').removeClass('hide'); } }); } } // Funcio per adaptar les taules a mobils function adaptarTaules() { // Funcio per adaptar taules a mobils invertint files i columnes $('.table-wrap').each(function() { var nmtTable = $(this); var nmtHeadRow = nmtTable.find('thead tr'); nmtTable.find('tbody tr').each(function() { var curRow = $(this); for (var i = 0; i < curRow.find('td').length; i++) { var rowSelector = 'td:eq(' + i + ')'; var headSelector = 'th:eq(' + i + ')'; curRow.find(rowSelector).attr('data-title', nmtHeadRow.find(headSelector).text()); } }); }); } // Funcio que recarrega la pagina en el nou idioma seleccionat // idioma: Idioma al que cal canviar function canviarIdioma(idioma) { // Sobreescrivim la cookie de l'idioma document.cookie='Llistes_espera[Idioma]=' + idioma + ';; path=/'; // Recarreguem la pagina window.location.reload(); }