diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..090a1f0
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+.idea
+.DS_Store
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d7bfb93
--- /dev/null
+++ b/README.md
@@ -0,0 +1,3 @@
+# code-collective
+
+This is a place to put our code for [these mini projects](https://docs.google.com/document/d/1Ji79aFOFlTIwRfLfFwrwSYtRX-0_VrY1m16ZwSWDTv4/edit?usp=sharing) for 350.org.
diff --git a/action-kit-popup-form/README.md b/action-kit-popup-form/README.md
new file mode 100644
index 0000000..41c1937
--- /dev/null
+++ b/action-kit-popup-form/README.md
@@ -0,0 +1,31 @@
+# ActionKit Popup Form
+
+Background: 350.org staffers want to be able to take the form on an ActionKit page such as [this one](http://act.350.org/signup/sweden-kiitg-pledge/) and embed it in a popup on an external site.
+
+Goal: use the JSONP endpoints below to get the necessary data to recreate the form in a popup.
+
+- http://act.350.org/act/sweden-kiitg-pledge/?template_set=json_form_data&jsonp=foo
+- http://act.350.org/context/sweden-kiitg-pledge/?callback=myCallback
+
+Open `index.html` in a browser to see a demo of this feature.
+
+About the directory structure:
+
+- `src` contains our code
+- `lib` contains code provided by 350.org
+- `vendor` contains third-party code
+
+## How to use this code
+
+In the markup below, the 'Click to Sign Up' link is where every happens. Specify a place to store the modal content using `data-modal-source`. In the example, this points to the div below with the id `modal-content`. Then, specify an ActionKit form to copy using `data-actionkit-page`. `data-actionkit-behavior` is an optional parameter where you can specify `redirect` if you want the page to redirect to the original form's thank you page after the user clicks submit. Otherwise, by default, the page will not refresh and the modal content will be replaced by a thank you message instead.
+
+```
+
+
+
+
+
+
+
+
diff --git a/action-kit-popup-form/lib/modal.js b/action-kit-popup-form/lib/modal.js
new file mode 100644
index 0000000..cac95cf
--- /dev/null
+++ b/action-kit-popup-form/lib/modal.js
@@ -0,0 +1,71 @@
+// Modal function - integrates with 350s "Baseline" theme
+(function($) {
+ $.fn.modal = function() {
+ return this.each(function() {
+ // get the ID of the element that contains the content for the modal from the "data-modal-source" attribute in the HTML tag
+ var modalSourceID = $(this).attr('data-modal-source');
+ // get the optional list of classes to add to the inner content area from the "data-modal-classes-inner" attribute in the HTML tag
+ var modalInnerClassesAttr = $(this).attr('data-modal-classes-inner');
+ // use the default classes to set the inner modal to be a white box with lots of padding
+ var modalInnerClasses = 'box box-huge bg-white';
+ if (modalInnerClassesAttr) {
+ modalInnerClasses = modalInnerClassesAttr;
+ }
+ // get the optional list of classes to add to the inner content area from the "data-modal-classes-outer" attribute in the HTML tag
+ var modalOuterClassesAttr = $(this).attr('data-modal-classes-outer');
+ // use the default classes to set the modal container to have a transparent dark gray background and lots of horizontal padding
+ var modalOuterClasses = 'bg-dkgray-trans width-narrow';
+ if (modalOuterClassesAttr) {
+ modalOuterClasses = modalOuterClassesAttr;
+ }
+ // get the modal content, wrap it in a div, and copy the HTML to a variable
+ var modalContent = $(modalSourceID).clone(true);
+ // assemble the outer and inner modal wrappers around the content
+ var modal = '