// ----- Class PostEntry -----

function PostEntry(code, name) {
  this.code = code;
  this.name = name;
}

// ----- Utilities -----

function PCF_compareCodes(postEntry1, postEntry2) {
  if (postEntry1.code < postEntry2.code) {
    return -1;
  }
  if (postEntry1.code > postEntry2.code) {
    return 1;
  }
  return 0;
}

function PCF_createOptions() {
  var pEntries = new Array();
  var i = 0;
  pEntries[i++] = new PostEntry("927", "Akrar");
  pEntries[i++] = new PostEntry("160" ,"Argir");
  pEntries[i++] = new PostEntry("165" ,"Argir (boksir)");
  pEntries[i++] = new PostEntry("726", "Ánirnar");
  pEntries[i++] = new PostEntry("727" ,"Árnafjørður");
  pEntries[i++] = new PostEntry("386" ,"Bøur");
  pEntries[i++] = new PostEntry("235" ,"Dalur");
  pEntries[i++] = new PostEntry("735" ,"Depil");
  pEntries[i++] = new PostEntry("470" ,"Eiði");
  pEntries[i++] = new PostEntry("478" ,"Elduvík");
  pEntries[i++] = new PostEntry("870" ,"Fámjin");
  pEntries[i++] = new PostEntry("825" ,"Froðba");
  pEntries[i++] = new PostEntry("530" ,"Fuglafjørður");
  pEntries[i++] = new PostEntry("535" ,"Fuglafjørður (boksir)");
  pEntries[i++] = new PostEntry("477" ,"Funningsfjørður");
  pEntries[i++] = new PostEntry("475" ,"Funningur");
  pEntries[i++] = new PostEntry("387" ,"Gásadalur");
  pEntries[i++] = new PostEntry("476" ,"Gjógv");
  pEntries[i++] = new PostEntry("625" ,"Glyvrar");
  pEntries[i++] = new PostEntry("510" ,"Gøta");
  pEntries[i++] = new PostEntry("515" ,"Gøta (boksir)");
  pEntries[i++] = new PostEntry("666" ,"Undir Gøtueiði");
  pEntries[i++] = new PostEntry("511" ,"Gøtugjógv");
  pEntries[i++] = new PostEntry("440" ,"Haldórsvík");
  pEntries[i++] = new PostEntry("785" ,"Haraldssund");
  pEntries[i++] = new PostEntry("767" ,"Hattarvík");
  pEntries[i++] = new PostEntry("695" ,"Hellurnar");
  pEntries[i++] = new PostEntry("280" ,"Hestur");
  pEntries[i++] = new PostEntry("420" ,"Hósvík");
  pEntries[i++] = new PostEntry("960" ,"Hov");
  pEntries[i++] = new PostEntry("188" ,"Hoyvík");
  pEntries[i++] = new PostEntry("796" ,"Húsar");
  pEntries[i++] = new PostEntry("230" ,"Húsavík");
  pEntries[i++] = new PostEntry("850" ,"Hvalba");
  pEntries[i++] = new PostEntry("430" ,"Hvalvík");
  pEntries[i++] = new PostEntry("740" ,"Hvannasund");
  pEntries[i++] = new PostEntry("187" ,"Hvítanes");
  pEntries[i++] = new PostEntry("494" ,"Innan Glyvur");
  pEntries[i++] = new PostEntry("180" ,"Kaldbak");
  pEntries[i++] = new PostEntry("185" ,"Kaldbaksbotnur");
  pEntries[i++] = new PostEntry("766" ,"Kirkja");
  pEntries[i++] = new PostEntry("175" ,"Kirkjubøur");
  pEntries[i++] = new PostEntry("700" ,"Klaksvík");
  pEntries[i++] = new PostEntry("710" ,"Klaksvík (boksir)");
  pEntries[i++] = new PostEntry("495" ,"Kolbeinagjógv");
  pEntries[i++] = new PostEntry("410" ,"Kollafjørður");
  pEntries[i++] = new PostEntry("285" ,"Koltur");
  pEntries[i++] = new PostEntry("780" ,"Kunoy");
  pEntries[i++] = new PostEntry("340" ,"Kvívík");
  pEntries[i++] = new PostEntry("626" ,"Lambareiði");
  pEntries[i++] = new PostEntry("627" ,"Lamba");
  pEntries[i++] = new PostEntry("438" ,"Langasandur");
  pEntries[i++] = new PostEntry("520" ,"Leirvík");
  pEntries[i++] = new PostEntry("335" ,"Leynar");
  pEntries[i++] = new PostEntry("466" ,"Ljósá");
  pEntries[i++] = new PostEntry("926" ,"Lopra");
  pEntries[i++] = new PostEntry("370" ,"Miðvágur");
  pEntries[i++] = new PostEntry("375" ,"Miðvágur (boksir)");
  pEntries[i++] = new PostEntry("797" ,"Mikladalur");
  pEntries[i++] = new PostEntry("496" ,"Morskranes");
  pEntries[i++] = new PostEntry("737" ,"Múli");
  pEntries[i++] = new PostEntry("388" ,"Mykines");
  pEntries[i++] = new PostEntry("655" ,"Nes, Eysturoy");
  pEntries[i++] = new PostEntry("925" ,"Nes, Vágur");
  pEntries[i++] = new PostEntry("437" ,"Nesvík");
  pEntries[i++] = new PostEntry("730" ,"Norðdepil");
  pEntries[i++] = new PostEntry("725" ,"Norðoyri");
  pEntries[i++] = new PostEntry("178" ,"Norðradalur");
  pEntries[i++] = new PostEntry("512" ,"Norðragøta");
  pEntries[i++] = new PostEntry("460" ,"Norðskáli");
  pEntries[i++] = new PostEntry("736" ,"Norðtoftir");
  pEntries[i++] = new PostEntry("270" ,"Nólsoy");
  pEntries[i++] = new PostEntry("690" ,"Oyndarfjørður");
  pEntries[i++] = new PostEntry("400" ,"Oyrarbakki");
  pEntries[i++] = new PostEntry("405" ,"Oyrarbakki (boksir)");
  pEntries[i++] = new PostEntry("415" ,"Oyrareingir");
  pEntries[i++] = new PostEntry("450" ,"Oyri");
  pEntries[i++] = new PostEntry("950" ,"Porkeri");
  pEntries[i++] = new PostEntry("640" ,"Rituvík");
  pEntries[i++] = new PostEntry("620" ,"Runavík");
  pEntries[i++] = new PostEntry("436" ,"Saksun");
  pEntries[i++] = new PostEntry("600" ,"Saltangará");
  pEntries[i++] = new PostEntry("610" ,"Saltangará (boksir)");
  pEntries[i++] = new PostEntry("656" ,"Saltnes");
  pEntries[i++] = new PostEntry("360" ,"Sandavágur");
  pEntries[i++] = new PostEntry("210" ,"Sandur");
  pEntries[i++] = new PostEntry("215" ,"Sandur (boksir)");
  pEntries[i++] = new PostEntry("860" ,"Sandvík");
  pEntries[i++] = new PostEntry("497" ,"Selatrað");
  pEntries[i++] = new PostEntry("416" ,"Signabøur");
  pEntries[i++] = new PostEntry("236" ,"Skarvanes");
  pEntries[i++] = new PostEntry("485" ,"Skálabotnur");
  pEntries[i++] = new PostEntry("220" ,"Skálavík");
  pEntries[i++] = new PostEntry("480" ,"Skála");
  pEntries[i++] = new PostEntry("665" ,"Skipanes");
  pEntries[i++] = new PostEntry("240" ,"Skopun");
  pEntries[i++] = new PostEntry("260" ,"Skúvoy");
  pEntries[i++] = new PostEntry("336" ,"Skælingur");
  pEntries[i++] = new PostEntry("286" ,"Stóra Dímun");
  pEntries[i++] = new PostEntry("490" ,"Strendur");
  pEntries[i++] = new PostEntry("435" ,"Streymnes");
  pEntries[i++] = new PostEntry("330" ,"Stykkið");
  pEntries[i++] = new PostEntry("970" ,"Sumba");
  pEntries[i++] = new PostEntry("186" ,"Sund");
  pEntries[i++] = new PostEntry("465" ,"Svínáir");
  pEntries[i++] = new PostEntry("765" ,"Svínoy");
  pEntries[i++] = new PostEntry("795" ,"Syðradalur, K.");
  pEntries[i++] = new PostEntry("177" ,"Syðradalur, S.");
  pEntries[i++] = new PostEntry("513" ,"Syðrugøta");
  pEntries[i++] = new PostEntry("660" ,"Søldarfjørður");
  pEntries[i++] = new PostEntry("380" ,"Sørvágur");
  pEntries[i++] = new PostEntry("445" ,"Tjørnuvík");
  pEntries[i++] = new PostEntry("650" ,"Toftir");
  pEntries[i++] = new PostEntry("100" ,"Tórshavn");
  pEntries[i++] = new PostEntry("110" ,"Tórshavn (boksir)");
  pEntries[i++] = new PostEntry("826" ,"Trongisvágur");
  pEntries[i++] = new PostEntry("798" ,"Trøllanes");
  pEntries[i++] = new PostEntry("810" ,"Tvøroyri (boksir)");
  pEntries[i++] = new PostEntry("800" ,"Tvøroyri");
  pEntries[i++] = new PostEntry("385" ,"Vatnsoyrar");
  pEntries[i++] = new PostEntry("900" ,"Vágur");
  pEntries[i++] = new PostEntry("910" ,"Vágur (boksir)");
  pEntries[i++] = new PostEntry("358" ,"Válur");
  pEntries[i++] = new PostEntry("176" ,"Velbastaður");
  pEntries[i++] = new PostEntry("350" ,"Vestmanna");
  pEntries[i++] = new PostEntry("355" ,"Vestmanna (boksir)");
  pEntries[i++] = new PostEntry("750" ,"Viðareiði");
  pEntries[i++] = new PostEntry("928" ,"Víkarbyrgi");
  pEntries[i++] = new PostEntry("645" ,"Æðuvík");
  pEntries[i++] = new PostEntry("827" ,"Øravík");

  try
{
  var selector = document.forms.postCodeFinderForm.nameSelector;
  for (var i = 0; i < pEntries.length; i++) {
    selector.options[i + 1] = new Option(pEntries[i].name, pEntries[i].code);
  }
  pEntries.sort(PCF_compareCodes);
  selector = document.forms.postCodeFinderForm.codeSelector;
  for (var i = 0; i < pEntries.length; i++) {
    selector.options[i + 1] = new Option(pEntries[i].code, pEntries[i].name);
  }
} catch(e) {}
}


