/**
 *  socialbutton.js
 *
 *  version: 1.0
 *  requires: jquery.1.6 later
 *  ref: jquery.sharrre-1.1.0.js by http://sharrre.com/
 */

(function () {
	var target = ".social_btn_set";
	var defaults = {
		url: getUrl(),
		title: getTitle(),
		googlePlus : {  //http://www.google.com/webmasters/+1/button/
			url: '',  //if you need to personnalize button url
			size: 'tall', // tall: 縦  meduimu: 中サイズ横
			lang: 'ja-JP'
		},
		facebook: { //http://developers.facebook.com/docs/reference/plugins/like/
			url: '',  //if you need to personalize url button
			action: 'like',
			layout: 'box_count', // box_count: 縦  button_count: 横
			width: '',
			send: 'false',
			faces: 'false',
			colorscheme: '',
			font: '',
			lang: 'ja_JP'
		},
		twitter: {  //http://twitter.com/about/resources/tweetbutton
			url: '',  //if you need to personalize url button
			count: 'vertical', // vertical: 縦  horizontal: 横
			via: '',
			related: '',
			lang: 'en'
		}
	};

	var buttons = {
		googlePlus : function(elem, params){
			var p = params.googlePlus;
			//$(elem).find('.buttons').append('<div class="button googleplus"><g:plusone size="' + p.size + '" href="' + params.url + '"></g:plusone></div>');
			$(elem).find('ul').append('<li><div class="button googleplus"><div class="g-plusone" data-size="' + p.size + '" data-href="' + params.url + '"></div></div></li>');
			window.___gcfg = {
				lang: p.lang
			};
			var loading = 0;
			if(typeof gapi === 'undefined' && loading == 0){
				loading = 1;
				(function() {
					var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
					po.src = 'https://apis.google.com/js/plusone.js';
					var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
				})();
			}
			else{
				gapi.plusone.go();
			}
		},
		facebook : function(elem, params){
			var p = params.facebook;
			$(elem).find('ul').append('<li><div class="btn_facebook"><div class="fb-like" data-href="' + params.url + '" data-send="' + p.send + '" data-layout="' + p.layout + '" data-width="' + p.width + '" data-show-faces="' + p.faces + '" data-action="' + p.action + '" data-colorscheme="' + p.colorscheme + '" data-font="' + p.font + '" data-via="' + p.via + '"></div></div></li>');
			var loading = 0;
			if(typeof FB === 'undefined' && loading == 0){
				loading = 1;
				(function(d, s, id) {
					var js, fjs = d.getElementsByTagName(s)[0];
					if (d.getElementById(id)) {return;}
					js = d.createElement(s); js.id = id;
					js.src = '//connect.facebook.net/' + p.lang + '/all.js#xfbml=1';
					fjs.parentNode.insertBefore(js, fjs);
				}(document, 'script', 'facebook-jssdk'));
			}
			else{
				FB.XFBML.parse();
			}
		},
		twitter : function(elem, params){
			var p = params.twitter;
			$(elem).find('ul').append('<li><div class="btn_twitter"><a href="https://twitter.com/share" class="twitter-share-button" data-url="' + params.url + '" data-count="' + p.count + '" data-text="' + params.title + '" data-via="' + p.via + '" data-related="' + p.related + '" data-lang="' + p.lang + '">Tweet</a></div></li>');
			var loading = 0;
			if(typeof twttr === 'undefined' && loading == 0){
				loading = 1;
				(function() {
					var twitterScriptTag = document.createElement('script');
					twitterScriptTag.type = 'text/javascript';
					twitterScriptTag.async = true;
					twitterScriptTag.src = 'http://platform.twitter.com/widgets.js';
					var s = document.getElementsByTagName('script')[0];
					s.parentNode.insertBefore(twitterScriptTag, s);
				})();
			}
			else{
				$.ajax({ url: 'http://platform.twitter.com/widgets.js', dataType: 'script', cache:true}); //http://stackoverflow.com/q/6536108
			}
		}
	};

	$(function() {
		init();
	});

	function getUrl() {
		return window.location.href;
	}

	function getTitle() {
		return document.title;
	}

	function getParams(self) {
		var params = defaults;
		var url = $(self).attr("data-url");
		if (typeof url !== "undefined" && url !== "") {
			params.url = url;
		}

		var title = $(self).attr("data-title");
		if (typeof title !== "undefined" && title !== "") {
			params.title = title;
		}

		return defaults;
	}
	
	function init() {
		var content = '<ul></ul>';
		$(target).each(function() {
			$(this).html(content);
			var params = getParams(this);
			buttons["facebook"](this, params);
			buttons["twitter"](this, params);
			buttons["googlePlus"](this, params);
		});
	}
})();
