
// TagCount object  (file: TagCount.js.php)
// Version 1.1, modified by Jon to add Array contains method to fix IE balking at .indexOf.
Array.prototype.contains = function (element) {
	for (var elementCounter = 0; elementCounter < this.length; elementCounter++) {
		if (this[elementCounter] == element) {
			return true;
		}
	}
	return false;
}
function TagCount() {

  // private variables
  var keepZeros  = false;       // bool

  // public variables
  this.tags       = new Array;
  this.lexias     = new Object;  // format: this.lexias['tagName'] = ##
  this.documents  = new Object;  // format: this.documents['tagName'] = ##
  this.idFromTag  = new Object;  // format: this.idFromTag['tagName'] = ##

  // public functions

  this.addTag = function (tagName, numLexias, numDocuments, tagId) {
  	if ( this.tags.contains(tagName) ) return;  // no duplicates
  	this.tags.push(tagName);
    if (keepZeros) {
      this.lexias[tagName] = (null == numLexias) ? 0 : numLexias;
      this.documents[tagName] = (null == numDocuments) ? 0 : numDocuments;
    } else {
      if (null != typeof(numLexias) && numLexias > 0) this.lexias[tagName] = numLexias;
      if (null != typeof(numLexias) && numLexias > 0) this.documents[tagName] = numDocuments;
    }
    if (typeof(tagId) == 'number') {
    	tagId = parseInt(tagId);
    	this.idFromTag[tagName] = tagId;
    }
 	if (keepZeros || this.lexias[tagName] || this.documents[tagName]) return true;
    return false;
  }

  this.zeros = function (bool) {
    keepZeros = (true == bool) ? true : false;
    var x;
    if (!keepZeros) {
      for (x in this.lexias) {
        if (this.lexias[x] == 0) delete this.lexias[x];
      }
      for (x in this.documents) {
        if (this.documents[x] == 0) delete this.documents[x];
      }
    }
  }

  this.makeAlphabetical = function() {
  	 this.tags.sort(function(x,y){
      var a = String(x).toUpperCase();
      var b = String(y).toUpperCase();
      if (a > b)
         return 1
      if (a < b)
         return -1
      return 0;
     });  // case insensitive
  }

  this.getNumLexias = function (tagName) {
    return (this.lexias[tagName]) ? this.lexias[tagName] : false;
  }

  this.getNumDocuments = function (tagName) {
    return (this.documents[tagName]) ? this.documents[tagName] : false;
  }

  this.getTagFromId = function (tagId) {
  	 tagId = parseInt(tagId);
  	 for (var a in this.idFromTag) {
  	 	if (parseInt(this.idFromTag[a]) == tagId) {
  	 		return a;
  	 	}
  	 }
  	 return false;
  }

  this.getIdFromTag = function (tagName) {
  	 return (typeof(this.idFromTag[tagName]) != 'undefined') ? this.idFromTag[tagName] : false;
  }

  this.addAmountToLexias = function (tagName, myNum) {
    if (this.lexias[tagName] || this.addTag(tagName)) {
      if (null == myNum) myNum = 1;
      if (this.lexias[tagName]) this.lexias[tagName] = this.lexias[tagName] + myNum;
    }
  }

  this.addAmountToDocuments = function (tagName, myNum) {
    if (this.documents[tagName] || this.addTag(tagName)) {
      if (null == myNum) myNum = 1;
      if (this.documents[tagName]) this.documents[tagName] = this.documents[tagName] + myNum;
    }
  }

} // end object

// add content to object
var numTaggedWith = new TagCount();