// ----- Class PostCodeFinder -----

function _pcf_setResult(selector1) {
  var selector2 = null;
  if (selector1.name == "codeSelector") {
    selector2 = document.forms.postCodeFinderForm.nameSelector;
  }
  else if (selector1.name == "nameSelector") {
    selector2 = document.forms.postCodeFinderForm.codeSelector;
  }
  else {
    alert("ERROR: Wrong selector in PostCodeFinder.setResult()!");
  }
  selector2.value = selector1.options[selector1.selectedIndex].text;
}

function _pcf_initialize() {
  PCF_createOptions();
}

function _pcf_writeFormBegin() {
  var html = "<form name=\"postCodeFinderForm\">";
  return html;
}

function _pcf_writeCodeSelector() {
  var html = "<select class=\"shortinput\" type=\"select-one\" name=\"codeSelector\" onChange=\"postCodeFinder.setResult(this)\">"
    + "<option value=\"dummy\" selected=\"selected\">Postnr.</option>"
    + "</select>";
  return html;
}

function _pcf_writeNameSelector() {
  var html = "<select class=\"longinput\" type=\"select-one\" name=\"nameSelector\" onChange=\"postCodeFinder.setResult(this)\">"
    + "<option value=\"dummy\" selected=\"selected\">Staður</option>"
    + "</select>";
  return html;
}

function _pcf_writeFormEnd() {
  var html = "</form>";
  return html;
}

function _pcf_toString() {
  var html = this.writeFormBegin()
    + this.writeCodeSelector() + this.writeNameSelector()
    + this.writeFormEnd();
  return html;
}

function PostCodeFinder() {
  this.setResult = _pcf_setResult;
  this.initialize = _pcf_initialize;
  this.writeFormBegin = _pcf_writeFormBegin;
  this.writeCodeSelector = _pcf_writeCodeSelector;
  this.writeNameSelector = _pcf_writeNameSelector;
  this.writeFormEnd = _pcf_writeFormEnd;
  this.toString = _pcf_toString;
}


