// Generated by CoffeeScript 1.12.7
ez5.IconclassUtil = (function() {
  function IconclassUtil() {}

  IconclassUtil.getPreview = function(data, language) {
    var html, key, keywords, keywordsString, prefLabel, ref, ref1, ref2, ref3, that, val, xuri;
    that = this;
    html = '';
    if (data instanceof Array) {
      data = data[0];
    }
    if (!(data != null ? data.n : void 0)) {
      return false;
    }
    if (data != null ? data.txt[language] : void 0) {
      prefLabel = data != null ? data.txt[language] : void 0;
    } else {
      prefLabel = data != null ? (ref = data.txt) != null ? ref.de : void 0 : void 0;
    }
    xuri = 'https://iconclass.org/' + data.n;
    html += '<div style="font-size: 12px; color: #999;"><span class="cui-label-icon"><i class="fa  fa-external-link"></i></span>&nbsp;' + xuri + '</div>';
    html += '<h3><span class="cui-label-icon"><i class="fa  fa-info-circle"></i></span>&nbsp;' + prefLabel + '</h3>';
    keywordsString = '';
    keywords = [];
    if (data != null ? (ref1 = data.kw) != null ? ref1.language : void 0 : void 0) {
      keywords = data != null ? (ref2 = data.kw) != null ? ref2.language : void 0 : void 0;
    } else {
      keywords = data != null ? (ref3 = data.kw) != null ? ref3.de : void 0 : void 0;
    }
    for (key in keywords) {
      val = keywords[key];
      keywordsString = ' - ' + val + '<br />' + keywordsString;
    }
    if (keywordsString) {
      html += '<h4>' + $$('custom.data.type.iconclass.modal.form.popup.preview.keywords') + '</h4>' + keywordsString;
    }
    html = '<style>.iconclassTooltip { padding: 10px; min-width:200px; } .iconclassTooltip h4 { margin-bottom: 0px; }</style><div class="iconclassTooltip">' + html + '</div>';
    return html;
  };

  IconclassUtil.getConceptNameFromObject = function(object, cdata) {
    var activeFrontendLanguage, conceptName, ref, ref1, ref2;
    if (cdata != null ? cdata.frontendLanguage : void 0) {
      if ((cdata != null ? (ref = cdata.frontendLanguage) != null ? ref.length : void 0 : void 0) === 2) {
        activeFrontendLanguage = cdata.frontendLanguage;
      }
    }
    if (Array.isArray(object)) {
      object = object[0];
    }
    conceptName = '';
    if (object.txt[activeFrontendLanguage]) {
      conceptName = object.txt[activeFrontendLanguage];
    } else if (typeof iconclassInfo !== "undefined" && iconclassInfo !== null ? (ref1 = iconclassInfo.txt) != null ? ref1.de : void 0 : void 0) {
      conceptName = object.txt.de;
    } else if (typeof iconclassInfo !== "undefined" && iconclassInfo !== null ? (ref2 = iconclassInfo.txt) != null ? ref2.en : void 0 : void 0) {
      conceptName = object.txt.en;
    } else {
      conceptName = object.txt[Object.keys(object.txt)[0]];
    }
    conceptName = object.n + ' - ' + conceptName;
    return conceptName;
  };

  IconclassUtil.getStandardTextFromObject = function(context, object, cdata, databaseLanguages) {
    var _standard, activeFrontendLanguage, i, l10nObject, l10nObjectKey, l10nObjectValue, language, len, ref, shortenedDatabaseLanguages, shortenedLanguage, standardTextString;
    if (databaseLanguages == null) {
      databaseLanguages = false;
    }
    if (databaseLanguages === false) {
      databaseLanguages = ez5.loca.getDatabaseLanguages();
    }
    shortenedDatabaseLanguages = databaseLanguages.map(function(value, key, array) {
      return value.split('-').shift();
    });
    activeFrontendLanguage = null;
    if (context) {
      activeFrontendLanguage = context.getFrontendLanguage();
    }
    if (cdata != null ? cdata.frontendLanguage : void 0) {
      if ((cdata != null ? (ref = cdata.frontendLanguage) != null ? ref.length : void 0 : void 0) === 2) {
        activeFrontendLanguage = cdata.frontendLanguage;
      }
    }
    if (Array.isArray(object)) {
      object = object[0];
    }
    _standard = {};
    standardTextString = '';
    l10nObject = {};
    for (i = 0, len = databaseLanguages.length; i < len; i++) {
      language = databaseLanguages[i];
      l10nObject[language] = '';
    }
    if (object.txt[activeFrontendLanguage]) {
      standardTextString = object.txt[activeFrontendLanguage];
    } else {
      standardTextString = object.txt[Object.keys(object.txt)[0]];
    }
    standardTextString = object.n + ' - ' + standardTextString;
    for (l10nObjectKey in l10nObject) {
      l10nObjectValue = l10nObject[l10nObjectKey];
      shortenedLanguage = l10nObjectKey.split('-')[0];
      if (object.txt[shortenedLanguage]) {
        l10nObject[l10nObjectKey] = object.n + ' - ' + object.txt[shortenedLanguage];
      }
    }
    _standard.l10ntext = l10nObject;
    return _standard;
  };

  IconclassUtil.getFullTextFromObject = function(object, databaseLanguages) {
    var _fulltext, arrayValue, arrayValueOfObject, fullTextString, i, j, k, key, l, l10nObject, l10nObjectKey, l10nObjectValue, l10nObjectWithShortenedLanguages, l10nObjectWithShortenedLanguagesKey, l10nObjectWithShortenedLanguagesValue, language, len, len1, len2, len3, objectKey, objectKeys, objectValue, propertyType, ref, ref1, shortenedDatabaseLanguages, shortenedLanguage, value;
    if (databaseLanguages == null) {
      databaseLanguages = false;
    }
    if (databaseLanguages === false) {
      databaseLanguages = ez5.loca.getDatabaseLanguages();
    }
    shortenedDatabaseLanguages = databaseLanguages.map(function(value, key, array) {
      return value.split('-').shift();
    });
    if (Array.isArray(object)) {
      object = object[0];
    }
    _fulltext = {};
    fullTextString = '';
    l10nObject = {};
    l10nObjectWithShortenedLanguages = {};
    for (i = 0, len = databaseLanguages.length; i < len; i++) {
      language = databaseLanguages[i];
      l10nObject[language] = '';
    }
    for (j = 0, len1 = shortenedDatabaseLanguages.length; j < len1; j++) {
      language = shortenedDatabaseLanguages[j];
      l10nObjectWithShortenedLanguages[language] = '';
    }
    objectKeys = ["kw", "n", "txt"];
    for (key in object) {
      value = object[key];
      if (objectKeys.includes(key)) {
        propertyType = typeof value;
        if (propertyType === 'string') {
          fullTextString += value + ' ';
          for (l10nObjectWithShortenedLanguagesKey in l10nObjectWithShortenedLanguages) {
            l10nObjectWithShortenedLanguagesValue = l10nObjectWithShortenedLanguages[l10nObjectWithShortenedLanguagesKey];
            l10nObjectWithShortenedLanguages[l10nObjectWithShortenedLanguagesKey] = l10nObjectWithShortenedLanguagesValue + value + ' ';
          }
        }
        if (propertyType === 'object') {
          if (Array.isArray(object[key])) {
            ref = object[key];
            for (k = 0, len2 = ref.length; k < len2; k++) {
              arrayValue = ref[k];
              fullTextString += arrayValue + ' ';
              for (l10nObjectWithShortenedLanguagesKey in l10nObjectWithShortenedLanguages) {
                l10nObjectWithShortenedLanguagesValue = l10nObjectWithShortenedLanguages[l10nObjectWithShortenedLanguagesKey];
                l10nObjectWithShortenedLanguages[l10nObjectWithShortenedLanguagesKey] = l10nObjectWithShortenedLanguagesValue + arrayValue + ' ';
              }
            }
          } else {
            ref1 = object[key];
            for (objectKey in ref1) {
              objectValue = ref1[objectKey];
              if (Array.isArray(objectValue)) {
                for (l = 0, len3 = objectValue.length; l < len3; l++) {
                  arrayValueOfObject = objectValue[l];
                  fullTextString += arrayValueOfObject + ' ';
                  if (l10nObjectWithShortenedLanguages.hasOwnProperty(objectKey)) {
                    l10nObjectWithShortenedLanguages[objectKey] += arrayValueOfObject + ' ';
                  }
                }
              }
              if (typeof objectValue === 'string') {
                fullTextString += objectValue + ' ';
                if (l10nObjectWithShortenedLanguages.hasOwnProperty(objectKey)) {
                  l10nObjectWithShortenedLanguages[objectKey] += objectValue + ' ';
                }
              }
            }
          }
        }
      }
    }
    for (l10nObjectKey in l10nObject) {
      l10nObjectValue = l10nObject[l10nObjectKey];
      shortenedLanguage = l10nObjectKey.split('-')[0];
      if (l10nObjectWithShortenedLanguages[shortenedLanguage]) {
        l10nObject[l10nObjectKey] = l10nObjectWithShortenedLanguages[shortenedLanguage];
      }
    }
    _fulltext.text = fullTextString;
    _fulltext.l10ntext = l10nObject;
    return _fulltext;
  };

  return IconclassUtil;

})();
