var PoguesDispatcher = require('../dispatchers/pogues-dispatcher');
var PoguesConstants = require('../constants/pogues-constants');
var EventEmitter = require('events').EventEmitter;
var assign = require('object-assign');
var _language = 'en';

var _localDictionary;
var ActionTypes = PoguesConstants.ActionTypes;
var CHANGE_EVENT = "change";

var _dictionary = {
  phLabel: {'en': 'Enter a title for the questionnaire', 'fr': 'Entrez un titre pour le questionnaire'},
  phName:  {'en': 'Enter an ID for the questionnaire', 'fr': 'Entrez un identifiant pour le questionnaire'},
  label: {'en': 'Title', 'fr': 'Titre'},
  name:  {'en': 'Id', 'fr': 'Identifiant'},
  add: {'en': 'Add', 'fr': 'Ajouter'},
  tagline: {'en': 'Questionnaire design and test', 'fr': 'Conception et test de questionnaires'},
  introduction: {'en': 'Please specify your questionnaire', 'fr': 'Veuillez spécifier votre questionnaire'},
  errorMessageQuest: {'en': 'Could not retrieve the questionnaire', 'fr': 'Impossible de récupérer le questionnaire'},
  search: {'en': 'Search', 'fr': 'Chercher'},
  inviteExisting: {'en': 'Select an existing questionnaire', 'fr': 'Sélectionner un questionnaire existant'},
  errorMessageQuestList: {'en': 'Could not retrieve questionnaire list', 'fr': 'Impossible de récupérer la liste des questionnaires'},
  enterTitle: {'en': 'Enter a title', 'fr': 'Entrez un intitulé'},
  sequence: {'en': 'Sequence', 'fr': 'Séquence'},
  question: {'en': 'Question', 'fr': 'Question'},
  save: {'en': 'Save', 'fr': 'Sauvegarder'},
  publish: {'en': 'Publish', 'fr': 'Publier'},
  create: {'en': 'Create', 'fr': 'Créer'},
  declaration: {'en': 'Instruction', 'fr': 'Instruction'},
  create_questionnaire: {'en': 'Create a questionnaire', 'fr': 'Créer un questionnaire'},
  select_questionnaire: {'en': 'Select a questionnaire', 'fr': 'Sélectionner un questionnaire'},
  addDeclaration: {'en': 'Add an instruction', 'fr': 'Ajouter une instruction'},
  addControl: {'en': 'Add a control', 'fr': 'Ajouter un contrôle'},
  declarations: {'en': 'Instructions', 'fr': 'Instructions'},
  controls: {'en': 'Controls', 'fr': 'Controls'}
};

//initialization

setDictionary(_language);

function setDictionary(language) {
  var locale = {};
  for (var k in _dictionary) {
    locale[k] = _dictionary[k][language]
  }
  _localDictionary = locale;
}

function setLanguage(language) {
  _language = language;
  setDictionary(language);
}


var DictionaryStore = assign({}, EventEmitter.prototype, {
  emitChange: function() {
    console.log('DictionaryStore emitting event', CHANGE_EVENT);
    this.emit(CHANGE_EVENT);
  },
  getDictionary: function () {
    return _localDictionary;
  },
  setLanguage: setLanguage,
  dispatcherIndex: PoguesDispatcher.register(function(payload) {
    console.log('QuestionnaireStore received dispatched payload', payload);
    var action = payload.action; // action from HandleViewAction
    switch(action.actionType) {
      case ActionTypes.LANGUAGE_CHANGED:
        //_addSequence(payload.action.spec.text);
        setLanguage(payload.action.language);
        break;

      default:
        return true;
    }
    console.log('DictionaryStore will emit change, language is', _language);
    DictionaryStore.emitChange();
    return true;
  })
});

module.exports = DictionaryStore;

@@ -2119,16 +2119,1049 @@
 ntrols'%7D
+,%0A  questionEdition: %7B'en': 'Edit question properties', 'fr' : '%C3%89diter les caract%C3%A9ristiques de la question'%7D,%0A  numType: %7B'en': 'Number', 'fr': 'Nomber'%7D,%0A  stringType: %7B'en': 'String', 'fr': 'Cha%C3%AEne de caract%C3%A8res'%7D,%0A  choiceType: %7B'en': 'Choice', 'fr': 'Choix'%7D,%0A  QUESTIONNAIRE: %7B'en': 'Questionnaire', 'fr': 'Questionnaire'%7D,%0A  MODULE: %7B'en': 'Module', 'fr': 'Module'%7D,%0A  PARAGRAPH: %7B'en': 'Paragraph', 'fr': 'Paragraphe'%7D,%0A  SEQUENCE: %7B'en': 'Module', 'fr': 'Module'%7D,%0A  DATE: %7B'en': 'Date', 'fr': 'Date'%7D,%0A  NUMERIC: %7B'en': 'Number', 'fr': 'Nombre'%7D,%0A  TEXT: %7B'en': 'Text', 'fr': 'Texte'%7D,%0A  INSTRUCTION: %7B'en': 'Instruction', 'fr': 'Instruction'%7D,%0A  COMMENT: %7B'en': 'Comment', 'fr': 'Commentaire'%7D,%0A  HELP: %7B'en': 'Help', 'fr': 'Aide'%7D,%0A  maxLength: %7B'en': 'Length', 'fr': 'Taille'%7D,%0A  pattern: %7B'en': 'Pattern', 'fr': 'Motif'%7D,%0A  disjoignable: %7B'en': 'Detachable instruction', 'fr': 'Instruction d%C3%A9tachable'%7D,%0A  goTo: %7B'en': 'Goto', 'fr': 'Redirections'%7D,%0A  defineGoTo: %7B'en': 'Define a goto', 'fr': 'D%C3%A9finir une redirection'%7D
 %0A%7D;%0A%0A//i

Update dictionary for component edition