﻿// ----- Global properties -----

// ----- Brøv -----

var _C_i = 0;

// ----- Vektir á brøvum -----
var _LC_weights = new Array();

_LC_weights[_C_i++] = new EntrySet("50", "Mest 50 g");
_LC_weights[_C_i++] = new EntrySet("100", "Mest 100 g");
_LC_weights[_C_i++] = new EntrySet("250", "Mest 250 g");
_LC_weights[_C_i++] = new EntrySet("500", "Mest 500 g");
_LC_weights[_C_i++] = new EntrySet("1000", "Mest 1000 g");
_LC_weights[_C_i++] = new EntrySet("2000", "Mest 2000 g");

_C_i = 0;

// ------ Destinatiónir fyri brøv -----
var _LC_destinations = new Array();

_LC_destinations[_C_i++] = new EntrySet("FO", "Føroyar");
_LC_destinations[_C_i++] = new EntrySet("EU", "Evropa íroknað norðurlond");
_LC_destinations[_C_i++] = new EntrySet("XX", "Onnur lond");

// ----- Prísir á A-brøvum -----
var _LC_prices_A = new Array();
_LC_prices_A["20"] = new Array();
_LC_prices_A["100"] = new Array();
_LC_prices_A["250"] = new Array();
_LC_prices_A["500"] = new Array();
_LC_prices_A["1000"] = new Array();
_LC_prices_A["2000"] = new Array();

_LC_prices_A["20"]["FO"] = 5.50;
_LC_prices_A["20"]["EU"] = 7.50;
_LC_prices_A["20"]["XX"] = 10.00;
_LC_prices_A["100"]["FO"] = 9.00;
_LC_prices_A["100"]["EU"] = 12.00;
_LC_prices_A["100"]["XX"] = 20.00;
_LC_prices_A["250"]["FO"] = 14.00;
_LC_prices_A["250"]["EU"] = 25.00;
_LC_prices_A["250"]["XX"] = 45.00;
_LC_prices_A["500"]["FO"] = 25.00;
_LC_prices_A["500"]["EU"] = 40.00;
_LC_prices_A["500"]["XX"] = 90.00;
_LC_prices_A["1000"]["FO"] = 35.00;
_LC_prices_A["1000"]["EU"] = 70.00;
_LC_prices_A["1000"]["XX"] = 150.00;
_LC_prices_A["2000"]["FO"] = 45.00;
_LC_prices_A["2000"]["EU"] = 100.00;
_LC_prices_A["2000"]["XX"] = 250.00;

_C_i = 0;


// ----- Prísir á B-brøvum -----
var _LC_prices_B = new Array();
_LC_prices_B["20"] = new Array();
_LC_prices_B["100"] = new Array();
_LC_prices_B["250"] = new Array();
_LC_prices_B["500"] = new Array();
_LC_prices_B["1000"] = new Array();
_LC_prices_B["2000"] = new Array();

_LC_prices_B["20"]["FO"] = 0;
_LC_prices_B["20"]["EU"] = 7.00;
_LC_prices_B["20"]["XX"] = 9.00;
_LC_prices_B["100"]["FO"] = 0;
_LC_prices_B["100"]["EU"] = 10.00;
_LC_prices_B["100"]["XX"] = 17.00;
_LC_prices_B["250"]["FO"] = 0;
_LC_prices_B["250"]["EU"] = 20.00;
_LC_prices_B["250"]["XX"] = 35.00;
_LC_prices_B["500"]["FO"] = 0;
_LC_prices_B["500"]["EU"] = 30.00;
_LC_prices_B["500"]["XX"] = 70.00;
_LC_prices_B["1000"]["FO"] = 0;
_LC_prices_B["1000"]["EU"] = 50.00;
_LC_prices_B["1000"]["XX"] = 100.00;
_LC_prices_B["2000"]["FO"] = 0;
_LC_prices_B["2000"]["EU"] = 80.00;
_LC_prices_B["2000"]["XX"] = 200.00;


// ----- Links til ískoytistænastur til brøv -----
var _LC_links = "/innihald/broev/broev_i_Foeroyum.htm|Brøv í Føroyum;"
      + "/innihald/broev/broev_til_utheimin.htm|Brøv til útheimin;"
      + "/innihald/broev/iskoytistaenastur.htm|Ískoytistænastur;"
      + "/innihald/broev/blindasendingar.htm|Blindasendingar;"
      + "/innihald/broev/frimerking.htm|Frímerking;"
      + "/innihald/broev/uttanaskrift.htm|Uttanáskrift;"
      + "/innihald/broev/innballing.htm|Innballing;"
      + "/innihald/annad/endurgjaldsskylda.htm|Endurgjaldsskylda;"
      + "/innihald/annad/tollvidurskifti.htm|Tollviðurskifti";

