/* General */

function openMsgWin(URL,name,width,height,scrollbars,otherbars) {
  if( ! width  ) {
    width = window.outerWidth || document.documentElement.clientWidth || screen.width;
    width = width*85/100;
  };
  if( ! height ) {
    height = window.outerHeight || document.documentElement.clientHeight || screen.height;
    height = height*75/100;
  };
  if( ! scrollbars ) { scrollbars = 'yes' };
  if( ! otherbars  ) { otherbars  = 'yes' };
  var Win = window.open(URL,name,"width="+width+",height="+height+",top=75,left=100,scrollbars="+scrollbars+",resizable=yes,menubar="+otherbars+",toolbar="+otherbars);
  Win.focus();
}

function switchElements(id_show, id_hide) {
  document.getElementById(id_hide).style.display = 'none';
  document.getElementById(id_show).style.display = '';
}

function setPermalink(title,cgiparam) {
  document.getElementById('AddThisToolbox').setAttribute('addthis:title', title);
  document.getElementById('AddThisToolbox').setAttribute('addthis:url', 'http://www.ub.uni-koeln.de/usbportal?'+cgiparam);
  document.getElementById('Permalink').setAttribute('value', 'http://www.ub.uni-koeln.de/usbportal?'+cgiparam, 1);
  document.write('<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#username=usbportal"></script>');
  document.getElementById('AddThisToolbox').style.display = '';
}

function printPartOfPage(elementId, dbname) {
  var printContent = document.getElementById(elementId);
  var windowUrl = 'about:blank';
  var windowWidth  = window.outerWidth  || document.documentElement.clientWidth  || screen.width;
  var windowHeight = window.outerHeight || document.documentElement.clientHeight || screen.height;
  windowWidth = windowWidth*70/100;
  windowHeight = windowHeight*80/100;
  var uniqueName = new Date();
  var windowName = 'Print' + uniqueName.getTime();
  var printWindow = window.open(windowUrl, windowName, 'left=50,top=50,width='+windowWidth+',height='+windowHeight+',scrollbars=yes,menubar=yes,toolbar=yes');
  printWindow.document.write('\
<html>\n\
 <head>\n\
  <title>USB :: Detailanzeige<\/title>\n\
  <link rel="stylesheet" type="text\/css" href="\/USB\/css\/usb.css" \/>\n\
  <link rel="stylesheet" type="text\/css" href="\/USB\/css\/ips.css" \/>\n\
  <style type="text\/css">\n\
   table th, table td {font-size: 0.8em;}\n\
  <\/style>\n\
 <\/head>\n\
 <body id="web" class="ips">\n\
  <div id="Content">\n\
   <h2>'+dbname+'<\/h2>\n\
   <div class="hitlist hit" style="margin-top:2em;font-size:0.8em;">');
  printWindow.document.write(printContent.innerHTML);
  printWindow.document.write('\
   <\/div>\n\
  <\/div>\n\
 <\/body>\n\
<\/html>');
  printWindow.document.close();
  printWindow.focus();
  printWindow.print();
  printWindow.close();
}

/* Search form */

function checkIfFields(lang) {
  // prueft, ob mindestens eine Datenbank angehakt und mindestens ein Suchfeld ausgefuellt ist
  var msg = 0; // Deutsch ist Voreinstellung
  if( lang == 'en' ) msg = 1;
  var db_strings = new Array();
  db_strings[0] = "Bitte wählen Sie zumindest eine Datenbank(gruppe) aus!";
  db_strings[1] = "Please select at least one database (group)!";
  var text_strings = new Array();
  text_strings[0] = "Bitte geben Sie einen oder mehrere Suchbegriffe ein!"
  text_strings[1] = "Please enter one or more query terms!";
  if( !checkDb () ) {
    alert(db_strings[msg]);
    return false;
  }
  if( !checkText () ) {
    alert(text_strings[msg]);
    return false;
  }
  return true;
}

function checkDb () {
  var i = 0;
  while( i < document.forms['searchForm'].elements.length ) {
    if( (
         document.forms['searchForm'].elements[i].type == 'checkbox'
         || document.forms['searchForm'].elements[i].type == 'radio'
        )&& (document.forms['searchForm'].elements[i].checked ) ) {
      return true;
    }
    i++;
  }
  return false;
}

