diff --git a/package.json b/package.json
index fbf2d46..1e3b4a0 100644
--- a/package.json
+++ b/package.json
@@ -12,7 +12,7 @@
},
"devDependencies": {},
"scripts": {
- "start": "node sharefest/server.js"
+ "start": "cd sharefest; node server.js"
},
"engines": {
"node": "0.6.x"
diff --git a/sharefest/public/SocialSharePrivacy/README.md b/sharefest/public/SocialSharePrivacy/README.md
new file mode 100644
index 0000000..c0934be
--- /dev/null
+++ b/sharefest/public/SocialSharePrivacy/README.md
@@ -0,0 +1,6 @@
+The content of this folder was automatically generated. To regenerate it:
+
+* `git clone https://github.com/thedod/SocialSharePrivacy-1.git` and cd there
+* Install the dependencies as explained in the README, or figure them out as you go along ;)
+* run `./build.sh -m mail,fbshare,twitter -l none -a off -p SocialSharePrivacy/ -o SocialSharePrivacy` (or something similar)
+
diff --git a/sharefest/public/SocialSharePrivacy/images/box_fbshare.png b/sharefest/public/SocialSharePrivacy/images/box_fbshare.png
new file mode 100644
index 0000000..0d722c1
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/box_fbshare.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/box_mail.png b/sharefest/public/SocialSharePrivacy/images/box_mail.png
new file mode 100644
index 0000000..f2692c0
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/box_mail.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/dummy_box_twitter.png b/sharefest/public/SocialSharePrivacy/images/dummy_box_twitter.png
new file mode 100644
index 0000000..84f7c6d
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/dummy_box_twitter.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/dummy_twitter.png b/sharefest/public/SocialSharePrivacy/images/dummy_twitter.png
new file mode 100644
index 0000000..2865660
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/dummy_twitter.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/fbshare.png b/sharefest/public/SocialSharePrivacy/images/fbshare.png
new file mode 100644
index 0000000..5e2a84c
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/fbshare.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/mail.png b/sharefest/public/SocialSharePrivacy/images/mail.png
new file mode 100644
index 0000000..690cc66
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/mail.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/socialshareprivacy_info.png b/sharefest/public/SocialSharePrivacy/images/socialshareprivacy_info.png
new file mode 100644
index 0000000..733238d
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/socialshareprivacy_info.png differ
diff --git a/sharefest/public/SocialSharePrivacy/images/socialshareprivacy_on_off.png b/sharefest/public/SocialSharePrivacy/images/socialshareprivacy_on_off.png
new file mode 100644
index 0000000..8e9e725
Binary files /dev/null and b/sharefest/public/SocialSharePrivacy/images/socialshareprivacy_on_off.png differ
diff --git a/sharefest/public/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.js b/sharefest/public/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.js
new file mode 100644
index 0000000..d5a1469
--- /dev/null
+++ b/sharefest/public/SocialSharePrivacy/javascripts/jquery.socialshareprivacy.min.js
@@ -0,0 +1 @@
+(function($,undefined){"use strict";function absurl(url,base){if(base||(base=document.baseURI||$("html > head > base").last().attr("href")||document.location.href),!url)return base;if(/^[a-z][-+\.a-z0-9]*:/i.test(url))return url;if("//"===url.slice(0,2))return/^[^:]+:/.exec(base)[0]+url;var ch=url.charAt(0);if("/"===ch)return/^file:/i.test(base)?"file://"+url:/^[^:]+:\/*[^\/]+/i.exec(base)[0]+url;if("#"===ch)return base.replace(/#.*$/,"")+url;if("?"===ch)return base.replace(/[\?#].*$/,"")+url;var path;if(/^file:/i.test(base))path=base.replace(/^file:\/{0,2}/i,""),base="file://";else{var match=/^([^:]+:\/*[^\/]+)(\/.*?)?(\?.*?)?(#.*)?$/.exec(base);base=match[1],path=match[2]||"/"}return path=path.split("/"),path.pop(),0===path.length&&path.push(""),path.push(url),base+path.join("/")}function formatNumber(number){number=Number(number);var prefix="",suffix="";if(0>number&&(prefix="-",number=-number),1/0===number)return prefix+"Infinity";if(number>9999&&(number/=1e3,suffix="K"),number=Math.round(number),0===number)return"0";for(var buf=[];number>0;){var part=number%1e3+"";if(number=Math.floor(number/1e3))for(;3>part.length;)part="0"+part;buf.unshift(part)}return prefix+buf.join(",")+suffix}function getTitle(options,uri,settings){var title=settings&&settings.title;if("function"==typeof title&&(title=title.call(this,options,uri,settings)),title)return title;var title=$('meta[name="DC.title"]').attr("content"),creator=$('meta[name="DC.creator"]').attr("content");return title&&creator?title+" - "+creator:title||$('meta[property="og:title"]').attr("content")||$("title").text()}function getDescription(options,uri,settings){var description=settings&&settings.description;return"function"==typeof description&&(description=description.call(this,options,uri,settings)),description?description:abbreviateText($('meta[name="twitter:description"]').attr("content")||$('meta[itemprop="description"]').attr("content")||$('meta[name="description"]').attr("content")||$.trim($("article, p").first().text())||$.trim($("body").text()),3500)}function getImage(options,uri,settings){var imgs,img=settings&&settings.image;return"function"==typeof img&&(img=img.call(this,options,uri,settings)),img||(imgs=$('meta[property="image"], meta[property="og:image"], meta[property="og:image:url"], meta[name="twitter:image"], link[rel="image_src"], itemscope *[itemprop="image"]').first(),imgs.length>0&&(img=imgs.attr(IMAGE_ATTR_MAP[imgs[0].nodeName]))),img?absurl(img):(imgs=$("img").filter(":visible").filter(function(){return 0===$(this).parents(".social_share_privacy_area").length}),0===imgs.length?(img=$('link[rel~="shortcut"][rel~="icon"]').attr("href"),img?absurl(img):"http://www.google.com/s2/favicons?"+$.param({domain:location.hostname})):(imgs.sort(function(lhs,rhs){return rhs.offsetWidth*rhs.offsetHeight-lhs.offsetWidth*lhs.offsetHeight}),imgs[0].src))}function abbreviateText(text,length){if(length>=unescape(encodeURIComponent(text)).length)return text;var abbrev=text.slice(0,length-3);if(!/\W/.test(text.charAt(length-3))){var match=/^(.*)\s\S*$/.exec(abbrev);match&&(abbrev=match[1])}return abbrev+"…"}function escapeHtml(s){return s.replace(/[<>&"']/g,function(ch){return HTML_CHAR_MAP[ch]})}function getEmbed(options,uri,settings){var embed=settings&&settings.embed;if("function"==typeof embed&&(embed=embed.call(this,options,uri,settings)),embed)return embed;embed=[''),embed.join("")}function getURI(options){var uri=document.location.href,canonical=$("link[rel=canonical]").attr("href")||$('head meta[property="og:url"]').attr("content");return canonical?uri=absurl(canonical):options&&options.ignore_fragment&&(uri=uri.replace(/#.*$/,"")),uri}function buttonClickHandler(service_name){function onclick(event){var $container=$(this).parents("li.help_info").first(),$share=$container.parents(".social_share_privacy_area").first().parent(),options=$share.data("social-share-privacy-options"),service=options.services[service_name],button_class=service.button_class||service_name,uri=options.uri;"function"==typeof uri&&(uri=uri.call($share[0],options));var $switch=$container.find("span.switch");$switch.hasClass("off")?($container.addClass("info_off"),$switch.addClass("on").removeClass("off").html(service.txt_on||" "),$container.find("img.privacy_dummy").replaceWith("function"==typeof service.button?service.button.call($container.parent().parent()[0],service,uri,options):service.button),$share.trigger({type:"socialshareprivacy:enable",serviceName:service_name,isClick:!event.isTrigger})):($container.removeClass("info_off"),$switch.addClass("off").removeClass("on").html(service.txt_off||" "),$container.find(".dummy_btn").empty().append($("").addClass(button_class+"_privacy_dummy privacy_dummy").attr({alt:service.dummy_alt,src:service.path_prefix+("line"===options.layout?service.dummy_line_img:service.dummy_box_img)}).click(onclick)),$share.trigger({type:"socialshareprivacy:disable",serviceName:service_name,isClick:!event.isTrigger}))}return onclick}function enterHelpInfo(){var $info_wrapper=$(this);if(!$info_wrapper.hasClass("info_off")){var timeout_id=window.setTimeout(function(){$info_wrapper.addClass("display"),$info_wrapper.removeData("timeout_id")},500);$info_wrapper.data("timeout_id",timeout_id)}}function leaveHelpInfo(){var $info_wrapper=$(this),timeout_id=$info_wrapper.data("timeout_id");timeout_id!==undefined&&window.clearTimeout(timeout_id),$info_wrapper.removeClass("display")}function permCheckChangeHandler(){var $input=$(this),$share=$input.parents(".social_share_privacy_area").first().parent(),options=$share.data("social-share-privacy-options");$input.is(":checked")?(options.set_perma_option($input.attr("data-service"),options),$input.parent().addClass("checked")):(options.del_perma_option($input.attr("data-service"),options),$input.parent().removeClass("checked"))}function enterSettingsInfo(){var $settings=$(this),timeout_id=window.setTimeout(function(){$settings.find(".settings_info_menu").removeClass("off").addClass("on"),$settings.removeData("timeout_id")},500);$settings.data("timeout_id",timeout_id)}function leaveSettingsInfo(){var $settings=$(this),timeout_id=$settings.data("timeout_id");timeout_id!==undefined&&window.clearTimeout(timeout_id),$settings.find(".settings_info_menu").removeClass("on").addClass("off")}function setPermaOption(service_name,options){$.cookie("socialSharePrivacy_"+service_name,"perma_on",options.cookie_expires,options.cookie_path,options.cookie_domain)}function delPermaOption(service_name,options){$.cookie("socialSharePrivacy_"+service_name,null,-1,options.cookie_path,options.cookie_domain)}function getPermaOption(service_name,options){return!!options.get_perma_options(options)[service_name]}function getPermaOptions(){var cookies=$.cookie(),permas={};for(var name in cookies){var match=/^socialSharePrivacy_(.+)$/.exec(name);match&&(permas[match[1]]="perma_on"===cookies[name])}return permas}function socialSharePrivacy(options){if("string"==typeof options){var command=options;if(1===arguments.length)switch(command){case"enable":this.find(".switch.off").click();break;case"disable":this.find(".switch.on").click();break;case"toggle":this.find(".switch").click();break;case"options":return this.data("social-share-privacy-options");case"destroy":this.trigger({type:"socialshareprivacy:destroy"}),this.children(".social_share_privacy_area").remove(),this.removeData("social-share-privacy-options");break;case"enabled":var enabled={};return this.each(function(){var $self=$(this),options=$self.data("social-share-privacy-options");for(var name in options.services)enabled[name]=$self.find("."+(options.services[name].class_name||name)+" .switch").hasClass("on")}),enabled;case"disabled":var disabled={};return this.each(function(){var $self=$(this),options=$self.data("social-share-privacy-options");for(var name in options.services)disabled[name]=$self.find("."+(options.services[name].class_name||name)+" .switch").hasClass("off")}),disabled;default:throw Error("socialSharePrivacy: unknown command: "+command)}else{var arg=arguments[1];switch(command){case"enable":this.each(function(){var $self=$(this),options=$self.data("social-share-privacy-options");$self.find("."+(options.services[arg].class_name||arg)+" .switch.off").click()});break;case"disable":this.each(function(){var $self=$(this),options=$self.data("social-share-privacy-options");$self.find("."+(options.services[arg].class_name||arg)+" .switch.on").click()});break;case"toggle":this.each(function(){var $self=$(this),options=$self.data("social-share-privacy-options");$self.find("."+(options.services[arg].class_name||arg)+" .switch").click()});break;case"option":if(!(arguments.length>2))return this.data("social-share-privacy-options")[arg];var value={};value[arg]=arguments[2],this.each(function(){$.extend(!0,$(this).data("social-share-privacy-options"),value)});break;case"options":$.extend(!0,options,arg);break;case"enabled":var options=this.data("social-share-privacy-options");return this.find("."+(options.services[arg].class_name||arg)+" .switch").hasClass("on");case"disabled":var options=this.data("social-share-privacy-options");return this.find("."+(options.services[arg].class_name||arg)+" .switch").hasClass("off");default:throw Error("socialSharePrivacy: unknown command: "+command)}}return this}return this.each(function(){var data={};this.lang&&(data.language=this.lang);for(var i=0,attrs=this.attributes;attrs.length>i;++i){var attr=attrs[i];if(/^data-./.test(attr.name)){for(var path=attr.name.slice(5).replace(/-/g,"_").split("."),ctx=data,j=0;path.length-1>j;++j){var name=path[j];name in ctx?(ctx=ctx[name],"string"==typeof ctx&&(ctx=Function("$","return ("+ctx+");").call(this,$))):ctx=ctx[name]={}}var name=path[j];ctx[name]="object"==typeof ctx[name]?$.extend(!0,Function("$","return ("+attr.value+");").call(this,$),ctx[name]):attr.value}}if("cookie_expires"in data&&(data.cookie_expires=Number(data.cookie_expires)),"perma_option"in data&&(data.perma_option="true"===$.trim(data.perma_option).toLowerCase()),"ignore_fragment"in data&&(data.ignore_fragment="true"===$.trim(data.ignore_fragment).toLowerCase()),"set_perma_option"in data&&(data.set_perma_option=Function("service_name","options",data.set_perma_option)),"del_perma_option"in data&&(data.del_perma_option=Function("service_name","options",data.del_perma_option)),"get_perma_option"in data&&(data.get_perma_option=Function("service_name","options",data.get_perma_option)),"get_perma_options"in data&&(data.get_perma_options=Function("options",data.get_perma_options)),"order"in data&&(data.order=$.trim(data.order),data.order?data.order=data.order.split(/\s+/g):delete data.order),"string"==typeof data.services&&(data.services=Function("$","return ("+data.services+");").call(this,$)),"options"in data&&(data=$.extend(data,Function("$","return ("+data.options+");").call(this,$)),delete data.options),"services"in data)for(var service_name in data.services){var service=data.services[service_name];"string"==typeof service&&(data.services[service_name]=Function("$","return ("+service+");").call(this,$)),"string"==typeof service.status&&(service.status="true"===$.trim(service.status).toLowerCase()),"string"==typeof service.perma_option&&(service.perma_option="true"===$.trim(service.perma_option).toLowerCase())}var this_options=$.extend(!0,{},socialSharePrivacy.settings,options,data),order=this_options.order||[],dummy_img="line"===this_options.layout?"dummy_line_img":"dummy_box_img",any_on=!1,any_perm=!1,any_unsafe=!1,unordered=[];for(var service_name in this_options.services){var service=this_options.services[service_name];service.status&&(any_on=!0,-1===$.inArray(service_name,order)&&unordered.push(service_name),"safe"!==service.privacy&&(any_unsafe=!0,service.perma_option&&(any_perm=!0))),"language"in service||(service.language=this_options.language),"path_prefix"in service||(service.path_prefix=this_options.path_prefix),"referrer_track"in service||(service.referrer_track="")}if(unordered.sort(),order=order.concat(unordered),any_on){if(this_options.css_path){var css_path=(this_options.path_prefix||"")+this_options.css_path;document.createStyleSheet?document.createStyleSheet(css_path):0===$('link[href="'+css_path+'"]').length&&$("",{rel:"stylesheet",type:"text/css",href:css_path}).appendTo(document.head)}var permas;if(this_options.perma_option&&any_perm)if(this_options.get_perma_options)permas=this_options.get_perma_options(this_options);else{permas={};for(var service_name in this_options.services)permas[service_name]=this_options.get_perma_option(service_name,this_options)}var uri=this_options.uri;"function"==typeof uri&&(uri=uri.call(this,this_options));var $context=$('
@@ -289,13 +307,6 @@
-