Home | History | Annotate | Download | only in html
      1 function mergeArrays() {
      2   var arr = arguments[0] || [];
      3   for (var i = 1; i < arguments.length; i++) {
      4     arr = arr.concat(arguments[i]);
      5   }
      6   return arr;
      7 }
      8 
      9 var ALL_RESOURCES = mergeArrays(
     10   ABOUT_RESOURCES,
     11   DESIGN_RESOURCES,
     12   DISTRIBUTE_RESOURCES,
     13   GOOGLE_RESOURCES,
     14   GUIDE_RESOURCES,
     15   SAMPLES_RESOURCES,
     16   PREVIEW_RESOURCES,
     17   TOOLS_RESOURCES,
     18   TRAINING_RESOURCES,
     19   YOUTUBE_RESOURCES,
     20   BLOGGER_RESOURCES
     21 );
     22 
     23 for (var i = 0; i < ALL_RESOURCES.length; i++) {
     24   ALL_RESOURCES[i].index = i;
     25 }
     26 
     27 function mergeMaps() {
     28   var allRes = {};
     29   var offset = 0;
     30 
     31   for (var i = 0; i < arguments.length; i++) {
     32     var r = arguments[i];
     33     for (var tag in r.map) {
     34       allRes[tag] = allRes[tag] || [];
     35       allRes[tag] = allRes[tag].concat(r.map[tag].map(function(i){ return ALL_RESOURCES[i + offset]; }));
     36     }
     37     offset += r.arr.length;
     38   }
     39 
     40   return allRes;
     41 }
     42 
     43 function setFromArray(arr) {
     44   arr = arr || [];
     45   var set = {};
     46   for (var i = 0; i < arr.length; i++) {
     47     set[arr[i]] = true;
     48   }
     49   return set;
     50 }
     51 
     52 function buildResourceLookupMap(resourceDict) {
     53   var map = {};
     54   for (var key in resourceDict) {
     55     var dictForKey = {};
     56     var srcArr = resourceDict[key];
     57     for (var i = 0; i < srcArr.length; i++) {
     58       dictForKey[srcArr[i].index] = true;
     59     }
     60     map[key] = dictForKey;
     61   }
     62   return map;
     63 }
     64 
     65 // Type lookups
     66 
     67 var ALL_RESOURCES_BY_TYPE = {
     68   'about': ABOUT_RESOURCES,
     69   'design': DESIGN_RESOURCES,
     70   'distribute': DISTRIBUTE_RESOURCES,
     71   'google': GOOGLE_RESOURCES,
     72   'guide': GUIDE_RESOURCES,
     73   'samples': SAMPLES_RESOURCES,
     74   'preview': PREVIEW_RESOURCES,
     75   'tools': TOOLS_RESOURCES,
     76   'training': TRAINING_RESOURCES,
     77   'youtube': YOUTUBE_RESOURCES,
     78   'blog': BLOGGER_RESOURCES
     79 };
     80 var IS_RESOURCE_OF_TYPE = buildResourceLookupMap(ALL_RESOURCES_BY_TYPE);
     81 
     82 // Tag lookups
     83 
     84 var ALL_RESOURCES_BY_TAG = mergeMaps(
     85   {map:ABOUT_BY_TAG,arr:ABOUT_RESOURCES},
     86   {map:DESIGN_BY_TAG,arr:DESIGN_RESOURCES},
     87   {map:DISTRIBUTE_BY_TAG,arr:DISTRIBUTE_RESOURCES},
     88   {map:GOOGLE_BY_TAG,arr:GOOGLE_RESOURCES},
     89   {map:GUIDE_BY_TAG,arr:GUIDE_RESOURCES},
     90   {map:SAMPLES_BY_TAG,arr:SAMPLES_RESOURCES},
     91   {map:PREVIEW_BY_TAG,arr:PREVIEW_RESOURCES},
     92   {map:TOOLS_BY_TAG,arr:TOOLS_RESOURCES},
     93   {map:TRAINING_BY_TAG,arr:TRAINING_RESOURCES},
     94   {map:YOUTUBE_BY_TAG,arr:YOUTUBE_RESOURCES},
     95   {map:BLOGGER_BY_TAG,arr:BLOGGER_RESOURCES}
     96 );
     97 var IS_RESOURCE_TAGGED = buildResourceLookupMap(ALL_RESOURCES_BY_TAG);
     98 
     99 // URL and language lookups
    100 
    101 var ALL_RESOURCES_BY_URL = {};
    102 var ALL_RESOURCES_BY_LANG = {};
    103 
    104 for (var i = 0; i < ALL_RESOURCES.length; i++) {
    105   var res = ALL_RESOURCES[i];
    106   var lang = res.lang;
    107   if (lang) {
    108     ALL_RESOURCES_BY_LANG[lang] = ALL_RESOURCES_BY_LANG[lang] || [];
    109     ALL_RESOURCES_BY_LANG[lang].push(res);
    110   }
    111   var url = res.url;
    112   if (url) {
    113     ALL_RESOURCES_BY_URL[url] = res;
    114   }
    115 }
    116 var IS_RESOURCE_IN_LANG = buildResourceLookupMap(ALL_RESOURCES_BY_LANG);