/* (C) 2002-04 Ðào Trung Kiên (d_t_kien@yahoo.com)
TODO:
	<script language="JavaScript1.1" charset="utf-8" src="DancingIcon.js"></script>
	<script language="JavaScript1.1">
		DIcon_SetIconHTML(...);
		DIcon_SetIconColor(...);
		DIcon_SetNormalOpacity(...);
	</script>
*/


nDIcon_NormalOpacity=20;
strDIcon_IconHTML='<b><font face="Tahoma" size="1" color="#0000FF"><a href="mailto:d_t_kien@yahoo.com">&copy; Ðào Trung Kiên</a></font></b>';
strDIcon_Color='"yellow"';


DIcon_Container=null;

function DIcon_SetIconHTML(strHTML) {
	strDIcon_IconHTML=strHTML;
	if (DIcon_Container!=null)
		DIcon_Container.innerHTML=DIcon_GenerateContainerHTMLCode();
}

function DIcon_SetIconColor(strColor) {
	strDIcon_Color=strColor;
	if (DIcon_Container!=null)
		DIcon_Container.innerHTML=DIcon_GenerateContainerHTMLCode();
}

function DIcon_SetNormalOpacity(nOpacity) {
	nDIcon_NormalOpacity=nOpacity;
	nDIcon_Opacity=nDIcon_NormalOpacity;
	if (DIcon_Container!=null)
		DIcon_Container.innerHTML=DIcon_GenerateContainerHTMLCode();
}







nDIcon_Opacity=nDIcon_NormalOpacity;

fncDIcon_OldOnLoad=window.onload;
fncDIcon_OldOnUnload=window.onunload;
window.onload=DIcon_Init;
window.onunload=DIcon_Destroy;

function DIcon_GenerateContainerHTMLCode() {
	return '<table id="DIcon" cellpadding="0" style="border-collapse:collapse; position:absolute; filter:alpha(opacity='+nDIcon_Opacity+')">\
				<tr>\
					<td bgcolor='+strDIcon_Color+'>'+strDIcon_IconHTML+'</td>\
				</tr>\
			</table>';
}

function DIcon_Init() {
	if (fncDIcon_OldOnLoad!=null) fncDIcon_OldOnLoad();

	var DIcon_Container=document.createElement("div");
	document.body.appendChild(DIcon_Container);
	DIcon_Container.innerHTML=DIcon_GenerateContainerHTMLCode();

	var DIcon=document.getElementById("DIcon");
	DIcon.style.left=DIcon_CalcPositionX()+'px';
	DIcon.style.top=DIcon_CalcPositionY()+'px';

	window.onscroll=DIcon_ResetIcon;
	window.onresize=DIcon_ResetIcon;
	DIcon.onmouseover=DIcon_MouseOver;
	DIcon.onmouseout=DIcon_MouseOut;
}

function DIcon_Destroy() {
	if (DIcon_Container!=null) DIcon_Container.innerHTML="";
	if (fncDIcon_OldOnUnload!=null) fncDIcon_OldOnUnload();
}

function DIcon_GetTime() {
	var d=new Date();
	return (((d.getDay()*24
			+d.getHours())*60
			+d.getMinutes())*60
			+d.getSeconds())*1000
			+d.getMilliseconds();
}

function DocBody() {
	if (agt.indexOf("msie")!=-1)
		 return (document.documentElement.clientHeight && document.documentElement.clientHeight>0) ? document.documentElement:document.body;
	else return (document.body.clientHeight && document.body.clientHeight>0) ? document.body:document.documentElement;
}





nDIcon_ScrollTimeInterval=10;
nDIcon_ScrollSteps=100;
nDIcon_ScrollIntervalID=0;
var DIcon_ScrollStartTime;
var DIcon_X1,DIcon_Y1,
	DIcon_X2,DIcon_Y2,
	DIcon_aX,DIcon_bX,DIcon_cX,
	DIcon_aY,DIcon_bY,DIcon_cY;

