diff --git a/frontend/templates/email_change/base.html b/frontend/templates/email_change/base.html
index a10b25d7..5d2bfffd 100644
--- a/frontend/templates/email_change/base.html
+++ b/frontend/templates/email_change/base.html
@@ -10,7 +10,7 @@
diff --git a/frontend/templates/kindle_change_successful.html b/frontend/templates/kindle_change_successful.html
index b1e766a3..e19ed42d 100644
--- a/frontend/templates/kindle_change_successful.html
+++ b/frontend/templates/kindle_change_successful.html
@@ -3,12 +3,37 @@
{% block title %}Kindle email change successful{% endblock %}
+{% block extra_js %}
+{{ block.super }}
+
+{% endblock %}
{% block ce_content %}
Hooray! We can now send unglued ebooks to you at {{ request.user.profile.kindle_email }}.
-
Why not start downloading free books?
+ {% if kindle_ebook_id %}
+
+ We're emailing you the ebook you wanted, {{ work.title }}...
+
+
+ {% else %}
+
+ Why not start downloading free books?
+
+ {% endif %}
{% endblock %}
{% endwith %}
diff --git a/frontend/templates/kindle_config.html b/frontend/templates/kindle_config.html
index 5486e922..418e5277 100644
--- a/frontend/templates/kindle_config.html
+++ b/frontend/templates/kindle_config.html
@@ -2,21 +2,60 @@
{% block title %}Add or change your Kindle email{% endblock %}
+{% block extra_js %}
+{{ block.super }}
+
+{% endblock %}
{% block ce_content %}
{% with request.user.profile.kindle_email as kindle_email %}
{% if kindle_email %}
-
You already have a Kindle email on file with Unglue.it: {{ kindle_email }} .
-
You can change it below.
+ {% if kindle_ebook_id %}
+
+ Welcome back, {{ user.username }}! We're sending {{ work.title }} to {{ kindle_email }}.
+
+
+
+ (If you'd like to change your Kindle email, you can do so below. You'll need to download the book again.)
+
+ {% else %}
+
You already have a Kindle email on file with Unglue.it: {{ kindle_email }} .
+
You can change it below.
+
+ If you emailed yourself an Unglue.it ebook and got a message from Amazon that the sender is not in your approved email list, add notices@gluejar.com to your Approved Personal Document Email List under Personal Document Settings.
+
+ {% endif %}
{% else %}
-
Enter your Kindle email address below:
+
+ Before your device or app can receive emails from Unglue.it, you'll have to add notices@gluejar.com to your Approved Personal Document Email List under Personal Document Settings.
+
+
Then, enter your Kindle email address below:
+ {% endif %}
+ {% if kindle_ebook_id %}
+
+ {% else %}
+
{% endif %}
-
@@ -24,11 +63,7 @@
Don't know the email address for your device or reading app? Find it here, under Manage Your Devices.
-
- {% if not kindle_email %}
-
Before your device or app can receive emails from Unglue.it, you'll have to add kindle@gluejar.com to your Approved Personal Document Email List under Personal Document Settings.
- {% endif %}
-
+
Once we have your Kindle email, you'll be able to send unglued ebooks to your Kindle device or app with one click from any Unglue.it download page.
{% endwith %}
diff --git a/frontend/templates/kindle_response_graceful_degradation.html b/frontend/templates/kindle_response_graceful_degradation.html
index 652ba88c..fe5bb183 100644
--- a/frontend/templates/kindle_response_graceful_degradation.html
+++ b/frontend/templates/kindle_response_graceful_degradation.html
@@ -1,9 +1,6 @@
{% extends "registration/registration_base.html" %}
{% block doccontent %}
-{{ message }}
+{% include "kindle_response_message.html" %}
-
- You can go back to the book you were downloading.
-
{% endblock %}
\ No newline at end of file
diff --git a/frontend/templates/kindle_response_message.html b/frontend/templates/kindle_response_message.html
new file mode 100644
index 00000000..bc808f81
--- /dev/null
+++ b/frontend/templates/kindle_response_message.html
@@ -0,0 +1,8 @@
+{% ifequal message 0 %}This ebook is too big to be sent by email. Please download the file and then sideload it to your device using the instructions under Ereaders or Desktop.
+{% endifequal %}
+{% ifequal message 1 %}Well, this is awkward. We can't seem to email that. Please download it using the instructions for your device, and we'll look into the error.
+{% endifequal %}
+{% ifequal message 2 %}This book has been sent to your Kindle. Happy reading!
Difficulties? recheck your
setup.
+{% endifequal %}
+{% ifequal message 3 %}Please
enter a valid Kindle email.
+{% endifequal %}
diff --git a/frontend/templates/registration/login.html b/frontend/templates/registration/login.html
index c1e3080b..ba4976dd 100644
--- a/frontend/templates/registration/login.html
+++ b/frontend/templates/registration/login.html
@@ -26,14 +26,14 @@ Make sure the username box has your
username, not your email -- some brow
-
Forgot your password?
Need an account?
Other questions?
+
Forgot your password?
Need an account?
Other questions?
{% else %}
diff --git a/frontend/urls.py b/frontend/urls.py
index 56bde0c1..f198a81f 100644
--- a/frontend/urls.py
+++ b/frontend/urls.py
@@ -132,6 +132,7 @@ urlpatterns = patterns(
url(r"^press/$","press", name="press"),
url(r"^press_submitterator/$","press_submitterator", name="press_submitterator"),
url(r"^accounts/edit/kindle_config/$", "kindle_config", name="kindle_config"),
+ url(r"^accounts/edit/kindle_config/(?P
\d+)/$", "kindle_config", name="kindle_config_download"),
url(r"^send_to_kindle/(?P\d+)/(?P\d)/$", "send_to_kindle", name="send_to_kindle"),
url(r"^send_to_kindle/result/(?P\d)/$", "send_to_kindle_graceful", name="send_to_kindle_graceful"),
)
diff --git a/frontend/views.py b/frontend/views.py
index f3d69e76..ee55a4d7 100755
--- a/frontend/views.py
+++ b/frontend/views.py
@@ -164,6 +164,7 @@ def process_kindle_email(request):
if user.is_authenticated() and request.session.has_key('kindle_email'):
user.profile.kindle_email = request.session['kindle_email']
user.profile.save()
+ request.session.pop('kindle_email')
def next(request):
if request.COOKIES.has_key('next'):
@@ -2457,40 +2458,23 @@ def download(request, work_id):
other_ebooks = work.ebooks().filter(edition__unglued=False)
formats = {}
- try:
- formats['epub'] = work.ebooks().filter(format='epub')[0]
- except IndexError:
- formats['epub'] = None
- try:
- formats['pdf'] = work.ebooks().filter(format='pdf')[0]
- except IndexError:
- formats['pdf'] = None
- try:
- formats['mobi'] = work.ebooks().filter(format='mobi')[0]
- except IndexError:
- formats['mobi'] = None
- try:
- formats['html'] = work.ebooks().filter(format='html')[0]
- except IndexError:
- formats['html'] = None
- try:
- formats['text'] = work.ebooks().filter(format='text')[0]
- except IndexError:
- formats['text'] = None
+ for ebook in work.ebooks().all():
+ formats[ebook.format] = ebook
- if formats['mobi']:
+ if formats.has_key('mobi'):
kindle_ebook_id = formats['mobi'].id
- elif formats['pdf']:
+ elif formats.has_key('pdf'):
kindle_ebook_id = formats['pdf'].id
else:
kindle_ebook_id = None
try:
readmill_epub_ebook = work.ebooks().filter(format='epub').exclude(provider='Google Books')[0]
- readmill_epub_url = settings.BASE_URL_SECURE + reverse('download_ebook',args=[readmill_epub_ebook.id])
+ #readmill_epub_url = settings.BASE_URL_SECURE + reverse('download_ebook',args=[readmill_epub_ebook.id])
+ readmill_epub_url = readmill_epub_ebook.url
except:
readmill_epub_url = None
- agent = request.META['HTTP_USER_AGENT']
+ agent = request.META.get('HTTP_USER_AGENT','')
iOS = 'iPad' in agent or 'iPhone' in agent or 'iPod' in agent
iOS_app = iOS and not 'Safari' in agent
android = 'Android' in agent
@@ -2568,39 +2552,47 @@ def press_submitterator(request):
})
@login_required
-def kindle_config(request):
+def kindle_config(request, kindle_ebook_id=None):
+ def get_title_from_kindle_id(kindle_ebook_id):
+ # protect against user URL manipulation
+ work = None
+ if kindle_ebook_id:
+ try:
+ ebook = models.Ebook.objects.get(pk=kindle_ebook_id)
+ work = ebook.edition.work
+ except:
+ kindle_ebook_id = None
+ return work, kindle_ebook_id
+
+ (work, kindle_ebook_id) = get_title_from_kindle_id(kindle_ebook_id)
+ template = "kindle_config.html"
if request.method == 'POST':
form = KindleEmailForm(request.POST)
if form.is_valid():
request.user.profile.kindle_email = form.cleaned_data['kindle_email']
request.user.profile.save()
- return render(request, "kindle_change_successful.html")
+ template = "kindle_change_successful.html"
else:
- form = KindleEmailForm()
-
- return render(request, "kindle_config.html", {'form': form})
-
-kindle_response_params = [
- 'This ebook is too big to be sent by email. Please download the file and then sideload it to your device using the instructions under Ereaders or Desktop.',
- "Well, this is awkward. We can't seem to email that. Please download it using the instructions for your device, and we'll look into the error.",
- 'This book has been sent to your Kindle. Happy reading!',
- 'Please enter a valid Kindle email.'
-]
+ form = KindleEmailForm()
+ return render(
+ request,
+ template,
+ {'form': form, 'kindle_ebook_id': kindle_ebook_id, 'work': work}
+ )
@require_POST
@csrf_exempt
def send_to_kindle(request, kindle_ebook_id, javascript='0'):
- # make sure to gracefully communicate with both js and non-js users
+ # make sure to gracefully communicate with both js and non-js (kindle!) users
def local_response(request, javascript, message):
if javascript == '1':
- return HttpResponse(kindle_response_params[message])
+ return render(request,'kindle_response_message.html',{'message': message} )
else:
# can't pass context with HttpResponseRedirect
# must use an HttpResponse, not a render(), after POST
return HttpResponseRedirect(reverse('send_to_kindle_graceful', args=(message,)))
ebook = models.Ebook.objects.get(pk=kindle_ebook_id)
- request.session['next_page'] = reverse('work', args=(ebook.edition.work.id,))
if request.POST.has_key('kindle_email'):
kindle_email = request.POST['kindle_email']
@@ -2609,7 +2601,7 @@ def send_to_kindle(request, kindle_ebook_id, javascript='0'):
except ValidationError:
return local_response(request, javascript, 3)
request.session['kindle_email'] = kindle_email
- else:
+ elif request.user.is_authenticated():
kindle_email = request.user.profile.kindle_email
# don't forget to increment the download counter!
@@ -2627,7 +2619,7 @@ def send_to_kindle(request, kindle_ebook_id, javascript='0'):
return local_response(request, javascript, 0)
try:
- email = EmailMessage(from_email='kindle@gluejar.com',
+ email = EmailMessage(from_email='notices@gluejar.com',
to=[kindle_email])
email.attach(title + '.' + ebook.format, filehandle.read())
email.send()
@@ -2640,9 +2632,8 @@ def send_to_kindle(request, kindle_ebook_id, javascript='0'):
return local_response(request, javascript, 2)
def send_to_kindle_graceful(request, message):
- message = kindle_response_params[int(message)]
return render(
request,
'kindle_response_graceful_degradation.html',
- {'message': message}
+ {'message': int(message)}
)
diff --git a/payment/manager.py b/payment/manager.py
index 0e8a2d73..e0a48137 100644
--- a/payment/manager.py
+++ b/payment/manager.py
@@ -894,67 +894,6 @@ class PaymentManager( object ):
logger.info("Refund Transaction " + str(transaction.id) + " Failed with error: " + p.error_string())
return False
- def pledge(self, currency, campaign=None, user=None,
- return_url=None, nevermind_url=None, pledge_extra=None):
- '''
- pledge
-
- Performs an instant payment
-
- currency: a 3-letter paypal currency code, i.e. USD
- campaign: required campaign object
- user: optional user object
- return_url: url to redirect supporter to after a successful PayPal transaction
- nevermind_url: url to send supporter to if support hits cancel while in middle of PayPal transaction
-
- return value: a tuple of the new transaction object and a re-direct url. If the process fails,
- the redirect url will be None
-
- '''
-
- amount = D('0.00')
-
- t = Transaction.create(amount=amount,
- max_amount=amount,
- currency=currency,
- status=TRANSACTION_STATUS_NONE,
- campaign=campaign,
- user=user,
- pledge_extra=pledge_extra
- )
-
- t.date_payment=now()
- t.execution=EXECUTE_TYPE_CHAINED_INSTANT
- t.type=PAYMENT_TYPE_INSTANT
- p = t.get_payment_class().Pay(t,return_url=return_url, nevermind_url=nevermind_url)
-
- # Create a response for this
- envelope = p.envelope()
- logger.info(envelope)
-
- if envelope:
- r = PaymentResponse.objects.create(api=p.api(),
- correlation_id = p.correlation_id(),
- timestamp = p.timestamp(),
- info = p.raw_response,
- transaction=t)
-
- if p.success() and not p.error():
- t.pay_key = p.key()
- t.status = TRANSACTION_STATUS_CREATED
- t.save()
-
- url = p.next_url()
-
- logger.info("Pledge Success: " + url)
- return t, url
-
- else:
- t.error = p.error_string()
- t.save()
- logger.info("Pledge Error: %s" % p.error_string())
- return t, None
-
def make_account(self, user, host, token=None):
"""delegate to a specific payment module the task of creating a payment account"""
@@ -968,10 +907,5 @@ class PaymentManager( object ):
return Account.objects.filter(user=user, host=host)
else:
return Account.objects.filter(user=user, host=host, date_deactivated__isnull=True)
-
-
-
-
-
diff --git a/payment/stripelib.py b/payment/stripelib.py
index febd77ba..3548ae9b 100644
--- a/payment/stripelib.py
+++ b/payment/stripelib.py
@@ -97,7 +97,16 @@ except Exception, e:
# set default stripe api_key to that of unglue.it
-stripe.api_key = STRIPE_SK
+stripe.api_key = STRIPE_SK
+
+# maybe we should be able to set this in django.settings...
+
+# to start with, let's try hard-coding the api_version
+# https://stripe.com/docs/upgrades?since=2012-07-09#api-changelog
+
+#API_VERSION = '2012-07-09'
+API_VERSION = '2013-02-13'
+stripe.api_version = API_VERSION
# https://stripe.com/docs/testing
@@ -188,6 +197,7 @@ def _isListableAPIResource(x):
except:
return False
+
class StripeClient(object):
def __init__(self, api_key=STRIPE_SK):
self.api_key = api_key
@@ -391,8 +401,8 @@ class StripeErrorTest(TestCase):
charge1 = sc.create_charge(10, 'usd', card=token2.id)
self.assertEqual(charge1.amount, 1000)
self.assertEqual(charge1.id[:3], "ch_")
- # disputed, failure_message, fee, fee_details
- self.assertEqual(charge1.disputed,False)
+ # dispute, failure_message, fee, fee_details
+ self.assertEqual(charge1.dispute,None)
self.assertEqual(charge1.failure_message,None)
self.assertEqual(charge1.fee,59)
self.assertEqual(charge1.refunded,False)
@@ -590,8 +600,6 @@ class Processor(baseprocessor.Processor):
transaction.date_authorized = now_val
transaction.date_expired = expiry
- sc = StripeClient()
-
# let's figure out what part of transaction can be used to store info
# try placing charge id in transaction.pay_key
# need to set amount
@@ -628,7 +636,30 @@ class Processor(baseprocessor.Processor):
"""return None because no redirection to stripe is required"""
return None
-
+ class Pay(StripePaymentRequest, baseprocessor.Processor.Pay):
+
+ '''
+ The pay function generates a redirect URL to approve the transaction
+ '''
+
+ def __init__( self, transaction, return_url=None, amount=None, paymentReason=""):
+ self.transaction=transaction
+
+ #def api(self):
+ # return "null api"
+ #
+ ##def exec_status( self ):
+ # return None
+
+ def amount( self ):
+ return self.transaction.amount
+
+ def key( self ):
+ return None
+
+ def next_url( self ):
+ return self.url
+
class Execute(StripePaymentRequest):
'''
diff --git a/payment/tests.py b/payment/tests.py
index b16d311d..af79435a 100644
--- a/payment/tests.py
+++ b/payment/tests.py
@@ -185,72 +185,6 @@ class PledgeTest(TestCase):
valid(url)
except ValidationError, e:
print e
-
- @unittest.expectedFailure
- def test_pledge_single_receiver(self):
-
- try:
- p = PaymentManager()
-
- # Note, set this to 1-5 different receivers with absolute amounts for each
- receiver_list = [{'email':settings.PAYPAL_GLUEJAR_EMAIL, 'amount':20.00}]
- t, url = p.pledge('USD', receiver_list, campaign=None, list=None, user=None)
-
- self.validateRedirect(t, url, 1)
-
- loginSandbox(self.selenium)
- paySandbox(self, self.selenium, url)
-
- # sleep to make sure the transaction has time to complete
- time.sleep(10)
-
- # by now we should have received the IPN
- # right now, for running on machine with no acess to IPN, we manually update statuses
- p.checkStatus()
- t = Transaction.objects.get(id=t.id)
-
- self.assertEqual(t.status, IPN_PAY_STATUS_COMPLETED)
- self.assertEqual(t.receiver_set.all()[0].status, IPN_TXN_STATUS_COMPLETED)
-
- except:
- traceback.print_exc()
-
- @unittest.expectedFailure
- def test_pledge_mutiple_receiver(self):
-
- p = PaymentManager()
-
- # Note, set this to 1-5 different receivers with absolute amounts for each
- receiver_list = [{'email':settings.PAYPAL_GLUEJAR_EMAIL, 'amount':20.00},
- {'email':settings.PAYPAL_TEST_RH_EMAIL, 'amount':10.00}]
-
- t, url = p.pledge('USD', receiver_list, campaign=None, list=None, user=None)
-
- self.validateRedirect(t, url, 2)
-
- loginSandbox(self.selenium)
- paySandbox(self, self.selenium, url)
-
- # by now we should have received the IPN
- # right now, for running on machine with no acess to IPN, we manually update statuses
- p.checkStatus()
-
- t = Transaction.objects.get(id=t.id)
-
- self.assertEqual(t.status, IPN_PAY_STATUS_COMPLETED)
- self.assertEqual(t.receiver_set.all()[0].status, IPN_TXN_STATUS_COMPLETED)
- self.assertEqual(t.receiver_set.all()[1].status, IPN_TXN_STATUS_COMPLETED)
-
- @unittest.expectedFailure
- def test_pledge_too_much(self):
-
- p = PaymentManager()
-
- # Note, set this to 1-5 different receivers with absolute amounts for each
- receiver_list = [{'email':settings.PAYPAL_GLUEJAR_EMAIL, 'amount':50000.00}]
- t, url = p.pledge('USD', receiver_list, campaign=None, list=None, user=None)
-
- self.validateRedirect(t, url, 1)
def tearDown(self):
self.selenium.quit()
@@ -429,7 +363,7 @@ class AccountTest(TestCase):
def suite():
- #testcases = [PledgeTest, AuthorizeTest, TransactionTest]
+ #testcases = [AuthorizeTest, TransactionTest, CreditTest]
testcases = [TransactionTest, CreditTest]
suites = unittest.TestSuite([unittest.TestLoader().loadTestsFromTestCase(testcase) for testcase in testcases])
return suites
diff --git a/payment/urls.py b/payment/urls.py
index 20d74374..88181e11 100644
--- a/payment/urls.py
+++ b/payment/urls.py
@@ -14,7 +14,6 @@ urlpatterns = patterns(
if settings.DEBUG:
urlpatterns += patterns(
"regluit.payment.views",
- url(r"^testpledge", "testPledge"),
url(r"^testauthorize", "testAuthorize"),
url(r"^testexecute", "testExecute"),
url(r"^testcancel", "testCancel"),
diff --git a/payment/views.py b/payment/views.py
index 202a1ef4..cd179f14 100644
--- a/payment/views.py
+++ b/payment/views.py
@@ -215,7 +215,6 @@ def testModify(request):
return HttpResponse("Error")
-
'''
http://BASE/testfinish?transaction=2
@@ -235,52 +234,6 @@ def testFinish(request):
return HttpResponse(message)
-
-'''
-http://BASE/testpledge?campaign=2
-
-Example that initiates an instant payment for a campaign
-'''
-def testPledge(request):
-
- p = PaymentManager()
-
- if 'campaign' in request.REQUEST.keys():
- campaign_id = request.REQUEST['campaign']
- else:
- campaign_id = None
-
- # see whether there is a user logged in.
- if request.user.is_authenticated():
- user = request.user
- else:
- user = None
-
- # Note, set this to 1-5 different receivers with absolute amounts for each
- #receiver_list = [{'email':TEST_RECEIVERS[0], 'amount':20.00},{'email':TEST_RECEIVERS[1], 'amount':10.00}]
-
- if 'pledge_amount' in request.REQUEST.keys():
- pledge_amount = request.REQUEST['pledge_amount']
- receiver_list = [{'email':TEST_RECEIVERS[0], 'amount':pledge_amount}]
- else:
- receiver_list = [{'email':TEST_RECEIVERS[0], 'amount':78.90}, {'email':TEST_RECEIVERS[1], 'amount':34.56}]
-
- if campaign_id:
- campaign = Campaign.objects.get(id=int(campaign_id))
- t, url = p.pledge('USD', TARGET_TYPE_CAMPAIGN, receiver_list, campaign=campaign, list=None, user=user, return_url=None)
-
- else:
- t, url = p.pledge('USD', TARGET_TYPE_NONE, receiver_list, campaign=None, list=None, user=user, return_url=None)
-
- if url:
- logger.info("testPledge: " + url)
- return HttpResponseRedirect(url)
-
- else:
- response = t.error
- logger.info("testPledge: Error " + str(t.error))
- return HttpResponse(response)
-
def runTests(request):
try:
@@ -292,14 +245,6 @@ def runTests(request):
# Run the authorize test
test = AuthorizeTest('test_authorize')
test.run(result)
-
- # Run the pledge test
- test = PledgeTest('test_pledge_single_receiver')
- test.run(result)
-
- # Run the pledge failure test
- test = PledgeTest('test_pledge_too_much')
- test.run(result)
output = "Tests Run: " + str(result.testsRun) + str(result.errors) + str(result.failures)
logger.info(output)
diff --git a/requirements_versioned.pip b/requirements_versioned.pip
index 375befee..475e7267 100644
--- a/requirements_versioned.pip
+++ b/requirements_versioned.pip
@@ -54,7 +54,7 @@ selenium==2.25.0
six==1.2.0
ssh==1.7.14
stevedore==0.4
-stripe==1.7.4
+stripe==1.9.1
virtualenv==1.4.9
virtualenvwrapper==3.6
wsgiref==0.1.2
diff --git a/static/css/download.css b/static/css/download.css
index b8f1b198..3e594fb3 100644
--- a/static/css/download.css
+++ b/static/css/download.css
@@ -1 +1 @@
-.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .unglued,#lightbox_content .not_unglued{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .unglued h3,#lightbox_content .not_unglued h3{margin-top:5px}#lightbox_content .unglued{border:solid 2px #8dc63f}#lightbox_content .not_unglued{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}
\ No newline at end of file
+.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .one_click,#lightbox_content .ebook_download_container{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .one_click h3,#lightbox_content .ebook_download_container h3{margin-top:5px}#lightbox_content .one_click{border:solid 2px #8dc63f}#lightbox_content .ebook_download_container{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.btn_support.kindle{height:40px}.btn_support.kindle a{width:auto;font-size:15px}
\ No newline at end of file
diff --git a/static/css/enhanced_download.css b/static/css/enhanced_download.css
index 4b055d61..0642e01e 100644
--- a/static/css/enhanced_download.css
+++ b/static/css/enhanced_download.css
@@ -1 +1 @@
-.buttons,#kindle_div .yes_js,.other_instructions_paragraph{display:inherit}.instructions>div:not(.active){display:none}#kindle_div .no_js{display:none!important}
\ No newline at end of file
+.buttons,.yes_js,.other_instructions_paragraph{display:inherit}.instructions>div:not(.active){display:none}.no_js{display:none!important}.active{display:inherit!important}
\ No newline at end of file
diff --git a/static/css/enhanced_download_ie.css b/static/css/enhanced_download_ie.css
index c8d39399..348a90a2 100644
--- a/static/css/enhanced_download_ie.css
+++ b/static/css/enhanced_download_ie.css
@@ -1 +1 @@
-.buttons,#kindle_div .yes_js,.other_instructions_paragraph{display:inherit}.instructions>div{display:none}#kindle_div .no_js{display:none!important}.active{display:inherit}
\ No newline at end of file
+.yes_js,.other_instructions_paragraph{display:inherit}.instructions>div{display:none}.no_js{display:none!important}.active{display:inherit!important}
\ No newline at end of file
diff --git a/static/css/sitewide4.css b/static/css/sitewide4.css
index 0a40f2eb..cbbb357c 100644
--- a/static/css/sitewide4.css
+++ b/static/css/sitewide4.css
@@ -1 +1 @@
-.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .unglued,#lightbox_content .not_unglued{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .unglued h3,#lightbox_content .not_unglued h3{margin-top:5px}#lightbox_content .unglued{border:solid 2px #8dc63f}#lightbox_content .not_unglued{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.preview{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%}.preview a{color:#8dc63f}.launch_top{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;border-color:#8dc63f;margin:10px auto 0 auto;font-size:15px;line-height:22.5px}.launch_top a{color:#8dc63f}.launch_top.pale{border-color:#d6dde0;font-size:13px}.launch_top.alert{border-color:#e35351;font-size:13px}.preview_content{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;width:80%;margin:10px auto}.preview_content a{color:#8dc63f}.utilityheaders{text-transform:uppercase;color:#3d4e53;font-size:15px;display:block}html,body{height:100%}body{background:url("/static/images/bg-body.png") 0 0 repeat-x;padding:0 0 20px 0;margin:0;font-size:13px;line-height:16.900000000000002px;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Arial,Helvetica,sans-serif;color:#3d4e53}#feedback{position:fixed;bottom:10%;right:0;z-index:500}#feedback p{writing-mode:tb-rl;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);white-space:nowrap;display:block;bottom:0;width:160px;height:32px;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px;background:#8dc63f;margin-bottom:0;text-align:center;margin-right:-67px;line-height:normal}#feedback p a{color:white;font-size:24px;font-weight:normal}#feedback p a:hover{color:#3d4e53}a{font-weight:bold;font-size:inherit;text-decoration:none;cursor:pointer;color:#6994a3}a:hover{text-decoration:underline}h1{font-size:22.5px}h2{font-size:18.75px}h3{font-size:17.549999999999997px}h4{font-size:15px}img{border:0}img.user-avatar{float:left;margin-right:10px;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px}input,textarea,a.fakeinput{border:2px solid #d6dde0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}input:focus,textarea:focus,a.fakeinput:focus{border:2px solid #8dc63f;outline:0}a.fakeinput:hover{text-decoration:none}.js-search input{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}h2.content-heading{padding:15px;margin:0;font-size:19px;font-weight:normal;color:#3d4e53;float:left;width:50%}h2.content-heading span{font-style:italic}h3.jsmod-title{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0;background:#a7c1ca;padding:0;margin:0;height:73px}h3.jsmod-title span{font-size:19px;font-style:italic;color:#3d4e53;padding:26px 40px 27px 20px;display:block}input[type="submit"],a.fakeinput{background:#8dc63f;color:white;font-weight:bold;padding:.5em 1em;cursor:pointer}.loader-gif[disabled="disabled"],.loader-gif.show-loading{background:url('/static/images/loading.gif') center no-repeat!important}.js-page-wrap{position:relative;min-height:100%}.js-main{width:960px;margin:0 auto;clear:both;padding:0}ul.menu{list-style:none;padding:0;margin:0}.errorlist{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errorlist li{list-style:none;border:0}.errorlist li{list-style:none;border:0}.errorlist+input{border:2px solid #e35351!important}.errorlist+input:focus{border:1px solid #8dc63f!important}.errorlist+textarea{border:2px solid #e35351!important}.errorlist+textarea:focus{border:2px solid #8dc63f!important}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#js-header{height:90px}.js-logo{float:left;padding-top:10px}.js-logo a img{border:0}.js-topmenu{float:right;margin-top:25px;font-size:15px}.js-topmenu#authenticated{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:36px}.js-topmenu#authenticated:hover,.js-topmenu#authenticated.highlight{background:#d6dde0;cursor:pointer;position:relative}.js-topmenu#authenticated.highlight span#welcome{background-image:url("/static/images/menu_bar_up_arrow_textblue.png")}.js-topmenu ul#user_menu{white-space:nowrap;display:none;z-index:100;position:absolute;top:36px;left:0;padding:0;overflow:visible;margin:0}.js-topmenu ul#user_menu li{border-top:1px solid white;list-style-type:none;float:none;background:#d6dde0;padding:7px 10px}.js-topmenu ul#user_menu li:hover{background:#8dc63f}.js-topmenu ul#user_menu li:hover a{color:white}.js-topmenu ul#user_menu li:hover #i_haz_notifications{border-color:white;background-color:white;color:#3d4e53}.js-topmenu ul#user_menu li a{height:auto;line-height:26.25px}.js-topmenu ul#user_menu li span{margin-right:10px}.js-topmenu ul li{float:left;position:relative;z-index:50}.js-topmenu ul li a{color:#3d4e53;height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.js-topmenu ul li span#welcome{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em;padding:0 10px;margin-right:5px;padding-right:22px;background-image:url("/static/images/menu_bar_down_arrow_textblue.png");background-repeat:no-repeat;background-position:right}.js-topmenu ul li span#welcome img{vertical-align:middle}.js-topmenu ul li img{padding:0;margin:0}.js-topmenu ul li.last{padding-left:20px}.js-topmenu ul li.last a{background:url("/static/images/bg.png") right top no-repeat}.js-topmenu ul li.last a span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8dc63f;margin-right:29px;display:block;padding:0 5px 0 15px;color:white}.js-topmenu ul .unseen_count{border:solid 2px;-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;padding:3px;line-height:16px;width:16px;cursor:pointer;text-align:center}.js-topmenu ul .unseen_count#i_haz_notifications{background-color:#8dc63f;color:white;border-color:white}.js-topmenu ul .unseen_count#no_notifications_for_you{border-color:#edf3f4;background-color:#edf3f4;color:#3d4e53}#i_haz_notifications_badge{-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;font-size:13px;border:solid 2px white;margin-left:-7px;margin-top:-10px;padding:3px;background:#8dc63f;color:white;position:absolute;line-height:normal}form.login label,#login form label{display:block;line-height:18px}form.login input,#login form input{width:90%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #d6dde0;height:18px;line-height:18px;margin-bottom:6px}form.login input[type=submit],#login form input[type=submit]{text-decoration:capitalize;width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}form.login input:focus,#login form input:focus{border:solid 1px #8dc63f}form.login input[type="text"],#login form input[type="text"],form.login input[type="password"],#login form input[type="password"]{height:22.75px;line-height:22.75px;margin-bottom:13px;border-width:2px}form.login input[type="submit"],#login form input[type="submit"]{font-size:15px}form.login span.helptext,#login form span.helptext{display:block;margin-top:-11px;font-style:italic;font-size:13px}#lightbox_content .google_signup{padding:14px 0}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}.js-search{float:left;padding-top:25px;margin-left:81px}.js-search input{float:left}.js-search .inputbox{padding:0 0 0 15px;margin:0;border-top:solid 4px #8ac3d7;border-left:solid 4px #8ac3d7;border-bottom:solid 4px #8ac3d7;border-right:0;-moz-border-radius:50px 0 0 50px;-webkit-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;outline:0;height:28px;line-height:28px;width:156px;float:left;color:#6994a3}.js-search .button{background:url("/static/images/blue-search-button.png") no-repeat;padding:0;margin:0;width:40px;height:36px;display:block;border:0;text-indent:-10000px;cursor:pointer}.js-search-inner{float:right}#locationhash{display:none}#block-intro-text{padding-right:10px}#block-intro-text span.def{font-style:italic}a#readon{background:url("/static/images/learnmore-downarrow.png") right center no-repeat;color:#fff;text-transform:capitalize;display:block;float:right;font-size:13px;font-weight:bold}a#readon.down{background:url("/static/images/learnmore-uparrow.png") right center no-repeat}a#readon span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8ac3d7;margin-right:34px;padding:0 5px 0 20px;height:36px;line-height:36px;display:block}.spread_the_word{height:24px;width:24px;position:top;margin-left:5px}#js-leftcol{float:left;width:235px;margin-bottom:20px}#js-leftcol a{font-weight:normal}#js-leftcol a:hover{text-decoration:underline}#js-leftcol .jsmod-content{border:solid 1px #edf3f4;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}#js-leftcol ul.level1>li>a,#js-leftcol ul.level1>li>span{border-bottom:1px solid #edf3f4;border-top:1px solid #edf3f4;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:10px}#js-leftcol ul.level2 li{padding:5px 10px}#js-leftcol ul.level2 li a{color:#6994a3;font-size:15px}#js-leftcol ul.level2 li img{vertical-align:middle;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}#js-leftcol ul.level2 li .ungluer-name{height:30px;line-height:30px}#js-topsection{padding:15px 0 0 0;overflow:hidden}.js-topnews{float:left;width:100%}.js-topnews1{background:url("/static/images/header/header-m.png") 0 0 repeat-y}.js-topnews2{background:url("/static/images/header/header-t.png") 0 0 no-repeat}.js-topnews3{background:url("/static/images/header/header-b.png") 0 100% no-repeat;display:block;overflow:hidden;padding:10px}#main-container{margin:15px 0 0 0}#js-maincol-fr{float:right;width:725px}div#content-block{overflow:hidden;background:url("/static/images/bg.png") 100% -223px no-repeat;padding:0 0 0 7px;margin-bottom:20px}div#content-block.jsmodule{background:0}.content-block-heading a.block-link{float:right;padding:15px;font-size:13px;color:#3d4e53;text-decoration:underline;font-weight:normal}div#content-block-content,div#content-block-content-1{width:100%;overflow:hidden;padding-left:10px}div#content-block-content .cols3 .column,div#content-block-content-1 .cols3 .column{width:33.33%;float:left}#footer{background-color:#edf3f4;clear:both;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:15px 0 45px 0;margin-top:15px;overflow:hidden}#footer .column{float:left;width:25%;padding-top:5px}#footer .column ul{padding-top:5px;margin-left:0;padding-left:0}#footer .column li{padding:5px 0;text-transform:none;list-style:none;margin-left:0}#footer .column li a{color:#6994a3;font-size:15px}.pagination{width:100%;text-align:center;margin-top:20px;clear:both;border-top:solid #3d4e53 thin;padding-top:7px}.pagination .endless_page_link{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px}.pagination .endless_page_current{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px;background-color:#edf3f4}a.nounderline{text-decoration:none}.slides_control{height:325px!important}#about_expandable{display:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;background:white;z-index:500;top:25%;padding:9px;max-width:90%}#about_expandable .collapser_x{margin-top:-27px;margin-right:-27px}#lightbox_content p{padding:9px 0;font-size:15px;line-height:20px}#lightbox_content p a{font-size:15px;line-height:20px}#lightbox_content p b{color:#8dc63f}#lightbox_content p.last{border-bottom:solid 2px #d6dde0;margin-bottom:5px}#lightbox_content .right_border{border-right:solid 1px #d6dde0;float:left;padding:9px}#lightbox_content .signuptoday{float:right;margin-top:0;clear:none}#lightbox_content h2+form,#lightbox_content h3+form,#lightbox_content h4+form{margin-top:15px}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-bottom:10px}.nonlightbox .about_page{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;width:75%;margin:10px auto auto auto;padding:9px}.collapser_x{float:right;height:24px;line-height:24px;width:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;-moz-box-shadow:-1px 1px #3d4e53;-webkit-box-shadow:-1px 1px #3d4e53;box-shadow:-1px 1px #3d4e53;border:solid 3px white;text-align:center;color:white;background:#3d4e53;font-size:17px;z-index:5000;margin-top:-12px;margin-right:-22px}.signuptoday{-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;background-color:#8dc63f;padding:0 15px;height:36px;line-height:36px;float:left;clear:both;margin:10px auto;cursor:pointer;font-style:normal}.signuptoday a{background:url("/static/images/icons/pledgearrow-hover.png") right center no-repeat;padding-right:17px;color:white}.signuptoday a:hover{text-decoration:none}.central{width:480px;margin:0 auto}li.checked{list-style-type:none;background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;margin-left:-20px;padding-left:20px}.btn_support{margin:10px;width:215px}.btn_support a,.btn_support form input,.btn_support>span{font-size:22px;border:4px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;display:block;text-align:center;padding-top:14.25px;padding-bottom:14.25px;background-color:#8dc63f;color:white!important}.btn_support a span,.btn_support form input span,.btn_support>span span{color:white!important;font-weight:bold;padding-left:0;margin-left:0!important;background:0}.btn_support.create-account span{padding:0;margin:0;background:0}.btn_support a:hover,.btn_support form input:hover{background-color:#7aae34;text-decoration:none}.btn_support a{width:207px}.btn_support form input{width:215px}.btn_support.modify a,.btn_support.modify form input{background-color:#a7c1ca}.btn_support.modify a:hover,.btn_support.modify form input:hover{background-color:#91b1bd}.instructions h4{border-top:solid #d6dde0 1px;border-bottom:solid #d6dde0 1px;padding:.5em 0}.instructions>div{padding-left:1%;padding-right:1%;font-size:15px;line-height:22.5px;width:98%}.instructions>div.active{float:left}.other_instructions_paragraph{display:none}#iOS_app_div,#ios_div{display:none}#kindle_div .yes_js{display:none}
\ No newline at end of file
+.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .one_click,#lightbox_content .ebook_download_container{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .one_click h3,#lightbox_content .ebook_download_container h3{margin-top:5px}#lightbox_content .one_click{border:solid 2px #8dc63f}#lightbox_content .ebook_download_container{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.btn_support.kindle{height:40px}.btn_support.kindle a{width:auto;font-size:15px}.preview{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%}.preview a{color:#8dc63f}.launch_top{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;border-color:#8dc63f;margin:10px auto 0 auto;font-size:15px;line-height:22.5px}.launch_top a{color:#8dc63f}.launch_top.pale{border-color:#d6dde0;font-size:13px}.launch_top.alert{border-color:#e35351;font-size:13px}.preview_content{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;width:80%;margin:10px auto}.preview_content a{color:#8dc63f}.utilityheaders{text-transform:uppercase;color:#3d4e53;font-size:15px;display:block}html,body{height:100%}body{background:url("/static/images/bg-body.png") 0 0 repeat-x;padding:0 0 20px 0;margin:0;font-size:13px;line-height:16.900000000000002px;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Arial,Helvetica,sans-serif;color:#3d4e53}#feedback{position:fixed;bottom:10%;right:0;z-index:500}#feedback p{writing-mode:tb-rl;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);white-space:nowrap;display:block;bottom:0;width:160px;height:32px;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px;background:#8dc63f;margin-bottom:0;text-align:center;margin-right:-67px;line-height:normal}#feedback p a{color:white;font-size:24px;font-weight:normal}#feedback p a:hover{color:#3d4e53}a{font-weight:bold;font-size:inherit;text-decoration:none;cursor:pointer;color:#6994a3}a:hover{text-decoration:underline}h1{font-size:22.5px}h2{font-size:18.75px}h3{font-size:17.549999999999997px}h4{font-size:15px}img{border:0}img.user-avatar{float:left;margin-right:10px;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px}input,textarea,a.fakeinput{border:2px solid #d6dde0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}input:focus,textarea:focus,a.fakeinput:focus{border:2px solid #8dc63f;outline:0}a.fakeinput:hover{text-decoration:none}.js-search input{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}h2.content-heading{padding:15px;margin:0;font-size:19px;font-weight:normal;color:#3d4e53;float:left;width:50%}h2.content-heading span{font-style:italic}h3.jsmod-title{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0;background:#a7c1ca;padding:0;margin:0;height:73px}h3.jsmod-title span{font-size:19px;font-style:italic;color:#3d4e53;padding:26px 40px 27px 20px;display:block}input[type="submit"],a.fakeinput{background:#8dc63f;color:white;font-weight:bold;padding:.5em 1em;cursor:pointer}.loader-gif[disabled="disabled"],.loader-gif.show-loading{background:url('/static/images/loading.gif') center no-repeat!important}.js-page-wrap{position:relative;min-height:100%}.js-main{width:960px;margin:0 auto;clear:both;padding:0}ul.menu{list-style:none;padding:0;margin:0}.errorlist{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errorlist li{list-style:none;border:0}.errorlist li{list-style:none;border:0}.errorlist+input{border:2px solid #e35351!important}.errorlist+input:focus{border:1px solid #8dc63f!important}.errorlist+textarea{border:2px solid #e35351!important}.errorlist+textarea:focus{border:2px solid #8dc63f!important}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#js-header{height:90px}.js-logo{float:left;padding-top:10px}.js-logo a img{border:0}.js-topmenu{float:right;margin-top:25px;font-size:15px}.js-topmenu#authenticated{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:36px}.js-topmenu#authenticated:hover,.js-topmenu#authenticated.highlight{background:#d6dde0;cursor:pointer;position:relative}.js-topmenu#authenticated.highlight span#welcome{background-image:url("/static/images/menu_bar_up_arrow_textblue.png")}.js-topmenu ul#user_menu{white-space:nowrap;display:none;z-index:100;position:absolute;top:36px;left:0;padding:0;overflow:visible;margin:0}.js-topmenu ul#user_menu li{border-top:1px solid white;list-style-type:none;float:none;background:#d6dde0;padding:7px 10px}.js-topmenu ul#user_menu li:hover{background:#8dc63f}.js-topmenu ul#user_menu li:hover a{color:white}.js-topmenu ul#user_menu li:hover #i_haz_notifications{border-color:white;background-color:white;color:#3d4e53}.js-topmenu ul#user_menu li a{height:auto;line-height:26.25px}.js-topmenu ul#user_menu li span{margin-right:10px}.js-topmenu ul li{float:left;position:relative;z-index:50}.js-topmenu ul li a{color:#3d4e53;height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.js-topmenu ul li span#welcome{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em;padding:0 10px;margin-right:5px;padding-right:22px;background-image:url("/static/images/menu_bar_down_arrow_textblue.png");background-repeat:no-repeat;background-position:right}.js-topmenu ul li span#welcome img{vertical-align:middle}.js-topmenu ul li img{padding:0;margin:0}.js-topmenu ul li.last{padding-left:20px}.js-topmenu ul li.last a{background:url("/static/images/bg.png") right top no-repeat}.js-topmenu ul li.last a span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8dc63f;margin-right:29px;display:block;padding:0 5px 0 15px;color:white}.js-topmenu ul .unseen_count{border:solid 2px;-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;padding:3px;line-height:16px;width:16px;cursor:pointer;text-align:center}.js-topmenu ul .unseen_count#i_haz_notifications{background-color:#8dc63f;color:white;border-color:white}.js-topmenu ul .unseen_count#no_notifications_for_you{border-color:#edf3f4;background-color:#edf3f4;color:#3d4e53}#i_haz_notifications_badge{-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;font-size:13px;border:solid 2px white;margin-left:-7px;margin-top:-10px;padding:3px;background:#8dc63f;color:white;position:absolute;line-height:normal}form.login label,#login form label{display:block;line-height:18px}form.login input,#login form input{width:90%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #d6dde0;height:18px;line-height:18px;margin-bottom:6px}form.login input[type=submit],#login form input[type=submit]{text-decoration:capitalize;width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}form.login input:focus,#login form input:focus{border:solid 1px #8dc63f}form.login input[type="text"],#login form input[type="text"],form.login input[type="password"],#login form input[type="password"]{height:22.75px;line-height:22.75px;margin-bottom:13px;border-width:2px}form.login input[type="submit"],#login form input[type="submit"]{font-size:15px}form.login span.helptext,#login form span.helptext{display:block;margin-top:-11px;font-style:italic;font-size:13px}#lightbox_content .google_signup{padding:14px 0}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}.js-search{float:left;padding-top:25px;margin-left:81px}.js-search input{float:left}.js-search .inputbox{padding:0 0 0 15px;margin:0;border-top:solid 4px #8ac3d7;border-left:solid 4px #8ac3d7;border-bottom:solid 4px #8ac3d7;border-right:0;-moz-border-radius:50px 0 0 50px;-webkit-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;outline:0;height:28px;line-height:28px;width:156px;float:left;color:#6994a3}.js-search .button{background:url("/static/images/blue-search-button.png") no-repeat;padding:0;margin:0;width:40px;height:36px;display:block;border:0;text-indent:-10000px;cursor:pointer}.js-search-inner{float:right}#locationhash{display:none}#block-intro-text{padding-right:10px}#block-intro-text span.def{font-style:italic}a#readon{background:url("/static/images/learnmore-downarrow.png") right center no-repeat;color:#fff;text-transform:capitalize;display:block;float:right;font-size:13px;font-weight:bold}a#readon.down{background:url("/static/images/learnmore-uparrow.png") right center no-repeat}a#readon span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8ac3d7;margin-right:34px;padding:0 5px 0 20px;height:36px;line-height:36px;display:block}.spread_the_word{height:24px;width:24px;position:top;margin-left:5px}#js-leftcol{float:left;width:235px;margin-bottom:20px}#js-leftcol a{font-weight:normal}#js-leftcol a:hover{text-decoration:underline}#js-leftcol .jsmod-content{border:solid 1px #edf3f4;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}#js-leftcol ul.level1>li>a,#js-leftcol ul.level1>li>span{border-bottom:1px solid #edf3f4;border-top:1px solid #edf3f4;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:10px}#js-leftcol ul.level2 li{padding:5px 10px}#js-leftcol ul.level2 li a{color:#6994a3;font-size:15px}#js-leftcol ul.level2 li img{vertical-align:middle;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}#js-leftcol ul.level2 li .ungluer-name{height:30px;line-height:30px}#js-topsection{padding:15px 0 0 0;overflow:hidden}.js-topnews{float:left;width:100%}.js-topnews1{background:url("/static/images/header/header-m.png") 0 0 repeat-y}.js-topnews2{background:url("/static/images/header/header-t.png") 0 0 no-repeat}.js-topnews3{background:url("/static/images/header/header-b.png") 0 100% no-repeat;display:block;overflow:hidden;padding:10px}#main-container{margin:15px 0 0 0}#js-maincol-fr{float:right;width:725px}div#content-block{overflow:hidden;background:url("/static/images/bg.png") 100% -223px no-repeat;padding:0 0 0 7px;margin-bottom:20px}div#content-block.jsmodule{background:0}.content-block-heading a.block-link{float:right;padding:15px;font-size:13px;color:#3d4e53;text-decoration:underline;font-weight:normal}div#content-block-content,div#content-block-content-1{width:100%;overflow:hidden;padding-left:10px}div#content-block-content .cols3 .column,div#content-block-content-1 .cols3 .column{width:33.33%;float:left}#footer{background-color:#edf3f4;clear:both;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:15px 0 45px 0;margin-top:15px;overflow:hidden}#footer .column{float:left;width:25%;padding-top:5px}#footer .column ul{padding-top:5px;margin-left:0;padding-left:0}#footer .column li{padding:5px 0;text-transform:none;list-style:none;margin-left:0}#footer .column li a{color:#6994a3;font-size:15px}.pagination{width:100%;text-align:center;margin-top:20px;clear:both;border-top:solid #3d4e53 thin;padding-top:7px}.pagination .endless_page_link{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px}.pagination .endless_page_current{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px;background-color:#edf3f4}a.nounderline{text-decoration:none}.slides_control{height:325px!important}#about_expandable{display:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;background:white;z-index:500;top:25%;padding:9px;max-width:90%}#about_expandable .collapser_x{margin-top:-27px;margin-right:-27px}#lightbox_content p,#lightbox_content li{padding:9px 0;font-size:15px;line-height:20px}#lightbox_content p a,#lightbox_content li a{font-size:15px;line-height:20px}#lightbox_content p b,#lightbox_content li b{color:#8dc63f}#lightbox_content p.last,#lightbox_content li.last{border-bottom:solid 2px #d6dde0;margin-bottom:5px}#lightbox_content .right_border{border-right:solid 1px #d6dde0;float:left;padding:9px}#lightbox_content .signuptoday{float:right;margin-top:0;clear:none}#lightbox_content h2+form,#lightbox_content h3+form,#lightbox_content h4+form{margin-top:15px}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-bottom:10px}.nonlightbox .about_page{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;width:75%;margin:10px auto auto auto;padding:9px}.collapser_x{float:right;height:24px;line-height:24px;width:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;-moz-box-shadow:-1px 1px #3d4e53;-webkit-box-shadow:-1px 1px #3d4e53;box-shadow:-1px 1px #3d4e53;border:solid 3px white;text-align:center;color:white;background:#3d4e53;font-size:17px;z-index:5000;margin-top:-12px;margin-right:-22px}.signuptoday{-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;background-color:#8dc63f;padding:0 15px;height:36px;line-height:36px;float:left;clear:both;margin:10px auto;cursor:pointer;font-style:normal}.signuptoday a{background:url("/static/images/icons/pledgearrow-hover.png") right center no-repeat;padding-right:17px;color:white}.signuptoday a:hover{text-decoration:none}.central{width:480px;margin:0 auto}li.checked{list-style-type:none;background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;margin-left:-20px;padding-left:20px}.btn_support{margin:10px;width:215px}.btn_support a,.btn_support form input,.btn_support>span{font-size:22px;border:4px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;display:block;text-align:center;padding-top:14.25px;padding-bottom:14.25px;background-color:#8dc63f;color:white!important}.btn_support a span,.btn_support form input span,.btn_support>span span{color:white!important;font-weight:bold;padding-left:0;margin-left:0!important;background:0}.btn_support.create-account span{padding:0;margin:0;background:0}.btn_support a:hover,.btn_support form input:hover{background-color:#7aae34;text-decoration:none}.btn_support a{width:207px}.btn_support form input{width:215px}.btn_support.modify a,.btn_support.modify form input{background-color:#a7c1ca}.btn_support.modify a:hover,.btn_support.modify form input:hover{background-color:#91b1bd}.instructions h4{border-top:solid #d6dde0 1px;border-bottom:solid #d6dde0 1px;padding:.5em 0}.instructions>div{padding-left:1%;padding-right:1%;font-size:15px;line-height:22.5px;width:98%}.instructions>div.active{float:left}.one_click{float:left}.one_click>div{float:left}.one_click>div #kindle a,.one_click>div .kindle a{font-size:15px;padding:9px 0}.one_click>div div{margin:0 10px 0 0}.ebook_download_container{clear:left}.other_instructions_paragraph{display:none}#iOS_app_div,#ios_div{display:none}.yes_js{display:none}
\ No newline at end of file
diff --git a/static/images/open_safari.png b/static/images/open_safari.png
new file mode 100644
index 00000000..96f86f20
Binary files /dev/null and b/static/images/open_safari.png differ
diff --git a/static/images/readmill_logo.jpg b/static/images/readmill_logo.jpg
new file mode 100644
index 00000000..77d8eb9e
Binary files /dev/null and b/static/images/readmill_logo.jpg differ
diff --git a/static/js/download_page.js b/static/js/download_page.js
index 3652c916..83622063 100644
--- a/static/js/download_page.js
+++ b/static/js/download_page.js
@@ -13,18 +13,23 @@ else {
// browser has a better sense of DOM changes than jQuery, so user can trigger click element
$j(document).on('click', '.other_instructions', function(e) {
e.preventDefault();
- var myID = $j(this).attr('id');
- var divSelector = '#' + myID + '_div';
+ var myLink = $j(this);
+ classes = myLink.attr('class').split(' ');
+ mySelector = classes[0];
+ var divSelector = '#' + mySelector + '_div';
var activeDiv = $j(divSelector);
activeDiv.show();
- activeDiv.siblings().hide();
+ activeDiv.siblings().removeClass('active').hide();
});
$j(document).on('click', '#kindle.authenticated', function() {
- classes = $j(this).attr('class').split(' ');
- kindle_ebook_id = classes[0];
+ var myDiv = $j(this);
+ kindle_ebook_id = myDiv.attr('title');
+ myDiv.html('')
$j.post('/send_to_kindle/' + kindle_ebook_id + '/1/', function(data) {
- $j('#kindle_div').html(data);
+ myDiv.removeClass('btn_support');
+ myDiv.html(data);
+ myDiv.removeAttr('id');
return false;
});
});
\ No newline at end of file
diff --git a/static/js/sitewide1.js b/static/js/sitewide1.js
index 2a1acf2c..74b8295c 100644
--- a/static/js/sitewide1.js
+++ b/static/js/sitewide1.js
@@ -24,18 +24,20 @@ $j(document).ready(function() {
if ($j(this).attr("href").indexOf("download") !== -1) {
jQuery.getScript('/static/js/download_page.js');
jQuery.getScript('https://platform.readmill.com/send.js');
+ var work_page = $j(this).attr("href").split("download")[0];
+ $j.cookie('next', work_page, {path: '/'});
}
-
- //need to push next cookie for sign-in links
- var vars = $j(this).attr("href").split("next=");
- if (vars.length>1){
- next=vars[1];
- if(next!='') {
- next = next.replace(/[\x22\x27\x3c\x3e]/g,'');
- $j.cookie('next', next, {path: '/'});
+ else {
+ //need to push next cookie for sign-in links
+ var vars = $j(this).attr("href").split("next=");
+ if (vars.length>1){
+ next=vars[1];
+ if(next!='') {
+ next = next.replace(/[\x22\x27\x3c\x3e]/g,'');
+ $j.cookie('next', next, {path: '/'});
+ }
}
}
-
// fade-out rest of page elements on expand
$j('#feedback, #js-page-wrap, #footer').css({"opacity": "0.07"});
$j('#about_expandable').css({'position': 'absolute'});
diff --git a/static/less/download.less b/static/less/download.less
index dfa0bf47..37ceb49b 100644
--- a/static/less/download.less
+++ b/static/less/download.less
@@ -8,7 +8,6 @@
#lightbox_content a {
color: @medium-blue;
-
}
#lightbox_content .signuptoday a {
@@ -34,7 +33,7 @@
}
}
-#lightbox_content .logo {
+#lightbox_content .logo {
img {
.one-border-radius(7px);
height: 50px;
@@ -45,7 +44,7 @@
font-size: @font-size-larger;
}
-#lightbox_content .unglued, #lightbox_content .not_unglued {
+#lightbox_content .one_click, #lightbox_content .ebook_download_container {
.one-border-radius(5px);
margin-left: -.25%;
padding: 0.5%;
@@ -58,11 +57,11 @@
}
}
-#lightbox_content .unglued {
- border: solid 2px @call-to-action;
+#lightbox_content .one_click {
+ border: solid 2px @call-to-action;
}
-#lightbox_content .not_unglued {
+#lightbox_content .ebook_download_container {
border: solid 2px @blue-grey;
}
@@ -122,4 +121,13 @@
textarea {
max-width: 90%;
}
+}
+
+.btn_support.kindle{
+ height: 40px;
+
+ a {
+ width: auto;
+ font-size: @font-size-larger;
+ }
}
\ No newline at end of file
diff --git a/static/less/enhanced_download.less b/static/less/enhanced_download.less
index 2f29d837..8e1032f0 100644
--- a/static/less/enhanced_download.less
+++ b/static/less/enhanced_download.less
@@ -1,4 +1,4 @@
-.buttons, #kindle_div .yes_js, .other_instructions_paragraph {
+.buttons, .yes_js, .other_instructions_paragraph {
display: inherit;
}
@@ -6,6 +6,10 @@
display: none;
}
-#kindle_div .no_js {
+.no_js {
display: none !important;
+}
+
+.active {
+ display: inherit !important;
}
\ No newline at end of file
diff --git a/static/less/enhanced_download_ie.less b/static/less/enhanced_download_ie.less
index f5804401..60e2a799 100644
--- a/static/less/enhanced_download_ie.less
+++ b/static/less/enhanced_download_ie.less
@@ -1,4 +1,4 @@
-.buttons, #kindle_div .yes_js, .other_instructions_paragraph {
+.yes_js, .other_instructions_paragraph {
display: inherit;
}
@@ -6,11 +6,11 @@
display: none;
}
-#kindle_div .no_js {
+.no_js {
display: none !important;
}
/* the not selector doesn't work in IE <= 8 */
.active {
- display: inherit;
+ display: inherit !important;
}
\ No newline at end of file
diff --git a/static/less/sitewide4.less b/static/less/sitewide4.less
index 1b84ebac..2a037458 100644
--- a/static/less/sitewide4.less
+++ b/static/less/sitewide4.less
@@ -747,7 +747,7 @@ a.nounderline {
}
#lightbox_content {
- p {
+ p, li {
padding: 9px 0;
font-size: @font-size-larger;
line-height: 20px;
@@ -922,6 +922,26 @@ li.checked {
}
}
+.one_click {
+ float: left;
+ & > div {
+ float: left;
+
+ #kindle a, .kindle a {
+ font-size: @font-size-larger;
+ padding: 9px 0;
+ }
+
+ div {
+ margin: 0 10px 0 0;
+ }
+ }
+}
+
+.ebook_download_container {
+ clear: left;
+}
+
.other_instructions_paragraph {
display: none;
}
@@ -934,6 +954,6 @@ li.checked {
display: none;
}
-#kindle_div .yes_js {
+.yes_js {
display: none;
}
\ No newline at end of file