    var lines_arr = [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]];
    var lines_maxlevel = [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6];
    var lines_str = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""];
    var counts    = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
    var lens      = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

    var goDirection = 'left';
    var blockDirection = 1;
    var countDirection = 1;
    var maxDirection = 1;
    var maxLen = 600;

/*
    var tagsHistory = new Array();
    var currentHistory = -1;
*/  
	function showCloudsTipbox( rc, cloudType ) {
			$('#toggle_hintbox').css('display', 'block');
			$('#toggle_hintbox').css('position', 'absolute');

			if(rc == 0) {
			    $('#toggle_hintbox_body').html('&nbsp;&nbsp;Tag Cloud Ansicht&nbsp;&nbsp;');
				if(cloudType == 0) {
					$('#toggle_hintbox').css('left', $('#tc_on').position().left + 
							$('#tag_cloud').position().left + 25);
					$('#toggle_hintbox').css('top', $('#tc_on').position().top + 
							$('#tag_cloud').position().top+35);
				} else if(cloudType == 1) {
					$('#toggle_hintbox').css('left', $('#tc_off').position().left + 
							$('#tag_cloud_classic').position().left + 25);
					$('#toggle_hintbox').css('top', $('#tc_off').position().top + 
							$('#tag_cloud_classic').position().top+35);					
				}
			} else if(rc == 1) {
				$('#toggle_hintbox_body').html('&nbsp;&nbsp;Suchen / Listen Ansicht&nbsp;&nbsp;');
				if(cloudType == 0) {
				    $('#toggle_hintbox').css('left', $('#tcc_off').position().left 
				    		+ $('#tag_cloud').position().left + 25);
				    $('#toggle_hintbox').css('top', $('#tcc_off').position().top 
				    		+ $('#tag_cloud').position().top+35 );
				} else if(cloudType == 1) {
				    $('#toggle_hintbox').css('left', $('#tcc_on').position().left 
				    		+ $('#tag_cloud_classic').position().left + 25);
				    $('#toggle_hintbox').css('top', $('#tcc_on').position().top 
				    		+ $('#tag_cloud_classic').position().top +35);					
				}
			}
		}

	
	function hideCloudsTipbox( rc ) {
	    $('#toggle_hintbox').css('display', 'none');
	}