// ----- Pakkar -----

_C_i = 0;

// ----- Vektir á pakkum í Føroyum -----
var _PC_weights_FO = new Array();

_PC_weights_FO[_C_i++] = new EntrySet("5", "Mest 5 Kg");
_PC_weights_FO[_C_i++] = new EntrySet("10", "Mest 10 Kg");
_PC_weights_FO[_C_i++] = new EntrySet("20", "Mest 20 Kg");
_PC_weights_FO[_C_i++] = new EntrySet("30", "Mest 30 Kg");
_PC_weights_FO[_C_i++] = new EntrySet("3X", "Yvir 30 Kg");


// ----- Vektir á pakkum til útlond -----
var _PC_weights_NotFO = new Array();

for (_C_i = 0; _C_i < 30; _C_i++) {
  var key = "" + (_C_i + 1);
  var value = "Mest " + (_C_i + 1) + " Kg";
  _PC_weights_NotFO[_C_i] = new EntrySet(key, value);
}

_C_i = 0;

// ----- Destinatiónir á pakkum -----
var _PC_destinations = new Array();

_PC_destinations[_C_i++] = new EntrySet("FO", "Føroyar");
_PC_destinations[_C_i++] = new EntrySet("EU", "Europa íroknað Turkaland");
_PC_destinations[_C_i++] = new EntrySet("IS", "Ísland");
_PC_destinations[_C_i++] = new EntrySet("DA", "Danmark");
_PC_destinations[_C_i++] = new EntrySet("GR", "Grønland");
_PC_destinations[_C_i++] = new EntrySet("XX", "Onnur lond");

_C_i = 0;

// ----- Prísir á pakkum í Føroyum -----
var _PC_prices_FO = new Array();

_PC_prices_FO["5"] = 66.00;
_PC_prices_FO["10"] = 78.00;
_PC_prices_FO["20"] = 105.00;
_PC_prices_FO["30"] = 132.00;
_PC_prices_FO["3X"] = "Grundgjald: 132,00 kr - Eyka fyri byrja Kg: 6,00 kr";

// ----- Prísir á A-pakkum til útlond -----
var _PC_pricesBasic_A = new Array();

_PC_pricesBasic_A["EU"] = 100.00;
_PC_pricesBasic_A["IS"] = 80.00;
_PC_pricesBasic_A["DA"] = 80.00;
_PC_pricesBasic_A["GR"] = 80.00;
_PC_pricesBasic_A["XX"] = 120.00;

var _PC_pricesExtra_A = new Array();

_PC_pricesExtra_A["EU"] = 35.00;
_PC_pricesExtra_A["IS"] = 20.00;
_PC_pricesExtra_A["DA"] = 20.00;
_PC_pricesExtra_A["GR"] = 65.00;
_PC_pricesExtra_A["XX"] = 75.00;

// ----- Prísir á B-pakkum til útlond -----
var _PC_pricesBasic_B = new Array();

_PC_pricesBasic_B["EU"] = 100.00;
_PC_pricesBasic_B["IS"] = "Bert loftvegis!";
_PC_pricesBasic_B["DA"] = 70.00;
_PC_pricesBasic_B["GR"] = 75.00;
_PC_pricesBasic_B["XX"] = 120.00;

var _PC_pricesExtra_B = new Array();

_PC_pricesExtra_B["EU"] = 20.00;
_PC_pricesExtra_B["IS"] = "Bert loftvegis!";
_PC_pricesExtra_B["DA"] = 10.00;
_PC_pricesExtra_B["GR"] = 20.00;
_PC_pricesExtra_B["XX"] = 30.00;

// ----- Links til ískoytistænastur til pakkar -----
var _PC_links = "/innihald/pakkar/pakkar_i_Foeroyum.htm|Pakkar í Føroyum;"
      + "/innihald/pakkar/pakkar_til_utheimin.htm|Pakkar til útheimin;"
      + "/innihald/frakt/skundsendingar.htm|Skundsendingar;"
      + "/innihald/pakkar/iskoytistaenastur.htm|Ískoytistænastur;"
      + "/innihald/annad/endurgjaldsskylda.htm|Endurgjaldsskylda;"
      + "/innihald/annad/tollvidurskifti.htm|Tollviðurskifti;"
      + "/innihald/pakkar/pakkaleiting.htm|Pakkaleiting";

