-- EMU-alueen leikkirahat 1.0
-- Vaatimukset: AppleScript ja Standard Additions (Mac OS 8.5 mukana tulleet versiot tai uudemmat)
-- Skripti ei pyöristä, joten mahdolliset laskuvirheet aiheutuvat AINOASTAAN tietokoneesi liukulukutarkkuudesta.
-- Suurilla luvuilla laskiessa vastaus saattaa sisältää eksponetin muodossa E+(kokonaisluku).
-- Se tarkoittaa: kertaa kymmenen potenssiin positiivinen (kokonaisluku).

-- Muunnettaessa EMU-alueen kansallisia rahoja toisiksi kansallisiksi valuutoiksi muunnos 
-- tehdään euron kautta käyttäen kansallisten valuuttojen muunnoskertoimia. Välituloksen, 
-- joka on euroja, tulee sisältää vähintään kolme desimaalia.

property rates : ¬
   {{name:"Suomen markka", currency:"FIM", rate:5.94573}, ¬
      {name:"euro", currency:"Û", rate:1}, ¬
      {name:"Belgian frangi", currency:"BEF", rate:40.3399}, ¬
      {name:"Saksan markka", currency:"DEM", rate:1.95583}, ¬
      {name:"Espanjan peseta", currency:"ESP", rate:166.386}, ¬
      {name:"Ranskan frangi", currency:"FRF", rate:6.55957}, ¬
      {name:"Irlannin punta", currency:"IEP", rate:0.787564}, ¬
      {name:"Italian liira", currency:"ITL", rate:1936.27}, ¬
      {name:"Luxemburgin frangi", currency:"LUF", rate:40.3399}, ¬
      {name:"Alankomaiden guldeni", currency:"NLG", rate:2.20371}, ¬
      {name:"Itävallan shillinki", currency:"ATS", rate:13.7603}, ¬
      {name:"Portugalin escudo", currency:"PTE", rate:200.482}}

on run
   -- Muuttujia:
   set fromCurrency to ""
   set value to ""
   -- Laaditaan lista valuutoista, joiden kurssi on syötetty:
   set currencies to {}
   repeat with R in rates
      set currencies to currencies & currency in R
   end repeat
   -- Käyttäjältä summa ja rahayksikkö:
   repeat
      display dialog ¬
         "Anna rahamäärä yksikön kanssa. Esimerkkejä:" & return & ¬
         "102,44 Û tai 12 FIM" default answer "" buttons {"Peru", "Jatka"} default button "Jatka"
      if button returned of result is "Jatka" then
         set txt to text returned of result
         try
            set tid to AppleScript's text item delimiters
            set AppleScript's text item delimiters to " "
            set fromCurrency to second text item in txt
            set value to first text item in txt as real
            set AppleScript's text item delimiters to tid
            exit repeat
         on error
         end try
      else -- peruttu.
         exit repeat
      end if
   end repeat
   if fromCurrency is not "" then
      if value is not "" then
         my evaluate(currencies, fromCurrency, value)
      end if
   end if
   fromCurrency
end run

on evaluate(currencies, fromCurrency, value)
   set A to ""
   if fromCurrency is not "Û" then
      repeat with R in rates
         if currency in R is fromCurrency then
            set A to rate in R
            exit repeat
         end if
      end repeat
      if A is not "" then
         set euros to value / A
         my calculations(currencies, euros)
      else
         display dialog ¬
            "Tuntematon valuutta" buttons "Lopeta" default button 1
      end if
   else
      set euros to value
      my calculations(currencies, euros)
   end if
end evaluate

on calculations(currencies, euros)
   set toCurrency to (choose from list currencies with prompt "Mihin rahayksikköön muutetaan?")
   if toCurrency is not false then -- käyttäjä ei perunut.
      set toCurrency to toCurrency as string
      repeat with R in rates
         if currency in R is toCurrency then
            set A to rate in R
            exit repeat
         end if
      end repeat
      set toValue to euros * A
      set answerText to toValue & " " & toCurrency
      set answerText to answerText as string
      display dialog ¬
         "Laskun tulos on " & answerText & return & ¬
         "Voit kopioida sen Apupöydälle" & return & ¬
         "valitsemalla ”Kopioi”." buttons {"Lopeta", "Kopioi"} default button "Kopioi"
      if button returned of result is "Kopioi" then
         set the clipboard to answerText
      end if
   end if
end calculations