function clearDiacritics(str) {
  
  var search = ['ą', 'ć', 'ę', 'ł', 'Ł', 'ń', 'ó', 'ś', 'Ś', 'ź', 'ż', 'Ż'];
  var replace = ['a', 'c', 'e', 'l', 'l', 'n', 'o', 's', 's', 'z', 'z', 'z'];
  var new_str = '';
  var diacritic = 0;
  
  for (var i = 0; i < str.length; i++) {
    for (var j = 0; j < search.length; j++) {
      if (str.charAt(i) == search[j]) {
        new_str += replace[j];
        diacritic = 1;
      }
    }
    if (!diacritic) {
      new_str += str.charAt(i);
    } else {
      diacritic = 0;
    }
  }
  
  return new_str;
}

function clearSpecialChars(str) {
  
  var search = ['+', '/', '\'', '&', '%'];
  var replace = ['-plus', '-', '-', 'and', 'procent'];
  var new_str = '';
  var special_chars = 0;
  
  for (var i = 0; i < str.length; i++) {
    for (var j = 0; j < search.length; j++) {
      if (str.charAt(i) == search[j]) {
        new_str += replace[j];
        special_chars = 1;
      }
    }
    if (!special_chars) {
      new_str += str.charAt(i);
    } else {
      special_chars = 0;
    }
  }
  
  return new_str;
}

function encodeString(str) {
  
  // Pozbywamy sie polskich znakow diakrytycznych
  str = clearDiacritics(str);

  // Pozbywamy sie znakow specjalnych
  str = clearSpecialChars(str);
  
  // Dla przejrzystosci wszystko z malych liter
  str = str.toLowerCase();
  
  // Zamien wszytkie niedozwolone znaki na myslniki
  str = str.replace(/[^0-9a-z-]+/, '-');

  // Zredukuj liczbę myslnikow do jednego obok siebie
  str = str.replace(/[-]+/, '-');

  // Usuwamy możliwe myslniki na poczatku i koncu
  str = str.replace(/^-/, '');
  str = str.replace(/-$/, '');

  return str;
}