// ----- Generellur prístekstur/viðmerking -----

var _C_pricesText = "Postgjøldini eru galdandi frá 2. januar 2006";

// ----- Utilities -----

function C_formatPrice(price) {
  if (isNaN(price)) {
    return price;
  }
  var result = "" + price;
  var decSepPos = result.indexOf(".");
  if (decSepPos < 0) {
    result += ",00";
  }
  else {
    result = result.substring(0, decSepPos) +  "," + result.substring(decSepPos + 1);
    if ((result.length - (decSepPos + 1)) < 2) {
      result += "0";
    }
  }
  return result + " kr";
}


// ----- class EntrySet -----

function _ES_toString() {
  return "Key: [" + this.key + "] - Value: [" + this.value + "]";
}

function EntrySet(key, value) {
  this.key = key;
  this.value = value;
  this.toString = _ES_toString;
}


// ----- class Calculator -----

function Calculator_writePriceTableFO() {
  var html = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"data\"><tr>\n"
    + "</tr><tr>\n"
    + "<td class=\"head\" colspan=\"3\">Postgjøld fyri brøv í Føroyum</td>"
    + "</tr><tr>\n"
    + "<th>Vekt</th>"
    + "<th>Kostnaður</th>"
  //  + "<th>B-brøv</th>"
    + "</tr>\n";
  for (var i = 0; i < _LC_weights.length; i++) {
    html += "<tr><th class=\"row\" style=\"white-space: nowrap;\">" + _LC_weights[i].value + "</th>\n";
    html += "<td class=\"dataNum\">" + C_formatPrice(_LC_prices_A[_LC_weights[i].key]["FO"]) + "</td>\n";
//    html += "<td class=\"dataNum\">" + C_formatPrice(_LC_prices_B[_LC_weights[i].key]["FO"]) + "</td></tr>\n";
  }
  html += "<tr><td class=\"data\" colspan=\"3\">" + _C_pricesText + "</td></tr></table>";
  document.write(html);
}

function Calculator_writePriceTableNotFO() {
  var html = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"data\"><tr>\n"
    + "</tr><tr>\n"
    + "<td class=\"head\" colspan=\"5\">Postgjøld fyri brøv til útheimin</td>"
    + "</tr><tr>\n"
    + "<th rowspan=\"2\">Vekt</th>"
    + "<th colspan=\"2\">A Prioritaire</th>"
    + "<th colspan=\"2\">B Economique</th>"
    + "</tr><tr>\n"
    + "<th class=\"col\">" + _LC_destinations[1].value + "</th>"
    + "<th class=\"col\">" + _LC_destinations[2].value + "</th>"
    + "<th class=\"col\">" + _LC_destinations[1].value + "</th>"
    + "<th class=\"col\">" + _LC_destinations[2].value + "</th>"
    + "</tr>\n";
  for (var i = 0; i < _LC_weights.length; i++) {
    html += "<tr><th class=\"row\" style=\"white-space: nowrap;\">" + _LC_weights[i].value + "</th>\n";
    html += "<td class=\"dataNum\">" + C_formatPrice(_LC_prices_A[_LC_weights[i].key]["EU"]) + "</td>\n";
    html += "<td class=\"dataNum\">" + C_formatPrice(_LC_prices_A[_LC_weights[i].key]["XX"]) + "</td>\n";
    html += "<td class=\"dataNum\">" + C_formatPrice(_LC_prices_B[_LC_weights[i].key]["EU"]) + "</td>\n";
    html += "<td class=\"dataNum\">" + C_formatPrice(_LC_prices_B[_LC_weights[i].key]["XX"]) + "</td></tr>\n";
  }
  html += "<tr><td class=\"data\" colspan=\"5\">" + _C_pricesText + "</td></tr></table>";
  document.write(html);
}

