// Überprüft die Länge des eingegebenen Suchstrings
function checkSearchLen(inputfeld) {
  if (inputfeld.value.length > 200) {
    alert('Max. Anzahl der Suchzeichen überschritten! Es dürfen nicht ' +
          'mehr als 200 Zeichen für die Suche verwendet werden! Sie verwendeten: ' +
          inputfeld.value.length + ' Zeichen.');
    
    inputfeld.focus();
    inputfeld.select();
    return false;
  }
  
  return true;
}

function encURIComponent(value) {
	var neu = '';
	
	var pos = -1;
	while ((pos = value.search(/[^a-z0-9 ]/i)) != -1) {
		if (pos > 0)
			neu += value.substr(0, pos);
		
		neu += escape(value.substr(pos, 1));
		
		value = value.substr(pos + 1);
	}
	neu += value;
	
	return neu.replace(/ /g, "+");
}

// erstellt einen GET-Aufruf auf Basis des Übergebenen Formulars (form-Objekt)
function getURL(formular) {
  var url = '';
  var prefix = '?';
  
  for (var i = 0; i < formular.elements.length; i++) {
    var element = formular.elements[i];
    
    switch (element.type) {
      case 'submit': break;
      case 'checkbox':
      case 'radio':
        if (element.checked) {
          url += prefix + element.name + '=' + encURIComponent(element.value);
          prefix = '&';
        }
        break;
      default:
        if (element.value.length > 0) {
          url += prefix + element.name + '=' + encURIComponent(element.value);
          prefix = '&';
        }
    }
  }
  
  return url;
}

// Druckt die im Formular selektierten Artikel
//   der Name der Checkboxen/der Hidden-Fields muss "schluessel" lauten
function printSelected(formular) {
  var params = getURL(formular);
  
  if (params.indexOf('schluessel=') != -1)
    window.open(formular.action + params, 'print', 'width=700,height=600,menubar=yes,status=yes,resizable=yes');
  else
    alert('Bitte wählen Sie einen Artikel aus!');
  
  return false;
}

// Setzt die Selektierung im übergebenen Formular auf den übergebenen Status
function selectAllSchluessel(formular, status) {
  for(i = 0; i < formular.elements.length; i++) {
    if (formular.elements[i].name == 'schluessel')
      formular.elements[i].checked = status;
  }
}

// Selektiert alle Artikel im übergebenen Formular
function selectAll(formular) {
  selectAllSchluessel(formular, true);
}

// Deselektiert alle Artikel im übergebenen Formular
function deselectAll(formular) {
  selectAllSchluessel(formular, false);
}

// holt einen angegebenen Bereich eines Cookies
function getCookiePart(name) {
  var cookies = document.cookie.split(';');
  for (var i = 0; i < cookies.length; i++) {
    var istgleich = cookies[i].indexOf('=');
    if (istgleich > 0) {
      var partname = unescape(cookies[i].substring(0, istgleich).replace(/\s/g, ''));
    
      if (name == partname)
        return unescape(cookies[i].substring(istgleich + 1));
    }
  }
  
  return '';
}

// speichert einen angegebenen Wert in einem angegebenen Bereich eines Cookies
function setCookiePart(name, value, cc) {
  var exDate=new Date();
  exDate.setFullYear(exDate.getFullYear()+1);
  
  var nc = escape(name) + '=' + escape(value.replace(/\s+$/, ""));
  if ((document.cookie.length + nc.length + cc + 1) > 4096)
  	return false;

  document.cookie = nc + '; expires=' + (value == '' ? '0' : exDate.toGMTString());
  return true;
}

// speichert das Suchprofil im Cookie
function saveProfil(formular) {
}

// löscht das Suchprofil aus dem Cookie
function deleteProfil(formular, confirmation) {
  if (formular.profilliste.options.selectedIndex == -1) {
    alert('W&auml;hlen Sie bitte einen Profilnamen in der Liste aus!');
    formular.profilliste.focus();
    
    return;
  }

  var name = formular.profilliste.options[formular.profilliste.options.selectedIndex].text;
  
  if (confirmation == true) {
    if (confirm('Wollen Sie das Profil "' + name + '" wirklich löschen?') == true)
      setCookiePart('profil' + name, '');
  } else {
    setCookiePart('profil' + name, '');
    alert('Profil "' + name + '" gelöscht!');
  }
  
  //refreshProfils(formular);
}

function backupProfil(formular) {
	formular.server.value = "backup";

	var nickname = window.prompt('Bitte geben Sie Ihr persönliches Kürzel ein!', '');
	if (nickname != '') {
		formular.nickname.value = nickname;
		window.setTimeout('document.' + formular.name + '.submit()', 10);
	} else
		window.alert('Zum Speichern Ihrer Suchprofile am Server ist die Angabe Ihres persönlichen Kürzels notwendig!');
}

