/*
 * jQuery DP Social Bar v1.3
 *
 * Copyright 2011, Diego Pereyra
 *
 * @Web: http://www.dpereyra.com
 * @Email: info@dpereyra.com
 *
 * Depends:
 * jquery.js
 */


(function($){
    $.dpSocialBar = $.fn.dpSocialBar = function(options) {
		
		/* Setting vars*/
		var opts, $div_container, $div_wrap, $btn_item, opt_move_total = 0, opt_items, opt_show, opt_move, opt_speed, opt_position, opt_skin, counter, $all_icons, $span_caption, $btn_item_arr = new Array;
		
		opts = $.extend({}, $.fn.dpSocialBar.defaults, options);
		
		opt_items = opts.items;
		opt_show = opts.show;
		opt_move = opts.move;
		opt_speed = opts.speed;
		opt_position = opts.position;
		opt_skin = opts.skin;
		
		opt_move = isNaN(opt_move) || opt_move == '' ? $.fn.dpSocialBar.defaults.move : opt_move;
		
		counter = 0;
		
		$div_container = $('<div />').addClass('dpSocialBar_container');
		
		if(opt_skin != 'clear') { $div_container.addClass(opt_skin); }
		if(opt_position == "right") { $($div_container).addClass('right'); }
		
		if(opt_position == "top") { $($div_container).addClass('top'); }
		
		if(opt_position == "bottom") { $($div_container).addClass('bottom'); }
		
		$div_wrap = $('<div />').addClass('dpSocialBar_wrap');
		
		$($div_container).append($div_wrap);
		
		for (key in opt_items){      
			if(opt_items[key] != "") {
				
				$btn_item_arr[key] = $('<a />').attr('rel', 'dpSocialBar_'+key).hover(

					  function() 
					  { 
					  	var $el = $('#'+$(this).attr('rel')).show();
						if(opt_position == "right") {	
							$el.stop().animate({ right: '40px', opacity:1 }, {
								duration: 500
							});
						} else if(opt_position == "left") {
							$el.stop().animate({ left: '40px', opacity:1 }, {
								duration: 500
							});
						} else if(opt_position == "top") {
							$el.stop().animate({ top: '40px', opacity:1 }, {
								duration: 500
							});
						} else if(opt_position == "bottom") {
							$el.stop().animate({ top: '-35px', opacity:1 }, {
								duration: 500
							});
						}
					  }, 

					  function() 
					  { 
					  	var $el = $('#'+$(this).attr('rel'));
					  	if(opt_position == "right") {
							$el.stop().animate({ right: '0px', opacity:0 }, 500, function() {
								$(this).hide();	
							});
						} else if(opt_position == "left") {
							$el.stop().animate({ left: '0px', opacity:0 }, 500, function() {
								$(this).hide();	
							});
						} else if(opt_position == "top") {
							$el.stop().animate({ top: '30px', opacity:0 }, 500, function() {
								$(this).hide();	
							});
						} else if(opt_position == "bottom") {
							$el.stop().animate({ top: '-15px', opacity:0 }, 500, function() {
								$(this).hide();	
							});
						}
					  }
					).attr({href: opt_items[key]["url"], target: '_blank'}).append($('<div />').addClass('dpSocialBar_icon dpSocialBar_icon_'+key));
				if(opt_position == "top" || opt_position == "bottom") {
					$btn_item_arr[key].css({left: (counter*29)+'px', position: 'absolute'});
				} else {
					$btn_item_arr[key].css({top: (counter*29)+'px', position: 'absolute'});
				}
				
				if(opt_items[key]["text"] != "") {
					if(opt_position == "right" || opt_position == "left") {
						$span_caption = $('<div />').addClass('dpSocialBar_caption').attr({id: 'dpSocialBar_'+key}).css({top: ((counter*29)+7)+'px'}).append($('<span />').html(opt_items[key]["text"]));
						
						if(opt_position == "right") { $($span_caption).css("right", "0"); }
					} else {
						$span_caption = $('<div />').addClass('dpSocialBar_caption').attr({id: 'dpSocialBar_'+key}).css({left: ((counter*29)+7)+'px'}).append($('<span />').html(opt_items[key]["text"]));
						if(opt_position == "top") { $($span_caption).css("top", "30px"); }
						if(opt_position == "bottom") { $($span_caption).css("top", "-15px"); }
					}
					
					$($div_container).append($span_caption);
				}
				
				$($div_wrap).append($btn_item_arr[key]);
				
				counter++;
			
			}   
		}
		
		$all_icons = $($div_wrap).find('a');
		
		if(counter > opt_show) {
			if(opt_position == "right" || opt_position == "left") {
				$($div_wrap).css({height: ((opt_show*29)+4)+'px'});
			} else {
				$($div_wrap).css({width: ((opt_show*29)+4)+'px'});
			}
			opt_move_total = (opt_show-opt_move);
			$btn_item = $('<a />').attr({href: 'javascript:void(0);'}).append($('<div />').addClass('dpSocialBar_arrow_down'));
			$($btn_item).click(function() {
				if( $($all_icons).is(':animated') ) { return; }
				
				$('.dpSocialBar_caption').css('visibility', 'hidden');
				opt_move_total += parseInt(opt_move, 10);
				if(opt_position == "left" || opt_position == "right") {
					
					if((parseInt($($all_icons[0]).css('top').replace('px',''), 10) - 29) < -(29 * ((counter-1) - opt_show))) { 
						$($all_icons).stop().animate({top: '-='+(29 * ((counter) - opt_move_total))}, opt_speed,function(){ 
							$('.dpSocialBar_arrow_down').hide(); 
							$('.dpSocialBar_caption').each(function(i) {$(this).css('top', parseInt($($all_icons[i]).css('top').replace('px',''), 10)+5) });
							$('.dpSocialBar_caption').css('visibility', 'visible');
						}); 
						
						return; 
					}
					
					$($all_icons).stop().animate({top: '-='+(29 * opt_move)}, opt_speed, function(){
						$('.dpSocialBar_arrow_up').show();
						if($($div_wrap).find('a:last').css('top').replace("px", "") == (29 * (opt_show - 1))) { $('.dpSocialBar_arrow_down').hide(); }
						$('.dpSocialBar_caption').each(function(i) {$(this).css('top', parseInt($($all_icons[i]).css('top').replace('px',''), 10)+5) });
						$('.dpSocialBar_caption').css('visibility', 'visible');
					});
					
				} else {
					
					if((parseInt($($all_icons[0]).css('left').replace('px',''), 10) - 29) < -(29 * ((counter-1) - opt_show))) { 
						$($all_icons).stop().animate({left: '-='+(29 * ((counter) - opt_move_total))}, opt_speed,function(){ 
							$('.dpSocialBar_arrow_down').hide(); 
							$('.dpSocialBar_caption').each(function(i) {$(this).css('left', parseInt($($all_icons[i]).css('left').replace('px',''), 10)+5) });
							$('.dpSocialBar_caption').css('visibility', 'visible');
						}); 
						return; 
					}
					
					$($all_icons).stop().animate({left: '-='+(29 * opt_move)}, opt_speed, function(){
						$('.dpSocialBar_arrow_up').show();
						if($($div_wrap).find('a:last').css('left').replace("px", "") == (29 * (opt_show - 1))) { $('.dpSocialBar_arrow_down').hide(); }
						
						$('.dpSocialBar_caption').each(function(i) {$(this).css('left', parseInt($($all_icons[i]).css('left').replace('px',''), 10)+5) });
						$('.dpSocialBar_caption').css('visibility', 'visible');
					});
					
				}
				$('.dpSocialBar_caption').css('display', 'none');
				
			});
			$($div_container).append($btn_item);
			$btn_item = $('<a />').attr({href: 'javascript:void(0);'}).append($('<div />').addClass('dpSocialBar_arrow_up'));
			$($btn_item).click(function() {
				if( $($all_icons).is(':animated') ) { return; }
				
				$('.dpSocialBar_caption').css('visibility', 'hidden');
				opt_move_total -= parseInt(opt_move, 10);
				if(opt_position == "left" || opt_position == "right") {
					
					if((parseInt($($all_icons[0]).css('top').replace('px',''), 10) + (29 * opt_move)) > 0) { 
						$($all_icons).stop().animate({top: '+='+(-(parseInt($($all_icons[0]).css('top').replace('px',''), 10)))}, opt_speed,function(){ 
							$('.dpSocialBar_arrow_up').hide(); 
							$('.dpSocialBar_caption').each(function(i) {$(this).css('top', parseInt($($all_icons[i]).css('top').replace('px',''), 10)+5) });
							$('.dpSocialBar_caption').css('visibility', 'visible');
						}); 
						
						return; 
					}
					
					$($all_icons).stop().animate({top: '+='+(29 * opt_move)}, opt_speed,function(){
						$('.dpSocialBar_arrow_down').show();
						if($($all_icons[0]).css('top') == '0px') {
							$('.dpSocialBar_arrow_up').hide();
						}	
						
						$('.dpSocialBar_caption').each(function(i) {$(this).css('top', parseInt($($all_icons[i]).css('top').replace('px',''), 10)+5) });
						$('.dpSocialBar_caption').css('visibility', 'visible');
					});

				} else {
					
					if((parseInt($($all_icons[0]).css('left').replace('px',''), 10) + (29 * opt_move)) > 0) { 
						$($all_icons).stop().animate({left: '+='+(-(parseInt($($all_icons[0]).css('left').replace('px',''), 10)))}, opt_speed,function(){ 
							$('.dpSocialBar_arrow_up').hide(); 
							$('.dpSocialBar_caption').each(function(i) {$(this).css('left', parseInt($($all_icons[i]).css('left').replace('px',''), 10)+5) });
							$('.dpSocialBar_caption').css('visibility', 'visible');
						}); 
						
						return; 
					}
					
					$($all_icons).stop().animate({left: '+='+(29 * opt_move)}, opt_speed,function(){
						$('.dpSocialBar_arrow_down').show();
						if($($all_icons[0]).css('left') == '0px') {
							$('.dpSocialBar_arrow_up').hide();
						}	
						
						$('.dpSocialBar_caption').each(function(i) {$(this).css('left', parseInt($($all_icons[i]).css('left').replace('px',''), 10)+5) });
						$('.dpSocialBar_caption').css('visibility', 'visible');
					});

				}
				
				$('.dpSocialBar_caption').css('display', 'none');
				
			});
			$($div_container).append($btn_item);
		} else {
			if(opt_position == "right" || opt_position == "left") {
				$($div_wrap).css({height: ((counter*29)+4)+'px'});
			} else {
				$($div_wrap).css({width: ((counter*29)+4)+'px'});
			}	
		}
		
		$('body').append($div_container);
    };
	
	/* Default Parameters */
	$.fn.dpSocialBar.defaults = {  
		items: '',
		show: 5,
		move: 3,
		speed: 500,
		position: 'left',
		skin: 'clear'
	};
	
	
}(jQuery));
