var Master = Master || {};
if (Master.setLoadedClass) {
    Master.setLoadedClass('Url');
}

Master.Url = function(){
    
    var lang = 'ru';
    
    /*function implode (a) {
        var u = '';
        for (var i in a)  {
            if (a.hasOwnProperty(i)){
                u += '/' + a[i];
            }
        }
        return u;
    }*/
    
    return {
        
        js: function (script){
            return '/' + lang + '/js' + script + '.js';
        },
        
        staticJson: function (module, controller, action, params){
            
            var u = this.json(module, controller, action, params);
            
            return u.replace('.proxy', '.master.json');
        },
        
        json: function(module, controller, action, params) {
            var i;
            
            var u = '/' + lang + '/' + module;
            if (controller) {
                u += '/' + controller;
            } else {
                return u + '.proxy';
            }
            
            if (action) {
                u += '/' + action;
            } else {
                return u + '.proxy';
            }
            
            if (params && typeof (params) === 'object') {
                
                var keys = [];
                for (i in params)  {
                    if (params.hasOwnProperty(i)){
                        keys.push(i);
                    }
                }
                
                keys.sort();
                
                for (i in keys)  {
                    if (keys.hasOwnProperty(i) && params.hasOwnProperty(keys[i])){
                        u += '/' + keys[i] + '/' + params[keys[i]];
                    }
                }
            }
            return u + '.proxy';
        }
    };
}();

var Url = function (mod, ct, act, params){
    
    return {
        
        isUrl: true,
        
        staticJson: function () {
            return Master.Url.staticJson(mod, ct, act, params);
        },
        
        json: function () {
            return Master.Url.json(mod, ct, act, params);
        }
    };
};