function Calculator_writePPriceTableFO() {
  var html = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"data\"><tr>\n"
    + "</tr><tr>\n"
    + "<td class=\"head\" colspan=\"2\">Postgjøld fyri pakkar í Føroyum</td>"
    + "</tr><tr>\n"
    + "<th>Vekt</th>"
    + "<th>Kostnaður (íroknað MVG)</th>"
    + "</tr>\n";
  for (var i = 0; i < _PC_weights_FO.length; i++) {
    html += "<tr><th class=\"row\" style=\"white-space: nowrap;\">" + _PC_weights_FO[i].value + "</th>\n";
    html += "<td class=\"dataNum\">" + C_formatPrice(_PC_prices_FO[_PC_weights_FO[i].key]) + "</td>\n";
  }
  html += "<tr><td class=\"data\" colspan=\"2\">" + _C_pricesText + "</td></tr></table>";
  document.write(html);
}

function Calculator_writePPriceTableNotFO() {
  var html = "<table cellspacing=\"1\" cellpadding=\"0\" border=\"0\" class=\"data\"><tr>\n"
    + "</tr><tr>\n"
    + "<td class=\"head\" colspan=\"5\">Postgjøld fyri pakkar til útheimin</td>"
    + "</tr><tr>\n"
    + "<th rowspan=\"2\">Stað</th>"
    + "<th colspan=\"2\">Við flogfari</th>"
    + "<th colspan=\"2\">Við skipi</th>"
    + "</tr><tr>\n"
    + "<th class=\"col\">Grundgjald</th>"
    + "<th class=\"col\">Fyri Kg</th>"
    + "<th class=\"col\">Grundgjald</th>"
    + "<th class=\"col\">Fyri Kg</th>"
    + "</tr>\n";
  for (var i = 0; i < _PC_destinations.length; i++) {
    if (_PC_destinations[i].key != "FO") { 
      html += "<tr><th class=\"row\" style=\"white-space: nowrap;\">" + _PC_destinations[i].value + "</th>\n";
      html += "<td class=\"dataNum\">" + C_formatPrice(_PC_pricesBasic_A[_PC_destinations[i].key]) + "</td>\n";
      html += "<td class=\"dataNum\">" + C_formatPrice(_PC_pricesExtra_A[_PC_destinations[i].key]) + "</td>\n";
      html += "<td class=\"dataNum\">" + C_formatPrice(_PC_pricesBasic_B[_PC_destinations[i].key]) + "</td>\n";
      html += "<td class=\"dataNum\">" + C_formatPrice(_PC_pricesExtra_B[_PC_destinations[i].key]) + "</td>\n";
    }
  }
  html += "<tr><td class=\"data\" colspan=\"5\">" + _C_pricesText + "</td></tr></table>";
  document.write(html);
}

function _c_setWeight(index) {
  this.weight = this.weights[index];
//alert(this.getWeight() + " - " + index);
}

function _c_getWeight() {
  return this.weight;
}

function _c_setDestination(index) {
  this.destination = this.destinations[index];
//alert(this.getDestination() + " - " + index);
}

function _c_getDestination() {
  return this.destination;
}

function _c_getPrice() {
  var price = new Array();
  if (this.type == "letter") {
    price["A"] = _LC_prices_A[this.weight.key][this.destination.key];
    price["B"] = _LC_prices_B[this.weight.key][this.destination.key];
  }
  else if (this.type == "package") {
    if (this.destination.key == "FO") {
      price["A"] = _PC_prices_FO[this.weight.key];
      price["B"] = "";
    }
    else {
      var priceBasicA = _PC_pricesBasic_A[this.destination.key];
      var priceBasicB = _PC_pricesBasic_B[this.destination.key];
      if (isNaN(priceBasicA)) {
        price["A"] = priceBasicA;
      }
      else {
        price["A"] = priceBasicA + this.weight.key * _PC_pricesExtra_A[this.destination.key];
      }
      if (isNaN(priceBasicB)) {
        price["B"] = priceBasicB;
      }
      else {
        price["B"] = priceBasicB + this.weight.key * _PC_pricesExtra_B[this.destination.key];
      }
    }
  }
  price["A"] = C_formatPrice(price["A"]);
  price["B"] = C_formatPrice(price["B"]);
  return price;
}

function _c_setType(calcType) {
  if (calcType == "letter") {
    this.weights = _LC_weights;
    this.destinations = _LC_destinations;
  }
  else if (calcType == "package") {
    this.weights = _PC_weights_FO;
    this.destinations = _PC_destinations;
  }
  else {
    alert("ERROR: selectCalc - illegal parameter calcType [" + calcType + "]!");
    return;
  }
  this.type = calcType;
  var radio = document.forms.calculatorForm.calcType;
  for (var i = 0; i < radio.length; i++) {
    if (radio[i].value == calcType) {
      radio[i].checked = true;
    }
  }
  var selector = document.forms.calculatorForm.weight;
  selector.length = 0;
  for (var i = 0; i < this.weights.length; i++) {
    selector.options[i] = new Option(this.weights[i].value, this.weights[i].key, (i == 0));
  }
  this.setWeight(0);
  selector = document.forms.calculatorForm.destination;
  selector.length = 0;
  for (var i = 0; i < this.destinations.length; i++) {
    selector.options[i] = new Option(this.destinations[i].value, this.destinations[i].key, (i == 0));
  }
  this.destination = this.destinations[0];
}

