(function () {

/* Imports */
var Meteor = Package.meteor.Meteor;
var _ = Package.underscore._;

/* Package-scope variables */
var Helpers;

(function(){

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//                                                                                                                   //
// packages/raix_handlebar-helpers/common.js                                                                         //
//                                                                                                                   //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                                                                                                     //
// Helper scope                                                                                                      // 1
if (typeof Helpers === 'undefined') {                                                                                // 2
  Helpers = {};                                                                                                      // 3
}                                                                                                                    // 4
                                                                                                                     // 5
var languageText = {};                                                                                               // 6
                                                                                                                     // 7
// expects an array: languageText['say.hello.to.me']['en'] = 'Say hello to me:)';                                    // 8
// ex.:                                                                                                              // 9
// getText('Say.Hello.To.Me') == 'say hello to me:)'; // lowercase                                                   // 10
// getText('SAY.HELLO.TO.ME') == 'SAY HELLO TO ME:)'; // uppercase                                                   // 11
// getText('Say.hello.to.me') == 'Say hello to me:)'; // uppercase first letter, rest lowercase                      // 12
// getText('Say.Hello.To.Me') == 'Say Hello To Me:)'; // camelCase                                                   // 13
// getText('SAy.hello.to.me') == 'Say hello To me:)'; // ignore case sensitivity                                     // 14
                                                                                                                     // 15
var _languageDeps = (Meteor.isClient) ? new Deps.Dependency() : null;                                                // 16
var currentLanguage = 'en';                                                                                          // 17
                                                                                                                     // 18
// language = 'en'                                                                                                   // 19
Helpers.setLanguage = function (language) {                                                                          // 20
  if (language && language !== currentLanguage) {                                                                    // 21
    currentLanguage = language;                                                                                      // 22
    if (Meteor.isClient) _languageDeps.changed();                                                                    // 23
  }                                                                                                                  // 24
};                                                                                                                   // 25
                                                                                                                     // 26
Helpers.language = function () {                                                                                     // 27
  if (Meteor.isClient) _languageDeps.depend();                                                                       // 28
  return currentLanguage;                                                                                            // 29
};                                                                                                                   // 30
                                                                                                                     // 31
Helpers.setDictionary = function(dict) {                                                                             // 32
  languageText = dict;                                                                                               // 33
};                                                                                                                   // 34
                                                                                                                     // 35
Helpers.addDictionary = function(dict) {                                                                             // 36
  _.extend(languageText, dict);                                                                                      // 37
};                                                                                                                   // 38
                                                                                                                     // 39
// handleCase will mimic text Case making src same case as text                                                      // 40
var handleCase = function (text, src) {                                                                              // 41
  // Return lowercase                                                                                                // 42
  if (text == text.toLowerCase())                                                                                    // 43
    return src.toLowerCase();                                                                                        // 44
  // Return uppercase                                                                                                // 45
  if (text == text.toUpperCase())                                                                                    // 46
    return src.toUpperCase();                                                                                        // 47
  // Return uppercase first letter, rest lowercase                                                                   // 48
  if (text.substr(1) == text.substr(1).toLowerCase())                                                                // 49
    return src.substr(0, 1).toUpperCase() + src.substr(1).toLowerCase();                                             // 50
  // Return src withour changes                                                                                      // 51
  if (text.substr(0, 2) == text.substr(0, 2).toUpperCase())                                                          // 52
    return src;                                                                                                      // 53
  // Return CamelCase                                                                                                // 54
  return src.replace(/( [a-z])/g, function ($1) {                                                                    // 55
    return $1.toUpperCase();                                                                                         // 56
  });                                                                                                                // 57
};                                                                                                                   // 58
                                                                                                                     // 59
/**                                                                                                                  // 60
 *                                                                                                                   // 61
 * @param {string} text                                                                                              // 62
 * @param {string} [lang]                                                                                            // 63
 * @return {string}                                                                                                  // 64
 */                                                                                                                  // 65
Helpers.getText = function (text, lang) {                                                                            // 66
  var txt = text.toLowerCase();                                                                                      // 67
  var langText = languageText && languageText[txt];                                                                  // 68
  var langKey = (typeof lang === 'string') ? lang : Helpers.language();                                              // 69
  return handleCase(text, (langText) ? ( (langText[langKey]) ? langText[langKey] : langText.en) : '[' + text + ']');
};                                                                                                                   // 71
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

}).call(this);


/* Exports */
if (typeof Package === 'undefined') Package = {};
Package['raix:handlebar-helpers'] = {
  Helpers: Helpers
};

})();

//# sourceMappingURL=raix_handlebar-helpers.js.map