function restoreProfil(formular) {
	formular.server.value="restore";

	var nickname = window.prompt('Bitte geben Sie Ihr persönliches Kürzel ein!', '');
	if (nickname != '') {
		formular.nickname.value = nickname;
		window.setTimeout('document.' + formular.name + '.submit()', 10);
	} else
		window.alert('Zum Laden Ihrer Suchprofile vom Server ist die Angabe Ihres persönlichen Kürzels notwendig!');
}

// setzt die Felder gemäß des gewählten Profils
function setProfil(formular) {
}

// schreibt das Cookie neu
function rewriteCookie() {
  var cookies = document.cookie.split(';');
  for (var i = 0; i < cookies.length; i++) {
    var istgleich = cookies[i].indexOf('=');
    if (istgleich > 0) {
      var name = unescape(cookies[i].substring(0, istgleich).replace(/\s/g, ''));
      var wert = unescape(cookies[i].substring(istgleich + 1));
      
      if (name.substr(0, 6) == 'profil') {
  	    setCookiePart(name, wert);
  	  }
    }
  }
}

// aktualisiert die Liste der Profile
function refreshProfils(formular, first) {
  if (first != '')
    generateNewCookie();
    
  var cookies = document.cookie.split(';');
  var current = 0;

  for (var i = 0; i < formular.profilliste.options.length; i++)
    formular.profilliste.options[i] = null;

  for (var i = 0; i < cookies.length; i++) {
    var parts = cookies[i].split('=');
    
    parts[0] = unescape(parts[0].replace(/\s/g, ''));
    if ((parts[0].substr(0, 6) == 'profil') && (parts[0].length > 6)) {
      formular.profilliste.options[current] = new Option(unescape(parts[0]).substr(6));
      current++;
    }
  }

  formular.profilliste.options[current] = new Option('-------------------------------');
  
  return '';
}

// Löscht ausgewählte Zeilen, deren Werte null sind
function optimizeSelection(box) {
  for (var i = 0; i < box.options.length; i++) {
    if (box.options[i].value == '')
      box.options[i].selected = false;
  }
}

// Setzt die Datumsfelder gemäß des gewählten Datums-Drop-Down
function setDateValues(formular, von) {
}

// Setzt das Datums-Drop-Down gemäß der gewählten Datumsfelder
function setDateDefault(formular, von) {
//EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
}













// zur Übernahme der alten Cookies notwendig (bei gelegenheit löschen)
function readCookieValues(cookieKey, subKey, TZ, DSTZ) {
  var Liste = getCookiePart(cookieKey).split(DSTZ);
  for (i = 0; i < Liste.length; i++) {
    var Spalten = Liste[i].split(TZ);
    if (Spalten[0] == subKey) {
      return Spalten;
    }
  }
  return;
}

// zur Übernahme der alten Cookies notwendig (bei gelegenheit löschen)
function generateNewCookie() {
  var content = getCookiePart("PspSuchprofil");
  if (content == '')
    return;

  var didit = 0;
  var TZ = "<$>";
  var DSTZ = "<§>";

  var Profile = content.split(DSTZ);
  for (k = 0; k < Profile.length; k++) {
    if (Profile[k].length > 0) {
      var profilParam = Profile[k].split(TZ);
      var profilName = profilParam[0];

      var neu = '';
      if (profilName != '') {
        // profilName,vonzeit,biszeit,such,ressort,suchpublikation 
        Felder = readCookieValues("PspSuchprofil", profilName, TZ, DSTZ);
        
        if (Felder[1] < 100) {
          switch (Felder[1]) {
            case '1': Felder[1] = 8; break;
            case '2': Felder[1] = 7; break;
            case '3': Felder[1] = 7; break;
            case '4': Felder[1] = 6; break;
            case '5': Felder[1] = 5; break;
            case '6': Felder[1] = 4; break;
            case '7': Felder[1] = 2; break;
            case '8': Felder[1] = 1; break;
          }
        }
        neu = 'suchevon=' + Felder[1] + '&';

        if (Felder[2] < 100) {
          switch (Felder[2]) {
            case '1': Felder[2] = 7; break;
            case '2': Felder[2] = 7; break;
            case '3': Felder[2] = 6; break;
            case '4': Felder[2] = 5; break;
            case '5': Felder[2] = 4; break;
            case '6': Felder[2] = 2; break;
            case '7': Felder[2] = 1; break;
          }
        }
        neu += 'suchebis=' + Felder[2] + '&';
        neu += 'suche=' + escape(Felder[3]) + '&';

        var Ressorts = Felder[4].split("<!>");
        for (var i = 0; i < Ressorts.length; i++)
          if (Ressorts[i] != '')
            neu += 'ressort=' + escape(Ressorts[i]) + '&';
      
        var Publikationen = Felder[5].split("<!>");
        for (var i = 0; i < Publikationen.length; i++)
          if (Publikationen[i] != '')
            neu += 'publikation=' + escape(Publikationen[i]) + '&';

        setCookiePart('profil' + profilName, neu.substring(0, neu.length - 1));
        didit = 1;
      }
    }
  }
 
  setCookiePart('PspSuchprofil', '');
}
