//***************************************************************************//
//***************************************************************************//
// Copyright (c) 2011 Matthias Buchholz
// IFIE Ingenieurbüro für innovative Entwicklungen
// Gustav-Meyer-Allee 25, 13355 Berlin Germany
//
// Contact: kontakt@ifie.com
//
// Author: Matthias Buchholz
//
//***************************************************************************//
//***************************************************************************//


function JLocaleRequest()
{
    var req = new JRequest({controller: null,command: 'cmdinitlocale'});

    req.onLocaleInit = function(data)
    {
        //
    };

    req.onError = function(error)
    {
        //silence error
    }

    req.processResult = function(controller, command, result)
    {
        switch(command)
        {
            case 'cmdinitlocale':
                this.onLocaleInit(result);
                break;
        }
    }

    return req;
}

function CJLocale()
{
    var locale = {};

    locale.identifier = 'de_DE';

    //localized string in current language
    locale.strings = new Array();


    locale.initialized = false;

    locale.init = function()
    {
        var loc = this;

        var req = new JLocaleRequest();
        req.onLocaleInit = function(data){loc.strings = data;loc.initialized = true;};

        req.execute();
    }

    locale.Content = function(key,args)
    {
        return this.localString('contents',key,args);
    }

    locale.Error = function(key,args)
    {
        return this.localString('errors',key,args);
    }

    locale.Label = function(key,args)
    {
        return this.localString('labels',key,args);
    }

    locale.Media = function(key,args)
    {
        return this.localString('media',key,args);
    }

    locale.Message = function(key,args)
    {
        return this.localString('messages',key,args);
    }

    locale.localString = function(type,key,args)
    {
        if(!this.initialized)
            return '';

        if(!this.strings.hasOwnProperty(type))
            return '';

        if(!this.strings[type].hasOwnProperty(key))
            return '';

        var str = this.strings[type][key];

        var plch_pos = str.toString().search('%');

        var p = 0;

        while(plch_pos > -1)
        {
            var t = str.toString().substr(plch_pos, 2);
            switch(t)
            {
                default:
                case '%s':
                    str = str.toString().replace(t, args[p++]);
                    break;
            }

            plch_pos = str.toString().search('%');
        }
        return str;
    }

    return locale;
}

$(document).ready(function()
{
    init();
    document.JLocale = new CJLocale();

    document.JLocale.init();
});
