/* ==========================================================
 * 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,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%"}));
					$t.append($("<button>").addClass("tile-sprite big-blue-submit trigger").html('Explore'));
					switch(sets.trigger){
						case"click":socials.click();
						break;
						case"hover":socials.hover();
						break;
						default:socials.click()
					}
				},
				click:function(){
					var trigger=$t.find(".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(".trigger");
					trigger.bind("mouseover",function(){
						if(hov==false){
							parent.fadeTo(sets.duration,1);
							socials.animation.open();
							$t.addClass("close")
						}
					});
					parent.bind("mouseleave",function(){
						$t.removeClass("close");
						parent.fadeTo(sets.duration,0);
						socials.animation.close();
						hov=true;
						setTimeout(function(){
							hov=false
						},500)}
				)},
				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+"px",left:x+"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);
