// ----------------------------------------------------------
// Real-Cool-Link-Element
// ----------------------------------------------------------
function RCLE(divID,left,top,shadowdistance) {

	// Variablen für die Positionen
	var Left = left;
	var Top  = top;
	
	var OffsetLeft;
	var OffsetTop;
	
	var ShadowDistance = shadowdistance;

	// Diverses
	var ImagePath 	= "Images/";
	var StepCount 	= 30;
	var Speed 		= 24;
	var IsMoving 	= false;
	var CurrentStep = 0;
	var Steps 		= new Array(StepCount);
	
	var Timer;

	if(!document.getElementById(divID)){
		tempDiv = document.createElement("div");
		tempDiv.id = divID;
		document.body.appendChild(tempDiv);
		tempDiv = null;
	}

	var Element = document.getElementById(divID);
	var Shadow = document.createElement("div");
	Shadow.id = Element.id + "_shadow";

	Element.innerHTML = "<img id='Img" + Element.id + "' src='" + ImagePath + Element.id + ".png'>";
	
	Shadow.innerHTML  = "<img src='" + ImagePath + Shadow.id + ".png'>";
	
	Shadow.style.position = "absolute";
	Shadow.style.zIndex = "100";
	Element.style.position = "absolute";
	Element.style.zIndex = "100";
	
	Element.style.cursor = "pointer";

	document.body.insertBefore(Shadow,Element);
	
	setFinalPosition(Left,Top)
	CalculateSteps(StepCount);
	
	//DebugOut("RCLE: " + Element.id + " added");
	
	this.Element = Element;
	this.Element.Instance = this;
	this.id = Element.id;
	
	// --- Positionen ---
    function setFinalPosition(left,top){
		Left = left;
		Top = top;
		setPosition(left,top);
    }
    
    function setPosition(left,top){
    	Element.style.left 	= left + "px";
		Element.style.top 	= top + "px";
		Shadow.style.left 	= (left + ShadowDistance) + "px";
		Shadow.style.top 	= (top + ShadowDistance) + "px";
    }
    
    // --- MoveTo ---
    this.MoveTo = function(left,top){
    	MoveTo(left,top);
    }
    
    function MoveTo(left,top){
    	if(!IsMoving){
	    	window.clearTimeout(Timer);
	
	    	OffsetLeft = left - Left;
	    	OffsetTop  = top  - Top;
	    	
	    	IsMoving = true;
			
	    	Timer = window.setTimeout("Div" + Element.id + ".MoveStep()", Speed);
    	}
    }
    
    this.MoveStep = function (){
    
		setPosition(Left+(OffsetLeft*Steps[CurrentStep]),Top+(OffsetTop*Steps[CurrentStep]))
    
    	CurrentStep++;
    	if(CurrentStep < Steps.length){
    		Timer = window.setTimeout("Div" + Element.id + ".MoveStep()", Speed);
    	} else {
    		setFinalPosition(Left+OffsetLeft,Top+OffsetTop);
	    	IsMoving = false;
    		CurrentStep = 0;
    	}
    }
    
    // --- Berechnungen ---
    function Grad2Rad(grad){
    	return grad * Math.PI / 180
    }
    
    function CalculateSteps(){
        increment = 180/StepCount;
    	index = 0;
    	for(i=0; i<= 180.0001; i+= increment){
    		Steps[index] = CalculateStep(i);
    		index ++;
    	}
    }
    
    function CalculateStep(grad){
    	return (Math.cos(Grad2Rad(grad)) * -1 + 1) / 2;
    }
}
// ----------------------------------------------------------