function checkText () {
  var i = 0;
  while( i < document.forms['searchForm'].elements.length ) {
    if( (document.forms['searchForm'].elements[i].type == 'text')
         && (document.forms['searchForm'].elements[i].value != "" ) ) {
      return true;
    }
    i++;
  }
  return false;
}

/* Detailanzeige: Preview von QR-Codes */
function qrPreview () {
  /* CONFIG: distance of the popup from the cursor */
  var xOffset = 5;
  var yOffset = 5;
  /* END CONFIG */

 /*
  $("a.qr-preview").hover(
    function(e) {
      this.t = this.title;
      this.title = "";
      var c = (this.t != "") ? "<br/>" + this.t : "";
      $("body").append("<p id='qr-preview'><img src='"+ this.href +"' alt='QR-Code' style='margin-bottom:5px;' />"+ c +"</p>"); 
      $("#qr-preview")
        .css("top",(e.pageY - yOffset) + "px")
        .css("left",(e.pageX + xOffset) + "px")
        .fadeIn("fast");
    },
    function() {
      this.title = this.t;
      $("#qr-preview").remove();
    }
  );
  $("a.qr-preview").mousemove(function(e) {
    $("#qr-preview")
      .css("top",(e.pageY - yOffset) + "px")
      .css("left",(e.pageX + xOffset) + "px");
  });
 */

  $("a.qr-preview").click(function(e) {
    $("body").append("<p id=\"qr\"><strong>QR-Code</strong> &nbsp; [ <a href=\"http://qrcode.wilkohartz.de/\" onclick=\"openMsgWin('','IPShelp','','','yes','yes');return true;\" target=\"IPShelp\">Reader-Software</a> ]<img src=\"/USB/img/close.png\" alt=\"Schließen\" title=\"Schließen\" class=\"closebutton\" /><br/ ><img src=\""+ this.href +"\" alt=\"QR-Code\" style=\"margin:5px 0 5px 0;\" /><br />Titel :: Bibliothek :: Standort :: Signatur</p>"); 
    $("#qr")
      .css("top",(e.pageY - yOffset) + "px")
      .css("left",(e.pageX + xOffset) + "px")
      .fadeIn("fast");
    qrRemove();
  });
};

function qrRemove () {
  $(".closebutton").click(function(e) {
    $("#qr").remove();
  });
};


