﻿/*!
 * jQuery Circle Menu
 *
 * Copyright (c) 2010 Mykhailo Gorsky [OSF-Global] (mykhailo.gorsky@osf-global.com)
 *
 * http://www.osf-global.com
 */ 
 (function () {
    $.fn.circlemenu = function (radius,startindex) {
       
        return this.each(function () {
            var self = this,$mainbox = $('> ul#circularMenu', this), $secondboxes = $('> .needs-explain .list-needs ul', this), xcenter = $mainbox.position().left + Math.ceil($mainbox.innerWidth()/2), ycenter = $mainbox.position().top + Math.ceil($mainbox.innerHeight()/2), rad = radius, $items = $mainbox.find('> li'),	rotatestep = 2*Math.PI/$items.length, curitem = startindex, microstep = rotatestep/3, stepsnum = 0, timerpointer = false, rnum = 0, dir = 1;
            function draw(rot) {
			for (i=0;i<$items.length;i++) {
	textel = $('> a b',$items[i]); el = $($items[i]);
	el.css("left",xcenter+Math.ceil(Math.cos(i*rotatestep+rot)*rad-el.width()/2)); 
	el.css("top",ycenter+Math.ceil(Math.sin(i*rotatestep+rot)*rad-el.height()/2));
	textel.css("left",xcenter-parseInt($($items[i]).css("left"))-Math.ceil(textel.width()/2));
	textel.css("top",ycenter-parseInt($($items[i]).css("top"))-Math.ceil(textel.height()/2));}}
            function dorotate() {
			if (stepsnum<Math.abs(rnum*3)) {
			stepsnum++;
			timerpointer=setTimeout(function() {draw(-rotatestep*curitem+(microstep*stepsnum));dorotate();},30);
			} else {curitem=curitem+rnum;if (curitem<0) {curitem+=$items.length;}if (curitem>=$items.length) {curitem-=$items.length;};if (curitem<=$secondboxes.length) {$($secondboxes[curitem]).fadeIn(100);}$($items[curitem]).addClass('act');$(self).attr('index',curitem);setTimeout(function(){window.location=$($items[curitem]).find('> a:first').attr('href');},10);}}

            function gotoItem(itemnum) {
			rnum = itemnum-curitem;
			dir = rnum/Math.abs(rnum);
			if (dir<0) {rnum+=$items.length;}
			rnum=-($items.length-rnum);
			stepsnum=1;
			if ((itemnum-curitem)!=0) {
				$($items[curitem]).removeClass('act');
				if (curitem<=$secondboxes.length) {$($secondboxes[curitem]).fadeOut(100);}
				dorotate();}}
			draw(rotatestep*($items.length-curitem));
			$($items[curitem]).addClass('act');$(self).attr('index',curitem);
			if ($secondboxes.length) $($secondboxes[0]).fadeOut(100);	
			if ($secondboxes.length) {$($secondboxes[curitem]).fadeIn(100);}
			for (i=0;i<$items.length;i++) {
				$($items[i]).data('key',i);
				$($items[i]).click(function() {
				gotoItem($(this).data('key'));							
				return false;							
			});};
        });
    };
})(jQuery);




