/*
	USAGE:
		tagCloud = new TagCloudClass();
		tagCloud.id = this.id + 'tagCloudBox';
		tagCloud.objectType = 'image';
		tagCloud.objectId = 'f5d65f6d5';
		tagCloud.name = 'tagCloud';
		tagCloud.limit = 20;
		tagCloud.eventHandler = eventHandler;
		tagCloud.init();

	EVENTHANDLER:
		eventHandler.tagSelected(STRING word);
*/

function TagCloudClass() {
	var tags = new Array;
	var tagCounter = 0;
	var tagWeightMinimum = 1;
	var tagWeightMaximum = 0;
	
	this.init = function() {
		this.buildContainer();
		
		this.loadTags();
	}

	this.loadTags = function() {
		var output = new Object();
		output.objectType = this.objectType;
		output.objectId = this.objectId;
		output.limit = this.limit;
		
		outputString = JSONstring.make(output);

		jsonPostData('json/tags/getTagsForObject.php', escape(outputString), this.name + '.loadTagsInt');			
		
	}
	
	this.loadTagsInt = function(Object) {
		if(Object) {
			if(Object["status"] && Object["tags"]) {
				if(Object["status"]=='ok' && Object["tags"].length >= 1) {
					for(tagCnt=0; tagCnt < Object["tags"].length; tagCnt++) {
						tags[tagCounter] = new Array;
						tags[tagCounter]["word"] = Object["tags"][tagCnt]["Word"];
						tags[tagCounter]["wordstemm"] = Object["tags"][tagCnt]["Wordstemm"];
						tags[tagCounter]["status"] = 'active';
						
						tags[tagCounter]["tagWeight"] = Object["tags"][tagCnt]["RelativeWeight"];
						
						if(tags[tagCounter]["tagWeight"] > tagWeightMaximum) {
							tagWeightMaximum = tags[tagCounter]["tagWeight"];
						}
						
						if(tags[tagCounter]["tagWeight"] < tagWeightMinimum) {
							tagWeightMinimum = tags[tagCounter]["tagWeight"];
						}						
						
						tagCounter++;						
					}
				}
			}
		}
		this.refreshTagCloud();		
	}
	
	this.refreshTagCloud = function() {
		document.getElementById(this.id + 'tagCloud').innerHTML = '';
		var clusterInterval = tagWeightMaximum - tagWeightMinimum;
				
		if(clusterInterval >= 0) {
			var clusterSize = clusterInterval / 10;
			
			var cluster1Min = parseFloat(tagWeightMinimum);
			var cluster2Min = parseFloat(tagWeightMinimum) + parseFloat(clusterSize);
			
			var cluster3Min = parseFloat(cluster2Min) + parseFloat(clusterSize);
			var cluster4Min = parseFloat(cluster3Min) + parseFloat(clusterSize);
			var cluster5Min = parseFloat(cluster4Min) + parseFloat(clusterSize);				
			var cluster6Min = parseFloat(cluster5Min) + parseFloat(clusterSize);
			var cluster7Min = parseFloat(cluster6Min) + parseFloat(clusterSize);
			var cluster8Min = parseFloat(cluster7Min) + parseFloat(clusterSize);
			var cluster9Min = parseFloat(cluster8Min) + parseFloat(clusterSize);			
			var cluster10Min = parseFloat(cluster9Min) + parseFloat(clusterSize);
		}
	
		for(z1=0;z1<tags.length;z1++) {
			if(tags[z1]["status"] == 'active') {
				if(clusterInterval >= 0) {
					if(tags[z1]["tagWeight"] < cluster2Min) {
						var tagWeightNo = '1';
					} else {
						if(tags[z1]["tagWeight"] >= cluster2Min && tags[z1]["tagWeight"] < cluster3Min) {
							var tagWeightNo = '2';
						} else {
							if(tags[z1]["tagWeight"] >= cluster3Min && tags[z1]["tagWeight"] < cluster4Min) {
								var tagWeightNo = '3';
							} else {
								if(tags[z1]["tagWeight"] >= cluster4Min && tags[z1]["tagWeight"] < cluster5Min) {
									var tagWeightNo = '4';
								} else {
									if(tags[z1]["tagWeight"] >= cluster5Min && tags[z1]["tagWeight"] < cluster6Min) {
										var tagWeightNo = '5';
									} else {
										if(tags[z1]["tagWeight"] >= cluster6Min && tags[z1]["tagWeight"] < cluster7Min) {
											var tagWeightNo = '6';
										} else {
											if(tags[z1]["tagWeight"] >= cluster7Min && tags[z1]["tagWeight"] < cluster8Min) {
												var tagWeightNo = '7';
											} else {
												if(tags[z1]["tagWeight"] >= cluster8Min && tags[z1]["tagWeight"] < cluster9Min) {
													var tagWeightNo = '8';
												} else {
													if(tags[z1]["tagWeight"] >= cluster9Min && tags[z1]["tagWeight"] < cluster10Min) {
														var tagWeightNo = '9';
													} else {
														if(tags[z1]["tagWeight"] >= cluster10Min) {
															var tagWeightNo = '10';
														}			
													}
												}										
											}				
										}							
									}						
								}					
							}				
						}			
					}
				} else {
					var tagWeightNo = '3';			
				}
			
				tagContainer = document.createElement("SPAN");
				tagContainer.className = 'tag tagWeightNo' + tagWeightNo;
				tagContainer.innerHTML = '<a href="JavaScript:' + escape(this.name) + '.selectTag(' + z1 + ');">' + tags[z1]["word"] + '</a> ';
				eval("tagContainer.onmouseover = function(event) { this.className='" + tagContainer.className + " hovered'; }");
				eval("tagContainer.onmouseout = function() { this.className='" + tagContainer.className + "'; }");
				
				document.getElementById(this.id + 'tagCloud').appendChild(tagContainer);
			}			
		}
		
		if(document.getElementById(this.id + 'tagCloud').innerHTML == '') {
			this.box.style.display = 'none';	
		}
	
	}
	
	this.selectTag = function(id) {
		this.eventHandler.tagSelected(tags[id]["word"]);
	}
	
	this.buildContainer = function() {
		this.box = document.getElementById(this.id);
		
		var header = document.createElement("DIV");
		header.className = 'header';
		header.innerHTML = '<span class="darkerGreen">Die</span> Tags...';
		
		var tagCloud = document.createElement("DIV");
		tagCloud.className = 'tagCloud';
		tagCloud.id = this.id + 'tagCloud';
		
		this.box.appendChild(header);
		this.box.appendChild(tagCloud);
	}
}

function tagsTagCloudjs() {}