$(document).ready(function() {

/* Search form */

 /* auskommentiert, da wg. Streaming ueber showsearchform() realisiert
  $('.ips ul.switchsearchform').click(function () {
    // Hide searchform
    $('.ips .searchform:visible').hide('fast');
    // Show searchform an hide link
    if ($(this).next().css('display') == 'none') {
      $(this).next().show('fast');
      $(this).hide('fast');
    }
  });

  // Weitere Suchfelder nach Klick anzeigen
  $('.ips div.switchsearchfields').click(function () {
    // Hide searchfields
    $('.ips .searchfields:visible').hide('fast');
    // Show searchfields an hide link
    if ($(this).next().css('display') == 'none') {
      $(this).next().show('fast');
      $(this).hide('fast');
    }
  });
 */

 /* auskommentiert, da nicht mehr benoetigt
  $('.ips h2.switchgroup').click(function () {
    // Hide all expanded groups
    $('.ips .dbgroup:visible').hide('fast');
    // Show or hide this group
    if ($(this).next().css('display') == 'none') {
      $(this).next().show('fast');
    }
  });
 */

  // Kontextsensitive Suchtipps in der erweiterten Suche einblenden 
  $("input:text").focus(function() { 
    var n = $(this).attr("name");
    var group = $("input.SERVICEGROUP1_SERVICEGROUP").attr("name");
    if (n == 'QUERY_bzAU') {
      $("#TippHeader").text("Person");
      $("#TippBody").html("<p>Suche nach <strong>Verfassern, Bearbeitern, Herausgebern</strong> u.a.</p><p>Es können auch mehrere Personennamen eingegeben werden. Möglichst nur den <strong>Nachnamen</strong> verwenden (ggf. mit Suche nach Titelwort kombinieren).</p><p><strong>Abgekürzte Vornamen</strong> können in der Regel nicht gesucht werden.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_azTI') {
      $("#TippHeader").text("Titelworte");
      if (group == 'SERVICEGROUP1.SERVICEGROUP.USB:AufsaetzeErw') { // Profil "Aufsaetze und mehr" (EDS)
        $("#TippBody").html("<p>Möglichst <strong>aussagekräftige</strong> Wörter aus dem Titel verwenden.</p><p>Feststehende Begriffe (<strong>Phrasen</strong>) sollten in doppelte Anführungszeichen gesetzt werden (z.B. <em>\"corporate identity\"</em>).</p><p>Der Stern (*) deckt unterschiedliche <strong>Wortendungen</strong> ab (z.B. <em>psycho*</em> findet Psychologie, Psychoanalyse, psychoanalytisch, aber nicht Psychiatrie, Psychiater).</p>");
      } else {
        $("#TippBody").html("<p>Möglichst <strong>aussagekräftige</strong> Wörter aus dem Titel verwenden (keine Artikel, Präpositionen, Konjunktionen).</p><p><strong>Wenige</strong> Suchwörter reichen in der Regel (nicht zu viele Wörter oder den ganzen Titel eingeben).</p><p>Der Stern (*) deckt unterschiedliche <strong>Wortendungen</strong> ab (z.B. <em>psycho*</em> findet Psychologie, Psychoanalyse, psychoanalytisch, aber nicht Psychiatrie, Psychiater).</p>");
      }
      $("#SearchTipps").show();
    } else if (n == 'QUERY_ubkTF') {
      $("#TippHeader").text("Kompletter Titel");
      $("#TippBody").html("<p>Bei <strong>kurzen, wenig aussagekräftigen</strong> Titeln verwenden (z.B. <em>deutsche Geschichte</em> oder <em>der spiegel</em> - ggf. den Artikel am Anfang mit eingeben).</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_ezKY') {
      $("#TippHeader").text("Schlagwörter");
      $("#TippBody").html("<p>Schlagwörter sind Begriffe, die den <strong>Inhalt eines Dokuments</strong> wiedergeben.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_hzYR') {
      $("#TippHeader").text("Erscheinungsjahr");
      $("#TippBody").html("<p>Jahr, in dem ein Werk <strong>veröffentlicht</strong> wurde.</p><p>Zur <strong>einschränkenden</strong> Suche verwenden (z.B. mit der Eingabe des Schlagwortes <em>steuerrecht</em> Erscheinungsjahr <em>2006</em> finden Sie Literatur aus dem Jahr 2006).</p><p><strong>Katalog der USB Köln:</strong><br/>Eingabe von <strong>Zeiträumen</strong> (von-bis) möglich, z.B. <em>2005-2009</em>.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_ubkSE') {
      $("#TippHeader").text("Reihe/Band");
      $("#TippBody").html("<p>Dieses Feld verwenden Sie für die Suche nach Titeln oder Bänden von Schriftenreihen und Serien.</p><p>Beispiel: <em>erdkundliches wissen</em> findet alle Titel aus der Schriftenreihe &apos;Erdkundliches Wissen&apos;, <em>erdkundliches wissen 138</em> findet Band 138 der Schriftenreihe.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_ubkSI') {
      $("#TippHeader").text("Signatur");
      $("#TippBody").html("<p>Die Signatur ist eine Zahlen-&nbsp;/ Buchstabenkombination, die in Verbindung mit dem Feld Standort den Platz eines Buches in der Bibliothek kennzeichnet.</p><p>Diese Suchmöglichkeit können Sie nur verwenden, wenn Ihnen die Signatur eines Mediums schon bekannt ist. Sie erhalten dann alle verfügbaren Angaben zum entsprechenden Titel.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_ubkNO') {
      $("#TippHeader").text("Notation");
      $("#TippBody").html("<p>Für Bücher ab Erscheinungsjahr 1997 werden Notationen vergeben.</p><p>Notationen sind Zahlenkombinationen für Fachgebiete, die Sie in der <a href=\"http://www.gbv.de/vgm/info/mitglieder/02Verbund/01Erschliessung/02Richtlinien/05Basisklassifikation/index\" target=\"_new\"><strong>Basisklassifikation</strong></a> ermitteln können.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_fzIB') {
      $("#TippHeader").text("ISBN");
      $("#TippBody").html("<p>Die ISBN dient der eindeutigen Identifizierung eines Buchs. Sie wird vom Buchhandel vergeben.</p><p>ISBN = International Standard Book Number (z.B.&nbsp;3-416-02500-8).</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_gzIS') {
      $("#TippHeader").text("ISSN");
      $("#TippBody").html("<p>Die ISSN dient der eindeutigen Identifizierung einer Zeitschrift. Sie wird vom Buchhandel vergeben.</p><p>ISSN = International Standard Serial Number (z.B.&nbsp;0723-0338).</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_czCO') {
      $("#TippHeader").text("Körperschaft");
      $("#TippBody").html("<p>Für Suche nach Staaten, Ländern, Gemeinden, Ämtern, Institutionen, Gesellschaften, Kirchen, Vereinen u.ä., die Literatur herausgeben (z.B. Gesetze, Verträge, Firmenschriften, Vorlesungsverzeichnisse, Vereinsveröffentlichungen usw.).</p><p>Beispiel: Die Suche nach <em>Kölnischer Geschichtsverein</em> im Feld </em>Körperschaft</em> findet alle vorhandenen Veröffentlichungen des Vereins, ohne dass man die genauen Titel kennen muss.</p><p>Auch Namen von <strong>Kongressen</strong> und <strong>Ausstellungen</strong> können gefunden werden.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_dzPB') {
      $("#TippHeader").text("Verlag");
      $("#TippBody").html("<p>Zur <strong>einschränkenden</strong> Suche mit einem Verleger, der ein Werk veröffentlicht hat. <strong>Verlagsort</strong> kann ebenfalls eingegeben werden (z.B. <em>tübingen narr</em> findet nur Bücher, die im Verlag Narr in Tübingen erschienen sind).</p>");
      $("#SearchTipps").show();
    }
  });

  // Suchtipps beim Verlassen des Formulars ausblenden
  //$("input:text").blur(function() { 
  // $("#SearchTipps").hide();
  //});

  // Aktionen fuer Checkbox-Gruppen fuer Datenbankauswahl in erweiterter Suche
  $("input:checkbox").click(function() { 
    var n = $(this).attr("name").split("."); 
    // z.B. $(this).attr("name")=SERVICEGROUP1.SERVICEGROUP.USB:USBKataloge oder SERVICEGROUP1.SERVICE.SEARCH_UBKSLNP
    var servicegroup = n[0]; // z.B. n[0]=SERVICEGROUP1
    var servicetype = n[1];  // z.B. n[1]=SERVICEGROUP fuer Datenbankgruppe, n[1]=SERVICE fuer einzelne Datenbank
    var servicename = n[2];  // z.B. n[2]=SEARCH_UBKSLNP
    if (servicetype == 'SERVICEGROUP'){ // falls Datenbankgruppe angeklickt wurde
      var class_service = servicegroup + "_SERVICE";  // z.B. class_service=SERVICEGROUP1_SERVICE
      if ($(this).attr("checked") == true) { var status='checked';} else { var status='';}
      // setze Status fuer alle Checkboxen mit class="SERVICEGROUP1_SERVICE"
      $("input[type='checkbox']." + class_service).attr("checked", status); 
    } else { // falls einzelne Datenbank angeklickt wurde
      var class_service = servicegroup + "_SERVICE"; // z.B. class_service=SERVICEGROUP1_SERVICE
      var class_servicegroup = servicegroup + "_SERVICEGROUP"; // z.B. class_servicegroup=SERVICEGROUP1_SERVICEGROUP
      var m = $("input:checkbox." + class_service).length; // Anzahl der Datenbanken in der Gruppe
      var n = $("input:checkbox:checked." + class_service).length; // Anzahl der angehakten Datenbanken in der Gruppe
      if ($(this).attr("checked") == true) { // falls Datenbank angehakt wurde
      	if (n == m) { // Datenbankgruppe anhaken, falls durch den Klick alle Datenbanken der Gruppe angehakt sind
          $("input[type='checkbox']." + class_servicegroup).attr("checked", "checked");
        }
      } else { // falls Datenbank abgehakt wurde
      	if (n < m) { // Datenbankgruppe abhaken, falls nicht alle Datenbanken angehakt sind
          $("input[type='checkbox']." + class_servicegroup).attr("checked", "");
        }
        // falls Datenbank auch in anderen Gruppen vorkommt, auch hier abhaken
        //$("input[type='checkbox'][name*='" + servicename + "']").attr("checked", "");
        // Problem: Gruppen werden nicht mit abgehakt => Jede Datenbank sollte daher nur in genau einer Gruppe vorkommen!!! 
      }
    }      	      	
    // $("div").text(servicegroup + " " + servicetype + " " + class_service);
  });

  // Aus- und Einklappen von Datenbankgruppen
  $('.ips label.switchdbgroup').click(function () {
    // Hide all expanded groups
    $('.ips .dynamic .switchdbgroup').css({ background:"url(/USB/img/folder.png) no-repeat 0px 2px" });
    $('.ips .dbgroup:visible').hide('fast');
    // Show this group if it is not expanded
    if ($(this).next().css('display') == 'none') { 
      $(this).next().show(); 
      $(this).css({ background:"url(/USB/img/folder-open.png) no-repeat 0px 2px" });
    }
  });

/* Trefferliste */

  // Formular nach Auswahl der Sortierung abschicken und auf den Startwert "unsortiert" zuruecksetzen
/*   auskommentiert wg. Problemen im IE
  $("#selectsorting").change(function () {
    //var selected = $(this).val();
    //alert(selected);
    $("#selectform").submit();
    $("#selectform")[0].reset();
  });
*/

  $("#selectform").submit(function () {
    var selected = $("#selectsorting").val();
    if (selected == '-1') {
      alert('Bitte geben Sie ein Sortierkriterium an.');
      return false;
    }
  });


  $("#selectremark").change(function () {
    var selected = $(this).val();
    //alert(selected);
    if (selected == 'Anderer Grund [8]') {
      $("#remarkform").html('<input type="text" id="inputremark" name="REMARK" value="" maxlength="120" size="55" />');
      $("#inputremark").focus();
    }
  });

/* DBIS-Fachlisten */

  // Aufklappen der Datenbankgruppe, fuer die eine Cookie gesetzt ist
  var dbis_cookie = $.cookie('IPS.DBIS.switchdbgroup');
  if (dbis_cookie) {
    $('.dbis h3.switchdbgroup').each(function() {
      if (this.id == dbis_cookie) {
        $(this).css({ background:"url(/USB/img/folder-open.png) no-repeat 0px 0px" });
        $(this).next().show();
      }
    });
  }

  // Aus- und Einklappen von Datenbankgruppen
  $('.dbis h3.switchdbgroup').click(function () {
    // Hide all expanded groups
    $('.dbis .switchdbgroup').css({ background:"url(/USB/img/folder.png) no-repeat 0px 0px" });
    $('.dbis .dbgroup:visible').hide('fast');
    // Loesche Cookie mit Info zur aufgeklappten Datenbankgruppe
    $.cookie('IPS.DBIS.switchdbgroup', null); 
    // Show this group if it is not expanded
    if ($(this).next().css('display') == 'none') { 
      $(this).css({ background:"url(/USB/img/folder-open.png) no-repeat 0px 0px" });
      $(this).next().show();
      // Setze Cookie mit Info zur aufgeklappten Datenbankgruppe
      $.cookie('IPS.DBIS.switchdbgroup', $(this).attr('id'), { expires: 0}); 
    }
  });

  // AddThis Fancy Lightbox Menu

  $('.sharelink').click(function()
  {
      $('.lightbox').fadeIn('fast');
      return false;
  });
  $('.lightbox_close').click(function()
  {
      $('.lightbox').fadeOut('fast');
      return false;
  });

});

