(function($){
    $._i18n = { trans: {}, 'default':  'en', language: 'en' };
    $.i18n = function() {
        var getTrans = function(ns, str) {
            var trans = false;
            // check if string exists in translation
            if ($._i18n.trans[$._i18n.language]
                && $._i18n.trans[$._i18n.language][ns]
                && $._i18n.trans[$._i18n.language][ns][str]) {
                trans = $._i18n.trans[$._i18n.language][ns][str];
            }
            // or exists in default
            else if ($._i18n.trans[$._i18n['default']]
                     && $._i18n.trans[$._i18n['default']][ns]
                     && $._i18n.trans[$._i18n['default']][ns][str]) {
                trans = $._i18n.trans[$._i18n['default']][ns][str];
            }
            // return trans or original string
            return trans || str;
        };
        // Set language (accepted formats: en or en-US)
        if (arguments.length < 2) {
            $._i18n.language = arguments[0];
            return $._i18n.language;
        }
        else {
            // get translation
            if (typeof(arguments[1]) == 'string') {
                var trans = getTrans(arguments[0], arguments[1]);
                // has variables for string formating
                if (arguments[2] && typeof(arguments[2]) == 'object') {
                    return $.format(trans, arguments[2]);
                }
                else {
                    return trans;
                }
            }
            // set translation
            else {
                var tmp  = arguments[0].split('.');
                var lang = tmp[0];
                var ns   = tmp[1] || 'jQuery';
                if (!$._i18n.trans[lang]) {
                    $._i18n.trans[lang] = {};
                    $._i18n.trans[lang][ns] = arguments[1];
                }
                else {
                    $.extend($._i18n.trans[lang][ns], arguments[1]);
                }
            }
        }
    };
})(jQuery);

$.i18n('en.Map2Web', {
    'verschieben': 'Move',
    'rechteckzoom': 'Rectangle-Zoom',
    'längenmessung': 'Distance measurement',
    'flächenmessung': 'Area measurement',
    'zoomtomaxextent': 'zoom to max. extent',
    'Stadtplan': 'StadtplanEN',
    'Luftbild': 'LuftbildEN',
    'Treffer':'Results',
    'alle_schliessen':'close all',
    'Page':'Page',
    'of':'of'
});

$.i18n('de.Map2Web', {
    'verschieben': 'Verschieben',
    'rechteckzoom': 'Rechteckzoom',
    'längenmessung': 'Längenmessung',
    'flächenmessung': 'Flächenmessung',
    'zoomtomaxextent': 'max. Ausdehnung zoomen',
    'Stadtplan': 'Stadtplan',
    'Luftbild': 'Luftbild',
    'Treffer':'Treffer',
    'alle_schliessen':'alle schließen',
    'Page':'Seite',
    'of':'von'
});

$.i18n('hu.Map2Web', {
    'verschieben': 'Mozgatás',
    'rechteckzoom': 'Nagyítás',
    'längenmessung': 'Távolság mérés',
    'flächenmessung': 'Terület mérés',
    'zoomtomaxextent': 'Teljes térkép',
    'Stadtplan': 'Várostérkép',
    'Luftbild': 'Légifelvétel',
    'Treffer':'Találat',
    'alle_schliessen':'alle schließen',
    'Page':'oldal',
    'of':'/'
});

$.i18n('ro.Map2Web', {
    'verschieben': 'Navigare pe hartă',
    'rechteckzoom': 'Zoom rectangular',
    'längenmessung': 'Măsurare distanţe',
    'flächenmessung': 'Măsurare arie',
    'zoomtomaxextent': 'Privire de ansamblu',
    'Treffer':'Rezultate',
    'alle_schliessen':'Închide',
    'Page':'Pagina',
    'of':'din'
});

$.i18n('it.Map2Web', {
    'verschieben': 'Sposta',
    'rechteckzoom': 'Zoom area',
    'längenmessung': 'Distance measurement',
    'flächenmessung': 'Area measurement',
    'zoomtomaxextent': 'Massima espansione zoom',
    'Stadtplan': 'Mappa',
    'Luftbild': 'LuftbildEN',
    'Treffer':'Results',
    'alle_schliessen':'close all',
    'Page':'Pagina',
    'of':'di'
});