function autoscrollDiv() {
	
	if (self.iP_device){
		//alert(self.iP_device)
		$('#auto_scroller').css('height', 'auto');
		$('#left_col_cell').css('vertical-align', 'top');
		return false		
	}
	

	
	//alert("init!!!");

    if ( typeof autoscrollDiv.timer == 'undefined' ) {
    	autoscrollDiv.timer = true;
    }
    if(autoscrollDiv.timer == true) {
		$('#auto_scroller').css('height', '0');
		var left_col_cell_height = $('#left_col_cell').height();
	 	if($.browser.msie == true && $.browser.version == 7) {
			left_col_cell_height += 5;
		}

		$('#auto_scroller').animate({height: left_col_cell_height}, 5000, function(){
									
									autoscrollDiv.timer = true;
									
									var diff=$('#left_col_cell').height()-left_col_cell_height-20;
									if(diff>0){
										var h=$('#left_col_cell').height();
										$('#auto_scroller').animate({height: h},300);
									}
			
								});
		autoscrollDiv.timer = false;
    }
}
	
	function VisHideDiv( flag )
	{
		if( flag )
		{
			clickTagClassic(getTagIdByTitle($('#tagTitle').text()), false, false);
			document.getElementById('tag_cloud').style.display = 'none';
			document.getElementById('tag_cloud_classic').style.display = 'block';
		}
		else
		{
			document.getElementById('tag_cloud_classic').style.display = 'none';
			document.getElementById('tag_cloud').style.display = 'block';
            clickTag(getTagIdByTitle($('#tagTitleClassic').text()), false);	
		}
	}
	
	function changeDirection(direction) 
	{
	    var result;
		switch (direction) {
				case "top":
					result = "right";
				break;
				
				case "right":
					result = "bottom";
				break;
				
				case "bottom":
					result = "left";
				break;
				
				case "left":
					result = "top";
				break;
				
				default:
					result = "top";
		}	 
		return result;   
	}

	function sortArrayNew(pTagId)
	{
		related = null;
		levels = null;
		for(var t = 0; t < tags.length; t++)
		{
			if (tags[t] == null)
				continue;
			new_tags[t] = "";
			if (tags[t].id == pTagId) {
				related = tags[t].related;
				levels = tags[t].levels;
			}
		}

		if ((related != null) && (levels != null)) {
			var j = 1;
			for(var i=1; i<=6; i++) {
				for(var t = 0; t < levels.length; t++) {
					if (levels[t] == i) {
						new_tags[j] = findTagById(related[t]);
						new_tags[j].default_state = i;
						new_tags[j].cLevel = i;
						j++;
					}
				}
			}
			new_tags[0] = findTagById(pTagId);
			new_tags[0].default_state = 1;
			new_tags[0].cLevel = 1;

			for(var t = 0; t < tags.length; t++)
			{
				if (new_tags[t] != "") {
					tags[t] = new_tags[t];
				} else {
					tags[t] = null;
				}
			}
		} 
	}

	function findTagById(id)
	{
		for(var t = 0; t < tags.length; t++)
		{
			if ((tags[t] != null) && (tags[t].id == id)) {
				return tags[t];
			}
		}
		return null;
	}

	function getTagsize(tag)
	{
	    var size = 0;
		if (tag != null)
		{
			if (tag.id != activeTag) {
				size = tag.short_name.length*getLetterSizeByLevel(tag.default_state);
			} else {
				size = tag.short_name.length*getLetterSizeByLevel(0);
			}
		}
		if (tag.short_name.length <=20)
		    size = size+10;
		else if (tag.short_name.length <=30)
		    size = size;
		else if (tag.short_name.length > 30)
		    size = size-10;
		return size;
	}

	function gotoNextCell(tag, current_row, olast_row, iteration)
	{
	    var new_row = current_row;
		var last_row = olast_row; 
//debugger;
		countDirection++;
		if (countDirection > maxDirection)
		{
			blockDirection ++;
			countDirection = 1;
			if (blockDirection > 2)
			{
				maxDirection++;
				blockDirection = 1;
			}
			goDirection = changeDirection(goDirection);
		}

if (iteration>100)
{
	return;
}
		switch (goDirection)
		{
			case "top":
				last_row = current_row;
				current_row--;
				if (current_row < 0)
					current_row = 0;
				break;

			case "bottom":
				last_row = current_row;
				current_row++;
				if (current_row > 24)
					current_row = 24;
				break;
		}	

		if  (lens[current_row] + getTagsize(tag) < (maxLen - Math.abs(current_row-13)*30 )) {
			return current_row;
		} else {
			counts[current_row]++;
			iteration++;
			current_row = gotoNextCell(tag, current_row, last_row, iteration);
		}

		return current_row;
	}

	function buildLineStrings() 
	{
	    var current_row = 13;
	    var last_row = -1;
		var force_next_row = false;

		if (tags.length > 0)  // add Active Tag
		{
			lines_str[current_row] = tags[0].id + ',' + lines_str[current_row];	
			lens[current_row] += getTagsize(tags[0]);
			counts[current_row]++;
		}
	    
		for(var t = 1; t < tags.length; t++)
		{
			if (tags[t] == null)
				continue;
			
			if ((tags[t] != null) && (tags[t].default_state <= levelCount))
			{
				last_row = current_row;
				current_row = gotoNextCell(tags[t], current_row, last_row, 0)
                if (goDirection == "top" || goDirection == "left")
                     lines_str[current_row] = tags[t].id + ',' + lines_str[current_row];
                else    
                     lines_str[current_row] = lines_str[current_row] + ',' + tags[t].id;
                
				lens[current_row] += getTagsize(tags[t]);
                counts[current_row]++;
	
			}
		}
	}
	function buildLinesArrays() {
		var i = 0;
		var tag = null;
		var maxlevel = 6; 
		for(var t = 0; t < lines_str.length; t++){
		    i = 0;
		    maxlevel = 6; 
			var lTags = new Array();
			var ids = lines_str[t].split(",");
			for(var j = 0; j < ids.length; j++){
				if (ids[j] != "")
				{
					tag = findTagById(ids[j]);
					if (tag != null )
					{
					    lTags[i] = tag;
					    if (tag.default_state < maxlevel)
					        maxlevel = tag.default_state;

					    if (tag.id == activeTag)
					        maxlevel = 0;
					    i++;
					}
				}
			}
			lines_arr[t] = lTags;
			lines_maxlevel[t] = maxlevel;
		}
	}

	function initTagCloudClassic(idx, doScroll)
	{
        lines_arr = [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]];
        lines_maxlevel = [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6];
        lines_str = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""];
        counts    = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
        lens      = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

        goDirection = 'left';
        blockDirection = 1;
        countDirection = 1;
        maxDirection = 1;

		var tagsContr = document.getElementById('tagCloudTagsContainerClassic');
		var tagsList = document.getElementById('classlist');
		var letterList = document.getElementById('letterlist');
		var tagsContrWidth = tagsContr.clientWidth - 50;
		
		for(var t = 0; t < tagsList.getElementsByTagName("a").length; t++)
		{

			if (tagsList.getElementsByTagName("a")[t].className == 'active')
			{
				tagsList.getElementsByTagName("a")[t].className = ''	;
			}
		}
		
		for(var t = 0; t < letterList.getElementsByTagName("a").length; t++)
		{
			if (letterList.getElementsByTagName("a")[t].className == 'active')
			{
				letterList.getElementsByTagName("a")[t].className = ''	;
			}
		}
		
        if (idx == 0) {
            var ln = tagsHistory.length; 
            tagsHistory[ln] = activeTag;
            currentHistory = ln;
        } else {
            if (idx == 1) 
                currentHistory++;
            else     
                currentHistory--;
            activeTag = tagsHistory[currentHistory];
        }

		var sHTML = '';
		var levelClass = '';
		var sumWidth = 0;
		var marginTop;
		var lastmarginTop = 7;
		var appendFromRight = true;
		var appendFromChange = false;
		var lastmarginLeft = 7;
		var lastmarginRight = 7;
		var firstTagLine = -1;
		var firstLine = true;


		//debugger;
		var tagId = activeTag;
		var tagObj = getTagObjById(tagId);
		var linksContent = '';
		var linksArr = new Array();
		var i = 0;

		for (var l = 0; l < tagObj.levels.length; l++)
		{
			if (tagObj.levels[l] == 1)
			{
				var tagToLink = getTagObjById(tagObj.related[l]);
				if (tagToLink) {
					linksArr[i] = tagToLink.short_name + '<a href="javascript:void(0)" style="font-size: 10px; color:#FFCC33;font-weight:normal;white-space: nowrap; " onclick="clickTagClassic(' + tagToLink.id + ', false, true)"  title="' + tagToLink.title + '">[' + tagToLink.short_name + ']</a> ';
					i++;
//					linksContent += '<a href="#" style="font-size: 10px; color:#FFCC33;font-weight:normal;white-space: nowrap;" onclick="clickTag(' + tagToLink.id + ', false)"  title="' + tagToLink.title + '">[' + tagToLink.short_name + ']</a> ';
				}
			}
		}

		linksArr.sort();
		for (i = 0; i < linksArr.length; i++)
		{
			var s = linksArr[i];
			pos = s.indexOf("<a href=");
			s = s.substr(pos, s.length);
			linksContent = linksContent + s;
		}
		
		if (tagObj) {
			showTagDescClassic(tagObj, linksContent, doScroll);
		}
	}
	
	function initTagCloud(idx)
	{
        lines_arr = [[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]];
        lines_maxlevel = [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6];
        lines_str = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""];
        counts    = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
        lens      = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];

        goDirection = 'left';
        blockDirection = 1;
        countDirection = 1;
        maxDirection = 1;

		var tagsContr = document.getElementById('tagCloudTagsContainer');
		var tagsContrWidth = tagsContr.clientWidth-50 ;
	
        if (idx == 0) {
            var ln = tagsHistory.length; 
            tagsHistory[ln] = activeTag;
            currentHistory = ln;
        } else {
            if (idx == 1) 
                currentHistory++;
            else     
                currentHistory--;
            activeTag = tagsHistory[currentHistory];
        }
        
        var leftButton = document.getElementById('divButtonLeft');  
        //alert("1234567"+leftButton.childNodes[0].id);
        if (leftButton) {    
            if (currentHistory >0) {
                leftButton.innerHTML='<a href="javascript:void(0)" onclick="moveTag(-1)" onmouseover="showDivHintbox(-1, event);" onmouseout="hideDivHintbox();"> <div id="buttonLeft"><div id="png8_1"><img  src="/_templates/soxes/_images/icon_backward.png" width="24" height="24" alt="" /></div></div> </a>';
            } else {
                leftButton.innerHTML='<div id="buttonLeft"><div id="png8"><img  src="/_templates/soxes/_images/icon_backward-dis.png" width="24" height="24" alt="" /></div>';
            }
        } 
             
        var rightButton = document.getElementById('divButtonRight');  
        if (rightButton) {    
            if (currentHistory < tagsHistory.length-1) {
                rightButton.innerHTML='<a href="javascript:void(0)" onclick="moveTag(1)" onmouseover="showDivHintbox(1, event);" onmouseout="hideDivHintbox();"> <div id="buttonRight"><div id="png7_1"><img  src="/_templates/soxes/_images/icon_forward.png" width="24" height="24" alt="" /></div></div></a>';
            } else {
                rightButton.innerHTML='<div id="buttonRight"><div id="png7"><img  src="/_templates/soxes/_images/icon_forward-dis.png" width="24" height="24" alt="" /></div></div>';
            }
        } 
        var leftButtonPopup = document.getElementById('divButtonPopup'); 
        if (leftButtonPopup){
	       	leftButtonPopup.innerHTML='<a href="javascript:void(0)" onclick="GetPopup(\''+findTagById(activeTag).short_name+'\',1);" id="popup_href" >'+title_more_about+'</a>';
        }

		sortArrayNew(activeTag);
		buildLineStrings();
		buildLinesArrays();

		var sHTML = '';
		var levelClass = '';
		var sumWidth = 0;
		var marginTop;
		var lastmarginTop = 7;
		var appendFromRight = true;
		var appendFromChange = false;
		var lastmarginLeft = 7;
		var lastmarginRight = 7;
		var firstTagLine = -1;
		var firstLine = true;

		var tagContr = document.createElement("DIV");
		tagContr.style.marginTop = '0px';
		tagContr.style.textAlign = 'left';
		tagContr.style.width = tagsContrWidth + 'px';
		tagContr.style.height = '10px';
		tagContr.style.marginLeft = '25px';
		tagContr.innerHTML =  '<div>&nbsp;</div>';
		tagsContr.appendChild(tagContr);

		for (var i = 0; i < lines_arr.length; i++) {
		    if (lines_maxlevel[i] <= 4) { 
				
				var iheight = getFontByLevel(lines_maxlevel[i]) + 13;

                tagContr = document.createElement("DIV");
				tagContr.style.marginTop = '0px';
				tagContr.style.textAlign = 'center';
				tagContr.style.width = tagsContrWidth + 'px';
				tagContr.style.height = iheight + 'px';
				tagContr.style.marginLeft = Math.round(Math.random() * 40) + 'px';
				
				sHTML = "";
				sumWidth = 0;

				if (lines_maxlevel[i] == 0) {				
				    appendFromChange = true;
					var tag = findTagById(activeTag);;
                    
					levelClass = getColorByLevel(0);
					
				    if (appendFromRight)
			            lastmarginTop = lastmarginRight;
			        else    
			            lastmarginTop = lastmarginLeft;
                    
                    if (firstTagLine == -1)
						marginTop = 9;                        
                    else 
				    marginTop = getTopMargin(lastmarginTop);
    				if (firstLine && (marginTop > 9))
    				    marginTop = 9;
				    lastmarginTop = marginTop;
				    if (appendFromRight)
			            lastmarginRight = lastmarginTop;
			        else    
			            lastmarginLeft = lastmarginTop;

					
					var _mouse_over_out = (self.iP_device) ? " " : 'onmouseover="overTag(' + tag.id + ', event);" onmouseout="outTag(' + tag.id + ');"'
					_sHTML = '<div style="margin-top:'+ (-1)*marginTop + 'px'+';width:' + getTagsize(tag)+ 'px;float:left;text-align: left; height: 100%;">\n\
								<a id="a_tag_' + tag.id + '" ' + _mouse_over_out + ' style="text-align: center;" class="' + levelClass + '" href="javascript:void(0)">' + tag.short_name + '</a></div>'
                    if (appendFromRight)
						sHTML += _sHTML
				    else
						sHTML = _sHTML + sHTML;

					/*
                    if (appendFromRight)
					    sHTML = sHTML + '<div style="margin-top:'+ (-1)*marginTop + 'px'+';width:' + getTagsize(tag)+ 'px;float:left;text-align: left; height: 100%;"><a id="a_tag_' + tag.id + '" style="text-align: center;" class="' + levelClass + '" href="#" onclick="" onmouseover="overTag(' + tag.id + ', event);" onmouseout="outTag(' + tag.id + ');">' + tag.short_name + '</a></div>'
				    else
					    sHTML = '<div style="margin-top:'+ (-1)*marginTop + 'px'+';width:' + getTagsize(tag)+ 'px;float:left;text-align: left; height: 100%;"><a id="a_tag_' + tag.id + '" style="text-align: center;" class="' + levelClass + '" href="#" onclick="" onmouseover="overTag(' + tag.id + ', event);" onmouseout="outTag(' + tag.id + ');">' + tag.short_name + '</a></div>' + sHTML; 
					*/


					sumWidth +=getTagsize(tag);
					firstTagLine = i;
				} else {
				    appendFromChange = false;
				}

				for (var j = 0; j < lines_arr[i].length; j++)
				{
					if (lines_arr[i][j].id != activeTag) {
					
					    if (appendFromChange)
					        appendFromRight = !appendFromRight;

					    var tag =  lines_arr[i][j];

					    levelClass = getColorByLevel(tag.default_state);

					    if (appendFromRight)
				            lastmarginTop = lastmarginRight;
				        else    
				            lastmarginTop = lastmarginLeft;
                        
                        if (firstTagLine == -1)
						    marginTop = 9;                        
                        else 
					    marginTop = getTopMargin(lastmarginTop);
    				        
    				    if (firstLine && (marginTop > 9))
    				        marginTop = 9;
					    lastmarginTop = marginTop;
					    if (appendFromRight)
				            lastmarginRight = lastmarginTop;
				        else    
				            lastmarginLeft = lastmarginTop;


						var _mouse_over_out = (self.iP_device) ? " " : 'onmouseover="overTag(' + tag.id + ', event);" onmouseout="outTag(' + tag.id + ');"'
						var _sHTML = '<div style="margin-top:'+ (-1)*marginTop + 'px'+';width:' + getTagsize(tag)+ 'px;float:left;text-align:center; height: 100%;">\n\
										<a id="a_tag_' + tag.id + '" \n\
											onclick="clickTag(' + tag.id + ', false)" ' + _mouse_over_out + ' style="text-align: center;" class="' + levelClass + '" href="javascript:void(0)" >' + tag.short_name + '</a></div>'
						if (appendFromRight)
							sHTML += _sHTML
						else
							sHTML = _sHTML + sHTML;

						/*
						if (appendFromRight)
					        sHTML = sHTML + '<div style="margin-top:'+ (-1)*marginTop + 'px'+';width:' + getTagsize(tag)+ 'px;float:left;text-align:center; height: 100%;"><a id="a_tag_' + tag.id + '" style="text-align: center;" class="' + levelClass + '" href="#" onclick="clickTag(' + tag.id + ', false)" onmouseover="overTag(' + tag.id + ', event);" onmouseout="outTag(' + tag.id + ');">' + tag.short_name + '</a></div>'
				        else
					        sHTML = '<div style="margin-top:'+ (-1)*marginTop + 'px'+';width:' + getTagsize(tag)+ 'px;float:left;text-align:center; height: 100%;"><a id="a_tag_' + tag.id + '" style="text-align: center;" class="' + levelClass + '" href="#" onclick="clickTag(' + tag.id + ', false)" onmouseover="overTag(' + tag.id + ', event);" onmouseout="outTag(' + tag.id + ');">' + tag.short_name + '</a></div>' + sHTML; 
					    */

						sumWidth +=getTagsize(tag);
					    firstTagLine = i;
    				}
				}				
				tagContr.innerHTML =  '<div style="width:'+ sumWidth + 'px;margin:auto;height: 100%;">'+ sHTML+ '</div>';
				tagsContr.appendChild(tagContr);
			}
			if (firstTagLine != -1)
		        firstLine = false;
		}
       	var tagId = activeTag;
		var tagObj = getTagObjById(tagId);
		var linksContent = '';
		var linksArr = new Array();
		var i = 0;

		for (var l = 0; l < tagObj.levels.length; l++)
		{
			if (tagObj.levels[l] == 1)
			{
				var tagToLink = getTagObjById(tagObj.related[l]);
				if (tagToLink) {
					linksArr[i] = tagToLink.short_name + '<a href="javascript:void(0)" style="font-size: 10px; color:#FFCC33;font-weight:normal;white-space: nowrap;" onclick="clickTag(' + tagToLink.id + ', false)"  title="' + tagToLink.title + '">[' + tagToLink.short_name + ']</a> ';
					i++;
				}
			}
		}

		linksArr.sort();
		for (i = 0; i < linksArr.length; i++)
		{
			var s = linksArr[i];
			pos = s.indexOf("<a href=");
			s = s.substr(pos, s.length);
			linksContent = linksContent + s;
		}
		
		if (tagObj) {
			showTagDesc(tagObj, linksContent);
		}
	}

	function getTopMargin(lastmarginTop) {
	    var marginTop = Math.round(Math.random() * 14);
	    if (Math.abs(lastmarginTop - marginTop) < 7)
	    {
		    if (lastmarginTop<=7 && marginTop<=7)
			    marginTop = marginTop + 7;
		    if (lastmarginTop>7 && marginTop>7)
			    marginTop = marginTop - 7;
		    if (lastmarginTop<=7 && marginTop>7)
			    marginTop = 12;
		    if (lastmarginTop>7 && marginTop<=7)
			    marginTop = 0;			    
	    }
	    return marginTop;
	}
	
