/* ==========================================================
 * MobilyBlocks
 * date: 29.11.2010
 * last update: 25.1.2011
 * author: Marcin Dziewulski
 * web: http://www.mobily.pl or http://playground.mobily.pl
 * email: hello@mobily.pl
 * Free to use under the MIT license.
========================================================== */
(function($){
$.fn.mobilyblocks=function(options){
	var defaults={
		trigger:"click",
		direction:"clockwise",
		duration:750,
		zIndex:10,
		widthMultiplier:1.2
	};
	var sets=$.extend({},defaults,options);
	return this.each(function(){
		var $t=$(this),
			w=$t.width(),
			h=$t.height(),
			parent=$t.find("ul"),
			list=parent.find("li"),
			size=list.length,
			hov=false,
			hovTimeout = false,
			dir;
		if(sets.direction=="clockwise"){dir=-1}
		else{if(sets.direction=="counter"){dir=1}}
		var socials={
			init:function(){
				parent.hide().css({zIndex:sets.zIndex});
				$t.append($("<a />").addClass("trigger").css({display:"block",position:"absolute",zIndex:1,top:0,left:0,width:"100%",height:"100%"}));
				switch(sets.trigger){
					case"click":socials.click();break;
					case"hover":socials.hover();break;
					default:socials.click()}
				},
			click:function(){
				var trigger=$t.find("a.trigger");
				trigger.bind("click",function(){
					if($t.hasClass("close")){
						parent.fadeTo(sets.duration,0);
						socials.animation.close();
						$t.removeClass("close")
					}
					else{
						parent.fadeTo(sets.duration,1);
						socials.animation.open();
						$t.addClass("close")
					}
					return false
				})
			},
			hover:function(){
				var trigger=$t.find("a.trigger");
				trigger.bind("mouseover",function(){
					if(hovTimeout) {clearTimeout(hovTimeout); hovTimeout=false;}
					else if(hov==false){
						parent.fadeTo(sets.duration,1);
						socials.animation.open();
						/*$('.nyActMobi em').show();*/
						$t.addClass("close")
					}
				});
				parent.bind("mouseleave",function(){
					hovTimeout = setTimeout(function(){
						$t.removeClass("close");
						parent.fadeTo(sets.duration,0);
						/*$('.nyActMobi em').hide();*/
						socials.animation.close();
						hov=true;
						setTimeout(function(){hov=false},500)
					},5000)
				})
			},
			animation:{
				open:function(){
					socials.ie.open();
					list.each(function(i){
						var li=$(this);
						li.animate({path:new $.path.arc({center:[0,0],radius:w*sets.widthMultiplier,start:0,end:360/size*i,dir:dir})},sets.duration)
					});
					list.hover(function(){
						var li=$(this);
						li.css({zIndex:sets.zIndex}).siblings("li").css({zIndex:sets.zIndex-1})
					})
				},
				close:function(){
					list.each(function(i){
						var li=$(this);
						li.animate({top:0,left:0},sets.duration,function(){socials.ie.close()})
					})
				}
			},
			ie:{
				open:function(){
					if($.browser.msie){list.show()}
				},
				close:function(){
					if($.browser.msie){list.hide()}
				}
			}
		};
		socials.init()
	})
}}(jQuery));
(function($){
	$.path={};
	$.path.arc=function(params){
		for(var i in params){this[i]=params[i]}
		this.dir=this.dir||1;
		while(this.start>this.end&&this.dir>0){this.start-=360}
		while(this.start<this.end&&this.dir<0){this.start+=360}
		this.css=function(p){
			var a=this.start*(p)+this.end*(1-(p));
			a=a*3.1415927/180;
			var x=Math.sin(a)*this.radius+this.center[0];
			var y=Math.cos(a)*this.radius+this.center[1];
			return{top:y+37+"px",left:x+27+"px"}
		}
	};
	$.fx.step.path=function(fx){var css=fx.end.css(1-fx.pos);for(var i in css){fx.elem.style[i]=css[i]}}
})(jQuery);
