function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();

var counterOfSlideage = 0;
var tagCloud = {
	oCloud : Object,
	init : function(){
		tagCloud.setShowAll();
		tagCloud.setSwitchView();
		tagCloud.setupCloudAndEvents();
		tagCloud.oCloud=document.getElementById('cloud');
		tagCloud.tagCloudHistory();
	},
	setShowAll : function(){
		var oShowAll = document.getElementById('showAll');
		if (oShowAll){
			addEvent(oShowAll,'click',tagCloud.showAll);
		}
	},
	setSwitchView : function(){
		var oSwitchView = document.getElementById('switchView');
		if (oSwitchView){
			addEvent(oSwitchView,'click',tagCloud.switchView);
		}
	},
	showAll : function(e){
		e.returnValue = false; // for IE
		if (typeof e.preventDefault == 'function'){
			e.preventDefault();
		}
		tagCloud.oCloud.className='showAll';
	},
	switchView : function(e){
		e.returnValue = false; // for IE
		if (typeof e.preventDefault == 'function'){
			e.preventDefault();
		}

		var oUL = document.getElementById('dp');
		if (oUL){
			if (oUL.className=='sA'){
				oUL.className='i';
				this.innerHTML = 'view 2';
			}else{
				oUL.className='sA';
				this.innerHTML = 'view 1';
			}
		}
	},
	setupCloudAndEvents :function(){
		var oCloud=document.getElementById('cloud');
		if (oCloud){
			var oControls=document.getElementById('controls');
			if (oControls){
				var oSearchTerms = oCloud.getElementsByTagName('li');
				if (oSearchTerms){
					var iSearchTermsLength = oSearchTerms.length;
					var aArray = new Array(100);
					for (var i=0; i<iSearchTermsLength; i++){
						var sSearchTermClass = oSearchTerms[i].className;
						if (sSearchTermClass.indexOf(' ')!=-1){
							var iPos = sSearchTermClass;
						}else{
							var aPos = sSearchTermClass.split(' ');
							var iPos = aPos[0];
						}
						aArray[i]=parseFloat(iPos);
					}

					aArray.sort();						
					aArray.sort(function(a,b){return a-b;});
										
					for (var i=0; i<iSearchTermsLength; i++){
						var sSearchTermClass = oSearchTerms[i].className;
						var aPos = sSearchTermClass.split(' ');
						var iPos = parseInt(aPos[0]);

						if (iPos<aArray[20]){
							oSearchTerms[i].className = oSearchTerms[i].className + ' E';
						}else if (iPos<aArray[40]){
							oSearchTerms[i].className = oSearchTerms[i].className + ' D';
						}else if (iPos<aArray[60]){
							oSearchTerms[i].className = oSearchTerms[i].className + ' C';
						}else if (iPos<aArray[80]){
							oSearchTerms[i].className = oSearchTerms[i].className + ' B';
						}else{
							oSearchTerms[i].className = oSearchTerms[i].className + ' A';
						}
					}
				}
			}
		}
	},
	tagCloudHistory : function(){
		var oHistory = document.getElementById('history');
		var oList = oHistory.getElementsByTagName('ul');
		if (oHistory){
			var oPreviousClouds = oList[0].getElementsByTagName('a');
			if (oPreviousClouds){
				var oSelect = document.createElement('select');
				var oOption = document.createElement('option');
				var oOptionText = document.createTextNode(' - Please select - ');
				oOption.setAttribute('value','#');
				oOption.appendChild(oOptionText);
				oSelect.appendChild(oOption);
				for (var i=0; i<oPreviousClouds.length; i++){
						var oOption = document.createElement('option');
						var oOptionText = document.createTextNode(oPreviousClouds[i].innerHTML);
						oOption.setAttribute('value',oPreviousClouds[i].getAttribute('href'));
						if (oPreviousClouds[i].className){
							oOption.setAttribute('selected','slected');
						}						
						oOption.appendChild(oOptionText);
						oSelect.appendChild(oOption);
				}
				oHistory.appendChild(oSelect);
				oHistory.removeChild(oList[0]);

				var oSelect = oHistory.getElementsByTagName('select');
				addEvent(oSelect[0],'change',tagCloud.gotoCloud);
			}
		}
	},
	gotoCloud : function(){
		//alert(this.getElementsByTagName('option')[this.selectedIndex].value);
		window.location=this.getElementsByTagName('option')[this.selectedIndex].value;
	}
}

addEvent(window,'load',tagCloud.init);