﻿/**
 * Simple solution to translation problems. Might be too much for low memory systems if there are a lot of strings to translate and/or a lot of languages.
 */
var languageService = function (currentLanguage) {
	
    this.currentLanguage = currentLanguage;
    
    /** Finnish language texts */
    this.languagePropertiesFi = {
            "print": "Tulosta"
        	,"share": "Jaa"
        	,"link": "Linkki"
    		,"distance": "Matka"
			,"area": "Pinta-ala"
			,"featureInfo": "Saat tietoa kohteista klikkaamalla niitä kartalla."
			,"permalink": "Ikilinkki"
			,"plinkExplanation": "Kopioi alla oleva linkki leikepöydälle (PC-koneissa Ctrl+C, Mac-koneissa Cmd+C) ja liitä se haluamaasi paikkaan mm. sähköpostiviestiin tai kotisivullesi."
			,"zeroResults": "Valitettavasti hakuehdoilla ei löytynyt yhtään tulosta."
			,"moreResults": "Seuraavat"
			,"previousResults": "Edelliset"
			,"endResults": "Loppuun"
			,"startResults": "Alkuun"
			,"thanksFeedback": "Kiitos palautteestasi "
			,"addressNotFound": "Valitettavasti hakuehdoille ei löytynyt yhtään paikkaa. Voit yrittää tarkentaa hakuehtoja esim. Turuntie, Helsinki"
			,"ajaxLoading": "Odota hetki ..."
			,"printOpera": "Sinun pitää käsin tulostaa avattu sivu selaimesti tulostustoiminnolla."
			,"feedbackExplanation": "Täyttämällä alla olevat kentät ja painamalla 'Lähetä'-nappia voit lähettää ylläpidolle palautetta karttapalvelusta."
			,"asteriskExplanation": " - merkityt kentät ovat pakollisia."
			,"zoomExplanation": "Yrityshaku kohdistuu vain näkyvälle alueelle. Tarvittaessa selaa ja zoomaa karttaa."
			,"addressExplanation": "Aloita kirjoittamaan paikannimeä ja valitse kohde listasta. Kartta kohdistetaan valintaasi."
			,"routeExplanation": "Muista käyttää reittihaussa paikkakuntien nimiä"
			,"companyClusterExplanation": "Lähistöllä on useita yrityksiä. Valitse alla olevasta listasta yritys, jonka tiedot haluat nähdä."
			,"routeExample": "esim. Kumpulantie 3, Helsinki."
			,"routeWaypoints": "Voit lisätä ja poistaa reittipisteitä alla olevilla napeilla."
			,"resultsFound": "Tulossivu "
			,"searchExtentChange": "Haussa käytetty näkymä muuttunut. Tee tarvittaessa uusi haku."
			,"tooltip_startResults": "Alkuun"
			,"tooltip_endResults": "Loppuun"
			,"tooltip_moreResults": "Seuraavat"
			,"tooltip_previousResults": "Edelliset"
        };
        
    /** Swedish language texts */
    this.languagePropertiesSv = {
    		"print": "sv"
        	,"share": "sv"
        	,"link": "sv"
        	,"distance": "sv"
        	,"area": "sv"
    		,"featureInfo": "sv"
			,"permalink": "sv"
			,"plinkExplanation": "sv"
			,"zeroResults": "sv"
			,"moreResults": "sv"
			,"previousResults": "sv"
			,"endResults": "sv"
			,"startResults": "sv"
			,"thanksFeedback": "sv"
			,"addressNotFound": "sv"
			,"ajaxLoading": "sv"
			,"printOpera": "sv"
			,"feedbackExplanation": "sv"
			,"asteriskExplanation": "sv"
			,"zoomExplanation": "sv"
			,"addressExplanation": "sv"
			,"routeExplanation": "sv"
			,"companyClusterExplanation": "Lähistöllä on useita yrityksiä. Valitse alla olevasta listasta yritys."
			,"routeWaypoints": "sv"
			,"searchExtentChange": "sv"
				,"tooltip_startResults": "Alkuun"
					,"tooltip_endResults": "Siirry hakutulosten loppuun."
					,"tooltip_moreResults": "Seuraavat 25 hakutulosta."
					,"tooltip_previousResults": "Edelliset 25 hakutulosta."
        };
    
    /** English language texts */
    this.languagePropertiesEn = {
    		"print": "Print"
        	,"share": "Share"
        	,"link": "Link"
    		,"distance": "Distance"
			,"area": "Area"
			,"featureInfo": "Identify features by clicking items on the map."
			,"permalink": "Permalink"
			,"plinkExplanation": "Copy the link below (on PC-machines Ctrl+C, on Mac-machines Cmd+C) and attach it to a desired place e.g. your homepage or to an email message."
			,"zeroResults": "Unfortunately no results were found with the given arguments."
			,"moreResults": "Next"
			,"previousResults": "Prev."
			,"endResults": "End"
			,"startResults": "Start"
			,"thanksFeedback": "Thank you for the feedback "
			,"addressNotFound": "Unfortunately no locations were found with the given criteria."
			,"ajaxLoading": "Please wait ..."
			,"printOpera": "You have to manually print the page with your browser's print functionality."
			,"feedbackExplanation": "By filling out the form below and pushing the 'Submit'-button you can send feedback to the administration about the map service."
			,"asteriskExplanation": " - marked fields are mandatory."
			,"zoomExplanation": "Company search is only for the visible map area. Please pan and zoom the map for more results."
			,"addressExplanation": "Start writing a place name and select a place from the list. The map will be centered according to your selection."
			,"routeExplanation": "Remember to use municipality names."
				,"companyClusterExplanation": "Lähistöllä on useita yrityksiä. Valitse alla olevasta listasta haluamasi yritys."
			,"routeWaypoints": "You can add and remove waypoints with the buttons below."
			,"searchExtentChange": "The map extents have changed. Press the search button again to see new results."
				,"tooltip_startResults": "Siirry hakutulosten alkuun."
					,"tooltip_endResults": "Siirry hakutulosten loppuun."
					,"tooltip_moreResults": "Seuraavat 25 hakutulosta."
					,"tooltip_previousResults": "Edelliset 25 hakutulosta."
        };
        
    this.get = function(key) {
        var value = null;
        
        if (language == "fi") {
            value = this.languagePropertiesFi[key]; 
        } else if (language == "sv") {
            value = this.languagePropertiesSv[key];
        } else if (language == "en") {
            value = this.languagePropertiesEn[key];         
        } else {
            throw "Cannot find current language";
        }
        
        
        if (value == null) {
            return "undefined key '" + key + "' for language '" + currentLanguage + "'";
        } else {
            return value;
        }
    };
    

    
    /** Returns true if Finnish is the current language */
    this.isFiCurrentLanguage = function() {
        return (this.currentLanguage == "fi");
    };
    
    /** Returns true if Swedish is the current language */
    this.isSvCurrentLanguage = function() {
        return (this.currentLanguage == "sv");
    };
    
    /** Returns true if English is the current language */
    this.isEnCurrentLanguage = function() {
        return (this.currentLanguage == "en");
    };
	
	this.getLanguage = function(){
		if(this.isEnCurrentLanguage()){
			return "en";
		} else if(this.isSvCurrentLanguage()){
            return "sv";
        } else {
            return "fi";
        }
	};
};

var t = function(value){
	return new languageService(language).get(value);
};