/* ---------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------- */
	function setFontSize(tagId, fontSize, rc) {
		var new_size = 0;
		var current_tag = document.getElementById('a_tag_' + tagId);
		var current_size = $(current_tag).css('font-size');
		var new_style = '';
		
		new_size = rc ? 
				parseInt(current_size) + fontSize : 
					parseInt(current_size) - fontSize;
		
		$(current_tag).css('font-size', new_size);
		
		new_style = rc ? 'bolder' : 'lighter';
		
		$(current_tag).css('font-weight', new_style);
	}
	
	function overTag(tagId, event)
	{
		var cTag = document.getElementById('a_tag_' + tagId);
		
		setFontSize(tagId, 2, true);
		
		for(var t = 0; t < tags.length; t++)
		{
			if (tags[t] == null)
				continue;
			if (tags[t].id == tagId)
			{
				var currTag = tags[t];				

				showDivTipbox(currTag, cTag, event);
			}
		}
	}

	function outTag(tagId)
	{
		hideDivTipbox();
		setFontSize(tagId, 2, false);
	}
	
	function getPosition(e) {
	    e = e || window.event;
	    var cursor = {x:0, y:0};
	    if (e.pageX || e.pageY) {
	        cursor.x = e.pageX;
	        cursor.y = e.pageY;
	    } 
	    else {
	        var de = document.documentElement;
	        var b = document.body;
	        cursor.x = e.clientX + 
	            (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
	        cursor.y = e.clientY + 
	            (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
	    }
	    
	    return cursor;
	}
	
	function showDivTipbox(tagObj, cTag, event)
	{	
		self.tip = document.getElementById('tipbox');
		if (self.tip) {
			tip.style.display = 'block';
			tip.style.position = 'absolute';
	
			var content = document.getElementById('box_content');
		
			content.innerHTML = tagObj.description;
		
			//var position = getPosition(event);
			
			$('#tipbox').css('left', $('#tag_cloud').position().left + $('#' + cTag.id).position().left +  $('#' + cTag.id).width());
			
			$.browser.opera ? $('#tipbox').css('top', $('#' + cTag.id).position().top + 50) :
				$('#tipbox').css('top', $('#' + cTag.id).position().top + $('#tag_cloud').position().top);
			/*
			tip.style.left = position.x + 'px';
			tip.style.top = position.y + 'px';
			*/
		}
	}
	
	function hideDivTipbox()
	{
		if (document.getElementById('box_content'))
			document.getElementById('box_content').innerHTML = '';
		if (document.getElementById('tipbox'))
			document.getElementById('tipbox').style.display = 'none';
	}
	
	function showDivHintbox(idx, event)
	{	
		self.tip = document.getElementById('hintbox');
		var i = -1;
		if (idx == 1 && currentHistory < tagsHistory.length-1){
		    i = currentHistory+1;
		    //alert(currentHistory+":"+findTagById(tagsHistory[currentHistory]).href);
		}
		if (idx == -1 && currentHistory >0) {
			i = currentHistory-1;
			//alert(currentHistory+":"+findTagById(tagsHistory[currentHistory]).href);
		}
		    
		if (self.tip && i!= -1) {
			tip.style.display = 'block';
			tip.style.position = 'absolute';
			
			var content = document.getElementById('hint_content');
		    var tag = findTagById(tagsHistory[i]);
			content.innerHTML = "";
			if (tag)
			    content.innerHTML = '<nobr>'+tag.short_name+'</nobr>';
			else 
    			content.innerHTML = "";
			
			//var position = getPosition(event);
			var arr = document.getElementById('hintarr');
			
			arr.style.left = content.offsetWidth - 20 +'px';

			if(idx == -1) {
				//test=$('#tag_cloud').position().left + $('#buttonLeft').position().left - $('#hintbox').width() + 15;
				//alert("-1 left:"+test);
				//test=$('#tag_cloud').position().top + $('#buttonLeft').position().top + 50;
				//alert("-1 top:"+test);
			    $('#hintbox').css( 'left', $('#tag_cloud').position().left + $('#buttonLeft').position().left - $('#hintbox').width() + 15);
			    $('#hintbox').css( 'top', $('#tag_cloud').position().top + $('#buttonLeft').position().top + 50);
			} else if(idx == 1) {
				//test=$('#tag_cloud').position().left + $('#buttonLeft').position().left - $('#hintbox').width() + 15;
				//alert("1 left:"+test);
				//test=$('#tag_cloud').position().top + $('#buttonLeft').position().top + 50;
				//alert("1 top:"+test);
			    $('#hintbox').css( 'left', $('#tag_cloud').position().left + $('#buttonRight').position().left - $('#hintbox').width() + 15);
			    $('#hintbox').css( 'top', $('#tag_cloud').position().top + $('#buttonRight').position().top + 50);
			}
			
			
			/*
			tip.style.left = position.x-content.offsetWidth-10 +'px';
			tip.style.top = position.y+20+'px';
			*/
		}
	}
	
	function hideDivHintbox()
	{
		if (document.getElementById('hint_content'))
			document.getElementById('hint_content').innerHTML = '';
		if (document.getElementById('hintbox'))
			document.getElementById('hintbox').style.display = 'none';
	}
	
	function offsetPosition(element) {
         var offsetLeft = 0, offsetTop = 0;
         do {
             offsetLeft += element.offsetLeft;
             offsetTop  += element.offsetTop;
         } while (element = element.offsetParent);
         
         return [offsetLeft, offsetTop];
     } 
		
	function showTagDesc(tagObj, linksContent)
	{
		document.getElementById('tagTitle').innerHTML       = tagObj.title;
		document.getElementById('tagDescription').innerHTML = tagObj.full_desciption;
		document.getElementById('tagContr').innerHTML   = linksContent;		
		document.getElementById('tagCloudDescriptionContainer').style.display = 'block';
		
	}
	
	function showTagDescClassic(tagObj, linksContent, doScroll)
	{
		document.getElementById('tagTitleClassic').innerHTML       = tagObj.title;
		document.getElementById('tagDescriptionClassic').innerHTML = tagObj.full_desciption;
		document.getElementById('tagContrClassic').innerHTML   = linksContent;		
		document.getElementById('tagCloudDescriptionContainerClassic').style.display = 'block';
		
		document.getElementById('a_tag_class_'+tagObj.id).className = 'active';
		//document.getElementById('a_tag_class_'+tagObj.id).focus();
		if (doScroll)
			document.getElementById('a_tag_class_'+tagObj.id).scrollIntoView();
		if(document.getElementById('a_tag_class_letter_'+tagObj.id))
		{
			document.getElementById('a_tag_class_letter_'+tagObj.id).className = 'active';	
		}
		
	}
	
	function scrollIntoView(node) {
	  var parent = node.parent;
	  var parentCHeight = parent.clientHeight;
	  var parentSHeight = parent.scrollHeight;
	  if (parentSHeight > parentCHeight) {
	    var nodeHeight = node.clientHeight;
	    var nodeOffset = node.offsetTop;
	    var scrollOffset = nodeOffset + (nodeHeight / 2) - (parentCHeight / 2);
	    parent.scrollTop = scrollOffset;
	  }
	  if (parent.parent) {
	    scrollIntoView(parent);
	  }
	}

	function hideTagDesc(tagObj)
	{
		document.getElementById('tagShortName').innerHTML   = '';
		document.getElementById('tagTitle').innerHTML       = '';
		document.getElementById('tagDescription').innerHTML = '';
		document.getElementById('tagCloudDescriptionContainer').style.display = 'none';
	}

	function clickTag( tagId, doOverTag )
	{	
		//alert("init!!!");
		hideDivTipbox();
		autoscrollDiv();
		var tagsContr = document.getElementById('tagCloudTagsContainer');
		if (tagsContr) {
			var kids = tagsContr.childNodes;
			for (j= kids.length-1; j >= 0; j--) {              
				tagsContr.removeChild(kids[j]);
			}
			activeTag = tagId;
			initTagCloud(0);
		}
	}
	
	function clickTagClassic( tagId, doOverTag, doScroll )
	{	
		var tagsContr = document.getElementById('tagCloudTagsContainerClassic');
		if (tagsContr) {
			activeTag = tagId;
			initTagCloudClassic(0, doScroll);
		}
	}
	
	function moveTag( idx )
	{
	    hideDivHintbox();
		var tagsContr = document.getElementById('tagCloudTagsContainer');
		if (tagsContr) {
			var kids = tagsContr.childNodes;
			for (j= kids.length-1; j >= 0; j--) {
				tagsContr.removeChild(kids[j]);
			}
			initTagCloud(idx);
		}
	}
	
	function getTagObjById(tagId)
	{
		for(var t = 0; t < tags.length; t++)
		{
			if (tags[t] == null)
				continue;
			if (tags[t].id == tagId)
				return tags[t];
		}
		
		return null;
	}
	
	function getFontByLevel(level)
	{
		switch (level)
		{
			case 0:
				return 17;
			break;
			
			case 1:
				return 12;
			break;
			
			case 2:
				return 11;
			break;
			
			case 3:
				return 11;
			break;
			
			case 4:
				return 10;
			break;
			
			default:
				return 13;
			break;
			
		}
	}


	function getMarginByLevel(level)
	{
		switch (level)
		{
			case 0:
				return 50;
			break;

			case 1:
				return 50;
			break;

			case 2:
				return 40;
			break;

			case 3:
				return 40;
			break;

			case 4:
				return 35;
			break;

			default:
				return 100;
			break;

		}
	}

	function getWordsCountByLevel(level)
	{
		switch (level)
		{
			case 0:
				return 20;
			break;

			case 1:
				return 21;
			break;

			case 2:
				return 22;
			break;

			case 3:
				return 22;
			break;

			case 4:
				return 25;
			break;

			default:
				return 20;
			break;

		}
	}

	
	function getColorByLevel(level)
	{
		switch (level)
		{
			case 0:
				return 'level0';
			break;
			
			case 1:
				return 'level1';
			break;
			
			case 2:
				return 'level2';
			break;
			
			case 3:
				return 'level3';
			break;
			
			case 4:
				return 'level4';
			break;
			
			default:
				return 'level4';
			break;
			
		}
	}
	
	function getLetterSizeByLevel(level)
	{
		switch (level)
		{
			case 0:
				return 14;
			break;
			
			case 1:
				return 10;
			break;
			
			case 2:
				return 9;
			break;
			
			case 3:
				return 8;
			break;
			
			case 4:
				return 7;
			break;
			
			default:
				return 7;
			break;
			
		}
	}
