var radius = 100;
var activemotion = false;
var boxl = 0,
    boxt = 0,
    boxw = 0;
boxh = 0;
var IE = document.all ? true : false;
var elementi;
var pointX = new Array();
var pointY = new Array();
var pointZ = new Array();
var pointF = new Array();
var ps = new Array();
var pc = new Array();
var opx = new Array();
var opy = new Array();
var spz = new Array();
var spf = new Array();
var rx = 0.9;
var ry = -0.9;
var rz = 0.0;
var minf = 99;
var maxf = 1;
var mausx = 0;
var mausy = 0;
var dtr = Math.PI / 180;
var d = 400;
var i;
var sa, ca, sb, cb, sc, bc;

if (typeof addEvent!='function') {
	function addEvent(elmi, evType, fn) {
		if (elmi.addEventListener){elmi.addEventListener(evType, fn, false);return true;} else 
	 	if (elmi.attachEvent){var r = elmi.attachEvent("on"+evType, fn);return r;}
	}
}
if (typeof javaopacityd!='function') {
	function javaopacityd(obj,v) {
		if (window.ActiveXObject) {
			var opa=Math.max(0,Math.min(100,v));
			if (obj.filters.alpha) { obj.filters.alpha.opacity=opa; } else 
				{ obj.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+opa+")"; } } else
		{ obj.style.opacity=v/100; if (obj.style.MozOpacity) obj.style.MozOpacity=v/100; }
	}
}

function sinCos(a, b, c) {
    sa = Math.sin(a * dtr);
    ca = Math.cos(a * dtr);
    sb = Math.sin(b * dtr);
    cb = Math.cos(b * dtr);
    sc = Math.sin(c * dtr);
    cc = Math.cos(c * dtr)
}
function transPoint() {
    var a, l7, l8, l9, l10, l11, l12, l13, l14, l15, l16;
    i = elementi;
    while (i--) {
        a = pointX[i];
        l7 = pointY[i] * ca + pointZ[i] * (-sa);
        l8 = pointY[i] * sa + pointZ[i] * ca;
        l9 = a * cb + l8 * sb;
        l10 = l7;
        l11 = a * (-sb) + l8 * cb;
        l12 = l9 * cc + l10 * (-sc);
        l13 = l9 * sc + l10 * cc;
        l14 = l11;
        pointX[i] = l12;
        pointY[i] = l13;
        pointZ[i] = l14;
        l15 = d / (d + l14);
        opx[i] = l12 * l15;
        opy[i] = l13 * l15;
        spf[i] = 0.5 - (l11 * Math.PI / (boxw * 2));
        spz[i] = spf[i] * 0.7 + 0.3
    }
}
function movePoints(a) {
    var i = elementi;
    var ba = document.getElementById(a);
    var e, f;
    while (i--) {
        f = Math.round(spf[i] * (maxf - minf) * (pointF[i] / maxf)) + minf;
        e = ba.getElementsByTagName("a")[i];
        e.style.left = Math.round(opx[i]) + 'px';
        e.style.top = Math.round(opy[i] + boxh / 2 - f / 2) + 'px';
        e.style.fontSize = f + 'px';
        e.style.lineHeight = (f + 5) + 'px';
        javaopacityd(e,spz[i]*100);
        e.style.zIndex = 1000 + Math.round(spf[i] * 1000)
    }
}
function rotateTagsInit(a) {
    var e = document.getElementById(a);
    var p, t;
    if (!e) return;
    if (e.style.width) {
        var w = e.style.width
    } else {
        var w = '170px'
    }
    if (e.style.height) {
        var h = e.style.height
    } else {
        var h = '150px'
    }
    e.style.width = w;
    e.style.height = h;
    e.style.position = 'relative';
    e.style.overflow = 'hidden';
    var u = e.getElementsByTagName('a');
    for (var i = 0; i < u.length; i++) {
        u[i].style.width = w;
        u[i].style.display = 'block';
        u[i].style.position = 'absolute';
        u[i].style.zIndex = '0';
        u[i].style.left = '0';
        u[i].style.top = '0';
        u[i].style.textAlign = 'center'
    }
    boxl = parseInt(e.style.left);
    boxw = parseInt(e.style.width);
    boxt = parseInt(e.style.top);
    boxh = parseInt(e.style.height);
    var b = Math.round(boxw / Math.PI);
    elementi = e.getElementsByTagName("a").length;
    for (i = 0; i < elementi; i++) {
        p = Math.acos(-1 + (2 * i) / elementi);
        t = Math.sqrt(elementi * Math.PI) * p;
        pointX[i] = b * Math.cos(t) * Math.sin(p);
        pointY[i] = b * Math.sin(t) * Math.sin(p);
        pointZ[i] = b * Math.cos(p);
        pointF[i] = parseInt(e.getElementsByTagName("a")[i].style.fontSize);
        minf = Math.min(minf, pointF[i]);
        maxf = Math.max(maxf, pointF[i]);
        e.getElementsByTagName("a")[i].style.width = boxw + 'px'
    }
    rotateTags(a)
}
function rotateTags(a) {
    var e = document.getElementById(a);
    if (activemotion) {
        if (!boxl) boxl = document.getElementById(a).offsetLeft;
        if (!boxt) boxt = document.getElementById(a).offsetTop;
        rx = ((-Math.min(Math.max(-boxh / 2, mausy - boxt - boxh / 2), boxh / 2)) / (radius / 4));
        ry = ((Math.min(Math.max(-boxw / 2, mausx - boxl - boxw / 2), boxw / 2)) / (radius / 4))
    } else {
        if (rx > 1.0) rx -= 0.05;
        else if (rx < -1.0) rx += 0.05;
        if (ry > 1.0) ry -= 0.05;
        else if (ry < -1.0) ry += 0.05
    }
    if (Math.abs(rx) > 0.25 || Math.abs(ry) > 0.25) {
        sinCos(rx, ry, 0);
        transPoint();
        movePoints(a)
    }
    window.setTimeout("rotateTags('" + a + "')", 40)
}
function rotateTagsAct(a) {
    activemotion = a
}
//if (!IE) document.captureEvents(Event.MOUSEMOVE);
//document.onmousemove = getMouseXY;
addEvent(document,'mousemove',getMouseXY);

function getMouseXY(e) {
    if (IE) {
        var a;
        if (navigator.appVersion.match(/MSIE 7\.0/i)) {
            a = document.documentElement
        } else {
            a = document.body
        }
        mausx = event.clientX + a.scrollLeft;
        mausy = event.clientY + a.scrollTop
    } else {
        mausx = e.pageX;
        mausy = e.pageY
    }
}
