/* General */

function openMsgWin(URL,name,width,height,scrollbars,otherbars) {
  if( ! width  ) { width  = screen.width*75/100 };
  if( ! height ) { height = screen.height*75/100 };
  if( ! scrollbars ) { scrollbars = 'no' };
  if( ! otherbars  ) { otherbars  = 'no' };
  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 printPartOfPage(elementId, dbname) {
  var printContent = document.getElementById(elementId);
  var windowUrl = 'about:blank';
  var windowHeight = screen.height*50/100;
  var uniqueName = new Date();
  var windowName = 'Print' + uniqueName.getTime();
  var printWindow = window.open(windowUrl, windowName, 'left=50,top=50,width=0,height='+windowHeight);
  printWindow.document.write('\
<html>\n\
 <head>\n\
  <link rel="stylesheet" type="text/css" href="http://www.ub.uni-koeln.de/stylesheet_default.css" title="stylesheet" />\n\
  <link rel="stylesheet" type="text/css" href="http://www.ub.uni-koeln.de/common/styles/neu/alle.css" title="stylesheet" />\n\
  <link type="text/css" rel="stylesheet" media="print, embossed" href="http://www.ub.uni-koeln.de/common/styles/neu/print.css" />\n\
  <link rel="stylesheet" type="text/css" href="/USB/css/ips.css" />\n\
 <\/head>\n\
 <body class="usb ips">\n\
  <div id="content" class="clearfix" name="content">\n\
   <h2>'+dbname+'<\/h2>\n\
   <div class="hitlist" style="margin-top:2em;">');
  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;
}

$(document).ready(function() {

/* Search form */

  // Kontextsensitive Suchtipps in der erweiterten Suche einblenden 
  $("input:text").focus(function() { 
    var n = $(this).attr("name");
    if (n == 'QUERY_bzAU') {
      $("#TippHeader").text("Person");
      $("#TippBody").html("<p>Nur den Namen <strong>einer</strong> Person eingeben. Außer Verfassern können Sie auch Herausgeber, Bearbeiter u.ä. suchen.</p><p>Möglichst nur den Nachnamen verwenden (ggf. mit Suche nach Titelwort kombinieren). Abgekürzte Vornamen können i.d.R. nicht gesucht werden.</p>");
      $("#SearchTipps").show();
    } else if (n == 'QUERY_azTI') {
      $("#TippHeader").text("Titelworte");
      $("#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 (in der Regel deutschsprachig, auch für fremdsprachige Literatur), die den <strong>Inhalt eines Buches</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('50');
    // 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 2px" });
      $(this).next().show('50'); 
    }
  });

/* 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;
    }
  });

/* 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}); 
    }
  });

});