function _c_initialize() {
  this.setType("letter");
}

function _c_selectDestination(selectedIndex) {
  var oldDestKey = this.destination.key;
  this.setDestination(selectedIndex);
  if (oldDestKey != "FO" && this.destination.key != "FO") {
    return;
  }
  if (this.type == "package") {
    if (this.destination.key == "FO") {
      this.weights = _PC_weights_FO;
    }
    else {
      this.weights = _PC_weights_NotFO;
    } 
    var selector = document.forms.calculatorForm.weight;
    selector.length = 0;
    for (var i = 0; i < this.weights.length; i++) {
      selector.options[i] = new Option(this.weights[i].value, this.weights[i].key, (i == 0));
    }
    this.weight = this.weights[0];
  }
}

function _c_submit() {
  //  document.forms.calculatorForm.submit();

// Hack
  var url = this.formAction



  //showContent(url);
}

function _c_writeFormBegin() {
  var html = "<form name=\"calculatorForm\" action=\"" + this.formAction + "\" method=\"GET\" onSubmit=\"calculator.submit()\">\n"
    + "<input type=\"hidden\" name=\"typeText\"/>\n"
    + "<input type=\"hidden\" name=\"weightText\"/>\n"
    + "<input type=\"hidden\" name=\"destinationText\"/>\n"
     + "<input type=\"hidden\" name=\"ID\" value=\"934\"/>\n";
  return html;
}

function _c_writeRadioCalcType() {
  var html = "<input class=\"radio\" type=\"radio\" name=\"calcType\" value=\"letter\" onClick=\"calculator.setType('letter')\" checked=\"checked\"/> Bræv\n"
    + "<input class=\"radio\" type=\"radio\" name=\"calcType\" value=\"package\" onClick=\"calculator.setType('package')\"/> Pakki\n";
  return html;
}

function _c_writeSelectDestination() {
  var html = "<select class=\"longinput\" name =\"destination\" onChange=\"calculator.selectDestination(this.selectedIndex)\">\n"
    + "</select>\n";
  return html;
}

function _c_writeSelectWeight() {
  var html = "<select class=\"shortinput\" name =\"weight\" onChange=\"calculator.setWeight(this.selectedIndex)\">\n"
    + "</select>\n";
  return html;
}

function _c_writeButtonSubmit() {
  var html = "<input class=\"submit\" type=\"submit\" name=\"submitButton\" value=\" Rokna \"/>";
  return html;
}

function _c_writeFormEnd() {
  var html = "</form>";
  return html;
}

function _c_toString() {

    
var html = this.writeFormBegin()
          + "<div class=\"frontformtop\">"
          + this.writeRadioCalcType()
          + "</div>"
          + "<div class=\"frontformbtm\">"
          + this.writeSelectDestination()
          +this.writeButtonSubmit()
          + this.writeSelectWeight()
          + "</div>"
        + this.writeFormEnd();
//alert(html);
  return html;
}

function Calculator(formAction) {

  this.formAction = formAction;
  this.type = null;
  this.weight = null;
  this.destination = null;
  this.weights = null;
  this.destinations = null;
  this.setType = _c_setType;
  this.initialize = _c_initialize;
  this.setWeight = _c_setWeight;
  this.getWeight = _c_getWeight;
  this.setDestination = _c_setDestination;
  this.getDestination = _c_getDestination;
  this.selectDestination = _c_selectDestination;
  this.getPrice = _c_getPrice;
  this.submit = _c_submit;
  this.writeFormBegin = _c_writeFormBegin;
  this.writeRadioCalcType = _c_writeRadioCalcType;
  this.writeSelectDestination = _c_writeSelectDestination;
  this.writeSelectWeight = _c_writeSelectWeight;
  this.writeButtonSubmit = _c_writeButtonSubmit;
  this.writeFormEnd = _c_writeFormEnd;
  this.toString = _c_toString;
}
