--- /dev/null
+/**\r
+ * jquery.socialbutton - jQuery plugin for social networking websites\r
+ * http://itra.jp/jquery_socialbutton_plugin/\r
+ * \r
+ * Copyright 2010, Itrans, Inc. http://itra.jp/\r
+ * \r
+ * Dual licensed under the MIT or GPL Version 2 licenses.\r
+ * http://jquery.org/license\r
+ * \r
+ * Version: 1.8.0\r
+ */\r
+\r
+/**\r
+ * SYNOPSIS\r
+ * \r
+ * \r
+ * mixi_check\r
+ * http://developer.mixi.co.jp/connect/mixi_plugin/mixi_check/spec_mixi_check\r
+ * \r
+ * $('#mixi_check').socialbutton('mixi_check', {\r
+ * key: 'mixi-check-key'\r
+ * });\r
+ * \r
+ * $('#mixi_check').socialbutton('mixi_check', {\r
+ * key: 'mixi-check-key',\r
+ * button: 'button-1',\r
+ * url: 'http://itra.jp/'\r
+ * });\r
+ * \r
+ * \r
+ * mixi_like\r
+ * http://developer.mixi.co.jp/connect/mixi_plugin/favorite_button/spec\r
+ * \r
+ * $('#mixi_like').socialbutton('mixi_like', {\r
+ * key: 'mixi-check-key',\r
+ * });\r
+ * \r
+ * $('#mixi_like').socialbutton('mixi_like', {\r
+ * key: 'mixi-check-key',\r
+ * url: 'http://itra.jp/',\r
+ * width: 450,\r
+ * height: 80,\r
+ * show_faces: true,\r
+ * style: 'additional-style-here'\r
+ * });\r
+ * \r
+ * \r
+ * facebook_like\r
+ * http://developers.facebook.com/docs/reference/plugins/like\r
+ * \r
+ * $('#facebook_like').socialbutton('facebook_like');\r
+ * \r
+ * $('#facebook_like').socialbutton('facebook_like', {\r
+ * button: 'standard', // synonym 'layout'\r
+ * url: 'http://itra.jp',\r
+ * show_faces: true,\r
+ * width: 450,\r
+ * height: 80,\r
+ * action: 'like',\r
+ * locale: 'en_US',\r
+ * font: 'arial',\r
+ * colorscheme: 'light'\r
+ * });\r
+ * \r
+ * \r
+ * facebook_share\r
+ * http://developers.facebook.com/docs/share\r
+ * \r
+ * $('#facebook_share').socialbutton('facebook_share');\r
+ * \r
+ * $('#facebook_share').socialbutton('facebook_share', {\r
+ * button: 'button_count', // synonym 'type'\r
+ * url: 'http://itra.jp',\r
+ * text: 'Share'\r
+ * });\r
+ * \r
+ * \r
+ * Twitter\r
+ * http://twitter.com/goodies/tweetbutton\r
+ * \r
+ * $('#twitter').socialbutton('twitter');\r
+ * \r
+ * $('#twitter').socialbutton('twitter', {\r
+ * button: 'vertical', // synonym 'count'\r
+ * url: 'http://itra.jp/',\r
+ * text: 'tweet text',\r
+ * lang: 'ja',\r
+ * via: 'ishiiyoshinori',\r
+ * related: 'twitter'\r
+ * });\r
+ * \r
+ * \r
+ * GREE Social Feedback\r
+ * http://developer.gree.co.jp/connect/plugins/sf\r
+ * \r
+ * $('#gree_sf').socialbutton('gree_sf');\r
+ * \r
+ * $('#gree_sf').socialbutton('gree_sf', {\r
+ * button: 0, // synonym 'type'\r
+ * url: 'http://itra.jp/',\r
+ * width: 0, // auto\r
+ * height: 20\r
+ * });\r
+ * \r
+ * \r
+ * Evernote Site Memory\r
+ * http://www.evernote.com/about/developer/sitememory/\r
+ * \r
+ * $('#evernote').socialbutton('evernote');\r
+ * \r
+ * $('#evernote').socialbutton('evernote', {\r
+ * button: 'article-clipper',\r
+ * url: 'http://itra.jp/',\r
+ * provider_name: 'itra.jp',\r
+ * suggest_notebook: 'webclip',\r
+ * content_id: 'element-id-to-clip',\r
+ * code: 'your-affiliate-code',\r
+ * title: 'note-title',\r
+ * suggest_tags: 'comma-separated-tags,up-to-three-tags',\r
+ * styling: 'full'\r
+ * });\r
+ * \r
+ * \r
+ * Hatena Bookmark\r
+ * http://b.hatena.ne.jp/\r
+ * \r
+ * $('#hatena').socialbutton('hatena');\r
+ * \r
+ * $('#hatena').socialbutton('hatena', {\r
+ * button: 'standard',\r
+ * url: 'http://itra.jp/',\r
+ * title: 'page-title'\r
+ * });\r
+ * \r
+ * \r
+ * Hatena Bookmark (Old Style)\r
+ * http://b.hatena.ne.jp/\r
+ * \r
+ * $('#hatena').socialbutton('hatena_oldstyle');\r
+ * \r
+ * $('#hatena').socialbutton('hatena_oldstyle', {\r
+ * button: '/path/to/your-icon.png',\r
+ * url: 'http://itra.jp/',\r
+ * padding: 10,\r
+ * height: 15\r
+ * });\r
+ * \r
+ * \r
+ * Google +1 Button\r
+ * http://www.google.com/webmasters/+1/button/\r
+ * \r
+ * $('#google').socialbutton('google_plusone');\r
+ * \r
+ * $('#google').socialbutton('google_plusone', {\r
+ * lang: 'ja',\r
+ * parsetags: 'explicit',\r
+ * callback: 'some_callback_function',\r
+ * count: true,\r
+ * href: 'http://itra.jp/',\r
+ * size: 'standard'\r
+ * });\r
+ * \r
+ */\r
+(function($) {\r
+\r
+$.fn.socialbutton = function(service, options) {\r
+\r
+ options = options || {};\r
+\r
+ var defaults = {\r
+ mixi_check: {\r
+ key: '',\r
+ button: 'button-1', // button-1,button-2,button-3,button-4,button-5\r
+ url: '' // document.URL\r
+ },\r
+ mixi_like: {\r
+ key: '',\r
+ url: document.URL,\r
+ width: 0, // auto\r
+ height: 0, // auto\r
+ show_faces: true,\r
+ style: '',\r
+\r
+ sizes: {\r
+ width: {\r
+ with_faces: 450,\r
+ without_faces: 140\r
+ },\r
+ height: {\r
+ with_faces_minimum: 80,\r
+ without_faces_minimum: 20\r
+ }\r
+ }\r
+ },\r
+ facebook_like: {\r
+ button: 'standard', // standard / button_count / box_count\r
+ url: document.URL,\r
+\r
+ show_faces: true,\r
+ width: 0, // auto\r
+ height: 0, // auto\r
+\r
+ width_standard_default: 450, // orig: 450\r
+ width_standard_minimum: 225,\r
+ height_standard_without_photo: 35,\r
+ height_standard_with_photo: 80,\r
+\r
+ width_button_count_default: 120, // orig: 90, jp_min: 114\r
+ width_button_count_minimum: 90,\r
+ height_button_count: 25, // orig:20, jp_min: 21\r
+\r
+ width_box_count_default: 80, // orig:55, jp_min: 75\r
+ width_box_count_minimum: 55,\r
+ height_box_count: 70, // orig: 65, jp_min: 66\r
+\r
+ action: 'like', // like / recommend\r
+ locale: '', // auto\r
+ font: '',\r
+ colorscheme: 'light' // light / dark\r
+ },\r
+ facebook_share: {\r
+ button: 'button_count', // box_count / button / icon_link / icon\r
+ url: '', //document.URL\r
+ text: '' //Share\r
+ },\r
+ twitter: {\r
+ button: 'vertical', // vertical / horizontal / none\r
+ url: '', // document.URL\r
+ text: '',\r
+ lang: 'ja', // ja / en /de / fr / es\r
+ via: '',\r
+ related: ''\r
+ },\r
+ gree_sf: {\r
+ button: 0, // 0,1,2,3,4\r
+ url: document.URL,\r
+ width: 0, // auto\r
+ height: 20,\r
+\r
+ widths: {\r
+ type0_16: 58, type0_20: 70, type0_23: 76,\r
+ type1_16: 58, type1_20: 73, type1_23: 78,\r
+ type2_16: 58, type2_20: 73, type2_23: 78,\r
+ type3_16: 49, type3_20: 61, type3_23: 64,\r
+ type4_16: 16, type4_22: 21, type4_32: 32\r
+ }\r
+ },\r
+ evernote: {\r
+ button: 'article-clipper', // article-clipper, article-clipper-remember, article-clipper-jp, article-clipper-rus, article-clipper-fr, article-clipper-es, article-clipper-de, article-clipper-vert, site-mem-32, site-mem-36, site-mem-22, site-mem-16\r
+ url: '', // document.URL\r
+ provider_name: '', // domain name\r
+ suggest_notebook: '', // notebook name\r
+ content_id: '', // element id for clip\r
+ code: '', // affiliate code\r
+ title: '',\r
+ suggest_tags: '',\r
+ styling: '' // none(text-only), full\r
+ },\r
+ hatena: {\r
+ button: 'standard', // standard, vertical, simple\r
+ url: document.URL,\r
+ title: document.title\r
+ },\r
+ hatena_oldstyle: {\r
+ button: 'http://d.hatena.ne.jp/images/b_append.gif',\r
+ url: document.URL,\r
+ height: 13,\r
+ padding: 7\r
+ },\r
+ google_plusone: {\r
+ lang: '', // en-US\r
+ parsetags: '', // none(onload), explicit\r
+ callback: '',\r
+ count: true, // true, false\r
+ href: '',\r
+ size: '' // small, standard, medium, tall\r
+ }\r
+ };\r
+\r
+ var max_index = this.size() - 1;\r
+\r
+ return this.each(function(index) {\r
+\r
+ switch (service) {\r
+ case 'mixi_check':\r
+ socialbutton_mixi_check(this, options, defaults.mixi_check, index, max_index);\r
+ break;\r
+\r
+ case 'mixi_like':\r
+ socialbutton_mixi_like(this, options, defaults.mixi_like, index, max_index);\r
+ break;\r
+\r
+ case 'facebook_like':\r
+ socialbutton_facebook_like(this, options, defaults.facebook_like, index, max_index);\r
+ break;\r
+\r
+ case 'facebook_share':\r
+ socialbutton_facebook_share(this, options, defaults.facebook_share, index, max_index);\r
+ break;\r
+\r
+ case 'twitter':\r
+ socialbutton_twitter(this, options, defaults.twitter, index, max_index);\r
+ break;\r
+\r
+ case 'gree_sf':\r
+ socialbutton_gree_sf(this, options, defaults.gree_sf, index, max_index);\r
+ break;\r
+\r
+ case 'evernote':\r
+ socialbutton_evernote(this, options, defaults.evernote, index, max_index);\r
+ break;\r
+\r
+ case 'hatena':\r
+ socialbutton_hatena(this, options, defaults.hatena, index, max_index);\r
+ break;\r
+\r
+ case 'hatena_oldstyle':\r
+ socialbutton_hatena_oldstyle(this, options, defaults.hatena_oldstyle, index, max_index);\r
+ break;\r
+\r
+ case 'google_plusone':\r
+ socialbutton_google_plusone(this, options, defaults.google_plusone, index, max_index);\r
+ break;\r
+\r
+ default:\r
+ break;\r
+ }\r
+\r
+ return true;\r
+ });\r
+}\r
+\r
+function socialbutton_mixi_check(target, options, defaults, index, max_index)\r
+{\r
+ var key = options.key || defaults.key;\r
+ var button = options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+\r
+ if (key == '') {\r
+ return;\r
+ }\r
+\r
+ var attr = merge_attributes({\r
+ 'data-key': key,\r
+ 'data-url': htmlspecialchars(url),\r
+ 'data-button': button\r
+ });\r
+\r
+ var tag = '<a href="http://mixi.jp/share.pl" class="mixi-check-button"' + attr + '>Check</a>';\r
+\r
+ $(target).html(tag);\r
+\r
+ if (index == max_index) {\r
+ $('body').append('<script type="text/javascript" src="http://static.mixi.jp/js/share.js"></script>');\r
+ }\r
+}\r
+\r
+function socialbutton_mixi_like(target, options, defaults, index, max_index)\r
+{\r
+ var key = options.key || defaults.key;\r
+ var url = options.url || defaults.url;\r
+ var width = options.width != undefined ? options.width : defaults.width;\r
+ var height = options.height != undefined ? options.height : defaults.height;\r
+ var show_faces = options.show_faces != undefined ? options.show_faces : defaults.show_faces;\r
+ var style = options.style || defaults.style;\r
+\r
+ if (key == '') {\r
+ return;\r
+ }\r
+\r
+ if (options.url) {\r
+ url = decodeURIComponent(url);\r
+ }\r
+ url = url_encode_rfc3986(url);\r
+\r
+ if (width == 0) {\r
+ width = show_faces ? defaults.sizes.width.with_faces : defaults.sizes.width.without_faces;\r
+ }\r
+\r
+ if (height == 0) {\r
+ height = show_faces ? defaults.sizes.height.with_faces_minimum : defaults.sizes.height.without_faces_minimum;\r
+ } else {\r
+ if (show_faces && height < defaults.sizes.height.with_faces_minimum) {\r
+ height = defaults.sizes.height.with_faces_minimum;\r
+ } else if (!show_faces && height < defaults.sizes.height.without_faces_minimum) {\r
+ height = defaults.sizes.height.without_faces_minimum;\r
+ }\r
+ }\r
+\r
+ var params = merge_parameters({\r
+ 'href': url,\r
+ 'service_key': key,\r
+ 'width': width,\r
+ 'show_faces': show_faces ? 'true' : 'false'\r
+ });\r
+\r
+ var attr = merge_attributes({\r
+ src: 'http://plugins.mixi.jp/favorite.pl?' + params,\r
+ scrolling: 'no',\r
+ frameborder: '0',\r
+ allowTransparency: 'true',\r
+ style: 'border:0; overflow:hidden; width:' + width + 'px; height:' + height + 'px; ' + style\r
+ });\r
+\r
+ var tag = '<iframe' + attr + '></iframe>';\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_facebook_like(target, options, defaults, index, max_index)\r
+{\r
+ var layout = options.layout || options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+\r
+ var show_faces = options.show_faces != undefined ? options.show_faces : defaults.show_faces;\r
+ var width = options.width != undefined ? options.width : defaults.width;\r
+ var height = options.height != undefined ? options.height : defaults.height;\r
+ var action = options.action || defaults.action;\r
+ var locale = options.locale || defaults.locale;\r
+ var font = options.font || defaults.font;\r
+ var colorscheme = options.colorscheme || defaults.colorscheme;\r
+\r
+ if (options.url) {\r
+ url = decodeURIComponent(url);\r
+ }\r
+ url = url_encode_rfc3986(url);\r
+\r
+ switch (layout) {\r
+ case 'standard':\r
+ if (width == 0) {\r
+ width = defaults.width_standard_default;\r
+ } else if (width < defaults.width_standard_minimum) {\r
+ width = defaults.width_standard_minimum;\r
+ }\r
+ if (height == 0) {\r
+ height = show_faces ? defaults.height_standard_with_photo : defaults.height_standard_without_photo;\r
+ } else if (height < defaults.height_standard_without_photo) {\r
+ height = defaults.height_standard_without_photo;\r
+ }\r
+ break;\r
+ case 'button_count':\r
+ if (width == 0) {\r
+ width = defaults.width_button_count_default;\r
+ } else if (width < defaults.width_button_count_minimum) {\r
+ width = defaults.width_button_count_minimum;\r
+ }\r
+ if (height == 0) {\r
+ height = defaults.height_button_count;\r
+ } else if (height < defaults.height_button_count) {\r
+ height = defaults.height_button_count;\r
+ }\r
+ break;\r
+ case 'box_count':\r
+ if (width == 0) {\r
+ width = defaults.width_box_count_default;\r
+ } else if (width < defaults.width_box_count_minimum) {\r
+ width = defaults.width_box_count_minimum;\r
+ }\r
+ if (height == 0) {\r
+ height = defaults.height_box_count;\r
+ } else if (height < defaults.height_box_count) {\r
+ height = defaults.height_box_count;\r
+ }\r
+ break;\r
+ }\r
+\r
+ var params = merge_parameters({\r
+ 'href': url,\r
+ 'layout': layout,\r
+ 'show_faces': show_faces ? 'true' : 'false',\r
+ 'width': width,\r
+ 'action': action,\r
+ 'locale': locale,\r
+ 'font': font,\r
+ 'colorscheme': colorscheme,\r
+ 'height': height\r
+ });\r
+\r
+ var tag = '<iframe src="http://www.facebook.com/plugins/like.php?' + params + '" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:' + width + 'px; height:' + height + 'px;" allowTransparency="true"></iframe>';\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_facebook_share(target, options, defaults, index, max_index)\r
+{\r
+ var type = options.type || options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+ var text = options.text || defaults.text;\r
+\r
+ var attr = merge_attributes({\r
+ 'type': type,\r
+ 'share_url': htmlspecialchars(url)\r
+ });\r
+\r
+ var tag = '<a name="fb_share"' + attr + '>' + text + '</a>';\r
+\r
+ if(index == 0) {\r
+ tag += '<script type="text/javascript" src="http://static.ak.fbcdn.net/connect.php/js/FB.Share"></script>';\r
+ }\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_twitter(target, options, defaults, index, max_index)\r
+{\r
+ var count = options.count || options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+\r
+ var text = options.text || defaults.text;\r
+ var lang = options.lang || defaults.lang;\r
+ var via = options.via || defaults.via;\r
+ var related = options.related || defaults.related;\r
+\r
+ var attr = merge_attributes({\r
+ 'data-count': count,\r
+ 'data-url': htmlspecialchars(url),\r
+ 'data-text': text,\r
+ 'data-lang': lang,\r
+ 'data-via': via,\r
+ 'data-related': related\r
+ });\r
+\r
+ var tag = '<a href="http://twitter.com/share" class="twitter-share-button"' + attr + '>Tweet</a>';\r
+\r
+ $(target).html(tag);\r
+\r
+ if (index == max_index) {\r
+ $('body').append('<script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>');\r
+ }\r
+}\r
+\r
+function socialbutton_gree_sf(target, options, defaults, index, max_index)\r
+{\r
+ var type = options.type || options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+\r
+ var width = options.width != undefined ? options.width : defaults.width;\r
+ var height = options.height != undefined ? options.height : defaults.height;\r
+\r
+ if (options.url) {\r
+ url = decodeURIComponent(url);\r
+ }\r
+ url = url_encode_rfc3986(url);\r
+\r
+ switch (type) {\r
+ case 0:\r
+ case 1:\r
+ case 2:\r
+ case 3:\r
+ if (height != 16 && height != 20 && height != 23) {\r
+ height = 20;\r
+ }\r
+ break;\r
+\r
+ case 4:\r
+ if (height != 16 && height != 22 && height != 32) {\r
+ height = 22;\r
+ }\r
+ break;\r
+\r
+ default:\r
+ type = 0;\r
+ width = 0;\r
+ height = 20;\r
+ break;\r
+ }\r
+\r
+ if (width == 0) {\r
+ width = defaults.widths['type' + type + '_' + height];\r
+ }\r
+\r
+ var params = merge_parameters({\r
+ 'url': url,\r
+ 'type': String(type),\r
+ 'height': height\r
+ });\r
+\r
+ var tag = '<iframe src="http://share.gree.jp/share?' + params + '" scrolling="no" frameborder="0" marginwidth="0" marginheight="0" style="border:none; overflow:hidden; width:' + width + 'px; height:' + height + 'px;" allowTransparency="true"></iframe>';\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_evernote(target, options, defaults, index, max_index)\r
+{\r
+ var button = options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+\r
+ var provider_name = options.provider_name || defaults.provider_name;\r
+ var suggest_notebook = options.suggest_notebook || defaults.suggest_notebook;\r
+ var content_id = options.content_id || defaults.content_id;\r
+ var code = options.code || defaults.code;\r
+ var title = options.title || defaults.title;\r
+ var suggest_tags = options.suggest_tags || defaults.suggest_tags;\r
+ var styling = options.styling || defaults.styling;\r
+\r
+ if (button == 'article-clipper' ||\r
+ button == 'article-clipper-remember' ||\r
+ button == 'article-clipper-jp' ||\r
+ button == 'article-clipper-rus' ||\r
+ button == 'article-clipper-fr' ||\r
+ button == 'article-clipper-es' ||\r
+ button == 'article-clipper-de' ||\r
+ button == 'article-clipper-vert' ||\r
+ button == 'site-mem-32' ||\r
+ button == 'site-mem-36' ||\r
+ button == 'site-mem-22' ||\r
+ button == 'site-mem-16'\r
+ ) {\r
+ button = 'http://static.evernote.com/' + button + '.png';\r
+ }\r
+\r
+ var clipoptions = {\r
+ 'url': url,\r
+ 'providerName': provider_name,\r
+ 'suggestNotebook': suggest_notebook,\r
+ 'contentId': content_id,\r
+ 'code': code,\r
+ 'title': title,\r
+ 'suggestTags': suggest_tags,\r
+ 'styling': styling\r
+ };\r
+\r
+ if (index == 0) {\r
+ $('body').append('<script type="text/javascript" src="http://static.evernote.com/noteit.js"></script>');\r
+ }\r
+\r
+ var tag = $(document.createElement('a'))\r
+ .attr({href: '#'})\r
+ .click(function(){\r
+ if (Evernote) {\r
+ Evernote.doClip(clipoptions);\r
+ }\r
+ return false;\r
+ })\r
+ .append('<img src="' + button + '" alt="Clip to Evernote" style="border: none" />');\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_hatena(target, options, defaults, index, max_index)\r
+{\r
+ var layout = options.layout || options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+ var title = options.title || defaults.title;\r
+\r
+ url = htmlspecialchars(url);\r
+ title = htmlspecialchars(title);\r
+\r
+ var attr = merge_attributes({\r
+ 'href': 'http://b.hatena.ne.jp/entry/' + url,\r
+ 'class': 'hatena-bookmark-button',\r
+ 'data-hatena-bookmark-title': title,\r
+ 'data-hatena-bookmark-layout': layout,\r
+ 'title': 'このエントリーをはてなブックマークに追加'\r
+ });\r
+ \r
+ var tag = '<a' + attr + '><img src="http://b.st-hatena.com/images/entry-button/button-only.gif" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a>'\r
+ + '<script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>';\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_hatena_oldstyle(target, options, defaults, index, max_index)\r
+{\r
+ var button = options.button || defaults.button;\r
+ var url = options.url || defaults.url;\r
+\r
+ var height = options.height != undefined ? options.height : defaults.height;\r
+ var padding = options.padding != undefined ? options.padding : defaults.padding;\r
+\r
+ url = htmlspecialchars(url);\r
+\r
+ var tag = '<span style="font-size: ' + height + 'px; line-height: 100%; ">'\r
+ + '<span style="padding-right: ' + padding + 'px"><a href="http://b.hatena.ne.jp/entry/add/' + url + '" target="_blank"><img src="' + button + '" style="border: none; vertical-align: text-bottom" /></a></span>'\r
+ + '<a href="http://b.hatena.ne.jp/entry/' + url + '" target="_blank"><img src="http://b.hatena.ne.jp/entry/image/' + url + '" style="border: none; vertical-align: text-bottom" /></a>'\r
+ + '</span>';\r
+\r
+ $(target).html(tag);\r
+}\r
+\r
+function socialbutton_google_plusone(target, options, defaults, index, max_index)\r
+{\r
+ if ($.browser.msie && parseInt($.browser.version, 10) < 8) {\r
+ return;\r
+ }\r
+\r
+ var lang = options.lang || defaults.lang;\r
+ var parsetags = options.parsetags || defaults.parsetags;\r
+\r
+ var callback = options.callback || defaults.callback;\r
+ var count = options.count != undefined ? options.count : defaults.count;\r
+ var href = options.href || defaults.href;\r
+ var size = options.size || defaults.size;\r
+\r
+ switch (size) {\r
+ case 'small':\r
+ case 'standard':\r
+ case 'medium':\r
+ break;\r
+\r
+ case 'tall':\r
+ count = true;\r
+ break;\r
+\r
+ default:\r
+ size = 'standard';\r
+ count = true;\r
+ }\r
+\r
+ var tag = $('<div>')\r
+ .attr({\r
+ 'data-callback': callback,\r
+ 'data-count': count ? 'true' : 'false',\r
+ 'data-href': href,\r
+ 'data-size': size\r
+ }).addClass('g-plusone');\r
+ $(target).append(tag);\r
+\r
+ if (index == max_index) {\r
+\r
+ var script_params = '';\r
+\r
+ if (lang != '') {\r
+ script_params += 'lang: "' + htmlspecialchars(lang) + '"';\r
+ }\r
+ if (parsetags != '') {\r
+ script_params += script_params != '' ? ',' : '';\r
+ script_params += 'parsetags: "' + htmlspecialchars(parsetags) + "'";\r
+ }\r
+ if (script_params != '') {\r
+ script_params = '{' + script_params + '}';\r
+ }\r
+\r
+ $('body').append('<script type="text/javascript" src="https://apis.google.com/js/plusone.js">' + script_params + '</script>');\r
+ }\r
+}\r
+\r
+function merge_attributes(attr)\r
+{\r
+ var merged = '';\r
+\r
+ for (var i in attr) {\r
+ if (attr[i] == '') {\r
+ continue;\r
+ }\r
+ merged += ' ' + i + '="' + attr[i] + '"';\r
+ }\r
+\r
+ return merged;\r
+}\r
+\r
+function merge_parameters(params)\r
+{\r
+ var merged = '';\r
+\r
+ for (var i in params) {\r
+ if (params[i] == '') {\r
+ continue;\r
+ }\r
+ merged += merged != '' ? '&' : '';\r
+ merged += i + '=' + params[i] + '';\r
+ }\r
+\r
+ return merged;\r
+}\r
+\r
+function htmlspecialchars(string)\r
+{\r
+ var table = [\r
+ [/&/g, '&'],\r
+ [/</g, '<'],\r
+ [/>/g, '>'],\r
+ [/"/g, '"'],\r
+ [/'/g, ''']\r
+ ];\r
+\r
+ for (var i in table) {\r
+ string = string.replace(table[i][0], table[i][1]);\r
+ }\r
+\r
+ return string;\r
+}\r
+\r
+function url_encode_rfc3986(url)\r
+{\r
+ return encodeURIComponent(url).replace(/[!*'()]/g, function(p) {\r
+ return "%" + p.charCodeAt(0).toString(16);\r
+ });\r
+}\r
+\r
+})(jQuery);\r