function DIcon_CalcPositionX() {return DocBody().scrollLeft+DocBody().clientWidth -document.getElementById("DIcon").clientWidth;}
function DIcon_CalcPositionY() {
//alert(window.innerHeight);
return DocBody().scrollTop +DocBody().clientHeight-document.getElementById("DIcon").clientHeight;}

function DIcon_Scroll_Transition() {
	var DIcon = document.getElementById("DIcon");
	var t=nDIcon_ScrollSteps*(DIcon_GetTime()-DIcon_ScrollStartTime)/1500;
	DIcon.style.left=DIcon_aX*Math.cos(DIcon_bX*t)*Math.exp(DIcon_cX*t)+DIcon_X2+'px';
	DIcon.style.top =DIcon_aY*Math.cos(DIcon_bY*t)*Math.exp(DIcon_cY*t)+DIcon_Y2+'px';

	if (t>nDIcon_ScrollSteps) {
		clearInterval(nDIcon_ScrollIntervalID);
		nDIcon_ScrollIntervalID=0;
		DIcon.style.left=DIcon_X2+'px';
		DIcon.style.top=DIcon_Y2+'px';
	};
}

function DIcon_ResetIcon() {
	var DIcon=document.getElementById("DIcon");
	DIcon_X1=parseInt(DIcon.style.left);
	DIcon_Y1=parseInt(DIcon.style.top);
	DIcon_X2=DIcon_CalcPositionX();
	DIcon_Y2=DIcon_CalcPositionY();

	k1=0.05;
	k2=0.51;
	DIcon_ScrollStartTime=DIcon_GetTime();

	DIcon_aX=DIcon_X1-DIcon_X2;
	DIcon_cX=Math.log(k1)/nDIcon_ScrollSteps;
	DIcon_bX=DIcon_cX*Math.PI/Math.log(k2);

	DIcon_aY=DIcon_Y1-DIcon_Y2;
	DIcon_cY=Math.log(k1)/nDIcon_ScrollSteps;
	DIcon_bY=DIcon_cY*Math.PI/Math.log(k2);

	if (nDIcon_ScrollIntervalID==0) 
		nDIcon_ScrollIntervalID=setInterval(DIcon_Scroll_Transition,nDIcon_ScrollTimeInterval);
	nDIcon_ScrollCurStep=1;
}








nDIcon_MouseTimeIterval=50;
nDIcon_MouseDirection=0;	//1:up, -1:down,	0:sleeping
nDIcon_MouseIntervalID=0;
var DIcon_MouseStartTime;

function DIcon_MouseTransition() {
	var DIcon = document.getElementById("DIcon");

	nDIcon_Opacity+=nDIcon_MouseDirection*5*(DIcon_GetTime()-DIcon_MouseStartTime)/200;

	var bEnding;
	if (nDIcon_MouseDirection==1) {
		bEnding=nDIcon_Opacity>=100;
		if (bEnding) nDIcon_Opacity=100;
	} else {
		bEnding=nDIcon_Opacity<=nDIcon_NormalOpacity;
		if (bEnding) nDIcon_Opacity=nDIcon_NormalOpacity;
	}

	DIcon.style.filter="alpha(opacity="+Math.round(nDIcon_Opacity)+")";

	if (bEnding) {
		clearInterval(nDIcon_MouseIntervalID);
		nDIcon_MouseDirection=0;
		nDIcon_MouseIntervalID=0;
	}
}

function DIcon_MouseOver() {
	if (nDIcon_MouseIntervalID==0)
		nDIcon_MouseIntervalID=setInterval(DIcon_MouseTransition,nDIcon_MouseTimeIterval);
	DIcon_MouseStartTime=DIcon_GetTime();
	nDIcon_MouseDirection=1;
}

function DIcon_MouseOut() {
	if (nDIcon_MouseIntervalID==0)
		nDIcon_MouseIntervalID=setInterval(DIcon_MouseTransition,nDIcon_MouseTimeIterval);
	DIcon_MouseStartTime=DIcon_GetTime();
	nDIcon_MouseDirection=-1;
}

