(function($){var elementSize;var indexStart;var timeout;var pixelStep;var stepping;var center=null;var container=null;var containerChildren;var root=null;var radius=null;var sinus;var cosinus;var xCenterPosition;var yCenterPosition;var spacing;var DIRECTION_LEFT="left";var DIRECTION_RIGHT="right";var direction;var shifting;$.fn.circle=function(DOMElementCenter,DOMElementContainer,circleRadius,params){root=this;center=$(DOMElementCenter);container=$(DOMElementContainer);radius=circleRadius;elementSize=42;indexStart=100;timeout=10;pixelStep=6;stepping=10;containerChildren=new Array();sinus=new Array();cosinus=new Array();xCenterPosition=0;yCenterPosition=0;spacing=0;direction="left";shifting=0;setParameter(params);init();set();run();}
function init(){setParentHeight();calculatePositions();calculateCenterPosition();createChildrenContainer();calculateSpacing();}
function set(){setChildren();setCenter();}
function run(){if(visited())
display();else
slideIn();}
function setParameter(parameter){if(!parameter)return;if(parameter.size)
elementSize=parameter.size;if(parameter.zIndex)
indexStart=parameter.zIndex;if(parameter.timerStart)
timeout=parameter.timerStart;if(parameter.pixelStep)
pixelStep=parameter.pixelStep;if(parameter.stepping)
stepping=parameter.stepping;if(parameter.direction)
direction=parameter.direction;if(parameter.shifting)
shifting=parameter.shifting;}
function setParentHeight(){root.css("height",radius*2+elementSize*2+"px");}
function calculatePositions(){for(var i=-360;i<=360;i++){sinus[i]=Math.sin((i+shifting)*Math.PI/180)*1;cosinus[i]=Math.cos((i+shifting)*Math.PI/180)*1;}}
function calculateCenterPosition(){xCenterPosition=(root.width()-(center.width()/2))/2;yCenterPosition=(root.height()-(center.width()/2))/2;}
function calculateSpacing(){if(containerChildren.length==0)return;spacing=360/containerChildren.length;}
function setChildren(){var _position=0;var _spacing=spacing;if(direction==DIRECTION_RIGHT){_position=(spacing*containerChildren.length);_spacing=-spacing;}
$(containerChildren).each(function(index,element){_position+=_spacing;element.endX=xCenterPosition+Math.floor((radius*sinus[Math.floor(_position)]));element.endY=yCenterPosition+Math.floor((radius*cosinus[Math.floor(_position)]));element.moveTo();element.css.display="block";});}
function setCenter(){center.css("left",(xCenterPosition-(center.width()/3))+"px");center.css("top",(yCenterPosition-(center.width()/3))+"px");center.css("visibility","visible");}
function visited(){var _value=$.cookie('visited');if(_value==1)
return true;$.cookie('visited','1');return false;}
function display(){$(containerChildren).each(function(index,element){element.posX=element.endX;element.posY=element.endY;element.moveTo();element.css.display="block";});}
function slideIn(){$(containerChildren).each(function(index,element){element.moveStepwise(stepping);});}
function createChildrenContainer(){$("a",container).each(function(index){containerChildren[index]=new singleObject(this,index);$(this).css("zIndex",(indexStart-index));});}
function singleObject(object,id){this.elm=object;this.css=this.elm.style;this.posX=xCenterPosition;this.posY=yCenterPosition;this.endX=0;this.endY=0;this.obj="object_"+id;eval(this.obj+"= this");}
singleObject.prototype.move=function(){var _xDiff=this.endX-this.posX;var _yDiff=this.endY-this.posY;var _result=Math.sqrt(Math.pow(_xDiff,2)+Math.pow(_yDiff,2))/pixelStep;var _xPos=_diffx/result;var _yPos=_diffy/result;if(Math.floor(_result)){this.posX=this.endX;this.posY=this.endY;this.moveTo();return;}
this.moveBy(_xPos,_yPos);setTimeout(this.obj+".move()",timeout);}
singleObject.prototype.moveTo=function(){this.css.top=this.posY+"px";this.css.left=this.posX+"px";}
singleObject.prototype.moveBy=function(x,y){this.posX+=x;this.posY+=y;this.moveTo();}
singleObject.prototype.moveStepwise=function(step){if(step==0)return 0;var _xDiff=this.endX-this.posX;var _yDiff=this.endY-this.posY;var _xPos=_xDiff/step;var _yPos=_yDiff/step;this.moveBy(_xPos,_yPos);var _step=step-1;setTimeout(this.obj+".moveStepwise("+_step+")",timeout);}})(jQuery);