numTaggedWith.addTag('adaptable', 1, 1, 1628);
numTaggedWith.addTag('agriculture', 1, 1, 2333);
numTaggedWith.addTag('apartments', 1, 1, 106);
numTaggedWith.addTag('Apple', 1, 1, 1641);
numTaggedWith.addTag('archival', 1, 1, 169);
numTaggedWith.addTag('art', 14, 5, 265);
numTaggedWith.addTag('art history', 1, 1, 414);
numTaggedWith.addTag('artifacts', 1, 1, 1074);
numTaggedWith.addTag('artwork', 2, 2, 65);
numTaggedWith.addTag('asynchronous', 4, 1, 1881);
numTaggedWith.addTag('attribution', 1, 1, 2429);
numTaggedWith.addTag('audio', 1, 1, 176);
numTaggedWith.addTag('authorial', 1, 1, 88);
numTaggedWith.addTag('browser', 1, 1, 50);
numTaggedWith.addTag('bugs', 1, 1, 2425);
numTaggedWith.addTag('capitalism', 1, 1, 1399);
numTaggedWith.addTag('caption', 1, 1, 96);
numTaggedWith.addTag('capture', 1, 1, 89);
numTaggedWith.addTag('care', 1, 1, 2350);
numTaggedWith.addTag('catchment', 2, 1, 2340);
numTaggedWith.addTag('channel', 1, 1, 101);
numTaggedWith.addTag('choices', 1, 1, 56);
numTaggedWith.addTag('citation', 2, 1, 2114);
numTaggedWith.addTag('civilization', 1, 1, 2432);
numTaggedWith.addTag('clown', 1, 1, 104);
numTaggedWith.addTag('collaboration', 3, 3, 105);
numTaggedWith.addTag('collaborators', 2, 2, 83);
numTaggedWith.addTag('collections', 1, 1, 98);
numTaggedWith.addTag('commons', 5, 1, 371);
numTaggedWith.addTag('community', 2, 1, 7);
numTaggedWith.addTag('computer', 1, 1, 472);
numTaggedWith.addTag('conference', 1, 1, 2122);
numTaggedWith.addTag('consulted', 1, 1, 85);
numTaggedWith.addTag('continuous partial attention', 1, 1, 1888);
numTaggedWith.addTag('control', 3, 1, 736);
numTaggedWith.addTag('conversation', 1, 1, 1885);
numTaggedWith.addTag('copyleft', 1, 1, 1070);
numTaggedWith.addTag('copyright', 1, 1, 60);
numTaggedWith.addTag('corporations', 2, 1, 1644);
numTaggedWith.addTag('Creative Commons', 3, 3, 1068);
numTaggedWith.addTag('creativity', 2, 2, 257);
numTaggedWith.addTag('cultures', 1, 1, 143);
numTaggedWith.addTag('curriculum', 1, 1, 2117);
numTaggedWith.addTag('cyberspace', 1, 1, 1057);
numTaggedWith.addTag('database', 1, 1, 2023);
numTaggedWith.addTag('defect', 6, 2, 8);
numTaggedWith.addTag('design', 2, 2, 249);
numTaggedWith.addTag('detachment', 1, 1, 2338);
numTaggedWith.addTag('developers', 1, 1, 90);
numTaggedWith.addTag('digital', 7, 4, 80);
numTaggedWith.addTag('disciplines', 1, 1, 1290);
numTaggedWith.addTag('discovery', 2, 1, 1545);
numTaggedWith.addTag('disposability', 1, 1, 2343);
numTaggedWith.addTag('documentation', 6, 2, 84);
numTaggedWith.addTag('duplicable', 1, 1, 94);
numTaggedWith.addTag('economies', 1, 1, 1058);
numTaggedWith.addTag('economy', 4, 2, 1046);
numTaggedWith.addTag('education', 1, 1, 459);
numTaggedWith.addTag('emergence', 1, 1, 283);
numTaggedWith.addTag('emulation', 2, 1, 1652);
numTaggedWith.addTag('emulator', 1, 1, 86);
numTaggedWith.addTag('enclosure', 1, 1, 1442);
numTaggedWith.addTag('encryption', 1, 1, 2355);
numTaggedWith.addTag('enforceability', 1, 1, 1071);
numTaggedWith.addTag('Eva Hesse', 1, 1, 1661);
numTaggedWith.addTag('evaluating', 1, 1, 2113);
numTaggedWith.addTag('fair use', 1, 1, 302);
numTaggedWith.addTag('family', 1, 1, 593);
numTaggedWith.addTag('fear', 1, 1, 1664);
numTaggedWith.addTag('feedback', 1, 1, 1124);
numTaggedWith.addTag('formats', 2, 2, 175);
numTaggedWith.addTag('freedoms', 1, 1, 1065);
numTaggedWith.addTag('galleries', 1, 1, 1061);
numTaggedWith.addTag('garden', 1, 1, 2331);
numTaggedWith.addTag('genres', 1, 1, 166);
numTaggedWith.addTag('gift', 3, 2, 1064);
numTaggedWith.addTag('global', 1, 1, 620);
numTaggedWith.addTag('governance', 1, 1, 2337);
numTaggedWith.addTag('Guggenheim Museum', 1, 1, 2423);
numTaggedWith.addTag('guidelines', 1, 1, 2116);
numTaggedWith.addTag('hacks', 2, 1, 1636);
numTaggedWith.addTag('hardware', 1, 1, 1645);
numTaggedWith.addTag('history', 1, 1, 1662);
numTaggedWith.addTag('humans', 1, 1, 1098);
numTaggedWith.addTag('hybrid', 2, 1, 1883);
numTaggedWith.addTag('identities', 2, 1, 473);
numTaggedWith.addTag('illegal', 1, 1, 350);
numTaggedWith.addTag('indigenous', 5, 3, 144);
numTaggedWith.addTag('innovation', 1, 1, 48);
numTaggedWith.addTag('innovators', 1, 1, 177);
numTaggedWith.addTag('installation', 3, 2, 95);
numTaggedWith.addTag('intellectual property', 1, 1, 270);
numTaggedWith.addTag('intent', 1, 1, 91);
numTaggedWith.addTag('interface', 1, 1, 381);
numTaggedWith.addTag('irrigation', 1, 1, 2349);
numTaggedWith.addTag('James Leach', 2, 1, 2342);
numTaggedWith.addTag('journals', 3, 1, 604);
numTaggedWith.addTag('Ken Burns', 1, 1, 1663);
numTaggedWith.addTag('kinship', 2, 1, 1671);
numTaggedWith.addTag('labels', 1, 1, 82);
numTaggedWith.addTag('law', 5, 1, 206);
numTaggedWith.addTag('licenses', 3, 1, 1066);
numTaggedWith.addTag('Magna Carta', 3, 1, 2324);
numTaggedWith.addTag('manipulate', 1, 1, 170);
numTaggedWith.addTag('market', 3, 1, 1056);
numTaggedWith.addTag('mask', 1, 1, 2344);
numTaggedWith.addTag('media', 9, 4, 81);
numTaggedWith.addTag('message board', 1, 1, 1887);
numTaggedWith.addTag('meters', 1, 1, 102);
numTaggedWith.addTag('Michelangelo Buonarroti', 1, 1, 1660);
numTaggedWith.addTag('Microsoft', 2, 1, 1642);
numTaggedWith.addTag('misleading', 1, 1, 87);
numTaggedWith.addTag('museum', 4, 1, 1647);
numTaggedWith.addTag('museums', 3, 2, 99);
numTaggedWith.addTag('NASA', 1, 1, 1643);
numTaggedWith.addTag('Native American', 3, 1, 2327);
numTaggedWith.addTag('nature', 1, 1, 1548);
numTaggedWith.addTag('networked', 1, 1, 367);
numTaggedWith.addTag('networks', 2, 2, 204);
numTaggedWith.addTag('new media', 7, 1, 1984);
numTaggedWith.addTag('notations', 1, 1, 171);
numTaggedWith.addTag('object-oriented programming', 2, 1, 2435);
numTaggedWith.addTag('online', 2, 1, 377);
numTaggedWith.addTag('open access', 1, 1, 2123);
numTaggedWith.addTag('open-source', 4, 3, 300);
numTaggedWith.addTag('openness', 1, 1, 1069);
numTaggedWith.addTag('org', 1, 1, 107);
numTaggedWith.addTag('ownership', 1, 1, 269);
numTaggedWith.addTag('paleontology', 1, 1, 1659);
numTaggedWith.addTag('Papua New Guinea', 5, 2, 268);
numTaggedWith.addTag('paradigm', 1, 1, 112);
numTaggedWith.addTag('patch', 1, 1, 2334);
numTaggedWith.addTag('patched', 1, 1, 2426);
numTaggedWith.addTag('peers', 1, 1, 475);
numTaggedWith.addTag('performance', 1, 1, 456);
numTaggedWith.addTag('permaculture', 6, 1, 2330);
numTaggedWith.addTag('Pilgrim', 1, 1, 2326);
numTaggedWith.addTag('piracy', 1, 1, 2358);
numTaggedWith.addTag('plant', 1, 1, 2332);
numTaggedWith.addTag('preservation', 8, 4, 100);
numTaggedWith.addTag('preserving', 1, 1, 167);
numTaggedWith.addTag('privacy', 1, 1, 2353);
numTaggedWith.addTag('programmers', 1, 1, 2431);
numTaggedWith.addTag('property', 4, 2, 859);
numTaggedWith.addTag('publications', 1, 1, 2118);
numTaggedWith.addTag('random', 1, 1, 1639);
numTaggedWith.addTag('recognition', 1, 1, 262);
numTaggedWith.addTag('reconfigurable', 1, 1, 1629);
numTaggedWith.addTag('recordings', 3, 1, 174);
numTaggedWith.addTag('relation', 1, 1, 987);
numTaggedWith.addTag('relevance', 1, 1, 2121);
numTaggedWith.addTag('remix', 1, 1, 1060);
numTaggedWith.addTag('reproduced', 1, 1, 103);
numTaggedWith.addTag('researcher', 2, 2, 1171);
numTaggedWith.addTag('resource', 2, 1, 2323);
numTaggedWith.addTag('reuse', 1, 1, 1962);
numTaggedWith.addTag('Richard Stallman', 1, 1, 1067);
numTaggedWith.addTag('rights', 1, 1, 1299);
numTaggedWith.addTag('sanctuary', 1, 1, 1072);
numTaggedWith.addTag('scores', 3, 1, 172);
numTaggedWith.addTag('scripts', 1, 1, 173);
numTaggedWith.addTag('sculptures', 1, 1, 1651);
numTaggedWith.addTag('service', 1, 1, 1950);
numTaggedWith.addTag('settler', 1, 1, 2325);
numTaggedWith.addTag('sharing', 1, 1, 1961);
numTaggedWith.addTag('signature', 1, 1, 1631);
numTaggedWith.addTag('sociality', 2, 1, 1226);
numTaggedWith.addTag('software', 11, 6, 92);
numTaggedWith.addTag('sovereignty', 1, 1, 2359);
numTaggedWith.addTag('specification', 1, 1, 97);
numTaggedWith.addTag('Still Water', 1, 1, 2433);
numTaggedWith.addTag('storytelling', 1, 1, 418);
numTaggedWith.addTag('strategies', 1, 1, 361);
numTaggedWith.addTag('students', 1, 1, 234);
numTaggedWith.addTag('syllabi', 1, 1, 1918);
numTaggedWith.addTag('synchronous', 3, 1, 1882);
numTaggedWith.addTag('tax', 1, 1, 676);
numTaggedWith.addTag('teaching', 1, 1, 366);
numTaggedWith.addTag('tenure', 2, 1, 2112);
numTaggedWith.addTag('The Pool', 1, 1, 2434);
numTaggedWith.addTag('thought', 1, 1, 809);
numTaggedWith.addTag('time', 3, 2, 1658);
numTaggedWith.addTag('trust', 2, 1, 2336);
numTaggedWith.addTag('Twitter', 1, 1, 1886);
numTaggedWith.addTag('university', 1, 1, 598);
numTaggedWith.addTag('value', 2, 2, 133);
numTaggedWith.addTag('variable media', 3, 1, 1903);
numTaggedWith.addTag('variant', 2, 1, 93);
numTaggedWith.addTag('video', 2, 1, 52);
numTaggedWith.addTag('war', 1, 1, 591);
numTaggedWith.addTag('water', 1, 1, 2351);
numTaggedWith.addTag('wealth', 1, 1, 2346);
numTaggedWith.addTag('web', 2, 1, 624);
numTaggedWith.addTag('Web 2.0', 1, 1, 1646);
