/*
* 	Tag Cloud element
*/

var TagCloud ={
	
	tags : {}, //list of tags (tag/score pairs)
	
	tagLookup : null, //Links tags to dom elements


	displayCurrentTags : function(){
		var tag_shelf = UIConfig.tag_shelf_container;
		if (tag_shelf == null) return;
		
		var html = new StringBuffer();
		html.append('Selected tags: ');
		var c = 0;
				
		for (var i = State.currentTags.length-1; i>=0; i--){
			var tag = State.currentTags[i];

			if (!State.excludeTags.test(tag)){
				html.append('<a href="#" class="tag" onclick="Explore.tagUnClicked(\''+i+'\'); return false;">'+tag+' <img src="/images/new2/search-clear.gif" border="0" align="absmiddle" /></a> ');
				c++;
			}
		}
				
		if (c == 0) 
			tag_shelf.style.display = 'none';
		else {
			tag_shelf.style.display = 'block';
			html.append('<span style="float: right;"><a href="." onclick="Explore.clearAllTags(); return false;">&laquo; Start again</a></span><br /><br />');
			tag_shelf.setHTML(html.toString());
		}
	},

	tagsort : function (a,b){
		return Items.tags[b] - Items.tags[a];
	},
	
	/*
	*	Set content of tag cloud
	*	Compute scores
	*/
	setTagCloud : function(tags){
		if (!UIConfig.tag_cloud_container) return;

		var remtags = new Array();
		
		for (var tag in tags){
			if ((!State.excludeTags.test(tag)) && (!State.currentTags.test(tag))) {
				remtags.push(tag);	
			}
		}
			
		remtags.sort(TagCloud.tagsort);
		remtags = remtags.slice(0,20);
		
		var tagLookup = new Object();
		var div = new Element("div");
		var len = remtags.length;
		
		for (var i = 0 ; i < len ; i++){
			var a = new Element("a");
			a.setAttribute('href','#');			
			a.onclick = function(){Explore.tagClicked(this.innerHTML); return false;};
			a.onmouseover = function(){Markers.hilightByTag(this.innerHTML);};
			a.onmouseout = function(){Markers.stopHoverOverAll();};
			a.innerHTML = remtags[i];
			a.className = "tag";
			tagLookup[remtags[i]] = a;
			div.appendChild(a);
			div.appendText(" ");
		}
		
		UIConfig.tag_cloud_container.innerHTML = '';

		if (len > 0)
			UIConfig.tag_cloud_container.appendChild(div);
		else
			UIConfig.tag_cloud_container.innerHTML = 'None';
		
		TagCloud.tagLookup = tagLookup;
	},
	
	hilightTags : function(tagstr){
		if (!$('categories')) return;
		
		var tags = Items.tags;
	
		//Deal with Categories
		CategoryList.hilightHeadersByTag(tagstr);
		
		for (tag in TagCloud.tagLookup){
			if (tagstr.indexOf(","+tag+" ") != -1){
				TagCloud.tagLookup[tag].className = "stag";
			} 
		}
	},
	
	unhilightTags : function(){
		if (!$('categories')) return;
		
		//Deal with Categories
		CategoryList.unhilightHeaders();
		
		for (tag in TagCloud.tagLookup){
			TagCloud.tagLookup[tag].className = 'tag';
		}
	}
};
