Merge branch 'master' of https://code.grnet.gr/git/astakos astakos/v0.7.2
authorSofia Papagiannaki <papagian@gmail.com>
Thu, 2 Aug 2012 17:04:24 +0000 (20:04 +0300)
committerSofia Papagiannaki <papagian@gmail.com>
Thu, 2 Aug 2012 17:04:24 +0000 (20:04 +0300)
Conflicts:
snf-astakos-app/astakos/im/forms.py

73 files changed:
.gitignore
snf-astakos-app/Changelog
snf-astakos-app/astakos/im/context_processors.py
snf-astakos-app/astakos/im/forms.py
snf-astakos-app/astakos/im/settings.py
snf-astakos-app/astakos/im/static/im/cloudbar/cloudbar.css
snf-astakos-app/astakos/im/static/im/cloudbar/cloudbar.js
snf-astakos-app/astakos/im/static/im/cloudbar/home-icon.png
snf-astakos-app/astakos/im/static/im/cloudbar/service_cyclades.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/cloudbar/service_okeanos.css [deleted file]
snf-astakos-app/astakos/im/static/im/css/bootstrap.css [deleted file]
snf-astakos-app/astakos/im/static/im/css/browser-fixes.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/colorbox.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/dropkick.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/formating.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/forms.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/global.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/ie7.css
snf-astakos-app/astakos/im/static/im/css/max480.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/max768.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/max960.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/modules.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/print.css [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/css/styles.css [deleted file]
snf-astakos-app/astakos/im/static/im/css/styles.less [deleted file]
snf-astakos-app/astakos/im/static/im/images/_double-dots.jpg [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/accounts-logo.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/arrow-down.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/arrow-lt.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/arrow-up.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/arrow-white-reverse.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/arrow-white.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/arrow_01.jpg [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/black-line.jpg [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/dots.jpg [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/double-dots-unequal.jpg [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/pictures/accounts_3.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/pictures/login_pic.png
snf-astakos-app/astakos/im/static/im/images/pictures/ring_bell_beige.gif [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/pictures/signup_pic.png
snf-astakos-app/astakos/im/static/im/images/porta.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/question-mark.jpg [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/refresh_g.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/refresh_lg.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/sound_g.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/sound_lg.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/images/symbols.png [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/common.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/forms.js
snf-astakos-app/astakos/im/static/im/js/html5shiv-printshiv.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/jqModal.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/jquery.colorbox.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/jquery.dropkick-1.0.0.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/os.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/resources_list.js [new file with mode: 0644]
snf-astakos-app/astakos/im/static/im/js/underscore.js [new file with mode: 0644]
snf-astakos-app/astakos/im/templates/im/account_base.html
snf-astakos-app/astakos/im/templates/im/base.html
snf-astakos-app/astakos/im/templates/im/base_two_cols.html
snf-astakos-app/astakos/im/templates/im/captcha.html [new file with mode: 0644]
snf-astakos-app/astakos/im/templates/im/feedback.html
snf-astakos-app/astakos/im/templates/im/footer.html
snf-astakos-app/astakos/im/templates/im/form_render.html
snf-astakos-app/astakos/im/templates/im/invitations.html
snf-astakos-app/astakos/im/templates/im/login_base.html
snf-astakos-app/astakos/im/templates/im/profile.html
snf-astakos-app/astakos/im/templates/im/signup.html
snf-astakos-app/astakos/im/templates/registration/password_reset_form.html
snf-astakos-app/astakos/im/templatetags/astakos_tags.py [new file with mode: 0644]
snf-astakos-app/astakos/im/views.py
snf-astakos-app/astakos/im/widgets.py
snf-astakos-app/conf/20-snf-astakos-app-settings.conf
snf-astakos-app/conf/20-snf-astakos-app-settings.conf~ [new file with mode: 0644]

index 97cbc26..7648fd5 100644 (file)
@@ -3,4 +3,6 @@ docs/build
 *.pyc
 *.egg-info
 .DS_Store
+.project
+.pydevproject
 snf-astakos-app/astakos/version.py
index 5bb7276..9b8d1bd 100644 (file)
@@ -1,15 +1,29 @@
 Changelog
 ---------
-next
-^^^^
+
+v0.7.1
+^^^^^^
+- ASTAKOS_*_MESSAGES settings changed from dict to tuple lists
+- Theme changes (new colors, new font)
+
+v0.7.0
+^^^^^^
 - Rename management commands
 - Optionally renew token on password change
 - Preserve local password for users switched to shibboleth
-- Send notification to DEFAULT_CONTACT_EMAIL on account activation
+- Send notification to ASTAKOS_DEFAULT_CONTACT_EMAIL on account activation
 - Fix unusable password issue
 - Extend user_update command by enabling provider modification and password renewal
 - Check for email absence before querying the database for retrieving the user in get menu call
 - Set is_verified in profile view even if the user do not post the form
+- New html/css theme
+- Database updated.
+  Use::
+       
+       $ snf-manage syncdb
+       $ snf-manage migrate
+
+  to migrate your database.
 
 v0.6.2
 ^^^^^^
index 4f63315..31ba885 100644 (file)
@@ -57,8 +57,21 @@ def media(request):
     return {'IM_STATIC_URL' : IM_STATIC_URL}
 
 def custom_messages(request):
+    global GLOBAL_MESSAGES, SIGNUP_MESSAGES, LOGIN_MESSAGES, PROFILE_MESSAGES
+
+    # keep backwards compatibility with dict settings
+    if type(GLOBAL_MESSAGES) == dict:
+        GLOBAL_MESSAGES = GLOBAL_MESSAGES.items()
+    if type(SIGNUP_MESSAGES) == dict:
+        SIGNUP_MESSAGES = SIGNUP_MESSAGES.items()
+    if type(LOGIN_MESSAGES) == dict:
+        LOGIN_MESSAGES = LOGIN_MESSAGES.items()
+    if type(PROFILE_MESSAGES) == dict:
+        PROFILE_MESSAGES = PROFILE_MESSAGES.items()
+
     EXTRA_MESSAGES_SET = bool(GLOBAL_MESSAGES or SIGNUP_MESSAGES or \
             LOGIN_MESSAGES or PROFILE_MESSAGES)
+
     return {
             'GLOBAL_MESSAGES' : GLOBAL_MESSAGES,
             'SIGNUP_MESSAGES' : SIGNUP_MESSAGES,
index 2e136ae..8f22a15 100644 (file)
@@ -88,15 +88,16 @@ class LocalUserCreationForm(UserCreationForm):
             kwargs.pop('request')
             self.ip = request.META.get('REMOTE_ADDR',
                                        request.META.get('HTTP_X_REAL_IP', None))
-        
+
         super(LocalUserCreationForm, self).__init__(*args, **kwargs)
         self.fields.keyOrder = ['email', 'first_name', 'last_name',
                                 'password1', 'password2']
-        if get_latest_terms():
-            self.fields.keyOrder.append('has_signed_terms')
+
         if RECAPTCHA_ENABLED:
             self.fields.keyOrder.extend(['recaptcha_challenge_field',
                                          'recaptcha_response_field',])
+        if get_latest_terms():
+            self.fields.keyOrder.append('has_signed_terms')
 
         if 'has_signed_terms' in self.fields:
             # Overriding field label since we need to apply a link
@@ -167,7 +168,7 @@ class InvitedLocalUserCreationForm(LocalUserCreationForm):
         ro = ('email', 'username',)
         for f in ro:
             self.fields[f].widget.attrs['readonly'] = True
-        
+
 
     def save(self, commit=True):
         user = super(InvitedLocalUserCreationForm, self).save(commit=False)
@@ -183,7 +184,7 @@ class ThirdPartyUserCreationForm(forms.ModelForm):
     class Meta:
         model = AstakosUser
         fields = ("email", "first_name", "last_name", "third_party_identifier", "has_signed_terms")
-    
+
     def __init__(self, *args, **kwargs):
         """
         Changes the order of fields, and removes the username field.
@@ -199,7 +200,7 @@ class ThirdPartyUserCreationForm(forms.ModelForm):
         ro = ["third_party_identifier"]
         for f in ro:
             self.fields[f].widget.attrs['readonly'] = True
-        
+
         if 'has_signed_terms' in self.fields:
             # Overriding field label since we need to apply a link
             # to the terms within the label
@@ -207,19 +208,19 @@ class ThirdPartyUserCreationForm(forms.ModelForm):
                     % (reverse('latest_terms'), _("the terms"))
             self.fields['has_signed_terms'].label = \
                     mark_safe("I agree with %s" % terms_link_html)
-    
+
     def clean_email(self):
         email = self.cleaned_data['email']
         if not email:
             raise forms.ValidationError(_("This field is required"))
         return email
-    
+
     def clean_has_signed_terms(self):
         has_signed_terms = self.cleaned_data['has_signed_terms']
         if not has_signed_terms:
             raise forms.ValidationError(_('You have to agree with the terms'))
         return has_signed_terms
-    
+
     def save(self, commit=True):
         user = super(ThirdPartyUserCreationForm, self).save(commit=False)
         user.set_unusable_password()
@@ -244,7 +245,7 @@ class InvitedThirdPartyUserCreationForm(ThirdPartyUserCreationForm):
         ro = ('email',)
         for f in ro:
             self.fields[f].widget.attrs['readonly'] = True
-    
+
     def save(self, commit=True):
         user = super(InvitedThirdPartyUserCreationForm, self).save(commit=False)
         level = user.invitation.inviter.level + 1
@@ -257,7 +258,7 @@ class InvitedThirdPartyUserCreationForm(ThirdPartyUserCreationForm):
 
 class ShibbolethUserCreationForm(ThirdPartyUserCreationForm):
     additional_email = forms.CharField(widget=forms.HiddenInput(), label='', required = False)
-    
+
     def __init__(self, *args, **kwargs):
         super(ShibbolethUserCreationForm, self).__init__(*args, **kwargs)
         self.fields.keyOrder.append('additional_email')
@@ -265,7 +266,7 @@ class ShibbolethUserCreationForm(ThirdPartyUserCreationForm):
         name = 'email'
         field = self.fields[name]
         self.initial['additional_email'] = self.initial.get(name, field.initial)
-    
+
     def clean_email(self):
         email = self.cleaned_data['email']
         for user in AstakosUser.objects.filter(email = email):
@@ -279,30 +280,30 @@ class ShibbolethUserCreationForm(ThirdPartyUserCreationForm):
 
 class InvitedShibbolethUserCreationForm(ShibbolethUserCreationForm, InvitedThirdPartyUserCreationForm):
     pass
-    
+
 class LoginForm(AuthenticationForm):
     username = forms.EmailField(label=_("Email"))
     recaptcha_challenge_field = forms.CharField(widget=DummyWidget)
     recaptcha_response_field = forms.CharField(widget=RecaptchaWidget, label='')
-    
+
     def __init__(self, *args, **kwargs):
         was_limited = kwargs.get('was_limited', False)
         request = kwargs.get('request', None)
         if request:
             self.ip = request.META.get('REMOTE_ADDR',
                                        request.META.get('HTTP_X_REAL_IP', None))
-        
+
         t = ('request', 'was_limited')
         for elem in t:
             if elem in kwargs.keys():
                 kwargs.pop(elem)
         super(LoginForm, self).__init__(*args, **kwargs)
-        
+
         self.fields.keyOrder = ['username', 'password']
         if was_limited and RECAPTCHA_ENABLED:
             self.fields.keyOrder.extend(['recaptcha_challenge_field',
                                          'recaptcha_response_field',])
-    
+
     def clean_recaptcha_response_field(self):
         if 'recaptcha_challenge_field' in self.cleaned_data:
             self.validate_captcha()
@@ -319,7 +320,7 @@ class LoginForm(AuthenticationForm):
         check = captcha.submit(rcf, rrf, RECAPTCHA_PRIVATE_KEY, self.ip)
         if not check.is_valid:
             raise forms.ValidationError(_('You have not entered the correct words'))
-    
+
     def clean(self):
         super(LoginForm, self).clean()
         if self.user_cache and self.user_cache.provider not in ('local', ''):
@@ -391,7 +392,7 @@ class ExtendedPasswordResetForm(PasswordResetForm):
         except AstakosUser.DoesNotExist, e:
             raise forms.ValidationError(_('That e-mail address doesn\'t have an associated user account. Are you sure you\'ve registered?'))
         return email
-    
+
     def save(self, domain_override=None, email_template_name='registration/password_reset_email.html',
              use_https=False, token_generator=default_token_generator, request=None):
         """
@@ -419,13 +420,13 @@ class EmailChangeForm(forms.ModelForm):
     class Meta:
         model = EmailChange
         fields = ('new_email_address',)
-            
+
     def clean_new_email_address(self):
         addr = self.cleaned_data['new_email_address']
         if AstakosUser.objects.filter(email__iexact=addr):
             raise forms.ValidationError(_(u'This email address is already in use. Please supply a different email address.'))
         return addr
-    
+
     def save(self, email_template_name, request, commit=True):
         ec = super(EmailChangeForm, self).save(commit=False)
         ec.user = request.user
@@ -451,14 +452,14 @@ class SignApprovalTermsForm(forms.ModelForm):
 
 class InvitationForm(forms.ModelForm):
     username = forms.EmailField(label=_("Email"))
-    
+
     def __init__(self, *args, **kwargs):
         super(InvitationForm, self).__init__(*args, **kwargs)
-    
+
     class Meta:
         model = Invitation
         fields = ('username', 'realname')
-    
+
     def clean_username(self):
         username = self.cleaned_data['username']
         try:
@@ -474,14 +475,14 @@ class ExtendedPasswordChangeForm(PasswordChangeForm):
     to optionally renew also the token.
     """
     renew = forms.BooleanField(label='Renew token', required=False)
-    
+
     def __init__(self, user, *args, **kwargs):
         super(ExtendedPasswordChangeForm, self).__init__(user, *args, **kwargs)
-    
+
     def save(self, commit=True):
         user = super(ExtendedPasswordChangeForm, self).save(commit=False)
         if self.cleaned_data.get('renew'):
             user.renew_token()
         if commit:
             user.save()
-        return user
\ No newline at end of file
+        return user
index 6976ebd..43f4f98 100644 (file)
@@ -50,7 +50,8 @@ SITENAME = getattr(settings, 'ASTAKOS_SITENAME', 'GRNET Cloud')
 # Set recaptcha keys
 RECAPTCHA_PUBLIC_KEY = getattr(settings, 'ASTAKOS_RECAPTCHA_PUBLIC_KEY', '')
 RECAPTCHA_PRIVATE_KEY = getattr(settings, 'ASTAKOS_RECAPTCHA_PRIVATE_KEY', '')
-RECAPTCHA_OPTIONS = getattr(settings, 'ASTAKOS_RECAPTCHA_OPTIONS', {'theme': 'white'})
+RECAPTCHA_OPTIONS = getattr(settings, 'ASTAKOS_RECAPTCHA_OPTIONS',
+                            {'theme' : 'custom', 'custom_theme_widget': 'okeanos_recaptcha'})
 RECAPTCHA_USE_SSL = getattr(settings, 'ASTAKOS_RECAPTCHA_USE_SSL', True)
 RECAPTCHA_ENABLED = getattr(settings, 'ASTAKOS_RECAPTCHA_ENABLED', True)
 
@@ -68,19 +69,19 @@ RE_USER_EMAIL_PATTERNS = getattr(settings, 'ASTAKOS_RE_USER_EMAIL_PATTERNS', [])
 
 # Messages to display on login page header
 # e.g. {'warning': 'This warning message will be displayed on the top of login page'}
-LOGIN_MESSAGES = getattr(settings, 'ASTAKOS_LOGIN_MESSAGES', {})
+LOGIN_MESSAGES = getattr(settings, 'ASTAKOS_LOGIN_MESSAGES', [])
 
 # Messages to display on login page header
 # e.g. {'warning': 'This warning message will be displayed on the top of signup page'}
-SIGNUP_MESSAGES = getattr(settings, 'ASTAKOS_SIGNUP_MESSAGES', {})
+SIGNUP_MESSAGES = getattr(settings, 'ASTAKOS_SIGNUP_MESSAGES', [])
 
 # Messages to display on login page header
 # e.g. {'warning': 'This warning message will be displayed on the top of profile page'}
-PROFILE_MESSAGES = getattr(settings, 'ASTAKOS_PROFILE_MESSAGES', {})
+PROFILE_MESSAGES = getattr(settings, 'ASTAKOS_PROFILE_MESSAGES', [])
 
 # Messages to display on all pages
 # e.g. {'warning': 'This warning message will be displayed on the top of every page'}
-GLOBAL_MESSAGES = getattr(settings, 'ASTAKOS_GLOBAL_MESSAGES', {})
+GLOBAL_MESSAGES = getattr(settings, 'ASTAKOS_GLOBAL_MESSAGES', [])
 
 # messages to display as extra actions in account forms
 # e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'}
index 6cc7703..7c9aa6c 100644 (file)
-/* Variables.less
- * Variables to customize the look and feel of Bootstrap
- * ----------------------------------------------------- */
-/* Mixins.less
- * Snippets of reusable CSS to develop faster and keep code readable
- * ----------------------------------------------------------------- */
-.servicesbar {
-  font-family: arial, sans-serif !important;
-  font-size: 13px !important;
-  line-height: 13px;
-  letter-spacing: 0px;
-  zoom: 1;
-  color: #ccc;
-  z-index: 1000;
-  border-bottom: 1px solid #444;
-  background-color: #000000;
-  position: relative;
-}
-.servicesbar ol, .servicesbar ul {
-  list-style: none;
-  margin: 0;
-  padding: 0;
-}
-.servicesbar li {
-  margin: 0;
-  padding: 0;
-}
-.servicesbar:before, .servicesbar:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.servicesbar:after {
-  clear: both;
-}
-.servicesbar a {
-  border: none !important;
-  font-family: arial, sans-serif !important;
-  font-size: 13px !important;
-  color: #e6e6e6;
-  text-decoration: none;
-  display: block;
-  float: left;
-  padding: 11px;
-  height: 13px;
-}
-.servicesbar a:hover {
-  background-color: #444;
-}
-.servicesbar a.active {
-  font-weight: bold;
-  font-size: 13px !important;
-  background-color: #333;
-}
-.servicesbar a img {
-  border: none;
-  margin: 1px;
-  margin-bottom: 2px;
-}
-.servicesbar .services {
-  zoom: 1;
-}
-.servicesbar .services:before, .servicesbar .services:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.servicesbar .services:after {
-  clear: both;
-}
-.servicesbar .services a {
-  font-size: 13px !important;
-  font-weight: bold;
-  color: #ccc;
-}
-.servicesbar .services a.with-icon {
-  margin: 0 !important;
-  padding: 0 !important;
-  width: 35px;
-  height: 35px;
-}
-.servicesbar .services a.active {
-  font-size: 13px !important;
-  color: #ffffff !important;
-}
-.servicesbar .services a:hover {
-  background-color: #444;
-}
-.servicesbar .profile {
-  margin-top: -35px;
-  zoom: 1;
-  text-align: right;
-  min-width: 200px;
-  width: 200px;
-  background-color: #000000;
-  zoom: 1;
-  position: absolute;
-  right: 0;
-  float: right;
-}
-.servicesbar .profile:before, .servicesbar .profile:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.servicesbar .profile:after {
-  clear: both;
-}
-.servicesbar .profile .user > a {
-  font-weight: bold !important;
-  font-size: 12px !important;
-}
-.servicesbar .profile .user.active {
-  background-color: #333;
-}
-.servicesbar .profile a {
-  float: none;
-}
-.servicesbar .profile ul {
-  display: none;
-}
-.servicesbar .profile ul li {
-  width: 100%;
-  border-bottom: 1px solid #444;
-  background-color: #333;
-}
-.servicesbar .profile ul li a {
-  float: none;
-  display: block;
-}
-.servicesbar .profile:hover, .servicesbar .profile.hover {
-  background-color: #222;
-}
-.servicesbar .profile:hover ul, .servicesbar .profile.hover ul {
-  display: block;
-}
-.servicesbar .profile:before, .servicesbar .profile:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.servicesbar .profile:after {
-  clear: both;
+/* helpers ------------------------------------*/
+.clearfix:before,
+.clearfix:after                                                                        { content:" "; display:block; height:0; visibility:hidden; } /* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified/ */
+.clearfix:after                                                                        { clear:both; }
+.visuallyhidden                                                                        { position:absolute !important; clip:rect(0 0 0 0); }
+
+
+/* cloudbar header */
+div.cloudbar                                    { background:#000; color:#fff;    line-height:35px;  width:100%;   font-size:13px; font-family: 'Didact Gothic', Verdana, sans-serif;} 
+
+div.cloudbar a, 
+div.cloudbar .profile span,
+div.cloudbar li {font-family:'Didact Gothic',Verdana,sans-serif !important; letter-spacing: 1px !important}
+
+.cloudbar .wrapper                              { width:auto; padding:0;}                      
+.cloudbar a                                     { color:#fff; text-decoration:none;}
+.cloudbar .profile                              { float:right; background:#3582AC; min-width:190px; padding:0; text-align:right;  }
+.cloudbar .profile:hover                                               { background:#5A97B8; }
+.cloudbar .profile a                            { text-decoration:none; color:#fff; display:block; width:100%;}
+.cloudbar .profile ul                           { position:absolute;   right:0; top:35px; padding:0; margin:0;  width:190px; display:none;     z-index:9; background:#fff;}
+.cloudbar .profile ul li                        { list-style:none outside; line-height:35px; padding:0 20px;}
+.cloudbar .profile ul li:hover a                               { color:#3582AC;}
+.cloudbar .profile .user a                                             { padding-right:20px; width:auto; }
+.cloudbar .profile .user a span                                        { padding:0 20px;   background:url(../images/arrow-lt.png) no-repeat right center;}
+.cloudbar .profile .full a span                 { background-image:url(../images/arrow-down.png); }
+.cloudbar .profile .full a.open span                   { background-image:url(../images/arrow-up.png); }
+.cloudbar .profile .full ul                                    { border:1px dashed #000; border-top:0 none; border-right:0 none;}
+.cloudbar .profile ul li a                      { padding-right:0; background:none; color:#000; display:inline; width:auto;}
+.cloudbar ul.services                           { margin:0; padding:0; }
+.cloudbar ul.services li                        { float:left; height:35px; line-height:35px; text-align:center; padding: 0 30px; list-style:none outside;}
+.cloudbar ul.services li:first-child            { padding:0 5px;}
+.cloudbar ul.services li.active                 { background:#333;}
+.cloudbar ul.services li:hover                  { background:#444; } 
+
+@media screen and (max-width : 480px)          { 
+       .cloudbar .profile                                                      { float:none; }  
+       .cloudbar .services li:first-child                      { position:absolute; left:0; top:0; background:#000}
 }
index d80c3e8..6351956 100644 (file)
@@ -1,3 +1,9 @@
+function equalWidths ( secondEl, firstEl) {
+       secondEl.css('width',firstEl.outerWidth() );
+}
+
+
+
 $(document).ready(function(){
     
     /*
@@ -21,6 +27,12 @@ $(document).ready(function(){
     var css = $("<link />");
     css.attr({rel:'stylesheet', type:'text/css', href:cssloc + 'cloudbar.css'});
     $("head").append(css);
+    
+    // load fonts
+    var font_url = 'http://fonts.googleapis.com/css?family=Didact+Gothic&subset=latin,greek,greek-ext';
+    var css_font = $("<link />");
+    css_font.attr({rel:'stylesheet', type:'text/css', href:font_url});
+    $("head").append(css_font);
 
     // load service specific css
     var SKIP_ADDITIONAL_CSS = window.SKIP_ADDITIONAL_CSS == undefined ? false : window.SKIP_ADDITIONAL_CSS;
@@ -32,8 +44,8 @@ $(document).ready(function(){
     }
 
     var root = $('body');
-    var bar = $('<div class="servicesbar"></div>');
-    var services = $('<div class="services"></div>');
+    var bar = $('<div class="cloudbar servicesbar clearfix"></div>');
+    var services = $('<ul class="services"></ul>');
     var profile = $('<div class="profile"></div>');
     
     var get_services_url = window.GET_SERVICES_URL || window.CLOUDBAR_SERVICES;
@@ -41,6 +53,7 @@ $(document).ready(function(){
     // create services links and set the active class to the current service
     $.getJSON(get_services_url + "?callback=?", function(data) {
             $.each(data, function(i, el){
+            var sli = $("<li>");
             var slink = $("<a>");
             if (el.icon) {
                 slink.append($('<img src="'+cssloc+el.icon+'"/>'));
@@ -50,9 +63,10 @@ $(document).ready(function(){
             }
             slink.attr('href', el.url);
             slink.attr('title', el.name);
-            services.append(slink);
+            sli.append(slink);
+            services.append(sli);
             if (el.id == ACTIVE_MENU || el.name == ACTIVE_MENU) {
-                slink.addClass("active");
+                sli.addClass("active");
             }
         });
       });
@@ -67,8 +81,9 @@ $(document).ready(function(){
     $.getJSON(get_menu_url, function(data) {
         $.each(data, function(i,el) {
             if (i == 0){
-                username.text(el.name);
+                username.html('<span>'+el.name+'</span>');
                 username.attr('href', el.url);
+                user.removeClass('full');
             }else{
                 var link = $("<a />");
                 link.text(el.name);
@@ -76,6 +91,7 @@ $(document).ready(function(){
                 var li = $("<li />");
                 li.append(link);
                 usermenu.append(li);
+                user.addClass('full');
             }
         });
     });
@@ -86,7 +102,7 @@ $(document).ready(function(){
     user.append(username);
     user.append(usermenu);
     profile.append(user);
-    bar.append(services).append(profile);
+    bar.append(profile).append(services);
     
 
     root.prepend(bar);
@@ -95,4 +111,25 @@ $(document).ready(function(){
 
     // ie fix
     user.hover(function(){$(this).addClass("hover")}, function(){$(this).removeClass("hover")});
+    $('html').live('click', function(e){
+               $('.cloudbar .profile .full>a').removeClass('open');
+               $('.cloudbar .profile .full>a').siblings('ul').hide();
+       });
+   
+       $('.cloudbar .profile .full>a').live('click', function(e){
+               
+               e.stopPropagation();
+        e.preventDefault();
+        equalWidths ( $('.cloudbar .profile ul'), $('.cloudbar .profile'));
+               $(this).siblings('ul').toggle();
+               $(this).toggleClass('open');
+               
+       });
+
+    
+});
+
+$(window).resize(function() {
+       equalWidths ( $('.cloudbar .profile ul'), $('.cloudbar .profile'));
 });
index 2901845..107f213 100644 (file)
Binary files a/snf-astakos-app/astakos/im/static/im/cloudbar/home-icon.png and b/snf-astakos-app/astakos/im/static/im/cloudbar/home-icon.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/cloudbar/service_cyclades.css b/snf-astakos-app/astakos/im/static/im/cloudbar/service_cyclades.css
new file mode 100644 (file)
index 0000000..cd6efdc
--- /dev/null
@@ -0,0 +1 @@
+body { background-position: 0px 34px !important}
diff --git a/snf-astakos-app/astakos/im/static/im/cloudbar/service_okeanos.css b/snf-astakos-app/astakos/im/static/im/cloudbar/service_okeanos.css
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/snf-astakos-app/astakos/im/static/im/css/bootstrap.css b/snf-astakos-app/astakos/im/static/im/css/bootstrap.css
deleted file mode 100644 (file)
index f1a5cc7..0000000
+++ /dev/null
@@ -1,2362 +0,0 @@
-/*!
- * Bootstrap v1.3.0
- *
- * Copyright 2011 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- * Date: Thu Sep 22 12:52:42 PDT 2011
- */
-/* Reset.less
- * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here      that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
- * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
-html, body {
-  margin: 0;
-  padding: 0;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-dd,
-dl,
-dt,
-li,
-ol,
-ul,
-fieldset,
-form,
-label,
-legend,
-button,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-weight: normal;
-  font-style: normal;
-  font-size: 100%;
-  line-height: 1;
-  font-family: inherit;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-ol, ul {
-  list-style: none;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-html {
-  overflow-y: scroll;
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted;
-}
-a:hover, a:active {
-  outline: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio, canvas, video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-sub, sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  font-size: 100%;
-  margin: 0;
-  vertical-align: baseline;
-  *vertical-align: middle;
-}
-button, input {
-  line-height: normal;
-  *overflow: visible;
-}
-button::-moz-focus-inner, input::-moz-focus-inner {
-  border: 0;
-  padding: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-/* Variables.less
- * Variables to customize the look and feel of Bootstrap
- * ----------------------------------------------------- */
-/* Variables.less
- * Snippets of reusable CSS to develop faster and keep code readable
- * ----------------------------------------------------------------- */
-/*
- * Scaffolding
- * Basic and global styles for generating a grid system, structural layout, and page templates
- * ------------------------------------------------------------------------------------------- */
-html, body {
-  background-color: #ffffff;
-}
-body {
-  margin: 0;
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-  color: #404040;
-}
-.container {
-  width: 940px;
-  margin-left: auto;
-  margin-right: auto;
-  zoom: 1;
-}
-.container:before, .container:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-.container:after {
-  clear: both;
-}
-.container-fluid {
-  position: relative;
-  min-width: 940px;
-  padding-left: 20px;
-  padding-right: 20px;
-  zoom: 1;
-}
-.container-fluid:before, .container-fluid:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-.container-fluid:after {
-  clear: both;
-}
-.container-fluid > .sidebar {
-  float: left;
-  width: 220px;
-}
-.container-fluid > .content {
-  margin-left: 240px;
-}
-a {
-  color: #0069d6;
-  text-decoration: none;
-  line-height: inherit;
-  font-weight: inherit;
-}
-a:hover {
-  color: #00438a;
-  text-decoration: underline;
-}
-.pull-right {
-  float: right;
-}
-.pull-left {
-  float: left;
-}
-.hide {
-  display: none;
-}
-.show {
-  display: block;
-}
-.row {
-  zoom: 1;
-  margin-left: -20px;
-}
-.row:before, .row:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-.row:after {
-  clear: both;
-}
-[class*="span"] {
-  display: inline;
-  float: left;
-  margin-left: 20px;
-}
-.span1 {
-  width: 40px;
-}
-.span2 {
-  width: 100px;
-}
-.span3 {
-  width: 160px;
-}
-.span4 {
-  width: 220px;
-}
-.span5 {
-  width: 280px;
-}
-.span6 {
-  width: 340px;
-}
-.span7 {
-  width: 400px;
-}
-.span8 {
-  width: 460px;
-}
-.span9 {
-  width: 520px;
-}
-.span10 {
-  width: 580px;
-}
-.span11 {
-  width: 640px;
-}
-.span12 {
-  width: 700px;
-}
-.span13 {
-  width: 760px;
-}
-.span14 {
-  width: 820px;
-}
-.span15 {
-  width: 880px;
-}
-.span16 {
-  width: 940px;
-}
-.span17 {
-  width: 1000px;
-}
-.span18 {
-  width: 1060px;
-}
-.span19 {
-  width: 1120px;
-}
-.span20 {
-  width: 1180px;
-}
-.span21 {
-  width: 1240px;
-}
-.span22 {
-  width: 1300px;
-}
-.span23 {
-  width: 1360px;
-}
-.span24 {
-  width: 1420px;
-}
-.offset1 {
-  margin-left: 80px;
-}
-.offset2 {
-  margin-left: 140px;
-}
-.offset3 {
-  margin-left: 200px;
-}
-.offset4 {
-  margin-left: 260px;
-}
-.offset5 {
-  margin-left: 320px;
-}
-.offset6 {
-  margin-left: 380px;
-}
-.offset7 {
-  margin-left: 440px;
-}
-.offset8 {
-  margin-left: 500px;
-}
-.offset9 {
-  margin-left: 560px;
-}
-.offset10 {
-  margin-left: 620px;
-}
-.offset11 {
-  margin-left: 680px;
-}
-.offset12 {
-  margin-left: 740px;
-}
-.span-one-third {
-  width: 300px;
-}
-.span-two-thirds {
-  width: 620px;
-}
-.offset-one-third {
-  margin-left: 340px;
-}
-.offset-two-thirds {
-  margin-left: 660px;
-}
-/* Typography.less
- * Headings, body text, lists, code, and more for a versatile and durable typography system
- * ---------------------------------------------------------------------------------------- */
-p {
-  font-size: 13px;
-  font-weight: normal;
-  line-height: 18px;
-  margin-bottom: 9px;
-}
-p small {
-  font-size: 11px;
-  color: #bfbfbf;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-  font-weight: bold;
-  color: #404040;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small {
-  color: #bfbfbf;
-}
-h1 {
-  margin-bottom: 18px;
-  font-size: 30px;
-  line-height: 36px;
-}
-h1 small {
-  font-size: 18px;
-}
-h2 {
-  font-size: 24px;
-  line-height: 36px;
-}
-h2 small {
-  font-size: 14px;
-}
-h3,
-h4,
-h5,
-h6 {
-  line-height: 36px;
-}
-h3 {
-  font-size: 18px;
-}
-h3 small {
-  font-size: 14px;
-}
-h4 {
-  font-size: 16px;
-}
-h4 small {
-  font-size: 12px;
-}
-h5 {
-  font-size: 14px;
-}
-h6 {
-  font-size: 13px;
-  color: #bfbfbf;
-  text-transform: uppercase;
-}
-ul, ol {
-  margin: 0 0 18px 25px;
-}
-ul ul,
-ul ol,
-ol ol,
-ol ul {
-  margin-bottom: 0;
-}
-ul {
-  list-style: disc;
-}
-ol {
-  list-style: decimal;
-}
-li {
-  line-height: 18px;
-  color: #808080;
-}
-ul.unstyled {
-  list-style: none;
-  margin-left: 0;
-}
-dl {
-  margin-bottom: 18px;
-}
-dl dt, dl dd {
-  line-height: 18px;
-}
-dl dt {
-  font-weight: bold;
-}
-dl dd {
-  margin-left: 9px;
-}
-hr {
-  margin: 20px 0 19px;
-  border: 0;
-  border-bottom: 1px solid #eee;
-}
-strong {
-  font-style: inherit;
-  font-weight: bold;
-}
-em {
-  font-style: italic;
-  font-weight: inherit;
-  line-height: inherit;
-}
-.muted {
-  color: #bfbfbf;
-}
-blockquote {
-  margin-bottom: 18px;
-  border-left: 5px solid #eee;
-  padding-left: 15px;
-}
-blockquote p {
-  font-size: 14px;
-  font-weight: 300;
-  line-height: 18px;
-  margin-bottom: 0;
-}
-blockquote small {
-  display: block;
-  font-size: 12px;
-  font-weight: 300;
-  line-height: 18px;
-  color: #bfbfbf;
-}
-blockquote small:before {
-  content: '\2014 \00A0';
-}
-address {
-  display: block;
-  line-height: 18px;
-  margin-bottom: 18px;
-}
-code, pre {
-  padding: 0 3px 2px;
-  font-family: Monaco, Andale Mono, Courier New, monospace;
-  font-size: 12px;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-code {
-  background-color: #fee9cc;
-  color: rgba(0, 0, 0, 0.75);
-  padding: 1px 3px;
-}
-pre {
-  background-color: #f5f5f5;
-  display: block;
-  padding: 8.5px;
-  margin: 0 0 18px;
-  line-height: 18px;
-  font-size: 12px;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  white-space: pre;
-  white-space: pre-wrap;
-  word-wrap: break-word;
-}
-/* Forms.less
- * Base styles for various input types, form layouts, and states
- * ------------------------------------------------------------- */
-form {
-  margin-bottom: 18px;
-}
-fieldset {
-  margin-bottom: 18px;
-  padding-top: 18px;
-}
-fieldset legend {
-  display: block;
-  padding-left: 150px;
-  font-size: 19.5px;
-  line-height: 1;
-  color: #404040;
-  *padding: 0 0 5px 145px;
-  /* IE6-7 */
-
-  *line-height: 1.5;
-  /* IE6-7 */
-
-}
-form .clearfix {
-  margin-bottom: 18px;
-  zoom: 1;
-}
-form .clearfix:before, form .clearfix:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-form .clearfix:after {
-  clear: both;
-}
-label,
-input,
-select,
-textarea {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 13px;
-  font-weight: normal;
-  line-height: normal;
-}
-label {
-  padding-top: 6px;
-  font-size: 13px;
-  line-height: 18px;
-  float: left;
-  width: 130px;
-  text-align: right;
-  color: #404040;
-}
-form .input {
-  margin-left: 150px;
-}
-input[type=checkbox], input[type=radio] {
-  cursor: pointer;
-}
-input,
-textarea,
-select,
-.uneditable-input {
-  display: inline-block;
-  width: 210px;
-  height: 18px;
-  padding: 4px;
-  font-size: 13px;
-  line-height: 18px;
-  color: #808080;
-  border: 1px solid #ccc;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-/* mini reset for non-html5 file types */
-input[type=checkbox], input[type=radio] {
-  width: auto;
-  height: auto;
-  padding: 0;
-  margin: 3px 0;
-  *margin-top: 0;
-  /* IE6-7 */
-
-  line-height: normal;
-  border: none;
-}
-input[type=file] {
-  background-color: #ffffff;
-  padding: initial;
-  border: initial;
-  line-height: initial;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-input[type=button], input[type=reset], input[type=submit] {
-  width: auto;
-  height: auto;
-}
-select, input[type=file] {
-  height: 27px;
-  line-height: 27px;
-  *margin-top: 4px;
-  /* For IE7, add top margin to align select with labels */
-
-}
-select[multiple] {
-  height: inherit;
-}
-textarea {
-  height: auto;
-}
-.uneditable-input {
-  background-color: #ffffff;
-  display: block;
-  border-color: #eee;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025);
-  cursor: not-allowed;
-}
-:-moz-placeholder {
-  color: #bfbfbf;
-}
-::-webkit-input-placeholder {
-  color: #bfbfbf;
-}
-input, textarea {
-  -webkit-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -ms-transition: border linear 0.2s, box-shadow linear 0.2s;
-  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
-  transition: border linear 0.2s, box-shadow linear 0.2s;
-  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
-}
-input:focus, textarea:focus {
-  outline: 0;
-  border-color: rgba(82, 168, 236, 0.8);
-  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
-  -moz-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
-  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1), 0 0 8px rgba(82, 168, 236, 0.6);
-}
-input[type=file]:focus, input[type=checkbox]:focus, select:focus {
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  outline: 1px dotted #666;
-}
-form div.clearfix.error {
-  background: #fae5e3;
-  padding: 10px 0;
-  margin: -10px 0 10px;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-form div.clearfix.error > label, form div.clearfix.error span.help-inline, form div.clearfix.error span.help-block {
-  color: #9d261d;
-}
-form div.clearfix.error input, form div.clearfix.error textarea {
-  border-color: #c87872;
-  -webkit-box-shadow: 0 0 3px rgba(171, 41, 32, 0.25);
-  -moz-box-shadow: 0 0 3px rgba(171, 41, 32, 0.25);
-  box-shadow: 0 0 3px rgba(171, 41, 32, 0.25);
-}
-form div.clearfix.error input:focus, form div.clearfix.error textarea:focus {
-  border-color: #b9554d;
-  -webkit-box-shadow: 0 0 6px rgba(171, 41, 32, 0.5);
-  -moz-box-shadow: 0 0 6px rgba(171, 41, 32, 0.5);
-  box-shadow: 0 0 6px rgba(171, 41, 32, 0.5);
-}
-form div.clearfix.error .input-prepend span.add-on, form div.clearfix.error .input-append span.add-on {
-  background: #f4c8c5;
-  border-color: #c87872;
-  color: #b9554d;
-}
-.input-mini,
-input.mini,
-textarea.mini,
-select.mini {
-  width: 60px;
-}
-.input-small,
-input.small,
-textarea.small,
-select.small {
-  width: 90px;
-}
-.input-medium,
-input.medium,
-textarea.medium,
-select.medium {
-  width: 150px;
-}
-.input-large,
-input.large,
-textarea.large,
-select.large {
-  width: 210px;
-}
-.input-xlarge,
-input.xlarge,
-textarea.xlarge,
-select.xlarge {
-  width: 270px;
-}
-.input-xxlarge,
-input.xxlarge,
-textarea.xxlarge,
-select.xxlarge {
-  width: 530px;
-}
-textarea.xxlarge {
-  overflow-y: auto;
-}
-input.span1, textarea.span1, select.span1 {
-  display: inline-block;
-  float: none;
-  width: 30px;
-  margin-left: 0;
-}
-input.span2, textarea.span2, select.span2 {
-  display: inline-block;
-  float: none;
-  width: 90px;
-  margin-left: 0;
-}
-input.span3, textarea.span3, select.span3 {
-  display: inline-block;
-  float: none;
-  width: 150px;
-  margin-left: 0;
-}
-input.span4, textarea.span4, select.span4 {
-  display: inline-block;
-  float: none;
-  width: 210px;
-  margin-left: 0;
-}
-input.span5, textarea.span5, select.span5 {
-  display: inline-block;
-  float: none;
-  width: 270px;
-  margin-left: 0;
-}
-input.span6, textarea.span6, select.span6 {
-  display: inline-block;
-  float: none;
-  width: 330px;
-  margin-left: 0;
-}
-input.span7, textarea.span7, select.span7 {
-  display: inline-block;
-  float: none;
-  width: 390px;
-  margin-left: 0;
-}
-input.span8, textarea.span8, select.span8 {
-  display: inline-block;
-  float: none;
-  width: 450px;
-  margin-left: 0;
-}
-input.span9, textarea.span9, select.span9 {
-  display: inline-block;
-  float: none;
-  width: 510px;
-  margin-left: 0;
-}
-input.span10, textarea.span10, select.span10 {
-  display: inline-block;
-  float: none;
-  width: 570px;
-  margin-left: 0;
-}
-input.span11, textarea.span11, select.span11 {
-  display: inline-block;
-  float: none;
-  width: 630px;
-  margin-left: 0;
-}
-input.span12, textarea.span12, select.span12 {
-  display: inline-block;
-  float: none;
-  width: 690px;
-  margin-left: 0;
-}
-input.span13, textarea.span13, select.span13 {
-  display: inline-block;
-  float: none;
-  width: 750px;
-  margin-left: 0;
-}
-input.span14, textarea.span14, select.span14 {
-  display: inline-block;
-  float: none;
-  width: 810px;
-  margin-left: 0;
-}
-input.span15, textarea.span15, select.span15 {
-  display: inline-block;
-  float: none;
-  width: 870px;
-  margin-left: 0;
-}
-input.span16, textarea.span16, select.span16 {
-  display: inline-block;
-  float: none;
-  width: 930px;
-  margin-left: 0;
-}
-input[disabled],
-select[disabled],
-textarea[disabled],
-input[readonly],
-select[readonly],
-textarea[readonly] {
-  background-color: #f5f5f5;
-  border-color: #ddd;
-  cursor: not-allowed;
-}
-.actions {
-  background: #f5f5f5;
-  margin-top: 18px;
-  margin-bottom: 18px;
-  padding: 17px 20px 18px 150px;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-}
-.actions .secondary-action {
-  float: right;
-}
-.actions .secondary-action a {
-  line-height: 30px;
-}
-.actions .secondary-action a:hover {
-  text-decoration: underline;
-}
-.help-inline, .help-block {
-  font-size: 11px;
-  line-height: 18px;
-  color: #bfbfbf;
-}
-.help-inline {
-  padding-left: 5px;
-  *position: relative;
-  /* IE6-7 */
-
-  *top: -5px;
-  /* IE6-7 */
-
-}
-.help-block {
-  display: block;
-  max-width: 600px;
-}
-.inline-inputs {
-  color: #808080;
-}
-.inline-inputs span, .inline-inputs input {
-  display: inline-block;
-}
-.inline-inputs input.mini {
-  width: 60px;
-}
-.inline-inputs input.small {
-  width: 90px;
-}
-.inline-inputs span {
-  padding: 0 2px 0 1px;
-}
-.input-prepend input, .input-append input {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-}
-.input-prepend .add-on, .input-append .add-on {
-  position: relative;
-  background: #f5f5f5;
-  border: 1px solid #ccc;
-  z-index: 2;
-  float: left;
-  display: block;
-  width: auto;
-  min-width: 16px;
-  height: 18px;
-  padding: 4px 4px 4px 5px;
-  margin-right: -1px;
-  font-weight: normal;
-  line-height: 18px;
-  color: #bfbfbf;
-  text-align: center;
-  text-shadow: 0 1px 0 #ffffff;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-prepend .active, .input-append .active {
-  background: #a9dba9;
-  border-color: #46a546;
-}
-.input-prepend .add-on {
-  *margin-top: 1px;
-  /* IE6-7 */
-
-}
-.input-append input {
-  float: left;
-  -webkit-border-radius: 3px 0 0 3px;
-  -moz-border-radius: 3px 0 0 3px;
-  border-radius: 3px 0 0 3px;
-}
-.input-append .add-on {
-  -webkit-border-radius: 0 3px 3px 0;
-  -moz-border-radius: 0 3px 3px 0;
-  border-radius: 0 3px 3px 0;
-  margin-right: 0;
-  margin-left: -1px;
-}
-.inputs-list {
-  margin: 0 0 5px;
-  width: 100%;
-}
-.inputs-list li {
-  display: block;
-  padding: 0;
-  width: 100%;
-}
-.inputs-list label {
-  display: block;
-  float: none;
-  width: auto;
-  padding: 0;
-  line-height: 18px;
-  text-align: left;
-  white-space: normal;
-}
-.inputs-list label strong {
-  color: #808080;
-}
-.inputs-list label small {
-  font-size: 11px;
-  font-weight: normal;
-}
-.inputs-list .inputs-list {
-  margin-left: 25px;
-  margin-bottom: 10px;
-  padding-top: 0;
-}
-.inputs-list:first-child {
-  padding-top: 6px;
-}
-.inputs-list li + li {
-  padding-top: 2px;
-}
-.inputs-list input[type=radio], .inputs-list input[type=checkbox] {
-  margin-bottom: 0;
-}
-.form-stacked {
-  padding-left: 20px;
-}
-.form-stacked fieldset {
-  padding-top: 9px;
-}
-.form-stacked legend {
-  padding-left: 0;
-}
-.form-stacked label {
-  display: block;
-  float: none;
-  width: auto;
-  font-weight: bold;
-  text-align: left;
-  line-height: 20px;
-  padding-top: 0;
-}
-.form-stacked .clearfix {
-  margin-bottom: 9px;
-}
-.form-stacked .clearfix div.input {
-  margin-left: 0;
-}
-.form-stacked .inputs-list {
-  margin-bottom: 0;
-}
-.form-stacked .inputs-list li {
-  padding-top: 0;
-}
-.form-stacked .inputs-list li label {
-  font-weight: normal;
-  padding-top: 0;
-}
-.form-stacked div.clearfix.error {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  padding-left: 10px;
-  margin-top: 0;
-  margin-left: -10px;
-}
-.form-stacked .actions {
-  margin-left: -20px;
-  padding-left: 20px;
-}
-/*
- * Tables.less
- * Tables for, you guessed it, tabular data
- * ---------------------------------------- */
-table {
-  width: 100%;
-  margin-bottom: 18px;
-  padding: 0;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  /* IE7, collapse table to remove spacing */
-
-  font-size: 13px;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-table th, table td {
-  padding: 10px 10px 9px;
-  line-height: 18px;
-  text-align: left;
-}
-table th {
-  padding-top: 9px;
-  font-weight: bold;
-  vertical-align: middle;
-  border-bottom: 1px solid #ddd;
-}
-table td {
-  vertical-align: top;
-}
-table th + th, table td + td {
-  border-left: 1px solid #ddd;
-}
-table tr + tr td {
-  border-top: 1px solid #ddd;
-}
-table tbody tr:first-child td:first-child {
-  -webkit-border-radius: 4px 0 0 0;
-  -moz-border-radius: 4px 0 0 0;
-  border-radius: 4px 0 0 0;
-}
-table tbody tr:first-child td:last-child {
-  -webkit-border-radius: 0 4px 0 0;
-  -moz-border-radius: 0 4px 0 0;
-  border-radius: 0 4px 0 0;
-}
-table tbody tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-}
-table tbody tr:last-child td:last-child {
-  -webkit-border-radius: 0 0 4px 0;
-  -moz-border-radius: 0 0 4px 0;
-  border-radius: 0 0 4px 0;
-}
-.zebra-striped tbody tr:nth-child(odd) td {
-  background-color: #f9f9f9;
-}
-.zebra-striped tbody tr:hover td {
-  background-color: #f5f5f5;
-}
-table .header {
-  cursor: pointer;
-}
-table .header:after {
-  content: "";
-  float: right;
-  margin-top: 7px;
-  border-width: 0 4px 4px;
-  border-style: solid;
-  border-color: #000 transparent;
-  visibility: hidden;
-}
-table .headerSortUp, table .headerSortDown {
-  background-color: rgba(141, 192, 219, 0.25);
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-}
-table .header:hover:after {
-  visibility: visible;
-}
-table .headerSortDown:after, table .headerSortDown:hover:after {
-  visibility: visible;
-  filter: alpha(opacity=60);
-  -khtml-opacity: 0.6;
-  -moz-opacity: 0.6;
-  opacity: 0.6;
-}
-table .headerSortUp:after {
-  border-bottom: none;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000;
-  visibility: visible;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  filter: alpha(opacity=60);
-  -khtml-opacity: 0.6;
-  -moz-opacity: 0.6;
-  opacity: 0.6;
-}
-table .blue {
-  color: #049cdb;
-  border-bottom-color: #049cdb;
-}
-table .headerSortUp.blue, table .headerSortDown.blue {
-  background-color: #ade6fe;
-}
-table .green {
-  color: #46a546;
-  border-bottom-color: #46a546;
-}
-table .headerSortUp.green, table .headerSortDown.green {
-  background-color: #cdeacd;
-}
-table .red {
-  color: #9d261d;
-  border-bottom-color: #9d261d;
-}
-table .headerSortUp.red, table .headerSortDown.red {
-  background-color: #f4c8c5;
-}
-table .yellow {
-  color: #ffc40d;
-  border-bottom-color: #ffc40d;
-}
-table .headerSortUp.yellow, table .headerSortDown.yellow {
-  background-color: #fff6d9;
-}
-table .orange {
-  color: #f89406;
-  border-bottom-color: #f89406;
-}
-table .headerSortUp.orange, table .headerSortDown.orange {
-  background-color: #fee9cc;
-}
-table .purple {
-  color: #7a43b6;
-  border-bottom-color: #7a43b6;
-}
-table .headerSortUp.purple, table .headerSortDown.purple {
-  background-color: #e2d5f0;
-}
-/* Patterns.less
- * Repeatable UI elements outside the base styles provided from the scaffolding
- * ---------------------------------------------------------------------------- */
-.topbar {
-  height: 40px;
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  z-index: 10000;
-  overflow: visible;
-}
-.topbar a {
-  color: #bfbfbf;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-}
-.topbar h3 a:hover, .topbar .brand a:hover, .topbar ul .active > a {
-  background-color: #333;
-  background-color: rgba(255, 255, 255, 0.05);
-  color: #ffffff;
-  text-decoration: none;
-}
-.topbar h3 {
-  position: relative;
-}
-.topbar h3 a, .topbar .brand {
-  float: left;
-  display: block;
-  padding: 8px 20px 12px;
-  margin-left: -20px;
-  color: #ffffff;
-  font-size: 20px;
-  font-weight: 200;
-  line-height: 1;
-}
-.topbar p {
-  margin: 0;
-  line-height: 40px;
-}
-.topbar p a:hover {
-  background-color: transparent;
-  color: #ffffff;
-}
-.topbar form {
-  float: left;
-  margin: 5px 0 0 0;
-  position: relative;
-  filter: alpha(opacity=100);
-  -khtml-opacity: 1;
-  -moz-opacity: 1;
-  opacity: 1;
-}
-.topbar form.pull-right {
-  float: right;
-}
-.topbar input {
-  background-color: #444;
-  background-color: rgba(255, 255, 255, 0.3);
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: normal;
-  font-weight: 13px;
-  line-height: 1;
-  padding: 4px 9px;
-  color: #ffffff;
-  color: rgba(255, 255, 255, 0.75);
-  border: 1px solid #111;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25);
-  -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25);
-  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0px rgba(255, 255, 255, 0.25);
-  -webkit-transition: none;
-  -moz-transition: none;
-  -ms-transition: none;
-  -o-transition: none;
-  transition: none;
-}
-.topbar input:-moz-placeholder {
-  color: #e6e6e6;
-}
-.topbar input::-webkit-input-placeholder {
-  color: #e6e6e6;
-}
-.topbar input:hover {
-  background-color: #bfbfbf;
-  background-color: rgba(255, 255, 255, 0.5);
-  color: #ffffff;
-}
-.topbar input:focus, .topbar input.focused {
-  outline: 0;
-  background-color: #ffffff;
-  color: #404040;
-  text-shadow: 0 1px 0 #ffffff;
-  border: 0;
-  padding: 5px 10px;
-  -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-  box-shadow: 0 0 3px rgba(0, 0, 0, 0.15);
-}
-.topbar-inner, .topbar .fill {
-  background-color: #222;
-  background-color: #222222;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));
-  background-image: -moz-linear-gradient(top, #333333, #222222);
-  background-image: -ms-linear-gradient(top, #333333, #222222);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));
-  background-image: -webkit-linear-gradient(top, #333333, #222222);
-  background-image: -o-linear-gradient(top, #333333, #222222);
-  background-image: linear-gradient(top, #333333, #222222);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
-  -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25), inset 0 -1px 0 rgba(0, 0, 0, 0.1);
-}
-.topbar div > ul, .nav {
-  display: block;
-  float: left;
-  margin: 0 10px 0 0;
-  position: relative;
-  left: 0;
-}
-.topbar div > ul > li, .nav > li {
-  display: block;
-  float: left;
-}
-.topbar div > ul a, .nav a {
-  display: block;
-  float: none;
-  padding: 10px 10px 11px;
-  line-height: 19px;
-  text-decoration: none;
-}
-.topbar div > ul a:hover, .nav a:hover {
-  color: #ffffff;
-  text-decoration: none;
-}
-.topbar div > ul .active > a, .nav .active > a {
-  background-color: #222;
-  background-color: rgba(0, 0, 0, 0.5);
-}
-.topbar div > ul.secondary-nav, .nav.secondary-nav {
-  float: right;
-  margin-left: 10px;
-  margin-right: 0;
-}
-.topbar div > ul.secondary-nav .menu-dropdown,
-.nav.secondary-nav .menu-dropdown,
-.topbar div > ul.secondary-nav .dropdown-menu,
-.nav.secondary-nav .dropdown-menu {
-  right: 0;
-  border: 0;
-}
-.topbar div > ul a.menu:hover,
-.nav a.menu:hover,
-.topbar div > ul li.open .menu,
-.nav li.open .menu,
-.topbar div > ul .dropdown-toggle:hover,
-.nav .dropdown-toggle:hover,
-.topbar div > ul .dropdown.open .dropdown-toggle,
-.nav .dropdown.open .dropdown-toggle {
-  background: #444;
-  background: rgba(255, 255, 255, 0.05);
-}
-.topbar div > ul .menu-dropdown,
-.nav .menu-dropdown,
-.topbar div > ul .dropdown-menu,
-.nav .dropdown-menu {
-  background-color: #333;
-}
-.topbar div > ul .menu-dropdown a.menu,
-.nav .menu-dropdown a.menu,
-.topbar div > ul .dropdown-menu a.menu,
-.nav .dropdown-menu a.menu,
-.topbar div > ul .menu-dropdown .dropdown-toggle,
-.nav .menu-dropdown .dropdown-toggle,
-.topbar div > ul .dropdown-menu .dropdown-toggle,
-.nav .dropdown-menu .dropdown-toggle {
-  color: #ffffff;
-}
-.topbar div > ul .menu-dropdown a.menu.open,
-.nav .menu-dropdown a.menu.open,
-.topbar div > ul .dropdown-menu a.menu.open,
-.nav .dropdown-menu a.menu.open,
-.topbar div > ul .menu-dropdown .dropdown-toggle.open,
-.nav .menu-dropdown .dropdown-toggle.open,
-.topbar div > ul .dropdown-menu .dropdown-toggle.open,
-.nav .dropdown-menu .dropdown-toggle.open {
-  background: #444;
-  background: rgba(255, 255, 255, 0.05);
-}
-.topbar div > ul .menu-dropdown li a,
-.nav .menu-dropdown li a,
-.topbar div > ul .dropdown-menu li a,
-.nav .dropdown-menu li a {
-  color: #999;
-  text-shadow: 0 1px 0 rgba(0, 0, 0, 0.5);
-}
-.topbar div > ul .menu-dropdown li a:hover,
-.nav .menu-dropdown li a:hover,
-.topbar div > ul .dropdown-menu li a:hover,
-.nav .dropdown-menu li a:hover {
-  background-color: #191919;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919));
-  background-image: -moz-linear-gradient(top, #292929, #191919);
-  background-image: -ms-linear-gradient(top, #292929, #191919);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919));
-  background-image: -webkit-linear-gradient(top, #292929, #191919);
-  background-image: -o-linear-gradient(top, #292929, #191919);
-  background-image: linear-gradient(top, #292929, #191919);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0);
-  color: #ffffff;
-}
-.topbar div > ul .menu-dropdown .active a,
-.nav .menu-dropdown .active a,
-.topbar div > ul .dropdown-menu .active a,
-.nav .dropdown-menu .active a {
-  color: #ffffff;
-}
-.topbar div > ul .menu-dropdown .divider,
-.nav .menu-dropdown .divider,
-.topbar div > ul .dropdown-menu .divider,
-.nav .dropdown-menu .divider {
-  background-color: #222;
-  border-color: #444;
-}
-.topbar ul .menu-dropdown li a, .topbar ul .dropdown-menu li a {
-  padding: 4px 15px;
-}
-li.menu, .dropdown {
-  position: relative;
-}
-a.menu:after, .dropdown-toggle:after {
-  width: 0;
-  height: 0;
-  display: inline-block;
-  content: "&darr;";
-  text-indent: -99999px;
-  vertical-align: top;
-  margin-top: 8px;
-  margin-left: 4px;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #ffffff;
-  filter: alpha(opacity=50);
-  -khtml-opacity: 0.5;
-  -moz-opacity: 0.5;
-  opacity: 0.5;
-}
-.menu-dropdown, .dropdown-menu {
-  background-color: #ffffff;
-  float: left;
-  display: none;
-  position: absolute;
-  top: 40px;
-  z-index: 900;
-  min-width: 160px;
-  max-width: 220px;
-  _width: 160px;
-  margin-left: 0;
-  margin-right: 0;
-  padding: 6px 0;
-  zoom: 1;
-  border-color: #999;
-  border-color: rgba(0, 0, 0, 0.2);
-  border-style: solid;
-  border-width: 0 1px 1px;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
-  -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
-  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.menu-dropdown li, .dropdown-menu li {
-  float: none;
-  display: block;
-  background-color: none;
-}
-.menu-dropdown .divider, .dropdown-menu .divider {
-  height: 1px;
-  margin: 5px 0;
-  overflow: hidden;
-  background-color: #eee;
-  border-bottom: 1px solid #ffffff;
-}
-.topbar .dropdown-menu a, .dropdown-menu a {
-  display: block;
-  padding: 4px 15px;
-  clear: both;
-  font-weight: normal;
-  line-height: 18px;
-  color: #808080;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.topbar .dropdown-menu a:hover, .dropdown-menu a:hover {
-  background-color: #dddddd;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));
-  background-image: -moz-linear-gradient(top, #eeeeee, #dddddd);
-  background-image: -ms-linear-gradient(top, #eeeeee, #dddddd);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd));
-  background-image: -webkit-linear-gradient(top, #eeeeee, #dddddd);
-  background-image: -o-linear-gradient(top, #eeeeee, #dddddd);
-  background-image: linear-gradient(top, #eeeeee, #dddddd);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);
-  color: #404040;
-  text-decoration: none;
-  -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025);
-  -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025);
-  box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.025), inset 0 -1px rgba(0, 0, 0, 0.025);
-}
-.open .menu,
-.dropdown.open .menu,
-.open .dropdown-toggle,
-.dropdown.open .dropdown-toggle {
-  color: #ffffff;
-  background: #ccc;
-  background: rgba(0, 0, 0, 0.3);
-}
-.open .menu-dropdown,
-.dropdown.open .menu-dropdown,
-.open .dropdown-menu,
-.dropdown.open .dropdown-menu {
-  display: block;
-}
-.tabs, .pills {
-  margin: 0 0 20px;
-  padding: 0;
-  list-style: none;
-  zoom: 1;
-}
-.tabs:before,
-.pills:before,
-.tabs:after,
-.pills:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-.tabs:after, .pills:after {
-  clear: both;
-}
-.tabs > li, .pills > li {
-  float: left;
-}
-.tabs > li > a, .pills > li > a {
-  display: block;
-}
-.tabs {
-  float: left;
-  width: 100%;
-  border-bottom: 1px solid #ddd;
-}
-.tabs > li {
-  position: relative;
-  top: 1px;
-}
-.tabs > li > a {
-  padding: 0 15px;
-  margin-right: 2px;
-  line-height: 36px;
-  border: 1px solid transparent;
-  -webkit-border-radius: 4px 4px 0 0;
-  -moz-border-radius: 4px 4px 0 0;
-  border-radius: 4px 4px 0 0;
-}
-.tabs > li > a:hover {
-  text-decoration: none;
-  background-color: #eee;
-  border-color: #eee #eee #ddd;
-}
-.tabs > li.active > a {
-  color: #808080;
-  background-color: #ffffff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-.tabs .menu-dropdown, .tabs .dropdown-menu {
-  top: 35px;
-  border-width: 1px;
-  -webkit-border-radius: 0 6px 6px 6px;
-  -moz-border-radius: 0 6px 6px 6px;
-  border-radius: 0 6px 6px 6px;
-}
-.tabs a.menu:after, .tabs .dropdown-toggle:after {
-  border-top-color: #999;
-  margin-top: 15px;
-  margin-left: 5px;
-}
-.tabs li.open.menu .menu, .tabs .open.dropdown .dropdown-toggle {
-  border-color: #999;
-}
-.tabs li.open a.menu:after, .tabs .dropdown.open .dropdown-toggle:after {
-  border-top-color: #555;
-}
-.tab-content {
-  clear: both;
-}
-.pills a {
-  margin: 5px 3px 5px 0;
-  padding: 0 15px;
-  text-shadow: 0 1px 1px #ffffff;
-  line-height: 30px;
-  -webkit-border-radius: 15px;
-  -moz-border-radius: 15px;
-  border-radius: 15px;
-}
-.pills a:hover {
-  background: #00438a;
-  color: #ffffff;
-  text-decoration: none;
-  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
-}
-.pills .active a {
-  background: #0069d6;
-  color: #ffffff;
-  text-shadow: 0 1px 1px rgba(0, 0, 0, 0.25);
-}
-.tab-content > *, .pill-content > * {
-  display: none;
-}
-.tab-content > .active, .pill-content > .active {
-  display: block;
-}
-.breadcrumb {
-  margin: 0 0 18px;
-  padding: 7px 14px;
-  background-color: #f5f5f5;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));
-  background-image: -moz-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -ms-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));
-  background-image: -webkit-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: -o-linear-gradient(top, #ffffff, #f5f5f5);
-  background-image: linear-gradient(top, #ffffff, #f5f5f5);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);
-  border: 1px solid #ddd;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-}
-.breadcrumb li {
-  display: inline;
-  text-shadow: 0 1px 0 #ffffff;
-}
-.breadcrumb .divider {
-  padding: 0 5px;
-  color: #bfbfbf;
-}
-.breadcrumb .active a {
-  color: #404040;
-}
-.hero-unit {
-  background-color: #f5f5f5;
-  margin-bottom: 30px;
-  padding: 60px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.hero-unit h1 {
-  margin-bottom: 0;
-  font-size: 60px;
-  line-height: 1;
-  letter-spacing: -1px;
-}
-.hero-unit p {
-  font-size: 18px;
-  font-weight: 200;
-  line-height: 27px;
-}
-footer {
-  margin-top: 17px;
-  padding-top: 17px;
-  border-top: 1px solid #eee;
-}
-.page-header {
-  margin-bottom: 17px;
-  border-bottom: 1px solid #ddd;
-  -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.page-header h1 {
-  margin-bottom: 8px;
-}
-.btn.danger,
-.alert-message.danger,
-.btn.danger:hover,
-.alert-message.danger:hover,
-.btn.error,
-.alert-message.error,
-.btn.error:hover,
-.alert-message.error:hover,
-.btn.success,
-.alert-message.success,
-.btn.success:hover,
-.alert-message.success:hover,
-.btn.info,
-.alert-message.info,
-.btn.info:hover,
-.alert-message.info:hover {
-  color: #ffffff;
-}
-.btn.danger,
-.alert-message.danger,
-.btn.error,
-.alert-message.error {
-  background-color: #c43c35;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));
-  background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
-  background-image: linear-gradient(top, #ee5f5b, #c43c35);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  border-color: #c43c35 #c43c35 #882a25;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-}
-.btn.success, .alert-message.success {
-  background-color: #57a957;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));
-  background-image: -moz-linear-gradient(top, #62c462, #57a957);
-  background-image: -ms-linear-gradient(top, #62c462, #57a957);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));
-  background-image: -webkit-linear-gradient(top, #62c462, #57a957);
-  background-image: -o-linear-gradient(top, #62c462, #57a957);
-  background-image: linear-gradient(top, #62c462, #57a957);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  border-color: #57a957 #57a957 #3d773d;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-}
-.btn.info, .alert-message.info {
-  background-color: #339bb9;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));
-  background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -ms-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
-  background-image: linear-gradient(top, #5bc0de, #339bb9);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  border-color: #339bb9 #339bb9 #22697d;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-}
-.btn {
-  cursor: pointer;
-  display: inline-block;
-  background-color: #e6e6e6;
-  background-repeat: no-repeat;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);
-  padding: 5px 14px 6px;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  color: #333;
-  font-size: 13px;
-  line-height: normal;
-  border: 1px solid #ccc;
-  border-bottom-color: #bbb;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -webkit-transition: 0.1s linear all;
-  -moz-transition: 0.1s linear all;
-  -ms-transition: 0.1s linear all;
-  -o-transition: 0.1s linear all;
-  transition: 0.1s linear all;
-}
-.btn:hover {
-  background-position: 0 -15px;
-  color: #333;
-  text-decoration: none;
-}
-.btn:focus {
-  outline: 1px dotted #666;
-}
-.btn.primary {
-  color: #ffffff;
-  background-color: #0064cd;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
-  background-image: -moz-linear-gradient(top, #049cdb, #0064cd);
-  background-image: -ms-linear-gradient(top, #049cdb, #0064cd);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
-  background-image: -webkit-linear-gradient(top, #049cdb, #0064cd);
-  background-image: -o-linear-gradient(top, #049cdb, #0064cd);
-  background-image: linear-gradient(top, #049cdb, #0064cd);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  border-color: #0064cd #0064cd #003f81;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-}
-.btn:active {
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.btn.disabled {
-  cursor: default;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  filter: alpha(opacity=65);
-  -khtml-opacity: 0.65;
-  -moz-opacity: 0.65;
-  opacity: 0.65;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn[disabled] {
-  cursor: default;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  filter: alpha(opacity=65);
-  -khtml-opacity: 0.65;
-  -moz-opacity: 0.65;
-  opacity: 0.65;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.btn.large {
-  font-size: 15px;
-  line-height: normal;
-  padding: 9px 14px 9px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-}
-.btn.small {
-  padding: 7px 9px 7px;
-  font-size: 11px;
-}
-:root .alert-message, :root .btn {
-  border-radius: 0 \0;
-}
-button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-.close {
-  float: right;
-  color: #000000;
-  font-size: 20px;
-  font-weight: bold;
-  line-height: 13.5px;
-  text-shadow: 0 1px 0 #ffffff;
-  filter: alpha(opacity=20);
-  -khtml-opacity: 0.2;
-  -moz-opacity: 0.2;
-  opacity: 0.2;
-}
-.close:hover {
-  color: #000000;
-  text-decoration: none;
-  filter: alpha(opacity=40);
-  -khtml-opacity: 0.4;
-  -moz-opacity: 0.4;
-  opacity: 0.4;
-}
-.alert-message {
-  position: relative;
-  padding: 7px 15px;
-  margin-bottom: 18px;
-  color: #404040;
-  background-color: #eedc94;
-  background-repeat: repeat-x;
-  background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));
-  background-image: -moz-linear-gradient(top, #fceec1, #eedc94);
-  background-image: -ms-linear-gradient(top, #fceec1, #eedc94);
-  background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));
-  background-image: -webkit-linear-gradient(top, #fceec1, #eedc94);
-  background-image: -o-linear-gradient(top, #fceec1, #eedc94);
-  background-image: linear-gradient(top, #fceec1, #eedc94);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  border-color: #eedc94 #eedc94 #e4c652;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-  border-width: 1px;
-  border-style: solid;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
-  -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
-  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
-}
-.alert-message .close {
-  *margin-top: 3px;
-  /* IE7 spacing */
-
-}
-.alert-message h5 {
-  line-height: 18px;
-}
-.alert-message p {
-  margin-bottom: 0;
-}
-.alert-message div {
-  margin-top: 5px;
-  margin-bottom: 2px;
-  line-height: 28px;
-}
-.alert-message .btn {
-  -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
-  -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
-  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);
-}
-.alert-message.block-message {
-  background-image: none;
-  background-color: #fdf5d9;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  padding: 14px;
-  border-color: #fceec1;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-}
-.alert-message.block-message ul, .alert-message.block-message p {
-  margin-right: 30px;
-}
-.alert-message.block-message ul {
-  margin-bottom: 0;
-}
-.alert-message.block-message li {
-  color: #404040;
-}
-.alert-message.block-message .alert-actions {
-  margin-top: 5px;
-}
-.alert-message.block-message.error, .alert-message.block-message.success, .alert-message.block-message.info {
-  color: #404040;
-  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
-}
-.alert-message.block-message.error {
-  background-color: #fddfde;
-  border-color: #fbc7c6;
-}
-.alert-message.block-message.success {
-  background-color: #d1eed1;
-  border-color: #bfe7bf;
-}
-.alert-message.block-message.info {
-  background-color: #ddf4fb;
-  border-color: #c6edf9;
-}
-.pagination {
-  height: 36px;
-  margin: 18px 0;
-}
-.pagination ul {
-  float: left;
-  margin: 0;
-  border: 1px solid #ddd;
-  border: 1px solid rgba(0, 0, 0, 0.15);
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-.pagination li {
-  display: inline;
-}
-.pagination a {
-  float: left;
-  padding: 0 14px;
-  line-height: 34px;
-  border-right: 1px solid;
-  border-right-color: #ddd;
-  border-right-color: rgba(0, 0, 0, 0.15);
-  *border-right-color: #ddd;
-  /* IE6-7 */
-
-  text-decoration: none;
-}
-.pagination a:hover, .pagination .active a {
-  background-color: #c7eefe;
-}
-.pagination .disabled a, .pagination .disabled a:hover {
-  background-color: transparent;
-  color: #bfbfbf;
-}
-.pagination .next a {
-  border: 0;
-}
-.well {
-  background-color: #f5f5f5;
-  margin-bottom: 20px;
-  padding: 19px;
-  min-height: 20px;
-  border: 1px solid #eee;
-  border: 1px solid rgba(0, 0, 0, 0.05);
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
-}
-.well blockquote {
-  border-color: #ddd;
-  border-color: rgba(0, 0, 0, 0.15);
-}
-.modal-backdrop {
-  background-color: #000000;
-  position: fixed;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  z-index: 10000;
-}
-.modal-backdrop.fade {
-  opacity: 0;
-}
-.modal-backdrop, .modal-backdrop.fade.in {
-  filter: alpha(opacity=80);
-  -khtml-opacity: 0.8;
-  -moz-opacity: 0.8;
-  opacity: 0.8;
-}
-.modal {
-  position: fixed;
-  top: 50%;
-  left: 50%;
-  z-index: 11000;
-  width: 560px;
-  margin: -250px 0 0 -250px;
-  background-color: #ffffff;
-  border: 1px solid #999;
-  border: 1px solid rgba(0, 0, 0, 0.3);
-  *border: 1px solid #999;
-  /* IE6-7 */
-
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.modal .close {
-  margin-top: 7px;
-}
-.modal.fade {
-  -webkit-transition: opacity .3s linear, top .3s ease-out;
-  -moz-transition: opacity .3s linear, top .3s ease-out;
-  -ms-transition: opacity .3s linear, top .3s ease-out;
-  -o-transition: opacity .3s linear, top .3s ease-out;
-  transition: opacity .3s linear, top .3s ease-out;
-  top: -25%;
-}
-.modal.fade.in {
-  top: 50%;
-}
-.modal-header {
-  border-bottom: 1px solid #eee;
-  padding: 5px 15px;
-}
-.modal-body {
-  padding: 15px;
-}
-.modal-footer {
-  background-color: #f5f5f5;
-  padding: 14px 15px 15px;
-  border-top: 1px solid #ddd;
-  -webkit-border-radius: 0 0 6px 6px;
-  -moz-border-radius: 0 0 6px 6px;
-  border-radius: 0 0 6px 6px;
-  -webkit-box-shadow: inset 0 1px 0 #ffffff;
-  -moz-box-shadow: inset 0 1px 0 #ffffff;
-  box-shadow: inset 0 1px 0 #ffffff;
-  zoom: 1;
-  margin-bottom: 0;
-}
-.modal-footer:before, .modal-footer:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-.modal-footer:after {
-  clear: both;
-}
-.modal-footer .btn {
-  float: right;
-  margin-left: 5px;
-}
-.twipsy {
-  display: block;
-  position: absolute;
-  visibility: visible;
-  padding: 5px;
-  font-size: 11px;
-  z-index: 1000;
-  filter: alpha(opacity=80);
-  -khtml-opacity: 0.8;
-  -moz-opacity: 0.8;
-  opacity: 0.8;
-}
-.twipsy.fade.in {
-  filter: alpha(opacity=80);
-  -khtml-opacity: 0.8;
-  -moz-opacity: 0.8;
-  opacity: 0.8;
-}
-.twipsy.above .twipsy-arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.twipsy.left .twipsy-arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.twipsy.below .twipsy-arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.twipsy.right .twipsy-arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.twipsy-inner {
-  padding: 3px 8px;
-  background-color: #000000;
-  color: white;
-  text-align: center;
-  max-width: 200px;
-  text-decoration: none;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.twipsy-arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover {
-  position: absolute;
-  top: 0;
-  left: 0;
-  z-index: 1000;
-  padding: 5px;
-  display: none;
-}
-.popover.above .arrow {
-  bottom: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-top: 5px solid #000000;
-}
-.popover.right .arrow {
-  top: 50%;
-  left: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-right: 5px solid #000000;
-}
-.popover.below .arrow {
-  top: 0;
-  left: 50%;
-  margin-left: -5px;
-  border-left: 5px solid transparent;
-  border-right: 5px solid transparent;
-  border-bottom: 5px solid #000000;
-}
-.popover.left .arrow {
-  top: 50%;
-  right: 0;
-  margin-top: -5px;
-  border-top: 5px solid transparent;
-  border-bottom: 5px solid transparent;
-  border-left: 5px solid #000000;
-}
-.popover .arrow {
-  position: absolute;
-  width: 0;
-  height: 0;
-}
-.popover .inner {
-  background-color: #000000;
-  background-color: rgba(0, 0, 0, 0.8);
-  padding: 3px;
-  overflow: hidden;
-  width: 280px;
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-  box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3);
-}
-.popover .title {
-  background-color: #f5f5f5;
-  padding: 9px 15px;
-  line-height: 1;
-  -webkit-border-radius: 3px 3px 0 0;
-  -moz-border-radius: 3px 3px 0 0;
-  border-radius: 3px 3px 0 0;
-  border-bottom: 1px solid #eee;
-}
-.popover .content {
-  background-color: #ffffff;
-  padding: 14px;
-  -webkit-border-radius: 0 0 3px 3px;
-  -moz-border-radius: 0 0 3px 3px;
-  border-radius: 0 0 3px 3px;
-  -webkit-background-clip: padding-box;
-  -moz-background-clip: padding-box;
-  background-clip: padding-box;
-}
-.popover .content p, .popover .content ul, .popover .content ol {
-  margin-bottom: 0;
-}
-.fade {
-  -webkit-transition: opacity 0.15s linear;
-  -moz-transition: opacity 0.15s linear;
-  -ms-transition: opacity 0.15s linear;
-  -o-transition: opacity 0.15s linear;
-  transition: opacity 0.15s linear;
-  opacity: 0;
-}
-.fade.in {
-  opacity: 1;
-}
-.label {
-  padding: 1px 3px 2px;
-  background-color: #bfbfbf;
-  font-size: 9.75px;
-  font-weight: bold;
-  color: #ffffff;
-  text-transform: uppercase;
-  -webkit-border-radius: 3px;
-  -moz-border-radius: 3px;
-  border-radius: 3px;
-}
-.label.important {
-  background-color: #c43c35;
-}
-.label.warning {
-  background-color: #f89406;
-}
-.label.success {
-  background-color: #46a546;
-}
-.label.notice {
-  background-color: #62cffc;
-}
-.media-grid {
-  margin-left: -20px;
-  margin-bottom: 0;
-  zoom: 1;
-}
-.media-grid:before, .media-grid:after {
-  display: table;
-  content: "";
-  zoom: 1;
-  *display: inline;
-}
-.media-grid:after {
-  clear: both;
-}
-.media-grid li {
-  display: inline;
-}
-.media-grid a {
-  float: left;
-  padding: 4px;
-  margin: 0 0 20px 20px;
-  border: 1px solid #ddd;
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.075);
-}
-.media-grid a img {
-  display: block;
-}
-.media-grid a:hover {
-  border-color: #0069d6;
-  -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-  box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25);
-}
diff --git a/snf-astakos-app/astakos/im/static/im/css/browser-fixes.css b/snf-astakos-app/astakos/im/static/im/css/browser-fixes.css
new file mode 100644 (file)
index 0000000..806deba
--- /dev/null
@@ -0,0 +1,27 @@
+body                                                                                        { -webkit-text-size-adjust:100%; }\r
+\r
+/* Mozilla */\r
+@-moz-document url-prefix() {\r
+       button::-moz-focus-inner,\r
+       input[type="image"]::-moz-focus-inner,\r
+       input[type="submit"]::-moz-focus-inner,\r
+       input[type="reset"]::-moz-focus-inner,\r
+       input[type="button"]::-moz-focus-inner          { border:0; }\r
+       textarea                                                                        { resize:none; }\r
+}\r
+\r
+/* Webkit */\r
+@media screen and (-webkit-min-device-pixel-ratio:0) {\r
+       button,\r
+       input[type="submit"],\r
+       input[type="reset"],\r
+       input[type="button"]                                            { -webkit-appearance:button; }\r
+       input[type="text"]:focus,\r
+       input[type="password"]:focus,\r
+       textarea:focus                                                          { outline:0 none; }\r
+       textarea                                                                        { resize:none; }\r
+       input[type="checkbox"],\r
+       input[type="radio"]                                                     { vertical-align:-2px; }\r
+       input[type="search"]                                                            { -webkit-appearance:textfield; }\r
+       input[type="search"]::-webkit-search-cancel-button      { -webkit-appearance:none; }\r
+}\r
diff --git a/snf-astakos-app/astakos/im/static/im/css/colorbox.css b/snf-astakos-app/astakos/im/static/im/css/colorbox.css
new file mode 100644 (file)
index 0000000..eb6f6f2
--- /dev/null
@@ -0,0 +1,127 @@
+\r
+#colorbox, #cboxOverlay, #cboxWrapper {\r
+    left: 0;\r
+    overflow: hidden;\r
+    position: absolute;\r
+    top: 0;\r
+    z-index: 9999;\r
+}\r
+#cboxOverlay {\r
+    height: 100%;\r
+    position: fixed;\r
+    width: 100%;\r
+}\r
+#cboxMiddleLeft, #cboxBottomLeft {\r
+    clear: left;\r
+}\r
+#cboxContent {\r
+    position: relative;\r
+}\r
+#cboxLoadedContent {\r
+    overflow: auto;\r
+}\r
+#cboxTitle {\r
+    margin: 0;\r
+}\r
+#cboxLoadingOverlay, #cboxLoadingGraphic {\r
+    height: 100%;\r
+    left: 0;\r
+    position: absolute;\r
+    top: 0;\r
+    width: 100%;\r
+}\r
+#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow {\r
+    cursor: pointer;\r
+}\r
+.cboxPhoto {\r
+    border: 0 none;\r
+    display: block;\r
+    float: left;\r
+    margin: auto;\r
+}\r
+.cboxIframe {\r
+    border: 0 none;\r
+    display: block;\r
+    height: 100%;\r
+    width: 100%;\r
+}\r
+#cboxOverlay {\r
+    background: none repeat scroll 0 0 #000000;\r
+}\r
+#cboxContent {\r
+    margin-top: 20px;\r
+}\r
+.cboxIframe {\r
+    background: none repeat scroll 0 0 #FFFFFF;\r
+}\r
+#cboxError {\r
+    border: 1px solid #CCCCCC;\r
+    padding: 50px;\r
+}\r
+#cboxLoadedContent {\r
+    background: none repeat scroll 0 0 #FFFFFF;\r
+    border: 5px solid #000000;\r
+}\r
+#cboxTitle {\r
+    color: #CCCCCC;\r
+    left: 0;\r
+    position: absolute;\r
+    top: -20px;\r
+}\r
+#cboxCurrent {\r
+    color: #CCCCCC;\r
+    position: absolute;\r
+    right: 0;\r
+    top: -20px;\r
+}\r
+#cboxSlideshow {\r
+    color: #FFFFFF;\r
+    position: absolute;\r
+    right: 90px;\r
+    top: -20px;\r
+}\r
+#cboxPrevious {\r
+    background: url("../images/colorbox/controls.png") no-repeat scroll left top transparent;\r
+    height: 65px;\r
+    left: 5px;\r
+    margin-top: -32px;\r
+    position: absolute;\r
+    text-indent: -9999px;\r
+    top: 50%;\r
+    width: 28px;\r
+}\r
+#cboxPrevious:hover {\r
+    background-position: left bottom;\r
+}\r
+#cboxNext {\r
+    background: url("../images/colorbox/controls.png") no-repeat scroll right top transparent;\r
+    height: 65px;\r
+    margin-top: -32px;\r
+    position: absolute;\r
+    right: 5px;\r
+    text-indent: -9999px;\r
+    top: 50%;\r
+    width: 28px;\r
+}\r
+#cboxNext:hover {\r
+    background-position: right bottom;\r
+}\r
+#cboxLoadingOverlay {\r
+    background: none repeat scroll 0 0 #000000;\r
+}\r
+#cboxLoadingGraphic {\r
+    background: url("../images/colorbox/loading.gif") no-repeat scroll center center transparent;\r
+}\r
+#cboxClose {\r
+    background: url("../images/colorbox/controls.png") no-repeat scroll center top transparent;\r
+    display: block;\r
+    height: 19px;\r
+    position: absolute;\r
+    right: 5px;\r
+    text-indent: -9999px;\r
+    top: 5px;\r
+    width: 38px;\r
+}\r
+#cboxClose:hover {\r
+    background-position: center bottom;\r
+}
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/css/dropkick.css b/snf-astakos-app/astakos/im/static/im/css/dropkick.css
new file mode 100644 (file)
index 0000000..fabb1e1
--- /dev/null
@@ -0,0 +1,167 @@
+/**
+ * Default DropKick theme
+ *
+ * Feel free to edit the default theme
+ * or even add your own.
+ *
+ * See the readme for themeing help
+ *
+ */
+
+/***** Begin Theme, feel free to edit in here! ******/
+
+/* One container to bind them... */
+.dk_container {
+   font-family: 'Antic', sans-serif;
+  
+  font-weight: normal;
+  line-height: 42px;
+  letter-spacing: 1px;
+  border: 1px solid #808080;
+  height:42px;
+  display: inline-block;
+  margin-bottom: -1px;
+  padding-left:21px;
+  
+  z-index: 2;
+  width:308px;
+}
+  .dk_container:focus {
+    outline: 0;
+  }
+  .dk_container a {
+    cursor: pointer;
+    text-decoration: none;
+    color:#808080;
+        
+  }
+
+/* Opens the dropdown and holds the menu label */
+.dk_toggle {
+  /**
+   * Help: Arrow image not appearing
+   * Try updating this property to your correct dk_arrows.png path
+   */
+   background:url(../images/arrow_02.jpg) no-repeat 276px center;
+  
+}
+  .dk_toggle:hover {
+    
+  }
+  /* Applied when the dropdown is focused */
+  .dk_focus .dk_toggle {
+    
+  }
+  .dk_focus .dk_toggle {
+    
+  }
+
+/* Applied whenever the dropdown is open */
+.dk_open {
+  
+  /**
+   * Help: Dropdown menu is covered by something
+   * Try setting this value higher
+   */
+  z-index: 10;
+}
+  .dk_open .dk_toggle {
+    
+    
+  }
+
+/* The outer container of the options */
+.dk_options {
+  
+}
+  .dk_options a {
+    background-color: #fff;
+    border-bottom: 1px solid #999;
+    padding: 8px 20px;
+  }
+  .dk_options li:last-child a {
+    border-bottom: none;
+  }
+  .dk_options a:hover,
+  .dk_option_current a {
+    
+  }
+
+/* Inner container for options, this is what makes the scrollbar possible. */
+.dk_options_inner  {
+  padding:0;
+  margin:0;  
+  border: 1px solid #808080;
+  border-top:0 none;
+}
+.dk_options_inner li   { list-style:none outside;}
+
+/* Set a max-height on the options inner */
+.dk_options_inner,
+.dk_touch .dk_options {
+  max-height: 250px;
+}
+
+/******  End Theme ******/
+
+/***** Critical to the continued enjoyment of working dropdowns ******/
+
+.dk_container {
+  display: none;
+  position: relative;
+}
+  .dk_container a {
+    outline: 0;
+  }
+
+.dk_toggle {
+  display: -moz-inline-stack;
+  display: inline-block;
+  *display: inline;
+  position: relative;
+  zoom: 1;
+}
+
+.dk_open {
+  position: relative;
+}
+  .dk_open .dk_options {
+    display: block;
+  }
+  .dk_open .dk_label {
+    color: inherit;
+  }
+
+.dk_options {
+  display: none;
+  margin-top: -1px;
+  position: absolute;
+  right: 0;
+  width: 100%;
+}
+  .dk_options a,
+  .dk_options a:link,
+  .dk_options a:visited {
+    display: block;
+  }
+  .dk_options_inner {
+    overflow: auto;
+    position: relative;
+  }
+
+.dk_touch .dk_options {
+  overflow: hidden;
+}
+
+.dk_touch .dk_options_inner {
+  max-height: none;
+  overflow: visible;
+}
+
+.dk_fouc select {
+  position: relative;
+  top: -99999em;
+  visibility: hidden;
+}
+
+/***** End Critical to the continued enjoyment of working dropdowns ******/
diff --git a/snf-astakos-app/astakos/im/static/im/css/formating.css b/snf-astakos-app/astakos/im/static/im/css/formating.css
new file mode 100644 (file)
index 0000000..8b80148
--- /dev/null
@@ -0,0 +1,105 @@
+/* http://meyerweb.com/eric/tools/css/reset/ \r
+   v2.0 | 20110126\r
+   License: none (public domain)\r
+*/\r
+html, body, div, span, applet, object, iframe,\r
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,\r
+a, abbr, acronym, address, big, cite, code,\r
+del, dfn, em, img, ins, kbd, q, s, samp,\r
+small, strike, strong, sub, sup, tt, var,\r
+b, u, i, center,\r
+dl, dt, dd, ol, ul, li,\r
+fieldset, form, label, legend,\r
+table, caption, tbody, tfoot, thead, tr, th, td,\r
+article, aside, canvas, details, embed, \r
+figure, figcaption, footer, header, hgroup, \r
+menu, nav, output, ruby, section, summary,\r
+time, mark, audio, video                                               { border:0; margin:0; padding:0; font-size:100%; font:inherit; vertical-align:baseline; }\r
+\r
+/* HTML5 display-role reset for older browsers */\r
+article, aside, details, figcaption, figure, \r
+footer, header, hgroup, menu, nav, section             { display:block; }\r
+\r
+/* defaults -----------------------------------*/\r
+:link, a, a:visited                                                            { color:#F89A1C; text-decoration:none; }\r
+a:hover                                                                                        { outline:0; text-decoration:underline; }\r
+a:focus                                                                                        { text-decoration:none; }\r
+a:active                                                                               { outline:0; text-decoration:none; }\r
+a img, :link img, :visited img                                 { border:none; }\r
+a span                                                                                 { cursor:pointer; }\r
+abbr[title], dfn[title]                                                        { border-bottom:1px dotted; cursor:help; }\r
+address                                                                                        { font-style:italic; margin:0 0 1.5em 0; }\r
+body                                                                                   { background:white; color:#222; font-family: 'Didact Gothic', Verdana, sans-serif;  font-style:normal; font-size:81.3%; line-height:1.5; text-align:left; letter-spacing:1px;}\r
+code, kbd, pre, samp                                                   { font-family:monospace, sans-serif; }\r
+del                                                                                            { text-decoration:line-through; }\r
+dl                                                                                             { margin:1em 0; }\r
+dl dd                                                                                  { margin-left:1em; }\r
+dt                                                                                             { font-weight:bold; }\r
+em, i                                                                                  { font-style:italic; font-weight:inherit; }\r
+h1, h2, h3, h4, h5, h6                                                 { font-weight:bold; line-height:1.4; margin-bottom:0; }\r
+/* Typographic scale based on 12px body size */\r
+h1                                                                                             { font-size:4em; }\r
+h2                                                                                             { font-size:1.154em; }\r
+h3                                                                                             { font-size:1em; }\r
+h4                                                                                             { font-size:1.5em; }\r
+h5                                                                                             { font-size:1.333em; }\r
+h6                                                                                             { font-size:1.167em; }\r
+hr                                                                                             { border:0; border-top:1px solid; display:block; height:1px; margin:1em 0; padding:0; }\r
+img                                                                                            { border:0; vertical-align:middle; }\r
+ins                                                                                            { text-decoration:none; }\r
+p                                                                                              { margin-bottom:1em; }\r
+pre                                                                                            { overflow:auto;  }\r
+strong, b                                                                              { font-weight:bold; font-style:inherit; }\r
+sub, sup                                                                               { font-size:75%; line-height:0; position:relative; vertical-align:baseline; }\r
+sub                                                                                            { bottom:-0.25em; }\r
+sup                                                                                            { top:-0.5em; }\r
+\r
+button, input, select, textarea                                        { font-size:100%; margin:0; vertical-align:baseline; }\r
+button, input                                                                  { line-height:normal; }\r
+button[disabled], input[disabled]                              { cursor:default; }\r
+button,\r
+input[type="image"],\r
+input[type="submit"],\r
+input[type="reset"],\r
+input[type="button"]                                                   { cursor:pointer; overflow:visible; }\r
+input[type="checkbox"],\r
+input[type="radio"]                                                            { box-sizing:border-box; padding:0; }\r
+legend                                                                                 { border:0; white-space:normal; }\r
+optgroup                                                                               { font-style:normal; font-weight:bold; }\r
+textarea                                                                               { overflow:auto; vertical-align:top; }\r
+\r
+q                                                                                              { quotes:"‘" "’" "“" "”"; } /* http://html5doctor.com/blockquote-q-cite/ */\r
+q:before                                                                               { content:"‘"; content:open-quote; }\r
+q:after                                                                                        { content:"’"; content:close-quote; }\r
+q q:before                                                                             { content: "“"; content: open-quote; }\r
+q q:after                                                                              { content: "”"; content: close-quote; }\r
+blockquote                                                                             { quotes: "“" "”"; margin:1em 40px; }\r
+blockquote p:before                                                            { content: "“"; content: open-quote; }\r
+blockquote p:after                                                             { content: ""; content: no-close-quote; }\r
+blockquote p:last-of-type:after                                        { content: "”"; content: close-quote; }\r
+blockquote                                                                             { font-style:italic; margin:1em; }\r
+\r
+caption                                                                                        { font-weight:bold; text-align:left; margin-bottom:.2em; padding:0; }\r
+table                                                                                  { border-collapse:collapse; border-spacing:0; margin-bottom:1em; }\r
+tfoot                                                                                  { font-style:italic; }\r
+thead td, th                                                                   { font-weight:bold; vertical-align:top; }\r
+\r
+ol                                                                                             { list-style-type:decimal; margin:1em 0; padding-left:2em; }\r
+ol li                                                                                  { list-style:decimal outside; }\r
+ol ol li                                                                               { list-style-type:lower-alpha; }\r
+ol ol ol li                                                                            { list-style-type:lower-roman; }\r
+\r
+ul                                                                                             { list-style-type:disc; margin:1em 0; padding-left:2em; }\r
+ul li                                                                                  { list-style:disc outside; }\r
+ul ul li                                                                               { list-style-type:circle; }\r
+ul ul ul li                                                                            { list-style-type:square; }\r
+\r
+/* helpers ------------------------------------*/\r
+.clearfix:before,\r
+.clearfix:after                                                                        { content:" "; display:block; height:0; visibility:hidden; } /* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified/ */\r
+.clearfix:after                                                                        { clear:both; }\r
+.visuallyhidden                                                                        { position:absolute !important; clip:rect(0 0 0 0); }\r
+\r
+/* misc ---------------------------------------*/\r
+img[align="left"]                                                              { margin:0 1em 0.5em 0; }\r
+img[align="right"]                                                             { margin:0 0 0.5em 1em; }\r
diff --git a/snf-astakos-app/astakos/im/static/im/css/forms.css b/snf-astakos-app/astakos/im/static/im/css/forms.css
new file mode 100644 (file)
index 0000000..069b0b0
--- /dev/null
@@ -0,0 +1,178 @@
+/* generic form styles */\r
+input, textarea, .form-widget                          { background-color: #ffffff; color: #000;border-color: #000000; }\r
+#forms .input, #forms input                            { font-family: 'Didact Gothic', Verdana, sans-serif; font-size: 14px; font-weight: normal; line-height: 22px; letter-spacing: 1px;   border: 1px solid #808080; height: 21px; display: inline-block; margin-bottom: -1px; padding: 0.8em; padding-left: 1.5em; z-index: 2; }\r
+#forms .input:focus, \r
+#forms input:focus                                                     { position: relative; border: 1px solid #000; z-index: 100; }\r
+#forms .input:focus label,\r
+#forms input:focus label                                       { z-index: 300; }\r
+form.withlabels label                                          { width: 224px; display: block; float: left; padding-top: 1em; }\r
+form.withlabels input[type=text], \r
+form.withlabels input[type=password]           { width: 240px; }\r
+form.withlabels input[type=text].long, \r
+form.withlabels input[type=password].long, \r
+form.withlabels textarea.long                          { width: 224px; }\r
+.login-section a.button                                        { margin-bottom: 12px; }\r
+.login-section a.button:last-child                     { margin-bottom: none;}\r
+.login-section a.button.withicon                       { background-repeat: no-repeat; background-position: 15px 50%; padding-left: 40px; }\r
+.login-section.loggedin                                        { padding-bottom: 0 !important; background-image: none !important; }\r
+form.login                                                                     { margin-bottom: 22px; width:340px; }\r
+form h2 span                                                           { padding-bottom: 3px; }\r
+form .form-row                                                                 { min-height: 30px; position: relative;}\r
+form .form-row.submit                                          { margin: 22px 0 ;}\r
+form .form-row .extra-link                                     { color: #808080; text-decoration: none; border: none; margin-top:15px; line-height:98%; display:inline-block; padding-top:15px;   float: right; position:absolute; right:0; top:0; }\r
+form .form-row .extra-link:hover                       { border-bottom:1px solid #808080;}\r
+form .form-row label                                           { font-size: 1.077em; }\r
+form.innerlabels label                                                 { position: absolute; bottom: 11px; left: 1.5em; color: #808080 ; }\r
+form.innerlabels p                                                     { margin:0; position: relative;}\r
+form.innerlabels p.p15px                                       { font-size:1.154em;}\r
+form.innerlabels p.p15px a                                     { margin:0 5px;}\r
+form.innerlabels p.p15px a:hover                       { text-decoration:underline;}\r
+form.innerlabels a,\r
+form.innerlabels a:hover                                       { }\r
+form textarea,\r
+form input.text,\r
+form input[type="text"],\r
+form input[type="password"]                            { color:#808080; font-family: 'Didact Gothic', Verdana, sans-serif; font-weight: normal; line-height: 22px; letter-spacing: 1px;border: 1px solid #808080; height: 21px; display: inline-block; margin-bottom: -1px; padding: 0.8em; padding-left: 1.5em; z-index: 2; width:300px; }\r
+form select                                                                    { font-family: 'Didact Gothic', Verdana, sans-serif; font-weight: normal; line-height: 22px; letter-spacing: 1px;  border: 1px solid #808080; display:block;  margin-bottom: -1px; padding: 0.8em;  padding-left: 1.5em;  z-index: 2;  width:331px; }\r
+form textarea:focus,\r
+form input.text:focus,\r
+form input[type="text"]:focus,\r
+form input[type="password"]:focus                      {position: relative; border: 1px solid #000; z-index: 100;}\r
+form textarea:focus label,\r
+form input.text:focus label,\r
+form input[type="text"]:focus label,\r
+form input[type="password"]:focus label        { z-index: 300;}\r
+form input.submit, \r
+form input[type="submit"],\r
+a.submit                                                                       { font-family: 'Didact Gothic', Verdana, sans-serif; font-size: 14px; font-weight: normal; line-height: 22px; letter-spacing:1px;  background-color: #f89a1c;color: #ffffff; border: none; padding: 10px 22px;font-size: 1em; margin:15px 0 0 223px; height:43px; }\r
+form.innerlabels input.submit, \r
+form.innerlabels input[type="submit"]          {margin-left:0;}\r
+form input.submit:hover, \r
+form input[type="submit"]:hover,\r
+a.submit:hover                                                         { background-color:#3582AC;border-color:#3582ac; text-decoration:none;}\r
+form input.submit.back, \r
+form input[type="submit"].back                                 { text-decoration: none; bottom: 0; float: right; z-index: 500; }\r
+form input.submit.back.right, \r
+form input[type="submit"].back.right           {right: 0;}\r
+form input.submit.back, \r
+form input[type="submit"].back                                 { text-decoration: none; bottom: 0; float: right; z-index: 500; }\r
+form input.submit.back.right, \r
+form input[type="submit"].back.right           { right: 0; }\r
+form textarea                                                          { height: 150px; width: 350px; max-height:150px; max-width:350px;}\r
+form .with-errors input, \r
+form .with-errors textarea, \r
+form .with-errors select                                       { color: #9d261d;}\r
+form .with-errors label                                        { color: #e4776f; }\r
+.form-error                                                            { color:red;   font-size: 0.8em; padding: 5px 5px; }\r
+.form-errors.all .form-error                           { position: relative; border-radius: 0; margin-bottom: 1.3em; padding: 0.5em; }\r
+div.form-stacked                                                       { margin-bottom: 4em; }\r
+.checkbox-widget.checked                                       { background-color: #FF0000; background-image: url("../images/checkbox.png"); background-position: 50% 50%; }\r
+.content a.checkbox-widget                                     { border: 1px solid #808080; cursor: pointer; display: block; float: left; height: 25px; margin:5px 20px 0 0 ; width: 25px; }\r
+form.withlabels .checkbox-widget                       { margin-top:20px; }\r
+form.innerlabels .checkbox-widget +  label     { position:static; line-height:36px; color:#808080; }\r
+form.innerlabels .checkbox-widget +  label + a { border-bottom:1px solid #F89A1C; font-size: 1.1em; }\r
+form span.info                                                         { position:absolute;z-index:10; bottom:32px;  }\r
+form.innerlabels span.info                                     { left: 290px; }\r
+form.withlabels span.info                                      { left: 440px; }\r
+form span.info em                                                      { display:block; overflow:hidden;  position:absolute; left:0; text-indent:-100px; top:0; height:21px; width:21px; background:url(../images/symbols.png) no-repeat -4px -31px;cursor:pointer; }\r
+form span.info:hover em                                        { background-position:-4px -3px; }\r
+form span.info span                                            { position:absolute; left:29px; top:-2px; width:120px; padding-left:30px; background:url(../images/black-line.jpg ) no-repeat left 12px; min-height:50px; display:none; font-size:0.846em;}\r
+form span.info:hover span                                      { display:block; }\r
+form .with-errors span.info                                    { display:none;}\r
+form p                                                                         { margin-bottom:0;position:relative;}\r
+form input[readonly=true]                                      { /*background-color: #ddd;*/ color: #5e5e5e; }\r
+#recaptcha_area                                                        { margin-top:20px; } \r
+form.innerlabels .with-checkbox .checkbox-widget       {  }\r
+form.innerlabels .with-checkbox .checkbox-label                { left:2.5em; top:17px; }\r
+form.withlabels .with-checkbox .checkbox-widget                { position:absolute; left:224px; top:0; }\r
+\r
+form .extra-img                                                                { display:block; width:21px; height:21px; overflow:hidden;  position:absolute; }\r
+form.withlabels .extra-img                                     { left:460px; bottom:12px; }\r
+form.innerlabels .extra-img                                    { bottom:10px; left:290px }\r
+form .with-checkbox .extra-img                         { top:20px; } \r
+form .with-errors .extra-img                           { background:url(../images/symbols.png) no-repeat -58px -3px;  z-index:101;}\r
+form .with-errors textarea+.extra-img,\r
+form .with-errors noscript+.extra-img          { background:transparent;}\r
+form .with-errors input[type="text"],\r
+form .with-errors input[type="password"]       { border:1px solid red;}\r
+form.innerlabels .with-errors .extra-img       { left:290px;}\r
+form input[readonly="True"]+ span.extra-img { background:url(../images/symbols.png) no-repeat -111px -3px; z-index:101;}\r
+.errorlist                                                                     { margin:0; padding:0;}\r
+.errorlist li                                                          { list-style:none outside;}\r
+\r
+form .with-hidden                                                      { display:none; }\r
+\r
+\r
+/* custom captcha */\r
+#okeanos_recaptcha                                                             { width:329px; border:1px solid #808080; margin:0 0 20px; position:relative; }\r
+#okeanos_recaptcha #recaptcha_image                            { padding:15px 0; }\r
+#okeanos_recaptcha label.recaptcha_only_if_image,\r
+#okeanos_recaptcha label.recaptcha_only_if_audio{ position:absolute; top:auto; bottom:11px; }\r
+#okeanos_recaptcha a.recaptcha_audio_cant_hear_link { margin-left:20px;  }\r
+#okeanos_recaptcha #recaptcha_response_field   { width:220px; float:left; margin-left:-1px;  }\r
+#okeanos_recaptcha .img                                                        { width:23px; float:left; height:23px; overflow:hidden; margin:8px; }\r
+#okeanos_recaptcha .img a                                              { display:block; width:100%; height:100%; background:url(../images/refresh_lg.png) no-repeat top left; text-indent:-100px }\r
+#okeanos_recaptcha .img-refresh        a                               { background:url(../images/refresh_lg.png); }\r
+#okeanos_recaptcha .img-refresh a:hover                        { background:url(../images/refresh_g.png); }\r
+#okeanos_recaptcha .img-audio  a                               { background:url(../images/sound_lg.png); }\r
+#okeanos_recaptcha .img-audio a:hover                  { background:url(../images/sound_g.png); }\r
+#okeanos_recaptcha .actions-wrap                               { border-top:1px solid #808080 }\r
+\r
+input.submit:focus,\r
+input[type="submit"]:focus                                             { box-shadow: 0 0 0 1px #FFFFFF inset; border:1px solid #F89A1C; outline:0 none; }                                              \r
+\r
+@media screen and (max-width : 591px)          { \r
+       form.withlabels .extra-img                                      { left:222px; }\r
+    form.withlabels span.info                                  { left:222px; }\r
+    form .extra-img                                            { left:222px; }\r
+    .form-error                                                        { margin-left:0!important; } \r
+    \r
+}\r
+\r
+\r
+@media screen and (max-width : 410px)          { \r
+       form.login                                                                      { width:auto; }\r
+       form textarea, \r
+       form input.text, \r
+       form input[type="text"], \r
+       form input[type="password"]                             { width:90%; }\r
+       form.withlabels select                                                                  { width:90%; }\r
+       form.innerlabels .extra-img,\r
+       form.innerlabels .with-errors .extra-img        { left:90%; }\r
+       form.innerlabels                                                        { width:auto; }\r
+       .container form.innerlabels.overflow-hidden     { overflow:visible;}\r
+       form span.info                                                          { display:none; }\r
+       #okeanos_recaptcha                                                      { width:inherit }\r
+       #okeanos_recaptcha #recaptcha_response_field    { width:55%; }\r
+       #okeanos_recaptcha #recaptcha_image     img             { width:80%; }\r
+}\r
+\r
+\r
+@media screen and ( width : 320px)             { \r
+       #okeanos_recaptcha                                                      { width:259px }\r
+    \r
+}\r
+\r
+p+ form                                                                                        { margin:2em 0; }\r
+.full-dotted legend                                                            { padding-top:40px; }\r
+form .form-row .radios label                                   { width:auto; float:none; display:inline-block; }\r
+form .form-row .radios input[type="radio"]             { margin-right:165px; vertical-align:middle; }\r
+form.withfieldset textarea                                             { width: 224px; }\r
+form.withfieldset select                                               { width: 256px; background:#fff;}\r
+form+p:first-child, form legend + p                            { margin-bottom:2em; }\r
+\r
+/* dropkick select extra styles */\r
+\r
+.form-row .dk_container                                                        { border-radius:0; margin-bottom:0; border: 1px solid #808080; height: 21px; letter-spacing: 1px; line-height: 22px; margin-bottom: -1px; width:254px; padding:0.8em 0; font-weight:normal; font-family: 'Didact Gothic', Verdana, sans-serif; font-size:1em; background:transparent; color:#808080;}\r
+.form-row .dk_toggle                                                   { border-radius:0;  padding:7px 0;  border:0 none; text-indent:1.5em; text-decoration:none;background-image:url(../images/arrow_02.jpg); background-position:90% 5px;}\r
+.form-row .dk_toggle:hover                                             { text-decoration:none; }\r
+.form-row .dk_open                                                             { background:transparent; box-shadow: none; }\r
+.form-row .dk_open .dk_toggle                                  { background-color:transparent; border:0 none; color:#000; box-shadow: none;}\r
+.form-row .dk_focus .dk_toggle                                 { background-color:transparent;  border:0 none; color:#000; box-shadow: none;}\r
+.1form-row .dk_options                                                 { display:block; }
+.form-row .dk_options                                                  { box-shadow:none; border-radius:0; z-index:3; margin:6px -1px 0; width:auto; left:0;}\r
+.form-row .dk_options a                                                        { font-weight:normal;color:#808080 }\r
+.form-row .dk_options_inner                                            { padding:0; margin:0; box-shadow:none; text-shadow:none;  border-radius:0; border:1px solid #8C8C8E ;}\r
+.form-row .dk-options_inner li                                 { list-style:none outside; }\r
+.form-row .dk_options a:hover, \r
+.form-row .dk_option_current a                                 { text-shadow:none; background-color: #E7E7E3;}
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/css/global.css b/snf-astakos-app/astakos/im/static/im/css/global.css
new file mode 100644 (file)
index 0000000..709ac42
--- /dev/null
@@ -0,0 +1,6 @@
+@import url(formating.css);\r
+@import url(modules.css);\r
+@import url(colorbox.css);\r
+@import url(browser-fixes.css);\r
+@import url(forms.css);\r
+@import url(dropkick.css);
\ No newline at end of file
index d9f8201..4c649fc 100644 (file)
@@ -1,13 +1,17 @@
-.navigation {
-    min-width: 660px;
-}
-
-.mainnav.inline {
-    position: absolute;
-    right: -10px;
-}
-
-.mainnav.inline.subnav {
-    position: relative;
-    top: 50px;
-}
+button, input, select, textarea                                     { vertical-align:middle; }\r
+input[type="button"], input[type="submit"]             { overflow:visible; }\r
+input[type="checkbox"],\r
+input[type="radio"]                                                            { width:13px; height:13px; }\r
+legend                                                                                 { margin-left:-7px; }\r
+textarea                                                                               { overflow:auto; }\r
+img                                                                                            { -ms-interpolation-mode:bicubic; }\r
+\r
+.clearfix                                                                              { zoom:1; }\r
+.container .navigation ul li                                   { display:inline;}\r
+.lt .box-more ul.col                                                   { display:inline;}\r
+\r
+form input.text, \r
+form input[type="text"],\r
+form input[type="password"]                                            { margin-bottom:-3px;}\r
+#okeanos_recaptcha #recaptcha_response_field   { margin-bottom:-1px; }\r
+.container ul.options li a                                             { display:inline }\r
diff --git a/snf-astakos-app/astakos/im/static/im/css/max480.css b/snf-astakos-app/astakos/im/static/im/css/max480.css
new file mode 100644 (file)
index 0000000..a861847
--- /dev/null
@@ -0,0 +1,7 @@
+.container .navigation ul li                                   { display:block; }
+.two-cols-blog .rt                                                             { width:auto; padding-right:0; margin-left:0; float:none;}
+.resources .categories ul li                                   { display:block; float:none;}
+.container .navigation ul+ul                                   { margin-top:20px}
+
+/* forms */
+form .form-row .extra-link                                             {   float:none; position:static; margin-left:15px;}
diff --git a/snf-astakos-app/astakos/im/static/im/css/max768.css b/snf-astakos-app/astakos/im/static/im/css/max768.css
new file mode 100644 (file)
index 0000000..b5eb60d
--- /dev/null
@@ -0,0 +1,16 @@
+.two-cols  .rt                                                                         { float:none; width:auto; margin-bottom:10px;}
+.two-cols  .lt                                                                 { float:none; width:auto; }
+.container .navigation                                                         { height:auto; margin-bottom:30px; } 
+.bg-wrap                                                                               { background-position:-9999px -9999px; }
+.buttons-list.fixpos                                                   { position:static;  }
+.buttons-list .button                                                  { margin-left:0; }
+.container .lt-div                                                             { float:none; width:auto; }
+.container ul.options                                                  { margin-bottom:30px; }
+.documentation .wrap                                                   { width:auto; }
+.documentation img                                                             { max-width:100%; }
+/* forms */
+form input.submit, form input[type="submit"]   { margin:0; }
+form .form-row .extra-link                                             { padding-top:0; }
+.faq .two-cols .rt                                                             { width:auto; }
+.faq .two-cols .lt                                                             { width:auto; }
+dl.alt-style                                                                   { width:auto; }
diff --git a/snf-astakos-app/astakos/im/static/im/css/max960.css b/snf-astakos-app/astakos/im/static/im/css/max960.css
new file mode 100644 (file)
index 0000000..86cce23
--- /dev/null
@@ -0,0 +1,9 @@
+.container                                             { width:100%; }
+.wrapper                                               { width:83%; padding:36px 8% 36px 8%;}
+.footer .wrapper                                               { padding-left:8%; padding-right:8%; }
+.two-cols  .rt                                                         { width:45% }
+.two-cols .rt img,
+.two-cols .lt img                                              { max-width:100%; }
+.two-cols  .lt                                                 { width:45%; }
+.two-cols-blog .rt                                             { width:25%; padding-right:0; margin-left:30px;}
+.top-msg                                                               { margin-left:-9%; margin-right:-9%; padding-left:20%; padding-right:20%; }
diff --git a/snf-astakos-app/astakos/im/static/im/css/modules.css b/snf-astakos-app/astakos/im/static/im/css/modules.css
new file mode 100644 (file)
index 0000000..ad953d6
--- /dev/null
@@ -0,0 +1,289 @@
+body                                                                                   { overflow-y: scroll;}\r
+\r
+.wrapper                                        { margin:0 auto; position:relative; width:820px; padding:36px 70px; }\r
+.container .wrapper,\r
+.footer .wrapper                                { border: 1px solid #808080; border-top:0 none;}\r
+.footer .wrapper                                                               { padding:20px 70px 25px; }\r
+.centered                                       { text-align:center;}\r
+img.left                                                               { margin:0 1em 1em 0; float:left;}\r
+img.right                                                              { margin:0 0 1em 1em; float:right;}\r
+\r
\r
+/* footer */\r
+.footer                                         { font-size:0.923em;color:#B3B3B3; }\r
+.footer a                                       { color:#B3B3B3; text-decoration:none; transition:color 0.15s ease-in-out 0s; -moz-transition: color 0.15s ease-in-out 0s;  -webkit-transition: color 0.15s ease-in-out 0s;  -o-transition: color 0.15s ease-in-out 0s; } \r
+.footer:hover a                                 { color:#808080;}\r
+.footer a:hover                                 { color:#000;}\r
+.footer ul                                      { float:left; margin:0 10px 0 0; width:125px;  padding:0;}\r
+.footer ul li                                   { padding:0; margin:0; list-style:none outside;}\r
+.footer ul li:first-child                       { margin-bottom:1em;   }\r
+.footer .clearfix                               { padding-bottom:20px;}\r
+.footer .clearfix ul:first-child                { margin-left:0;}\r
+\r
+\r
+/*top message*/\r
+.top-msg                                           { margin:-36px -70px 36px; background:blue; padding:100px; color:#fff; display:none; position:relative; font-size:1.538em; text-align:center;}\r
+.top-msg p                                                                             { text-align:center; }\r
+.top-msg p.title                                   { font-size:1.3em;  }\r
+.top-msg p.title span                          { border-bottom:2px dotted #fff; padding:0 0 10px 0;}\r
+.top-msg.active                                { display:block;}\r
+.top-msg +.mainlogo                             { margin-top:-73px;}\r
+.top-msg .close                                 { position:absolute; bottom:20px; right:20px; font-size:1.3em; font-weight:bold; border:0 none; color:#fff; text-decoration:none;}\r
+.top-msg .close:hover                           { color:#000;}\r
+.top-msg.success                               { background-color:#77C596; color: #fff}\r
+.top-msg.error                                 { background-color:#EF4F54; color: #fff}\r
+.top-msg.warning                                { background-color:#F6921E; color: #fff}\r
+.top-msg.info                                  { background-color:#C3C3B9; color: #fff}\r
+.top-msg.warning a                              { color: #3582AC}\r
+.top-msg.info a                                 { color: #222}\r
+\r
+/* container */\r
+.container .wrapper                             { padding-bottom:100px;}\r
+.mainlogo h1                                                                   { line-height:100%; font-size:1em; }\r
+.container .navigation                          { margin:20px 0 0; font-size:1.154em; height:95px;}\r
+.container .navigation ul                       { margin:5px 0; padding:0;}\r
+.container .navigation ul + ul                                 { font-size:0.933em; }\r
+.container .navigation ul li                    { list-style:none outside; padding:0; margin:0 1em 0 0; display:inline-block;}\r
+.container .navigation ul li a                  { color:#000; text-decoration:none; }\r
+.container .navigation ul li a:hover            { color:#F89A1C; }     \r
+.container .navigation ul li.active a           { color:#F89A1C; }                                     \r
+\r
+.dotted                                         { background:url(../images/double-dots.jpg) no-repeat bottom center; padding:0 0 30px; margin-bottom:30px;}\r
+.full-dotted                                                                   { background:url(../images/dots.jpg) repeat-x top; margin-top:20px; padding-top:20px; }\r
+.full-dotted:first-child                                               { background:none; padding-top:0; margin-top:0; }\r
+.two-cols .rt                                   { float:right; width:400px;}\r
+.two-cols .lt                                   { float:left; width:400px;}\r
+.two-cols-blog .rt                              { float:right; width:220px; margin-left:80px; padding-right:65px;}\r
+.two-cols-blog .lt                                 { overflow:hidden;}\r
+.container h2, .container h3                    { font-weight:normal; margin-bottom:1em; }\r
+.container h2 em                                                               { color: #3582AC; font-style:normal; }\r
+/*.content a                                                           { border-bottom: 1px solid #F89A1C; text-decoration:none; color:#000; }\r
+.content a:hover                                                   { border-bottom: 1px solid #F89A1C; text-decoration:none; color:#F89A1C; }*/\r
+\r
+\r
+.content a                                                             { text-decoration:none; }\r
+.content a:hover                                                   { text-decoration:underline; }\r
+\r
+.container ul.options                           { padding:0; margin:0; font-size:1.154em;}\r
+.container ul.options li                        { list-style:none outside; margin:0 0 1em 0;padding:0;}\r
+.container ul.options li h3                                            { font-size:1em; margin-bottom:0; }\r
+.container ul.options li a                                     { border:0 none;}\r
+.container ul.options li a:hover                               { text-decoration:underline;}\r
+.container .extra ul.options                                   { font-size:1em; margin:0 ; padding:15px; }\r
+.landing h2, .landing a:hover                   { color:#01A1AE;}\r
+.faq h2, .faq a:hover, .faq .current a          { color:#EF4F54; border:0 none;}\r
+.faq .current a                                                                        { text-decoration:underline }\r
+.question h2                                                                   { color:#EF4F54 }\r
+.content .backlink                                                             { margin:1em 0; }\r
+.faq h3                                                                                        { color:#4085a6; margin:0;}\r
+.faq ul                                         { padding:0; margin:0; }\r
+.faq ul li                                      { list-style:none outside; padding:0; margin:0;  }\r
+.faq ul li a                                    { color:#222222; border:0 none;} \r
+.faq .faq-category                                                             { margin: 0 0 1.5em;}\r
+.follow h3 a                                    { color:#4085A6;}\r
+.follow a                                                      { border:0 none;}\r
+.follow ul                                      { margin:0; padding:0;}\r
+.follow ul li                                   { list-style:none outside; padding:0; margin:0 0 20px 0; font-size:0.923em; color:#808080;}\r
+.follow ul li p.title                           { margin-bottom:0; color:#000;}\r
+.follow ul li p.title a                         { color:#000;}\r
+.follow ul li p a                               { color:#808080;}   \r
+.posts ul                                       { margin:0;padding:0; }\r
+.posts ul li                                    { padding:0; margin:0 0 50px; list-style:none outside; }\r
+.posts ul li img                                { max-width:100%; margin-bottom:1em;}\r
+.posts ul li p.info                             { padding-bottom:10px; margin:20px 0; font-size:0.769em; color:#808080; background:url(../images/dots.jpg) repeat-x bottom ;}\r
+.article p.info                                                                { margin-top:20px; padding-top:10px; font-size:0.769em; color:#808080; }\r
+.article h2, .posts h2                          { color:#ef4f53; }\r
+.posts h2 a, .posts h2 a:hover                  { border:0 none;color:#ef4f53;}\r
+.posts p.date, .article p.date                  { margin:0; font-size:1.077em; color:#3582AC; }\r
+p.info a                                        { color:#808080; border-bottom:0 none; }\r
+p.info a:hover                                  { color:#000; border-bottom:0 none;}\r
+.bg-wrap                                        { background-position:right top; background-repeat:no-repeat;}\r
+.bg-wrap .extra                                 { display:none;}\r
+.bg-wrap.open .extra                            { display:block;}\r
+.bg-wrap .extra .hide-extra                     { display:block; text-align:right; border:0 none; height:16px; overflow:hidden;}\r
+.bg-wrap .extra .hide-extra img                 { margin-top:0; vertical-align:top; display:inline; }\r
+.bg-wrap .extra .hide-extra:hover img           { margin-top:-32px;}\r
+.pithos h2,                       \r
+.pithos .extra .options li h3                   { color:#BC742B; }\r
+.cyclades h2,                 \r
+.cyclades .extra .options li h3                 { color:#00A1B0; }\r
+a.btn_01                                        { display:block; text-align:center; background:#F6921E; color:#000; padding:10px; text-decoration:none; border:0 none;}\r
+a.btn_01:hover                                  { background:#3582AC; color:#000; text-decoration:none;}\r
+a.btn_01 em                                     { font-style:normal; display:block; }\r
+a.btn_01 span                                   { color:#fff; }\r
+.lt .box-more                                   { text-align:center; padding:5px 10px; }\r
+.lt .box-more.border                            { border:1px solid #ccc;}\r
+.lt .box-more p                                 { cursor:pointer; background:url(../images/arrow_02.jpg) no-repeat right center; padding-right:20px; }\r
+a.btn_01, .box-more                             { width:80%; margin:0 auto 20px; }\r
+.lt .box-more ul.col                            { width:30%; margin:0; padding:0; vertical-align:top; text-align:left; display:inline-block;}\r
+.lt .box-more .clearfix                         { display:none; }\r
+.lt .box-more ul.col li                         { list-style:none outside; }\r
+.lt .box-more ul.col li a                       { color:#B3B3B3; text-decoration:none; border:0 none;}\r
+.lt .box-more ul.col li a:hover                 { color:#000;}\r
+.article img                                                       { margin-bottom:1em; max-width:100%;}\r
+a.videolink                                                        { border: 0 none; display:block; width:367px; height:207px; background:url(../images/video_image_hover.png) no-repeat; text-decoration:none;}\r
+a.videolink:hover                                              { background:url(../images/video_image.png)no-repeat; text-decoration:none; border:0 none;}\r
+.container .full                                                               { position:relative;}\r
+.container .bottom-bordered                     { border-bottom:1px dashed #000000;margin-bottom:20px }\r
+.container .lt-div                              { width:234px; float:left; }\r
+.container .overflow-hidden                     { overflow:hidden;}\r
+.documentation .wrap                                                   { width:500px; }\r
+\r
+\r
+/* resources*/\r
+.resources .categories .clear                  { color: #000000; position:relative; top:-1px; line-height:100%; display:inline-block;}\r
+.resources  a, .resources  a:hover              { border:0 none;}\r
+.resources .categories ul                          { margin:0;padding:0;}\r
+.resources .categories ul li                    { float: left; list-style:none outside;}\r
+.resources .categories .title                   { margin-bottom: 0.5em; }\r
+.resources .categories ul li a                  { color: #000000;   margin-right: 22px; text-decoration: none; }\r
+.resources .categories ul li a:hover, \r
+.resources .categories ul li a.selected         { color: #000000;}\r
+.resources .categories ul li.active a                  { text-decoration: underline }\r
+.resources .categories ul li.inactive           { opacity: 0.3; }\r
+.resources .categories ul li.active             { opacity: 1; }\r
+.resources .list                                { line-height: 1em; margin-top: 60px; position: relative; margin-right:-35px; }\r
+.resources .list .resource-wrapper.first .resource      { margin-left: 0; }\r
+.resources .list .resource-wrapper              { float: left; height: 250px; margin-bottom: 22px; margin-right: 35px; overflow: hidden; position: relative; width: 250px; }\r
+.resources .list .resource-wrapper.first        { margin-left: 0; }\r
+.resources .list .resource-wrapper.hidden       { display: none; }\r
+.resources .list .resource                      { border: 1px solid #000000; height: 188px; overflow: hidden; padding: 30px; }\r
+.resources .list .resource .date                { color: #808080; margin-bottom: 3px; }\r
+.resources .list .resource .description         { transition:color top 0.35s ease-in-out 0s; -moz-transition: top 0.35s ease-in-out 0s; -webkit-transition: top 0.35s ease-in-out 0s;          -o-transition: top 0.35s ease-in-out 0s; color: #FFFFFF; font-size: 1.1em; height: 150px; margin-left: -30px; padding: 30px; position: absolute; top: -270px; width: 190px; }\r
+.resources .list .resource .title               { line-height: 1.4em; }\r
+.resources .list .resource .category            { color: #808080; margin-top: 30px; }\r
+.resources .list .resource .category a          { color: #808080; }\r
+.resources .list .resource .download            { bottom: 0; cursor: pointer; font-size: 1.1em; margin-bottom: 3px; margin-left: -10px; position: absolute; width: 190px; }\r
+.resources .list .resource .download a          { color: #000000; display: block; padding: 5px 5px 5px 15px; text-decoration: none; }\r
+.resources .list .resource .download a:hover, \r
+.resources .list .resource .download a .hovered { color: #FF5D00;}\r
+.resources .list .resource .download a:hover .download-image, \r
+.resources .list .resource .download a .hovered .download-image { background-image: url(../images/resource_down_arrow-active.png); }\r
+.resources .list .resource .download a .download-image { background: url(../images/resource_down_arrow.png) no-repeat; display: block; float: left; height: 30px; margin-right: 10px; margin-top: -7px; width: 30px; }\r
+.resources .list .resource .download img        { margin-right: 10px; vertical-align: middle;}\r
+.resources .list .resource:hover .description, \r
+.resources .list .resource .hover .description { display: block; top: 0; }\r
+.resources .list .resource-cat-1.resource               { border-color: #4085A5  }\r
+.resources .list .resource-cat-1.resource .title        { color: #4085A5 }\r
+.resources .list .resource-cat-1.resource .description  { background-color: #4085A5 }\r
+.resources  .filter-item a                                                             { display:inline-block; line-height:100%; }\r
+.resources  .filter-item a:hover                                               { text-decoration:underline }\r
+.resources .list .resource-cat-2.resource               { border-color: #FF6F00  }\r
+.resources .list .resource-cat-2.resource .title        { color: #FF6F00  }\r
+.resources .list .resource-cat-2.resource .description  { background-color: #FF6F00  }\r
+.resources .list .resource-cat-2.resource .description p{ line-height:130%; }\r
+\r
+table                                                                                  { width:80%; color:#B3B3B3;}\r
+table th, table td                                                             { padding:5px 5px 5px 0;  }1234\r
+/*table td                                                                             { border-top: 1px solid #DDDDDD; }*/\r
+table th                                        { color:#222; font-weight:normal;}\r
+table td.consumed                                                              { color: #9D261D; }\r
+\r
+/*.zebra-striped tbody tr:nth-child(2n+1) td, \r
+.zebra-striped tbody tr:nth-child(2n+1) th             { background-color: #F9F9F9; }*/\r
+.zebra-striped tbody tr:hover td, \r
+.zebra-striped tbody tr:hover th                               { color:#000; }\r
+\r
+.buttons-list.fixpos                                                   { position:absolute; bottom:0; right:0; }\r
+.button.back.right                                                             { right: 0; }\r
+.buttons-list .button                                                  { margin-left: 10px; }\r
+.button.back                                                                   {  z-index: 500; }\r
+/* Styles for blue button-like back link\r
+a.button                                                                               { border:0 none;  color: #FFFFFF;  display: inline-block;  text-align: center; background-color: #3582AC; letter-spacing: 1px;  line-height: 22px; padding: 0.8em 22px; text-decoration: none;}\r
+a.button:hover                                                                 { background-color: #F89A1C; border:0 none; color:#fff;}*/\r
+\r
+/*pagination*/\r
+.pagination .next-prev                          { float:left; }\r
+.pagination .nums                               { text-align:right;}\r
+.pagination .nums span                          { color:#000;}\r
+                    \r
+.two-cols .lt .clients-wrapper p                               { padding:0; }\r
+\r
+\r
+/* colors for links */\r
+.container ul.options li a                                             { display:inline-block; line-height:100%; }\r
+.container ul.options li a:hover                               { text-decoration: none; }\r
+.container ul.options li a.red                                 { color:#F24E53 }\r
+.container ul.options li a.red:hover                   { border-bottom:1px solid #F24E53; }\r
+.container ul.options li a.grey                                        { color:#F89A1C }\r
+.container ul.options li a.grey:hover                  { border-bottom:1px solid #F89A1C; }\r
+.container ul.options li a.blue                                        { color:#3582AC }\r
+.container ul.options li a.blue:hover                  { border-bottom:1px solid #3582AC; }\r
+\r
+/* homepage clouds animation */\r
+#animation                                      { width:94%; height:120px; padding:0 3%; background:url(../images/okeanos_landing.png) no-repeat; max-width:375px; }\r
+#animation div                                  { margin:0 2%; float:left; width:29%; height:100%; position:relative; }                    \r
+#animation div a                                { position:absolute; left:0; top:0; border:0 none; }\r
+#animation div a img                                                   { width:100%; }\r
+#animation p                                   { position:absolute; bottom:0; left:0; width:100%; text-align:center; }\r
+#animation p img                                { display:inline-block; width:65%; }\r
+\r
+/* Weird bug in pages that contain captcha. An extra iframe appears in chrome :S*/\r
+.container +iframe                                                             { display:none; }\r
+\r
+/* Style for im/projects */\r
+table.alt-style                                                                { color:#000; width:100%; }\r
+table.alt-style caption                                                        { font-weight:normal;  font-size:1.154em; }\r
+table.alt-style tr th                                                  { font-weight:normal; color:#3582AC }\r
+table.alt-style tr td                                                  { color:#222; }\r
+table.alt-style tr td:first-child,\r
+table.alt-style tr th:first-child                              { padding-left:5px; }\r
+.content a.submit                                                              { margin:0; display:inline-block; margin:10px 0 ;  height:auto;}\r
+table.alt-style tr:nth-child(2n) td                            { background:#F2F2F2 }\r
+dl.alt-style                                                                   { width:500px; }\r
+dl.alt-style dt                                                                        { width:50%; float:left; color:#3582AC; font-weight:normal;}\r
+dl.alt-style dt:nth-child(2n)                                  { background:black; }\r
+.projects                                                                              { padding-bottom:30px; }\r
+.projects h2 span                                                              { color:#3582AC;}\r
+.projects h2 em                                                                        { float:right; }\r
+.projects h3                                                                   { font-size:1.154em; }\r
+.projects .submit-rt                                                   { margin:0; text-align:right; }\r
+.projects +.buttons-list.fixpos                                        { left:0; right:auto; }\r
+\r
+/* new faq-userguide styles */\r
+\r
+.faq .two-cols .lt                                                             { width:460px; }\r
+.faq .two-cols .rt                                                             { width:340px; text-align:center; }\r
+.lt-small .rt                                                                  { width:520px; }\r
+.lt-small .lt                                                                  { width:280px; }\r
+.unequal-dotted                                                                        { background:url(../images/double-dots-unequal.jpg) no-repeat top center; padding: 30px 0 0 ; margin-top:30px;}\r
+.unequal-dotted:first-child                                            { background:none; padding-top:0; margin-top:0; }\r
+.tirkouaz h2,\r
+.tirkouaz h2 a,\r
+.tirkouaz h3,\r
+.tirkouaz a:hover,\r
+.tirkouaz li.current a                                                 { color:#00A1B0; }\r
+.yellow h2,\r
+.yellow h2 a,\r
+.yellow h3,\r
+.yellow a:hover,\r
+.yellow li.current a                                                   { color:#F6921E; }\r
+.purple h2,\r
+.purple h2 a,\r
+.purple h3,\r
+.purple a:hover,\r
+.purple li.current a                                                   { color:#7B499C; }\r
+.blue h2,\r
+.blue h2 a,\r
+.blue h3,\r
+.blue a:hover,\r
+.blue li.current a                                                             { color:#3582AC; }\r
+.brown h2,\r
+.brown h2 a,\r
+.brown h3,\r
+.brown a:hover,\r
+.brown li.current a                                                            { color:#BC742B; }\r
+\r
+.question .content a:hover                                             { color:#F6921E }\r
+.details .extra-menu                                                   { background: url(../images/dots.jpg) repeat-x  center top ;padding-top:20px; margin-top:20px; }\r
+.details .faq-category h2                                              { font-size:1em; }\r
+.question .next-prev                                                   { margin:10px 0; }\r
+.question .next                                                                        { float:right; }\r
+.details img                                                                   { max-width:100%; }\r
+.question .section                                                             { margin-top:1em; }\r
+.question pre                                                                  { border:1px dashed #000; padding:5px; margin:10px 0; line-height:auto; }\r
+.widjets                                                                               { margin: 0; padding:0; }\r
+.widjets li                                                                            { width:50%; float:left; list-style:none outside; margin:30px 0; }\r
+.widjets li div                                                                        { border:1px dashed #000; padding:20px 20px 70px; width:60%; margin:0 auto; position:relative; }\r
+.widjets li div img                                                            { max-width:100%; }\r
+.widjets li .btn                                                               { text-align:center; position:absolute; bottom:0; left:0; right:0; }\r
diff --git a/snf-astakos-app/astakos/im/static/im/css/print.css b/snf-astakos-app/astakos/im/static/im/css/print.css
new file mode 100644 (file)
index 0000000..d5db53b
--- /dev/null
@@ -0,0 +1 @@
+body                                                                                   { font:normal 12pt Arial, sans-serif; color:#000; line-height:1.5; }\ra img                                                                                      { border:0; }\ra                                                                                         { color:#000; }\ra:link:after,a:visited:after,\ra:link::after,a:visited::after                                    { content:" (" attr(href) ")"; font-size:smaller; }\r\r\r.cloudbar,\r.footer,\r.container ul.options,\r.pagination,\r.navigation                                                                               { display: none; visibility:hidden }\r.container .wrapper                                                                { border:0 none; width:auto; padding:1em; }\r.mainlogo                                                                           { margin-bottom:20px; }\r.two-cols .rt, \r.two-cols .lt                                                                   { float:none; width:100%; }\r.bg-wrap .extra                                                             { display:block!important }\r.button.back                                                                        { display:none; }\r
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/css/styles.css b/snf-astakos-app/astakos/im/static/im/css/styles.css
deleted file mode 100644 (file)
index 0dfca18..0000000
+++ /dev/null
@@ -1,1567 +0,0 @@
-/*!
- * Bootstrap @VERSION
- *
- * Copyright 2011 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
- * Date: @DATE
- */
-/* Reset.less
- * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here      that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
- * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
-html, body {
-  margin: 0;
-  padding: 0;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-p,
-blockquote,
-pre,
-a,
-abbr,
-acronym,
-address,
-cite,
-code,
-del,
-dfn,
-em,
-img,
-q,
-s,
-samp,
-small,
-strike,
-strong,
-sub,
-sup,
-tt,
-var,
-dd,
-dl,
-dt,
-li,
-ol,
-ul,
-fieldset,
-form,
-label,
-legend,
-button,
-table,
-caption,
-tbody,
-tfoot,
-thead,
-tr,
-th,
-td {
-  margin: 0;
-  padding: 0;
-  border: 0;
-  font-weight: normal;
-  font-style: normal;
-  font-size: 100%;
-  line-height: 1;
-  font-family: inherit;
-}
-table {
-  border-collapse: collapse;
-  border-spacing: 0;
-}
-ol, ul {
-  list-style: none;
-}
-q:before,
-q:after,
-blockquote:before,
-blockquote:after {
-  content: "";
-}
-html {
-  overflow-y: scroll;
-  font-size: 100%;
-  -webkit-text-size-adjust: 100%;
-  -ms-text-size-adjust: 100%;
-}
-a:focus {
-  outline: thin dotted;
-}
-a:hover, a:active {
-  outline: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-nav,
-section {
-  display: block;
-}
-audio, canvas, video {
-  display: inline-block;
-  *display: inline;
-  *zoom: 1;
-}
-audio:not([controls]) {
-  display: none;
-}
-sub, sup {
-  font-size: 75%;
-  line-height: 0;
-  position: relative;
-  vertical-align: baseline;
-}
-sup {
-  top: -0.5em;
-}
-sub {
-  bottom: -0.25em;
-}
-img {
-  border: 0;
-  -ms-interpolation-mode: bicubic;
-}
-button,
-input,
-select,
-textarea {
-  font-size: 100%;
-  margin: 0;
-  vertical-align: baseline;
-  *vertical-align: middle;
-}
-button, input {
-  line-height: normal;
-  *overflow: visible;
-}
-button::-moz-focus-inner, input::-moz-focus-inner {
-  border: 0;
-  padding: 0;
-}
-button,
-input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  cursor: pointer;
-  -webkit-appearance: button;
-}
-input[type="search"] {
-  -webkit-appearance: textfield;
-  -webkit-box-sizing: content-box;
-  -moz-box-sizing: content-box;
-  box-sizing: content-box;
-}
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-textarea {
-  overflow: auto;
-  vertical-align: top;
-}
-/* Variables.less
- * Variables to customize the look and feel of Bootstrap
- * ----------------------------------------------------- */
-/* Mixins.less
- * Snippets of reusable CSS to develop faster and keep code readable
- * ----------------------------------------------------------------- */
-.makeRow {
-  zoom: 1;
-  margin-left: -22px;
-}
-.makeRow:before, .makeRow:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.makeRow:after {
-  clear: both;
-}
-.button {
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  background-color: #3582ac;
-  color: #ffffff;
-  border: none;
-  padding: 0.8em 22px;
-  font-size: 1em;
-}
-.button:hover {
-  background-color: #f89a1c;
-}
-.button.back {
-  text-decoration: none;
-  bottom: 0;
-  float: right;
-  z-index: 500;
-}
-.button.back.right {
-  right: 0;
-}
-.buttons-list {
-  z-index: 300;
-  position: relative;
-}
-.buttons-list .button {
-  margin-left: 10px;
-}
-.buttons-list.fixpos {
-  margin-top: -42px;
-}
-a.button {
-  text-align: center !important;
-  color: #fff !important;
-  border: none !important;
-  display: block !important;
-}
-a.button:hover {
-  color: #fff !important;
-}
-/*addon to style django forms rendered with as_p filter*/
-/*
- * Tables.less
- * Tables for, you guessed it, tabular data
- * ---------------------------------------- */
-table {
-  width: 100%;
-  margin-bottom: 22px;
-  padding: 0;
-  font-size: 14px;
-  border-collapse: collapse;
-}
-table th, table td {
-  padding: 10px 10px 9px;
-  line-height: 22px;
-  text-align: left;
-}
-table th {
-  padding-top: 9px;
-  font-weight: bold;
-  vertical-align: middle;
-}
-table td {
-  vertical-align: top;
-  border-top: 1px solid #ddd;
-}
-table tbody th {
-  border-top: 1px solid #ddd;
-  vertical-align: top;
-}
-.condensed-table th, .condensed-table td {
-  padding: 5px 5px 4px;
-}
-.bordered-table {
-  border: 1px solid #ddd;
-  border-collapse: separate;
-  *border-collapse: collapse;
-  /* IE7, collapse table to remove spacing */
-
-  -webkit-border-radius: 4px;
-  -moz-border-radius: 4px;
-  border-radius: 4px;
-}
-.bordered-table th + th, .bordered-table td + td, .bordered-table th + td {
-  border-left: 1px solid #ddd;
-}
-.bordered-table thead tr:first-child th:first-child, .bordered-table tbody tr:first-child td:first-child {
-  -webkit-border-radius: 4px 0 0 0;
-  -moz-border-radius: 4px 0 0 0;
-  border-radius: 4px 0 0 0;
-}
-.bordered-table thead tr:first-child th:last-child, .bordered-table tbody tr:first-child td:last-child {
-  -webkit-border-radius: 0 4px 0 0;
-  -moz-border-radius: 0 4px 0 0;
-  border-radius: 0 4px 0 0;
-}
-.bordered-table tbody tr:last-child td:first-child {
-  -webkit-border-radius: 0 0 0 4px;
-  -moz-border-radius: 0 0 0 4px;
-  border-radius: 0 0 0 4px;
-}
-.bordered-table tbody tr:last-child td:last-child {
-  -webkit-border-radius: 0 0 4px 0;
-  -moz-border-radius: 0 0 4px 0;
-  border-radius: 0 0 4px 0;
-}
-table .span1 {
-  width: 40px;
-}
-table .span2 {
-  width: 120px;
-}
-table .span3 {
-  width: 200px;
-}
-table .span4 {
-  width: 280px;
-}
-table .span5 {
-  width: 360px;
-}
-table .span6 {
-  width: 440px;
-}
-table .span7 {
-  width: 520px;
-}
-table .span8 {
-  width: 600px;
-}
-table .span9 {
-  width: 680px;
-}
-table .span10 {
-  width: 760px;
-}
-table .span11 {
-  width: 840px;
-}
-table .span12 {
-  width: 920px;
-}
-table .span13 {
-  width: 1000px;
-}
-table .span14 {
-  width: 1080px;
-}
-table .span15 {
-  width: 1160px;
-}
-table .span16 {
-  width: 1240px;
-}
-.zebra-striped tbody tr:nth-child(odd) td, .zebra-striped tbody tr:nth-child(odd) th {
-  background-color: #f9f9f9;
-}
-.zebra-striped tbody tr:hover td, .zebra-striped tbody tr:hover th {
-  background-color: #f5f5f5;
-}
-table .header {
-  cursor: pointer;
-}
-table .header:after {
-  content: "";
-  float: right;
-  margin-top: 7px;
-  border-width: 0 4px 4px;
-  border-style: solid;
-  border-color: #000 transparent;
-  visibility: hidden;
-}
-table .headerSortUp, table .headerSortDown {
-  background-color: rgba(141, 192, 219, 0.25);
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-}
-table .header:hover:after {
-  visibility: visible;
-}
-table .headerSortDown:after, table .headerSortDown:hover:after {
-  visibility: visible;
-  filter: alpha(opacity=60);
-  -khtml-opacity: 0.6;
-  -moz-opacity: 0.6;
-  opacity: 0.6;
-}
-table .headerSortUp:after {
-  border-bottom: none;
-  border-left: 4px solid transparent;
-  border-right: 4px solid transparent;
-  border-top: 4px solid #000;
-  visibility: visible;
-  -webkit-box-shadow: none;
-  -moz-box-shadow: none;
-  box-shadow: none;
-  filter: alpha(opacity=60);
-  -khtml-opacity: 0.6;
-  -moz-opacity: 0.6;
-  opacity: 0.6;
-}
-table .blue {
-  color: #3582ac;
-  border-bottom-color: #3582ac;
-}
-table .headerSortUp.blue, table .headerSortDown.blue {
-  background-color: #c1ddec;
-}
-table .green {
-  color: #46a546;
-  border-bottom-color: #46a546;
-}
-table .headerSortUp.green, table .headerSortDown.green {
-  background-color: #cdeacd;
-}
-table .red {
-  color: #9d261d;
-  border-bottom-color: #9d261d;
-}
-table .headerSortUp.red, table .headerSortDown.red {
-  background-color: #f4c8c5;
-}
-table .yellow {
-  color: #ffc40d;
-  border-bottom-color: #ffc40d;
-}
-table .headerSortUp.yellow, table .headerSortDown.yellow {
-  background-color: #fff6d9;
-}
-table .orange {
-  color: #f89406;
-  border-bottom-color: #f89406;
-}
-table .headerSortUp.orange, table .headerSortDown.orange {
-  background-color: #fee9cc;
-}
-table .purple {
-  color: #7a43b6;
-  border-bottom-color: #7a43b6;
-}
-table .headerSortUp.purple, table .headerSortDown.purple {
-  background-color: #e2d5f0;
-}
-.makeRow {
-  zoom: 1;
-  margin-left: -22px;
-}
-.makeRow:before, .makeRow:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.makeRow:after {
-  clear: both;
-}
-.button {
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  background-color: #3582ac;
-  color: #ffffff;
-  border: none;
-  padding: 0.8em 22px;
-  font-size: 1em;
-}
-.button:hover {
-  background-color: #f89a1c;
-}
-.button.back {
-  text-decoration: none;
-  bottom: 0;
-  float: right;
-  z-index: 500;
-}
-.button.back.right {
-  right: 0;
-}
-.buttons-list {
-  z-index: 300;
-  position: relative;
-}
-.buttons-list .button {
-  margin-left: 10px;
-}
-.buttons-list.fixpos {
-  margin-top: -42px;
-}
-a.button {
-  text-align: center !important;
-  color: #fff !important;
-  border: none !important;
-  display: block !important;
-}
-a.button:hover {
-  color: #fff !important;
-}
-.border-box {
-  -moz-box-sizing: border-box;
-  -webkit-box-sizing: border-box;
-  box-sizing: border-box;
-  *behavior: url(boxsizing.htc);
-}
-.clearme {
-  zoom: 1;
-}
-.clearme:before, .clearme:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.clearme:after {
-  clear: both;
-}
-body {
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-size: 12px;
-}
-.topbar {
-  background-color: #cfcdc7;
-}
-.topbar .head {
-  float: left;
-  padding: 2.333333333333333px;
-}
-.topbar .links {
-  zoom: 1;
-  float: right;
-}
-.topbar .links:before, .topbar .links:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.topbar .links:after {
-  clear: both;
-}
-.topbar .links a {
-  color: #000000;
-  text-decoration: none;
-  display: block;
-  float: left;
-  margin-left: 10px;
-  padding: 8.333333333333332px;
-}
-.topbar .links a:hover {
-  background-color: #1a1a1a;
-  color: #ffffff;
-}
-section a,
-p a,
-form a,
-.section a,
-.styledlinks a,
-a.styled {
-  color: #000000;
-  text-decoration: none;
-  border-bottom: 1px solid #f89a1c;
-}
-section a:hover,
-p a:hover,
-form a:hover,
-.section a:hover,
-.styledlinks a:hover,
-a.styled:hover {
-  color: #f89a1c;
-}
-section a.noborder,
-p a.noborder,
-form a.noborder,
-.section a.noborder,
-.styledlinks a.noborder,
-a.styled.noborder {
-  border: none;
-}
-section a em,
-p a em,
-form a em,
-.section a em,
-.styledlinks a em,
-a.styled em {
-  color: #3582ac;
-}
-a.simple {
-  border: none;
-}
-a.action {
-  color: #f89a1c;
-  border-bottom: none;
-}
-a img {
-  border-bottom: none;
-}
-.content-border {
-  border-right: 1px solid #808080;
-  border-left: 1px solid #808080;
-}
-.hidden {
-  display: none !important;
-}
-.container, .topbar, .footer {
-  width: 796px;
-  margin-left: auto;
-  margin-right: auto;
-  zoom: 1;
-  border-right: 1px solid #808080;
-  border-left: 1px solid #808080;
-  padding: 0 82px;
-}
-.container:before,
-.topbar:before,
-.footer:before,
-.container:after,
-.topbar:after,
-.footer:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.container:after, .topbar:after, .footer:after {
-  clear: both;
-}
-.container {
-  padding-bottom: 82px;
-  background-color: #ffffff;
-}
-div.header {
-  position: relative;
-  margin-top: 36.666666666666664px;
-  margin-bottom: 14.666666666666666px;
-}
-div.header h1 {
-  color: #cfcdc7;
-  display: inline;
-  font-size: 2.3em;
-  border-bottom: 1px solid #cfcdc7;
-  padding-bottom: 3px;
-}
-.mainlogo {
-  height: 36px;
-}
-.mainlogo h1 {
-  height: 36px;
-}
-.mainlogo img {
-  margin-left: -10px;
-}
-.footer {
-  border-bottom: 1px solid #808080;
-  border-top: 1px solid #a6a6a6;
-  padding-top: 14.666666666666666px;
-  padding-bottom: 14.666666666666666px;
-}
-ul.inline {
-  zoom: 1;
-}
-ul.inline:before, ul.inline:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-ul.inline:after {
-  clear: both;
-}
-ul.inline li {
-  display: block;
-  float: left;
-  margin-right: 1em;
-}
-.mainnav.quicknav {
-  position: absolute;
-  right: 0;
-  top: -38.13333333333333px;
-  margin: 0;
-}
-.mainnav.quicknav li {
-  margin-right: 0;
-  margin-left: 1em;
-}
-.navigation {
-  height: 83px;
-  position: absolute;
-  right: -15px;
-  top: -23px;
-}
-.mainnav {
-  font-size: 1.3em;
-}
-.mainnav.subnav {
-  margin-bottom: -14.666666666666666px;
-}
-.mainnav.subnav li {
-  margin-top: 5.866666666666667px;
-  float: right;
-}
-.mainnav li {
-  margin-top: 29.333333333333332px;
-}
-.mainnav li.active a {
-  /*border-bottom: 1px solid @linkColor;*/
-
-  border-bottom: none;
-  color: #f89a1c;
-}
-.mainnav a {
-  color: #000000;
-  text-decoration: none;
-}
-.mainnav a:hover {
-  border-bottom: 1px solid #f89a1c;
-}
-.mainnav a.active, .mainnav a:active {
-  border-bottom: 1px solid #f89a1c;
-  color: #f89a1c;
-}
-.bottom-section {
-  zoom: 1;
-}
-.bottom-section:before, .bottom-section:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.bottom-section:after {
-  clear: both;
-}
-.bottom-section .section img {
-  width: 200px;
-}
-.top-section {
-  zoom: 1;
-}
-.top-section:before, .top-section:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.top-section:after {
-  clear: both;
-}
-div.page {
-  zoom: 1;
-  margin-left: -22px;
-  zoom: 1;
-  margin-left: -22px;
-  margin-top: 73.33333333333333px;
-  font-size: 1.1em;
-}
-div.page:before, div.page:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-div.page:after {
-  clear: both;
-}
-div.page:before, div.page:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-div.page:after {
-  clear: both;
-}
-div.page .page-inner {
-  position: relative;
-}
-.maincol {
-  position: relative;
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 388px;
-}
-.maincol.wide {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 470px;
-}
-.maincol.full {
-  zoom: 1;
-  margin-left: -22px;
-  zoom: 1;
-  margin-left: -22px;
-  margin-left: 0;
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 798px;
-}
-.maincol.full:before, .maincol.full:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.maincol.full:after {
-  clear: both;
-}
-.maincol.full:before, .maincol.full:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.maincol.full:after {
-  clear: both;
-}
-.maincol .nextlink {
-  margin-top: 60px;
-  text-align: right;
-  float: right;
-  margin-right: 50px;
-  font-size: 1.1em;
-}
-.maincol .content-bottom {
-  position: relative;
-  zoom: 1;
-}
-.maincol .content-bottom:before, .maincol .content-bottom:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.maincol .content-bottom:after {
-  clear: both;
-}
-.backlink {
-  margin: 30px 0;
-}
-.appbar {
-  height: 30px;
-  background-color: #3582ac;
-}
-.rightcol {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-  margin-left: 102px;
-}
-.rightcol.narrow {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 224px;
-  margin-left: 102px;
-}
-.rightcol input[type=text], .rightcol input[type=password] {
-  width: 273px;
-}
-/* generic form styles */
-input, textarea, .form-widget {
-  background-color: #ffffff;
-  color: #808080;
-  border-color: #000000;
-}
-#forms .input, #forms input {
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  border: 1px solid #808080;
-  height: 21px;
-  display: inline-block;
-  margin-bottom: -1px;
-  padding: 0.8em;
-  padding-left: 1.5em;
-  z-index: 2;
-}
-#forms .input:focus, #forms input:focus {
-  position: relative;
-  border: 1px solid #000;
-  z-index: 100;
-}
-#forms .input:focus label, #forms input:focus label {
-  z-index: 300;
-}
-.altcol {
-  background-color: #c3c3b9 !important;
-}
-.altcol:hover {
-  background-color: #f89a1c !important;
-}
-.section {
-  margin-bottom: 44px;
-}
-.section em {
-  color: #3582ac;
-}
-.section.positioned {
-  margin-bottom: 0;
-}
-.section.positioned .content {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-}
-.section.positioned.withimg .img {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-}
-.section.positioned.withimg img {
-  float: left;
-}
-.section.positioned h3 {
-  font-size: 1.2em;
-  margin-bottom: 14.666666666666666px;
-}
-.section.positioned .text {
-  color: #000000;
-}
-.section .left, .section .right {
-  width: 50%;
-  float: left;
-}
-.section.imagelist {
-  margin-top: 2em;
-  zoom: 1;
-}
-.section.imagelist:before, .section.imagelist:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.section.imagelist:after {
-  clear: both;
-}
-.section.imagelist img {
-  float: left;
-  margin-right: 4em;
-  vertical-align: middle;
-}
-input[readonly=true] {
-  background-color: #ddd;
-  color: #5e5e5e;
-}
-form.withlabels label {
-  width: 224px;
-  display: block;
-  float: left;
-  padding-top: 1em;
-}
-form.withlabels input[type=text], form.withlabels input[type=password], form.withlabels textarea {
-  width: 224px;
-}
-form.withlabels input[type=text].long, form.withlabels input[type=password].long, form.withlabels textarea.long {
-  width: 224px;
-}
-.login-section a.button {
-  margin-bottom: 12px;
-}
-.login-section a.button:last-child {
-  margin-bottom: none;
-}
-.login-section a.button.withicon {
-  background-repeat: no-repeat;
-  background-position: 15px 50%;
-  padding-left: 40px;
-}
-.login-section.loggedin {
-  padding-bottom: 0 !important;
-  background-image: none !important;
-}
-form.login {
-  margin-bottom: 22px;
-}
-form h2 {
-  color: #000000;
-  margin-bottom: 14.666666666666666px;
-  font-size: 1.1em;
-}
-form h2 span {
-  padding-bottom: 3px;
-}
-form .form-row {
-  min-height: 29.333333333333332px;
-  position: relative;
-}
-form .form-row.submit {
-  margin-top: 22px;
-}
-form .form-row.with-checkbox {
-  margin-top: 7px;
-}
-form .form-row .extra-link {
-  color: #808080;
-  text-decoration: none;
-  border: none;
-  font-size: 0.8em;
-  margin-top: 1.3em;
-  float: right;
-}
-form .form-row label {
-  font-size: 1.1em;
-}
-form.innerlabels label {
-  position: absolute;
-  top: 1.1em;
-  left: 1.5em;
-  color: #aaa;
-}
-form.innerlabels p {
-  display: table;
-  position: relative;
-}
-form textarea,
-form input.text,
-form input[type="text"],
-form input[type="password"] {
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  border: 1px solid #808080;
-  height: 21px;
-  display: inline-block;
-  margin-bottom: -1px;
-  padding: 0.8em;
-  padding-left: 1.5em;
-  z-index: 2;
-}
-form textarea:focus,
-form input.text:focus,
-form input[type="text"]:focus,
-form input[type="password"]:focus {
-  position: relative;
-  border: 1px solid #000;
-  z-index: 100;
-}
-form textarea:focus label,
-form input.text:focus label,
-form input[type="text"]:focus label,
-form input[type="password"]:focus label {
-  z-index: 300;
-}
-form input.submit, form input[type="submit"] {
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  background-color: #3582ac;
-  color: #ffffff;
-  border: none;
-  padding: 0.8em 22px;
-  font-size: 1em;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  font-family: 'Antic', sans-serif;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 22px;
-  letter-spacing: 1px;
-  background-color: #3582ac;
-  color: #ffffff;
-  border: none;
-  padding: 0.8em 22px;
-  font-size: 1em;
-}
-form input.submit:hover, form input[type="submit"]:hover {
-  background-color: #f89a1c;
-}
-form input.submit.back, form input[type="submit"].back {
-  text-decoration: none;
-  bottom: 0;
-  float: right;
-  z-index: 500;
-}
-form input.submit.back.right, form input[type="submit"].back.right {
-  right: 0;
-}
-form input.submit:hover, form input[type="submit"]:hover {
-  background-color: #f89a1c;
-}
-form input.submit.back, form input[type="submit"].back {
-  text-decoration: none;
-  bottom: 0;
-  float: right;
-  z-index: 500;
-}
-form input.submit.back.right, form input[type="submit"].back.right {
-  right: 0;
-}
-form textarea {
-  height: 200px;
-  width: 350px !important;
-}
-form .with-errors input, form .with-errors textarea, form .with-errors select {
-  color: #9d261d;
-}
-form .with-errors label {
-  color: #e4776f;
-}
-.form-error {
-  background-color: #9d261d;
-  color: #fff;
-  font-size: 0.8em;
-  padding: 5px 5px;
-}
-.form-errors.all .form-error {
-  position: relative;
-  border-radius: 0;
-  margin-bottom: 1.3em;
-  padding: 0.5em;
-}
-div.form-stacked {
-  margin-bottom: 4em;
-}
-.rightcol .section {
-  background-image: url("../images/dashed_border.png");
-  background-repeat: repeat-x;
-  background-position: left bottom;
-  padding-bottom: 29.333333333333332px;
-  margin-bottom: 29.333333333333332px;
-}
-.section h2 {
-  font-size: 1.1em;
-  line-height: 1.3em;
-  margin-bottom: 22px;
-}
-.section h2 a {
-  color: #4085A6;
-  border: none;
-  line-height: 1.3em;
-}
-.section h3 {
-  font-size: 1.1em;
-  line-height: 1.3em;
-  margin-bottom: 22px;
-}
-.section p {
-  line-height: 1.7em;
-}
-.section .section-img {
-  margin-bottom: 14.666666666666666px;
-}
-.messages {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 798px;
-  margin: 2em 0;
-  background-color: #ddd;
-  margin-left: 0;
-  font-size: 1.1em;
-}
-.messages li {
-  padding: 1em;
-}
-.messages li.success {
-  background-color: #46a546;
-  color: #ffffff;
-}
-.messages li.error {
-  background-color: #9d261d;
-  color: #ffffff;
-}
-.messages li.warning {
-  background-color: #AF6906;
-  color: #000000;
-}
-.messages .warning {
-  color: #ffffff !important;
-}
-.messages .warning a {
-  color: inherit;
-  font-weight: bold;
-}
-form.innerlabels label.checkbox-label {
-  position: relative !important;
-  margin-left: 10px !important;
-  padding-top: 1em !important;
-  top: 11px !important;
-  left: 10px;
-  cursor: pointer;
-}
-.service-desc {
-  margin-top: 4em;
-}
-table td.consumed {
-  color: #9d261d;
-}
-table tr.consumed td.consumed {
-  color: #46a546;
-}
-.row {
-  zoom: 1;
-  margin-left: -22px;
-  zoom: 1;
-  margin-left: -22px;
-}
-.row:before, .row:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.row:after {
-  clear: both;
-}
-.row:before, .row:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.row:after {
-  clear: both;
-}
-.footer {
-  zoom: 1;
-  color: #b3b3b3;
-  -webkit-transition: color 0.15s linear;
-  transition: color 0.15s linear;
-  -webkit-transition: color 0.15s linear;
-  transition: color 0.15s linear;
-}
-.footer:before, .footer:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.footer:after {
-  clear: both;
-}
-.footer a {
-  -webkit-transition: color 0.15s linear;
-  transition: color 0.15s linear;
-  -webkit-transition: color 0.15s linear;
-  transition: color 0.15s linear;
-}
-.footer:hover {
-  color: #808080 !important;
-}
-.footer:hover a {
-  color: #808080 !important;
-}
-.footer a {
-  color: #b3b3b3;
-  text-decoration: none;
-}
-.footer a:hover {
-  color: #000 !important;
-}
-.footer li {
-  margin-bottom: 7.333333333333333px;
-}
-.footer li.header {
-  margin-bottom: 14.666666666666666px;
-}
-.footer .col {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-}
-.footer .col:last-child, .footer .col.last {
-  width: 140px;
-  margin-right: 0;
-}
-.footer .top.row, .footer .last.row {
-  zoom: 1;
-  margin-left: -22px;
-  zoom: 1;
-  margin-left: -22px;
-  margin: 20px 0;
-}
-.footer .top.row:before,
-.footer .last.row:before,
-.footer .top.row:after,
-.footer .last.row:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.footer .top.row:after, .footer .last.row:after {
-  clear: both;
-}
-.footer .top.row:before,
-.footer .last.row:before,
-.footer .top.row:after,
-.footer .last.row:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.footer .top.row:after, .footer .last.row:after {
-  clear: both;
-}
-.footer .top.row .col, .footer .last.row .col {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-}
-.footer .top.row .col.first, .footer .last.row .col.first {
-  margin-left: 0 !important;
-}
-.footer .top.row .col.last, .footer .last.row .col.last {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 142px;
-}
-.footer .top.row {
-  margin-top: 0;
-}
-.footer .last.row {
-  text-align: left;
-  font-size: 0.8em;
-  margin-bottom: 0;
-}
-.footer .bottom.row .col {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 142px;
-}
-.footer .bottom.row .col:last-child, .footer .bottom.row .col.last {
-  width: 140px;
-  margin-right: 0;
-}
-/*pagination*/
-.pagination a.page {
-  display: inline !important;
-}
-/*blog styles*/
-.blog-entry {
-  margin-bottom: 44px;
-  zoom: 1;
-  margin-bottom: 29.333333333333332px;
-}
-.blog-entry em {
-  color: #3582ac;
-}
-.blog-entry.positioned {
-  margin-bottom: 0;
-}
-.blog-entry.positioned .content {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-}
-.blog-entry.positioned.withimg .img {
-  display: inline;
-  float: left;
-  margin-left: 22px;
-  width: 306px;
-}
-.blog-entry.positioned.withimg img {
-  float: left;
-}
-.blog-entry.positioned h3 {
-  font-size: 1.2em;
-  margin-bottom: 14.666666666666666px;
-}
-.blog-entry.positioned .text {
-  color: #000000;
-}
-.blog-entry .left, .blog-entry .right {
-  width: 50%;
-  float: left;
-}
-.blog-entry.imagelist {
-  margin-top: 2em;
-  zoom: 1;
-}
-.blog-entry.imagelist:before, .blog-entry.imagelist:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.blog-entry.imagelist:after {
-  clear: both;
-}
-.blog-entry.imagelist img {
-  float: left;
-  margin-right: 4em;
-  vertical-align: middle;
-}
-.blog-entry h2 {
-  font-size: 1.1em;
-  line-height: 1.3em;
-  margin-bottom: 22px;
-}
-.blog-entry h2 a {
-  color: #4085A6;
-  border: none;
-  line-height: 1.3em;
-}
-.blog-entry h3 {
-  font-size: 1.1em;
-  line-height: 1.3em;
-  margin-bottom: 22px;
-}
-.blog-entry p {
-  line-height: 1.7em;
-}
-.blog-entry .section-img {
-  margin-bottom: 14.666666666666666px;
-}
-.blog-entry:before, .blog-entry:after {
-  display: table;
-  content: "";
-  zoom: 1;
-}
-.blog-entry:after {
-  clear: both;
-}
-.blog-entry .title {
-  margin-bottom: 1em;
-  font-size: 1.1em;
-  line-height: 1.4em;
-}
-.blog-entry .media img {
-  border: 1px solid #808080;
-}
-.blog-entry .intro-content, .blog-entry .content {
-  margin-top: 14.666666666666666px;
-}
-.blog-entry .intro-content object, .blog-entry .content object {
-  margin: 14.666666666666666px 0;
-}
-.blog-entry .entry-info {
-  font-size: 0.7em;
-  margin-top: 14.666666666666666px;
-}
-.blog-entry.single .entry-info {
-  margin-top: 0;
-  margin-bottom: 14.666666666666666px;
-}
-.section.twitter-feed {
-  font-size: 1.1em;
-}
-.section.twitter-feed .tweet {
-  line-height: 1.3em;
-  font-size: 0.9em;
-  margin-bottom: 14.666666666666666px;
-  color: #808080;
-}
-.section.twitter-feed .tweet:last-child {
-  margin-bottom: 0;
-  padding-bottom: 0;
-  border-bottom: none;
-}
-.section.twitter-feed .tweet .date {
-  display: block;
-  font-size: 0.7em;
-}
-.section.twitter-feed .tweet .date a {
-  text-decoration: none !important;
-  border: none;
-}
-.pagination .page {
-  margin-left: 0;
-}
-.entry-list .since {
-  font-size: 0.8em;
-}
-.entry-list .title {
-  margin-bottom: 1em;
-}
-.entry-list .content, .entry-list .text {
-  margin-bottom: 2em;
-  font-size: 0.8em;
-}
-.initially-hidden {
-  display: none;
-}
-/* recaptcha */
-#recaptcha_widget_div {
-  margin-top: 10px;
-  margin-left: -4px;
-}
-#recaptcha_widget_div #recaptcha_instructions_image {
-  font-size: 0.8em;
-  margin-bottom: 10px;
-  display: block !important;
-}
-#recaptcha_widget_div th, #recaptcha_widget_div td {
-  line-height: 1;
-}
-.checkbox-widget.checked {
-  background-color: #f00;
-  background-image: url("../images/checkbox.png");
-  background-position: 50% 50%;
-}
-.checkbox-widget {
-  border: 1px solid #808080;
-  width: 25px;
-  height: 25px;
-  display: block;
-  float: left;
-  cursor: pointer;
-  margin-top: 5.333333333333333px;
-}
-.textcontent h1, .terms-content h1 {
-  font-size: 1.9em;
-  margin-bottom: 0.2em;
-  margin-top: 1.2em;
-  color: #3582ac;
-}
-.textcontent h1:first-child, .terms-content h1:first-child {
-  margin-top: 0;
-}
-.textcontent h2, .terms-content h2 {
-  font-size: 1.6em;
-  margin-bottom: 1.1em;
-  margin-top: 1.1em;
-  color: #3b91bf;
-}
-.textcontent h2:first-child, .terms-content h2:first-child {
-  margin-top: 0;
-}
-.textcontent h3, .terms-content h3 {
-  font-size: 1.3em;
-  margin-bottom: 1em;
-  margin-top: 1em;
-  color: #3b91bf;
-}
-.textcontent h3:first-child, .terms-content h3:first-child {
-  margin-top: 0;
-}
-.textcontent p, .terms-content p {
-  margin-bottom: 1em;
-  line-height: 1.5em;
-}
-.textcontent .date, .terms-content .date {
-  margin: 1em 0;
-  font-size: 0.9em;
-  margin-bottom: 2em;
-  color: #808080;
-}
diff --git a/snf-astakos-app/astakos/im/static/im/css/styles.less b/snf-astakos-app/astakos/im/static/im/css/styles.less
deleted file mode 100644 (file)
index 1c50719..0000000
+++ /dev/null
@@ -1,865 +0,0 @@
-@import "../less/bootstrap.less";
-@import "../less/django_forms.less";
-@import "../less/tables.less";
-@import "../less/xtra.less";
-
-
-// mixins
-
-.border-box {
-    -moz-box-sizing: border-box;
-    -webkit-box-sizing: border-box;
-    box-sizing: border-box;
-    *behavior: url(boxsizing.htc);
-}
-
-.clearme { .clearfix() }
-
-@verticalSpacing: @gridGutterWidth/1.5;
-@gradCol: #ddd;
-body {
-    #font.main();
-    font-size: 12px;
-}
-
-.topbar {
-    background-color: @shadowColor;
-    .head {
-        float: left;    
-            padding: @verticalSpacing/2-5;
-    }
-    .links {
-        .clearfix();
-        a {
-            color: @black;
-            text-decoration: none;
-            display: block;
-            float: left;
-            margin-left: 10px;
-            padding: @verticalSpacing/2+1;
-
-            &:hover {
-                background-color: lighten(@black, 10%);
-                color: @white;
-            }
-        }
-
-        float: right;    
-    }
-}
-
-// default link styles
-section a, p a, form a, .section a, .styledlinks a, a.styled {
-    color: @black;
-    text-decoration: none;
-    border-bottom: 1px solid @linkColor;
-
-    &:hover {
-        color: @linkColor;
-    }
-
-    &.noborder {
-        border: none;   
-    }
-
-    em {
-        color: @blue;    
-    }
-}
-
-a.simple {
-    border: none;
-
-}
-a.action {
-    color: @linkColor;
-    border-bottom: none;
-}
-
-a img {
-    border-bottom: none;
-}
-
-// body borders
-.content-border {
-    border-right: 1px solid @mainBorderColor;
-    border-left: 1px solid @mainBorderColor;
-}
-
-.hidden {
-    display: none !important;
-}
-
-// container sizing
-.container, .topbar, .footer {
-    .fixed-container();
-    .content-border();
-    padding: 0 @siteWhiteSpace;
-}
-
-.container {
-    padding-bottom: @siteWhiteSpace;
-    background-color: @white;
-}
-
-.topbar {
-}
-
-
-div.header {
-    position: relative;
-    margin-top: 2.5*@verticalSpacing;
-    margin-bottom: @verticalSpacing;
-    h1 {
-        color: @shadowColor;
-        display: inline;
-        font-size: 2.3em;
-        border-bottom: 1px solid @shadowColor;
-        padding-bottom: 3px;
-    }
-}
-.mainlogo {
-    height: 36px;
-
-    h1 { height: 36px }
-    img {
-        margin-left: -10px;
-    }
-}
-
-.footer {
-    border-bottom: 1px solid @mainBorderColor;
-    border-top: 1px solid lighten(@mainBorderColor, 15%);
-    padding-top: @verticalSpacing;
-    padding-bottom: @verticalSpacing;
-}
-
-ul.inline {
-    .clearfix();
-    li {
-        display: block;    
-        float: left;
-        margin-right: 1em;
-    }
-}
-
-.mainnav.quicknav {
-    position: absolute;
-    right: 0;
-    top: -2.6*@verticalSpacing;
-    margin:0;
-
-    li {
-        margin-right:0;
-        margin-left: 1em;
-    }
-}
-
-.navigation {
-    height: 83px;    
-    position: absolute;
-    right: -15px;
-    top: -23px;
-}
-
-.mainnav {
-    font-size: 1.3em;
-    
-    &.subnav {
-        margin-bottom: -@verticalSpacing;
-        li {
-            margin-top: 0.4*@verticalSpacing;
-            float: right;
-        }
-    }
-
-    li {
-        margin-top: 2*@verticalSpacing;
-    }
-
-    li.active {
-        a {
-            /*border-bottom: 1px solid @linkColor;*/
-            border-bottom: none;
-            color: @linkColor;
-        }
-    }
-    a {
-        color: @black;
-        text-decoration: none;
-
-        &:hover {
-            border-bottom: 1px solid @linkColor;
-        }
-
-        &.active, &:active {
-            border-bottom: 1px solid @linkColor;
-            color: @linkColor;
-        }
-    }
-}
-
-.bottom-section {
-    .clearfix();
-
-    .section {
-        img {
-            width: 200px;    
-        }
-    }
-}
-
-.top-section {
-    .clearfix();
-}
-
-div.page {
-    .makeRow();
-    margin-top: 5*@verticalSpacing;
-    font-size: 1.1em;
-    .page-inner {
-        position: relative;    
-    }
-}
-
-// columnlayout
-.maincol {
-    position: relative;
-    .makeColumn(5);
-    
-    &.wide {
-        .makeColumn(6);    
-    }
-
-    &.full {
-        .makeRow();
-        margin-left: 0;
-        .makeColumn(10);
-    }
-
-    .nextlink {
-         margin-top: 60px;
-         text-align: right;
-         float: right;
-         margin-right: 50px;
-         font-size: 1.1em;
-    }   
-
-    .content-bottom { position: relative; .clearfix(); }
-}
-
-.backlink {
-    margin: 30px 0;    
-}
-
-.appbar {
-    height: 30px;
-    background-color: @blue;
-}
-
-.rightcol {
-    .makeColumn(4);
-    margin-left: 4*@gridGutterWidth + 14;
-
-    &.narrow {
-        .makeColumn(3);
-        margin-left: 4*@gridGutterWidth + 14;
-    }
-
-    input[type=text], input[type=password] {
-        width: 3*@gridColumnWidth + 4*@gridGutterWidth + 5;    
-    }
-}
-
-/* generic form styles */
-input, textarea, .form-widget {
-    background-color: @white;
-    color: @gray;
-    border-color: @black;
-}
-
-#forms {
-    .input, input {
-        #font.main();
-        border: 1px solid @gray;
-        height:21px;
-        display: inline-block;
-        margin-bottom: -1px;
-        padding: 0.8em;
-        padding-left: 1.5em;
-        z-index: 2;
-        &:focus {
-            position: relative;
-            border: 1px solid #000;
-            z-index: 100;
-
-            label {
-                z-index: 300;    
-            }
-        }
-    }
-}
-
-.altcol {
-    background-color: @altColor !important;
-
-    &:hover {
-        background-color: @linkColor !important;
-    }
-}
-
-.section {
-    
-    em {
-        color: @blue;
-    }
-
-    &.positioned {
-        margin-bottom: 0;
-        .content {
-            .makeColumn(4);
-        }
-
-        img {
-        }
-
-        &.withimg {
-            .img {
-                .makeColumn(4);
-            }
-
-            img {
-                float: left;    
-            }
-        }
-        
-        h3 {
-            font-size: 1.2em;
-            margin-bottom: @verticalSpacing;    
-        }
-
-        .text {
-            color: @black;    
-        }
-    }
-
-    margin-bottom: 3*@verticalSpacing; 
-
-    .left, .right {
-        width: 50%;
-        float: left;
-    }
-
-    &.imagelist {
-        margin-top: 2em;
-        .clearfix();
-        img {
-            float: left;    
-            margin-right: 4em;
-            vertical-align: middle;
-        }    
-    }
-}
-
-input[readonly=true] {
-    background-color: #ddd;
-    color: darken(#ddd, 50%);
-}
-
-form.withlabels {
-    label {
-        width: 3*@gridColumnWidth + 2*@gridGutterWidth;
-        display: block;
-        float: left;
-        padding-top: 1em;
-    }
-
-    input[type=text], input[type=password], textarea {
-        width: 3*@gridColumnWidth + 2*@gridGutterWidth;
-
-        &.long {
-            width: 3*@gridColumnWidth + 2*@gridGutterWidth;
-        }
-    }
-}
-
-
-.login-section {
-    a.button {
-        margin-bottom: 0.2*@gridColumnWidth;    
-        
-        &:last-child {
-            margin-bottom: none;    
-        }
-
-        &.withicon {
-            background-repeat: no-repeat;
-            background-position: 15px 50%;
-            padding-left: 40px;
-        }
-    }    
-
-    &.loggedin {
-        padding-bottom: 0 !important;
-        background-image: none !important;
-    }
-}
-
-
-@errorColor: lighten(@red, 30%);
-// forms
-form {
-    
-    &.login {
-        margin-bottom: 1.5*@verticalSpacing; 
-    }
-
-    h2 {
-        color: @black;
-        margin-bottom: @verticalSpacing;
-        font-size: 1.1em;
-
-        span {
-            padding-bottom: 3px;
-        }
-    }
-
-    .form-row {
-        min-height: 2*@verticalSpacing;
-        position: relative;
-        &.submit {
-            margin-top: 1.5*@verticalSpacing;
-        }
-
-        &.with-checkbox {
-            margin-top: 7px;    
-        }
-
-        .extra-link {
-            color: @gray;
-            text-decoration: none;
-            border: none;
-            font-size: 0.8em;
-            margin-top: 1.3em;
-            float: right;
-        }
-
-        label {
-            font-size: 1.1em;    
-        }
-    }
-    
-    &.innerlabels label { 
-        position: absolute;
-        top: 1.1em;
-        left: 1.5em;
-        color: #aaa;
-    }
-
-    &.innerlabels p {
-        display: table;
-        position: relative;    
-    }
-
-    textarea, input.text, input[type="text"], input[type="password"] {
-        #forms.input();
-    }
-
-    input.submit, input[type="submit"] {
-        .button();
-    }
-
-    
-    textarea {
-        height: 200px;
-        width: 350px !important;
-    }
-    .with-errors {
-        input, textarea, select {
-            color: @red;
-        }
-        label {
-            color: @errorColor;
-        }
-    }
-}
-
-.form-error {
-    background-color: @red;
-    color: #fff;
-    font-size: 0.8em;
-    padding: 5px 5px;
-}
-
-.form-errors.all {
-    .form-error {
-        position: relative;
-        border-radius: 0;
-        margin-bottom: 1.3em;
-        padding: 0.5em;
-    }
-}
-
-div.form-stacked {
-    margin-bottom: 4em;
-}
-// content types
-
-.rightcol .section {
-    background-image: url("../images/dashed_border.png");
-    background-repeat: repeat-x;
-    background-position: left bottom;
-    padding-bottom: 2*@verticalSpacing;
-    margin-bottom: 2*@verticalSpacing;
-
-}
-
-.section {
-    h2 {
-        font-size: 1.1em;
-        line-height: 1.3em;
-        margin-bottom: 1.5*@verticalSpacing;    
-
-        a {
-            color: #4085A6;
-            border: none;
-            line-height: 1.3em;
-        }
-    }
-
-    h3 {
-        font-size: 1.1em;    
-        line-height: 1.3em;
-        margin-bottom: 1.5*@verticalSpacing;    
-    }
-
-    p {
-        line-height: 1.7em;    
-    }
-
-    .section-img {
-        margin-bottom: 1*@verticalSpacing;    
-    }
-}
-
-
-// page messages
-.messages {
-    .makeColumn(10);
-
-    margin: 2em 0;
-    background-color: #ddd;
-    margin-left: 0;
-    font-size: 1.1em;
-    li {
-        padding: 1em;    
-
-        &.success { background-color: @green; color: @white }
-        &.error { background-color: @red; color: @white }
-        &.warning { background-color: #AF6906; color: @black }
-    }
-
-    .warning {
-        color: @white !important;   
-        a {
-            color: inherit;
-            font-weight: bold;
-        }
-    }
-
-}
-
-form.innerlabels label.checkbox-label {
-    position: relative !important; 
-    margin-left: 10px !important;
-    padding-top: 1em !important;
-    top:11px !important; 
-    left:10px;
-    cursor: pointer;
-}
-
-
-
-// accounts specific styles
-.service-desc {
-    margin-top: 4em;    
-
-}
-
-
-// invitations table
-table {
-
-    td.consumed {
-        color: @red;
-    }
-
-    tr.consumed {
-        td.consumed {
-            color: @green;    
-        }
-    }
-}
-
-
-.row { .makeRow() }
-
-// footer
-.footer {
-    .clearfix();
-    color: lighten(@gray, 20%);
-    .transit();
-
-    a { .transit() }
-
-    &:hover {
-        color: @gray !important;
-        a {
-            color: @gray !important;
-        }
-    }
-
-    a {
-        color: lighten(@gray, 20%);    
-        text-decoration: none;
-
-        &:hover {
-            color: #000 !important;
-        }
-    }
-
-    li {
-        margin-bottom: @verticalSpacing/2;
-
-        &.header {
-            margin-bottom: @verticalSpacing;    
-        }
-    }
-
-    .col {
-        .makeColumn(4);
-        &:last-child, &.last {
-            width: 140px;
-            margin-right:0;
-        }
-    }
-    
-    .top.row, .last.row {
-        .makeRow();
-        margin: 20px 0;
-
-        .col {
-            .makeColumn(4);    
-
-            &.first {
-                margin-left: 0 !important;    
-            }
-            &.last {
-                .makeColumn(2);    
-            }
-        }
-    }
-    .top.row {
-        margin-top: 0;
-    }
-    
-    .last.row { 
-        text-align: left; 
-        font-size: 0.8em;
-        margin-bottom: 0;
-    }
-
-    .bottom.row {
-        .col {
-            .makeColumn(2);    
-            &:last-child, &.last {
-                width: 140px;
-                margin-right:0;
-            }
-        }
-    }
-}
-
-
-/*pagination*/
-.pagination {
-    a.page {
-        display: inline !important;
-
-    }    
-}
-
-/*blog styles*/
-.blog-entries {
-
-}
-
-.blog-entry {
-
-    .section();
-    .clearfix();
-    margin-bottom: 2*@verticalSpacing;    
-
-    .title {
-        margin-bottom: 1em;    
-        font-size: 1.1em;
-        line-height: 1.4em;
-    }    
-
-    .media {
-        img {
-            border: 1px solid @gray;    
-        }    
-    }
-    
-    .intro-content, .content {
-        margin-top: @verticalSpacing;
-
-        object {
-            margin: @verticalSpacing 0;    
-        }
-    }
-
-    .entry-info {
-        font-size: 0.7em;
-        margin-top: @verticalSpacing;    
-    }
-
-    &.single {
-        .entry-info {
-            margin-top: 0;
-            margin-bottom: @verticalSpacing;
-        }    
-    }
-}
-
-.section.twitter-feed {
-    
-    font-size: 1.1em;
-    .tweet {
-        &:last-child { margin-bottom:0; padding-bottom:0; border-bottom: none }
-        line-height: 1.3em;
-        font-size: 0.9em;
-        margin-bottom: @verticalSpacing;
-        color: @gray;
-
-        .date {
-            display: block;
-            font-size: 0.7em;
-            a {
-                text-decoration: none !important;
-                border: none;
-            }
-        }
-    }
-}
-
-.pagination .page {
-    margin-left: 0;    
-}
-
-
-.entry-list {
-    
-    .since {
-        font-size: 0.8em;    
-    }
-
-    .title {
-        margin-bottom: 1em;    
-    }
-
-    .content, .text {
-        margin-bottom: 2em;
-        font-size: 0.8em;
-    }
-}
-
-
-.initially-hidden {
-    display: none;    
-}
-
-/* recaptcha */
-#recaptcha_widget_div {
-    margin-top: 10px;
-    margin-left: -4px;
-
-    #recaptcha_instructions_image {
-        font-size: 0.8em;
-        margin-bottom: 10px;
-        display: block !important;
-    }
-
-    th, td {
-        line-height: 1;    
-    }
-}
-
-.checkbox-widget.checked {
-    background-color: #f00;
-    background-image: url("../images/checkbox.png");
-    background-position: 50% 50%;
-}
-
-.checkbox-widget {
-    border: 1px solid @gray;
-    width: 25px;
-    height: 25px;
-    display: block;
-    float: left;
-    cursor: pointer;
-    margin-top: @verticalSpacing/2 - 2;
-}
-
-
-// generic headings
-@hColor: @blue;
-.textcontent, .terms-content {
-    h1 {
-        font-size: 1.9em;    
-        margin-bottom: 0.2em;
-        margin-top: 1.2em;
-        color: @hColor;
-
-        &:first-child {
-            margin-top: 0;    
-        }
-    }
-
-    h2 {
-        font-size: 1.6em;
-        margin-bottom: 1.1em;
-        margin-top: 1.1em;
-
-        &:first-child {
-            margin-top: 0;    
-        }
-        color: lighten(@hColor, 5%);
-    }
-
-    h3 {
-        font-size: 1.3em;
-        margin-bottom: 1em;
-        margin-top: 1em;
-
-        &:first-child {
-            margin-top: 0;    
-        }
-        color: lighten(@hColor, 5%);
-    }
-
-    p {
-        margin-bottom: 1em;    
-        line-height: 1.5em;
-    }
-
-    .date {
-        margin: 1em 0;
-        font-size: 0.9em;
-        margin-bottom: 2em;
-        color: @gray;
-    }
-}
-
diff --git a/snf-astakos-app/astakos/im/static/im/images/_double-dots.jpg b/snf-astakos-app/astakos/im/static/im/images/_double-dots.jpg
new file mode 100644 (file)
index 0000000..6dbef14
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/_double-dots.jpg differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/accounts-logo.png b/snf-astakos-app/astakos/im/static/im/images/accounts-logo.png
new file mode 100644 (file)
index 0000000..765058c
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/accounts-logo.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/arrow-down.png b/snf-astakos-app/astakos/im/static/im/images/arrow-down.png
new file mode 100644 (file)
index 0000000..0ce3415
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/arrow-down.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/arrow-lt.png b/snf-astakos-app/astakos/im/static/im/images/arrow-lt.png
new file mode 100644 (file)
index 0000000..4ef0db9
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/arrow-lt.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/arrow-up.png b/snf-astakos-app/astakos/im/static/im/images/arrow-up.png
new file mode 100644 (file)
index 0000000..e379f19
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/arrow-up.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/arrow-white-reverse.png b/snf-astakos-app/astakos/im/static/im/images/arrow-white-reverse.png
new file mode 100644 (file)
index 0000000..e2692a7
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/arrow-white-reverse.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/arrow-white.png b/snf-astakos-app/astakos/im/static/im/images/arrow-white.png
new file mode 100644 (file)
index 0000000..3f04453
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/arrow-white.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/arrow_01.jpg b/snf-astakos-app/astakos/im/static/im/images/arrow_01.jpg
new file mode 100644 (file)
index 0000000..6ecb224
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/arrow_01.jpg differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/black-line.jpg b/snf-astakos-app/astakos/im/static/im/images/black-line.jpg
new file mode 100644 (file)
index 0000000..9dda941
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/black-line.jpg differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/dots.jpg b/snf-astakos-app/astakos/im/static/im/images/dots.jpg
new file mode 100644 (file)
index 0000000..07a7186
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/dots.jpg differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/double-dots-unequal.jpg b/snf-astakos-app/astakos/im/static/im/images/double-dots-unequal.jpg
new file mode 100644 (file)
index 0000000..5d9628c
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/double-dots-unequal.jpg differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/pictures/accounts_3.png b/snf-astakos-app/astakos/im/static/im/images/pictures/accounts_3.png
new file mode 100644 (file)
index 0000000..87a57b9
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/pictures/accounts_3.png differ
index e92e5cb..e53c375 100644 (file)
Binary files a/snf-astakos-app/astakos/im/static/im/images/pictures/login_pic.png and b/snf-astakos-app/astakos/im/static/im/images/pictures/login_pic.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/pictures/ring_bell_beige.gif b/snf-astakos-app/astakos/im/static/im/images/pictures/ring_bell_beige.gif
new file mode 100644 (file)
index 0000000..701937e
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/pictures/ring_bell_beige.gif differ
index 617e72a..b1b2627 100644 (file)
Binary files a/snf-astakos-app/astakos/im/static/im/images/pictures/signup_pic.png and b/snf-astakos-app/astakos/im/static/im/images/pictures/signup_pic.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/porta.png b/snf-astakos-app/astakos/im/static/im/images/porta.png
new file mode 100644 (file)
index 0000000..50947a6
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/porta.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/question-mark.jpg b/snf-astakos-app/astakos/im/static/im/images/question-mark.jpg
new file mode 100644 (file)
index 0000000..6096ffc
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/question-mark.jpg differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/refresh_g.png b/snf-astakos-app/astakos/im/static/im/images/refresh_g.png
new file mode 100644 (file)
index 0000000..5853972
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/refresh_g.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/refresh_lg.png b/snf-astakos-app/astakos/im/static/im/images/refresh_lg.png
new file mode 100644 (file)
index 0000000..556829c
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/refresh_lg.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/sound_g.png b/snf-astakos-app/astakos/im/static/im/images/sound_g.png
new file mode 100644 (file)
index 0000000..5d1c3ae
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/sound_g.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/sound_lg.png b/snf-astakos-app/astakos/im/static/im/images/sound_lg.png
new file mode 100644 (file)
index 0000000..74fe1fc
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/sound_lg.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/images/symbols.png b/snf-astakos-app/astakos/im/static/im/images/symbols.png
new file mode 100644 (file)
index 0000000..2e3849b
Binary files /dev/null and b/snf-astakos-app/astakos/im/static/im/images/symbols.png differ
diff --git a/snf-astakos-app/astakos/im/static/im/js/common.js b/snf-astakos-app/astakos/im/static/im/js/common.js
new file mode 100644 (file)
index 0000000..b743709
--- /dev/null
@@ -0,0 +1,210 @@
+function setContainerMinHeight( applicableDiv){\r
+       \r
+    if ( $(applicableDiv).length > 0 ) {\r
+        //var h = $('.header').height(); div.header is not found \r
+        var f = $('.footer').height();\r
+        var w = $(window).height();\r
+        var pTop = parseInt (($(applicableDiv).css('padding-top').replace("px", "")) );\r
+        var pBottom = parseInt (($(applicableDiv).css('padding-bottom').replace("px", "")));\r
+\r
+        var c = w - ( f+pTop+pBottom+36);//36 is header's height.\r
+        $(applicableDiv).css('min-height', c);\r
+    }    \r
+\r
+}\r
+\r
+\r
+//equal heights\r
\r
+(function($) {\r
+       $.fn.equalHeights = function(minHeight, maxHeight) {\r
+               tallest = (minHeight) ? minHeight : 0;\r
+               this.each(function() {\r
+                       if($(this).height() > tallest) {\r
+                               tallest = $(this).height();\r
+                       }\r
+               });\r
+               if((maxHeight) && tallest > maxHeight) tallest = maxHeight;\r
+               return this.each(function() {\r
+                       $(this).height(tallest);\r
+               });\r
+       }\r
+})(jQuery);\r
+\r
+\r
+\r
+// fix for iPhone - iPad orientation bug \r
+var metas = document.getElementsByTagName('meta');\r
+function resetViewport() {\r
+    var i;\r
+    if (navigator.userAgent.match(/iPhone/i)) {\r
+               for (i=0; i<metas.length; i++) {\r
+               if (metas[i].name == "viewport") {\r
+                       metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";\r
+               }\r
+               }\r
+       }\r
+}\r
+resetViewport();\r
+    \r
+window.onorientationchange = function() {\r
+    resetViewport();\r
+};\r
+    \r
+function gestureStart() {\r
+  for (i=0; i<metas.length; i++) {\r
+    if (metas[i].name == "viewport") {\r
+      metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";\r
+    }\r
+  }\r
+}\r
+\r
+if (navigator.userAgent.match(/iPhone/i)) {\r
+       document.addEventListener("gesturestart", gestureStart, false);\r
+}\r
+//end of fix\r
+\r
+$(document).ready(function() {\r
+       \r
+        \r
+    setContainerMinHeight('.container .wrapper');\r
+    \r
+       \r
+    $('.show-extra').click(function(e) {\r
+        e.preventDefault();\r
+        $(this).parents('.bg-wrap').find('.extra').slideToggle(600);\r
+    });\r
+    $('.hide-extra').click(function(e) {\r
+        e.preventDefault();\r
+        $(this).parents('.bg-wrap').find('.extra').slideUp(600);\r
+    });\r
+    \r
+    $('.box-more p').click(function(e) {\r
+        $(this).siblings('.clearfix').toggle('slow');\r
+        $(this).parents('.box-more').toggleClass('border');\r
+    });\r
+       \r
+       var fixTopMessageHeight = function() {\r
+               var topMargin = parseInt($('.mainlogo img').height())+parseInt($('.top-msg').css('marginBottom'));\r
+               $('.mainlogo').css('marginTop','-'+topMargin+'px');\r
+       }\r
+       \r
+       if ($('.mainlogo img').length > 0) {\r
+               $('.mainlogo img').bind('load', fixTopMessageHeight)\r
+       } else {\r
+               fixTopMessageHeight();\r
+       }\r
+       \r
+       $('.top-msg a.close').click(function(e) {\r
+               e.preventDefault();\r
+        $('.top-msg').animate({\r
+            paddingTop:'0',\r
+            paddingBottom:'0',\r
+            height:'0'\r
+        }, 1000, function (){\r
+             $('.top-msg').removeClass('active')\r
+        });\r
+        $('.mainlogo').animate({\r
+            marginTop:'0'\r
+        }, 1000, function (){\r
+             //todo\r
+        });\r
+    });        \r
+    //$('.dropkick-select').dropkick();\r
+    \r
\r
+    \r
+    $('.top-msg .success').parents('.top-msg').addClass('success');\r
+    $('.top-msg .error').parents('.top-msg').addClass('error');\r
+    $('.top-msg .warning').parents('.top-msg').addClass('warning');\r
+    $('.top-msg .info').parents('.top-msg').addClass('info');\r
+    \r
+    // clouds homepage animation\r
+    $('#animation a').hover(\r
+      function () {\r
+       \r
+        $(this).animate({\r
+           top: '+=-10'   \r
+           }, 600, function() {\r
+               if ($(this).find('img').attr('src').indexOf("_top") == -1) {\r
+                       var src = $(this).find('img').attr('src').replace('.png', '_top.png')\r
+                       $(this).find('img').attr("src", src);\r
+               }\r
+\r
+               });\r
+        $(this).siblings('p').find('img').animate({\r
+          width: '60%'       \r
+        }, 600);\r
+      }, \r
+      function () {\r
+\r
+        $(this).animate({top: '0'}, 600, function() {\r
+               var src = $(this).find('img').attr('src').replace('_top.png', '.png')\r
+                       $(this).find('img').attr("src", src);\r
+               });\r
+        $(this).siblings('p').find('img').animate({\r
+          width: '65%'       \r
+        },600);\r
+      }\r
+    );\r
+    \r
+    \r
+    /*$('#animation a').hover(\r
+      function () {\r
+       \r
+        $(this).animate({\r
+           top: '+=-10'   \r
+           }, 600);\r
+        $(this).siblings('p').find('img').animate({\r
+          width: '60%'       \r
+        });\r
+      }, \r
+      function () {\r
+\r
+        $(this).animate({top: '0'}, 600);\r
+        $(this).siblings('p').find('img').animate({\r
+          width: '65%'       \r
+        });\r
+      }\r
+    );*/\r
+    \r
+    \r
+    if ($('.widjets'.length > 0)) {\r
+               $('.widjets li div').equalHeights();\r
+       }\r
+    \r
+    $(function() {\r
+       if($("#from").length > 0 ){\r
+                       $( "#from" ).datepicker({\r
+                               defaultDate: "+0", \r
+                               dateFormat: "dd-mm-yy",\r
+                               onSelect: function( selectedDate ) {\r
+                                       $( "#to" ).datepicker( "option", "minDate", selectedDate );\r
+                               }\r
+                       });\r
+                       $( "#to" ).datepicker({\r
+                               defaultDate: "+1w", \r
+                               dateFormat: "dd-mm-yy",\r
+                               onSelect: function( selectedDate ) {\r
+                                       $( "#from" ).datepicker( "option", "maxDate", selectedDate );\r
+                               }\r
+                       });\r
+               }\r
+       });\r
+});\r
+\r
+$(window).resize(function() {\r
+    \r
+   setContainerMinHeight('.container .wrapper');\r
+   if ($('.widjets').length > 0) {\r
+               $('.widjets  li div').equalHeights();\r
+       }\r
+\r
+});\r
+\r
+\r
+\r
+\r
\r
+\r
+\r
index 4799691..5ae7cbb 100644 (file)
@@ -5,7 +5,7 @@
     return this.each(function() {
       // process checkboxes
       var $this = $(this);
-      var el = $('<span class="checkbox-widget" />');
+      var el = $('<a class="checkbox-widget" href="javascript:void(0)"/>');
       var form = $this.closest(".form-row");
 
       // add class to identify form rows which contain a checkbox
       el.click(function() {
         el.toggleClass("checked");
         $this.attr('checked', el.hasClass("checked"));
+      });
+      
+      el.keypress(function(e){
+       
+       if (e.keyCode == 0 || e.keyCode == 32){
+               e.preventDefault();
+               el.toggleClass("checked");
+               $this.attr('checked', el.hasClass("checked"));
+       }
       })
 
-      $this.after(el);
+      $this.prev('label').before(el);
     });
 
 
diff --git a/snf-astakos-app/astakos/im/static/im/js/html5shiv-printshiv.js b/snf-astakos-app/astakos/im/static/im/js/html5shiv-printshiv.js
new file mode 100644 (file)
index 0000000..67db706
--- /dev/null
@@ -0,0 +1,267 @@
+/*! HTML5 Shiv v3 | @jon_neal @afarkas @rem | MIT/GPL2 Licensed */\r
+(function (win, doc) {\r
+       // feature detection: whether the browser supports unknown elements\r
+       var supportsUnknownElements = (function (a) {\r
+               a.innerHTML = '<x-element></x-element>';\r
+               return a.childNodes.length === 1;\r
+       })(doc.createElement('a'));\r
+\r
+       // feature detection: whether the browser supports default html5 styles\r
+       var supportsHtml5Styles = (function (nav, docEl, compStyle) {\r
+               docEl.appendChild(nav);\r
+               return (compStyle = (compStyle ? compStyle(nav) : nav.currentStyle).display) && docEl.removeChild(nav) && compStyle === 'block';\r
+       })(doc.createElement('nav'), doc.documentElement, win.getComputedStyle);\r
+\r
+       // html5 global so that more elements can be shived and also so that existing shiving can be detected on iframes\r
+       // more elements can be added and shived with the following code: html5.elements.push('element-name'); shivDocument(document);\r
+       var html5 = {\r
+               // a list of html5 elements\r
+               elements: 'abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video'.split(' '),\r
+\r
+               // the shiv function\r
+               shivDocument: function (scopeDocument) {\r
+                       scopeDocument = scopeDocument || doc;\r
+\r
+                       // test if the document has already been shived\r
+                       if (scopeDocument.documentShived) {\r
+                               return;\r
+                       }\r
+                       scopeDocument.documentShived = true;\r
+\r
+                       // set local variables\r
+                       var\r
+                       documentCreateElement = scopeDocument.createElement,\r
+                       documentCreateDocumentFragment = scopeDocument.createDocumentFragment,\r
+                       documentHead = scopeDocument.getElementsByTagName('head')[0],\r
+                       documentCreateElementReplaceFunction = function (m) {\r
+                               documentCreateElement(m);\r
+                       };\r
+\r
+                       // shiv for unknown elements\r
+                       if (!supportsUnknownElements) {\r
+                               // shiv the document\r
+                               html5.elements.join(' ').replace(/\w+/g, documentCreateElementReplaceFunction);\r
+\r
+                               // shiv document create element function\r
+                               scopeDocument.createElement = function (nodeName) {\r
+                                       var element = documentCreateElement(nodeName);\r
+                                       if (element.canHaveChildren){\r
+                                               html5.shivDocument(element.document);\r
+                                       } \r
+                                       return element;\r
+                               };\r
+\r
+                               // shiv document create element function\r
+                               scopeDocument.createDocumentFragment = function () {\r
+                                       return html5.shivDocument(documentCreateDocumentFragment());\r
+                               };\r
+                       }\r
+\r
+                       // shiv for default html5 styles\r
+                       if (!supportsHtml5Styles && documentHead) {\r
+                               var div = documentCreateElement('div');\r
+                               div.innerHTML = ['x<style>',\r
+                                       'article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}', // Corrects block display not defined in IE6/7/8/9\r
+                                       'audio{display:none}', // Corrects audio display not defined in IE6/7/8/9\r
+                                       'canvas,video{display:inline-block;*display:inline;*zoom:1}', // Corrects canvas and video display not defined in IE6/7/8/9 (audio[controls] in IE7)\r
+                                       '[hidden]{display:none}audio[controls]{display:inline-block;*display:inline;*zoom:1}', // Corrects 'hidden' attribute and audio[controls] display not present in IE7/8/9\r
+                                       'mark{background:#FF0;color:#000}', // Addresses styling not present in IE6/7/8/9\r
+                               '</style>'].join('');\r
+                               documentHead.insertBefore(div.lastChild, documentHead.firstChild);\r
+                       }\r
+\r
+                       // return document (for potential chaining)\r
+                       return scopeDocument;\r
+               }\r
+       };\r
+\r
+       // shiv the document\r
+       html5.shivDocument(doc);\r
+\r
+       win.html5 = html5;\r
+\r
+       // ie print shiv\r
+       if (supportsUnknownElements || !win.attachEvent){return;}\r
+\r
+       // replaces an element with a namespace-shived clone (eg. header element becomes shiv:header element)\r
+       function namespaceShivElement(element) {\r
+               var elementClone, a, l, i;\r
+               if (doc.documentMode > 7) {\r
+                       elementClone = doc.createElement('font');\r
+                       elementClone.setAttribute('data-html5shiv', element.nodeName.toLowerCase());\r
+               }\r
+               else {\r
+                       elementClone = doc.createElement('shiv:' + element.nodeName);\r
+               }\r
+               while (element.firstChild) {\r
+                       elementClone.appendChild(element.childNodes[0]);\r
+               }\r
+               for (a = element.attributes, l = a.length, i = 0; i < l; ++i) {\r
+                       if (a[i].specified) {\r
+                               elementClone.setAttribute(a[i].nodeName, a[i].nodeValue);\r
+                       }\r
+               }\r
+               elementClone.style.cssText = element.style.cssText;\r
+               element.parentNode.replaceChild(elementClone, element);\r
+               elementClone.originalElement = element;\r
+       }\r
+\r
+       // restores an element from a namespace-shived clone (eg. shiv:header element becomes header element)\r
+       function unNamespaceShivElement(element) {\r
+               var originalElement = element.originalElement;\r
+               while (element.childNodes.length) {\r
+                       originalElement.appendChild(element.childNodes[0]);\r
+               }\r
+               element.parentNode.replaceChild(originalElement, element);\r
+       }\r
+\r
+       // get style sheet list css text\r
+       function getStyleSheetListCssText(styleSheetList, mediaType) {\r
+               // set media type\r
+               mediaType = mediaType || 'all';\r
+\r
+               // set local variables\r
+               var\r
+               i = -1,\r
+               cssTextArr = [],\r
+               styleSheetListLength = styleSheetList.length,\r
+               styleSheet,\r
+               styleSheetMediaType;\r
+\r
+               // loop through style sheets\r
+               while (++i < styleSheetListLength) {\r
+                       // get style sheet\r
+                       styleSheet = styleSheetList[i];\r
+\r
+                       // get style sheet media type\r
+                       styleSheetMediaType = styleSheet.media || mediaType;\r
+\r
+                       // skip a disabled or non-print style sheet\r
+                       if (styleSheet.disabled || !(/print|all/.test(styleSheetMediaType))) {\r
+                               continue;\r
+                       }\r
+\r
+                       // push style sheet css text\r
+                       cssTextArr.push(getStyleSheetListCssText(styleSheet.imports, styleSheetMediaType), styleSheet.cssText);\r
+               }\r
+\r
+               // return css text\r
+               return cssTextArr.join('');\r
+       }\r
+\r
+       // shiv css text (eg. header {} becomes shiv\:header {})\r
+       function shivCssText (cssText) {\r
+               // set local variables\r
+               var\r
+               elementsRegExp = new RegExp('(^|[\\s,{}])(' + win.html5.elements.join('|') + ')', 'gi'),\r
+               cssTextSplit = cssText.split('{'),\r
+               cssTextSplitLength = cssTextSplit.length,\r
+               i = -1;\r
+\r
+               // shiv css text\r
+               while (++i < cssTextSplitLength) {\r
+                       cssTextSplit[i] = cssTextSplit[i].split('}');\r
+                       if (doc.documentMode > 7) {\r
+                               cssTextSplit[i][cssTextSplit[i].length - 1] = cssTextSplit[i][cssTextSplit[i].length - 1].replace(elementsRegExp, '$1font[data-html5shiv="$2"]');\r
+                       }\r
+                       else {\r
+                               cssTextSplit[i][cssTextSplit[i].length - 1] = cssTextSplit[i][cssTextSplit[i].length - 1].replace(elementsRegExp, '$1shiv\\:$2');\r
+                       }\r
+                       cssTextSplit[i] = cssTextSplit[i].join('}');\r
+               }\r
+\r
+               // return shived css text\r
+               return cssTextSplit.join('{');\r
+       }\r
+\r
+       // the before print function\r
+       win.attachEvent(\r
+               'onbeforeprint',\r
+               function () {\r
+                       // test for scenarios where shiving is unnecessary or unavailable\r
+                       if (win.html5.supportsXElement || !doc.namespaces) {\r
+                               return;\r
+                       }\r
+\r
+                       // add the shiv namespace\r
+                       if (!doc.namespaces.shiv) {\r
+                               doc.namespaces.add('shiv');\r
+                       }\r
+\r
+                       // set local variables\r
+                       var\r
+                       i = -1,\r
+                       elementsRegExp = new RegExp('^(' + win.html5.elements.join('|') + ')$', 'i'),\r
+                       nodeList = doc.getElementsByTagName('*'),\r
+                       nodeListLength = nodeList.length,\r
+                       element,\r
+                       // sorts style and link files and returns their stylesheets\r
+                       shivedCSS = shivCssText(getStyleSheetListCssText((function (s, l) {\r
+                               var arr = [], i = s.length;\r
+                               while (i) {\r
+                                       arr.unshift(s[--i]);\r
+                               }\r
+                               i = l.length;\r
+                               while (i) {\r
+                                       arr.unshift(l[--i]);\r
+                               }\r
+                               arr.sort(function (a, b) {\r
+                                       return (a.sourceIndex - b.sourceIndex);\r
+                               });\r
+                               i = arr.length;\r
+                               while (i) {\r
+                                       arr[--i] = arr[i].styleSheet;\r
+                               }\r
+                               return arr;\r
+                       })(doc.getElementsByTagName('style'), doc.getElementsByTagName('link'))));\r
+\r
+                       // loop through document elements\r
+                       while (++i < nodeListLength) {\r
+                               // get element\r
+                               element = nodeList[i];\r
+\r
+                               // clone matching elements as shiv namespaced\r
+                               if (elementsRegExp.test(element.nodeName)) {\r
+                                       namespaceShivElement(element);\r
+                               }\r
+                       }\r
+\r
+                       // set new shived css text\r
+                       doc.appendChild(doc._shivedStyleSheet = doc.createElement('style')).styleSheet.cssText = shivedCSS;\r
+               }\r
+       );\r
+\r
+       // the after print function\r
+       win.attachEvent(\r
+               'onafterprint',\r
+               function() {\r
+                       // test for scenarios where shiving is unnecessary\r
+                       if (win.html5.supportsXElement || !doc.namespaces) {\r
+                               return;\r
+                       }\r
+\r
+                       // set local variables\r
+                       var\r
+                       i = -1,\r
+                       nodeList = doc.getElementsByTagName('*'),\r
+                       nodeListLength = nodeList.length,\r
+                       element;\r
+\r
+                       // loop through document elements\r
+                       while (++i < nodeListLength) {\r
+                               // get element\r
+                               element = nodeList[i];\r
+\r
+                               // restore original elements\r
+                               if (element.originalElement) {\r
+                                       unNamespaceShivElement(element);\r
+                               }\r
+                       }\r
+\r
+                       // cut new shived css text\r
+                       if (doc._shivedStyleSheet) {\r
+                               doc._shivedStyleSheet.parentNode.removeChild(doc._shivedStyleSheet);\r
+                       }\r
+               }\r
+       );\r
+})(this, document);
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/js/jqModal.js b/snf-astakos-app/astakos/im/static/im/js/jqModal.js
new file mode 100644 (file)
index 0000000..3aac816
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * jqModal - Minimalist Modaling with jQuery
+ *   (http://dev.iceburg.net/jquery/jqModal/)
+ *
+ * Copyright (c) 2007,2008 Brice Burgess <bhb@iceburg.net>
+ * Dual licensed under the MIT and GPL licenses:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *   http://www.gnu.org/licenses/gpl.html
+ * 
+ * $Version: 03/01/2009 +r14
+ */
+(function($) {
+$.fn.jqm=function(o){
+var p={
+overlay: 50,
+overlayClass: 'jqmOverlay',
+closeClass: 'jqmClose',
+trigger: '.jqModal',
+ajax: F,
+ajaxText: '',
+target: F,
+modal: F,
+toTop: F,
+onShow: F,
+onHide: F,
+onLoad: F
+};
+return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
+H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
+if(p.trigger)$(this).jqmAddTrigger(p.trigger);
+});};
+
+$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
+$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
+$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});};
+$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});};
+
+$.jqm = {
+hash:{},
+open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
+ if(c.modal) {if(!A[0])L('bind');A.push(s);}
+ else if(c.overlay > 0)h.w.jqmAddClose(o);
+ else o=F;
+
+ h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
+ if(ie6){$('html,body').css({height:'100%',width:'100%'});if(o){o=o.css({position:'absolute'})[0];for(var y in {Top:1,Left:1})o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");}}
+
+ if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
+  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
+ else if(cc)h.w.jqmAddClose($(cc,h.w));
+
+ if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);        
+ (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
+},
+close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
+ if(A[0]){A.pop();if(!A[0])L('unbind');}
+ if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
+ if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
+},
+params:{}};
+var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false,
+i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
+e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
+f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
+L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
+m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
+hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
+ if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
+})(jQuery);
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/js/jquery.colorbox.js b/snf-astakos-app/astakos/im/static/im/js/jquery.colorbox.js
new file mode 100644 (file)
index 0000000..a82c6af
--- /dev/null
@@ -0,0 +1,888 @@
+// ColorBox v1.3.19 - jQuery lightbox plugin\r
+// (c) 2011 Jack Moore - jacklmoore.com\r
+// License: http://www.opensource.org/licenses/mit-license.php\r
+(function ($, document, window) {\r
+    var\r
+    // Default settings object.        \r
+    // See http://jacklmoore.com/colorbox for details.\r
+    defaults = {\r
+        transition: "elastic",\r
+        speed: 300,\r
+        width: false,\r
+        initialWidth: "600",\r
+        innerWidth: false,\r
+        maxWidth: false,\r
+        height: false,\r
+        initialHeight: "450",\r
+        innerHeight: false,\r
+        maxHeight: false,\r
+        scalePhotos: true,\r
+        scrolling: true,\r
+        inline: false,\r
+        html: false,\r
+        iframe: false,\r
+        fastIframe: true,\r
+        photo: false,\r
+        href: false,\r
+        title: false,\r
+        rel: false,\r
+        opacity: 0.9,\r
+        preloading: true,\r
+        current: "image {current} of {total}",\r
+        previous: "previous",\r
+        next: "next",\r
+        close: "close",\r
+        open: false,\r
+        returnFocus: true,\r
+        reposition: true,\r
+        loop: true,\r
+        slideshow: false,\r
+        slideshowAuto: true,\r
+        slideshowSpeed: 2500,\r
+        slideshowStart: "start slideshow",\r
+        slideshowStop: "stop slideshow",\r
+        onOpen: false,\r
+        onLoad: false,\r
+        onComplete: false,\r
+        onCleanup: false,\r
+        onClosed: false,\r
+        overlayClose: true,            \r
+        escKey: true,\r
+        arrowKey: true,\r
+        top: false,\r
+        bottom: false,\r
+        left: false,\r
+        right: false,\r
+        fixed: false,\r
+        data: undefined\r
+    },\r
+       \r
+    // Abstracting the HTML and event identifiers for easy rebranding\r
+    colorbox = 'colorbox',\r
+    prefix = 'cbox',\r
+    boxElement = prefix + 'Element',\r
+    \r
+    // Events  \r
+    event_open = prefix + '_open',\r
+    event_load = prefix + '_load',\r
+    event_complete = prefix + '_complete',\r
+    event_cleanup = prefix + '_cleanup',\r
+    event_closed = prefix + '_closed',\r
+    event_purge = prefix + '_purge',\r
+    \r
+    // Special Handling for IE\r
+    isIE = !$.support.opacity && !$.support.style, // IE7 & IE8\r
+    isIE6 = isIE && !window.XMLHttpRequest, // IE6\r
+    event_ie6 = prefix + '_IE6',\r
+\r
+    // Cached jQuery Object Variables\r
+    $overlay,\r
+    $box,\r
+    $wrap,\r
+    $content,\r
+    $topBorder,\r
+    $leftBorder,\r
+    $rightBorder,\r
+    $bottomBorder,\r
+    $related,\r
+    $window,\r
+    $loaded,\r
+    $loadingBay,\r
+    $loadingOverlay,\r
+    $title,\r
+    $current,\r
+    $slideshow,\r
+    $next,\r
+    $prev,\r
+    $close,\r
+    $groupControls,\r
+    \r
+    // Variables for cached values or use across multiple functions\r
+    settings,\r
+    interfaceHeight,\r
+    interfaceWidth,\r
+    loadedHeight,\r
+    loadedWidth,\r
+    element,\r
+    index,\r
+    photo,\r
+    open,\r
+    active,\r
+    closing,\r
+    loadingTimer,\r
+    publicMethod,\r
+    div = "div",\r
+    init;\r
+\r
+       // ****************\r
+       // HELPER FUNCTIONS\r
+       // ****************\r
+    \r
+       // Convience function for creating new jQuery objects\r
+    function $tag(tag, id, css) {\r
+               var element = document.createElement(tag);\r
+\r
+               if (id) {\r
+                       element.id = prefix + id;\r
+               }\r
+\r
+               if (css) {\r
+                       element.style.cssText = css;\r
+               }\r
+\r
+               return $(element);\r
+    }\r
+\r
+       // Determine the next and previous members in a group.\r
+       function getIndex(increment) {\r
+               var \r
+               max = $related.length, \r
+               newIndex = (index + increment) % max;\r
+               \r
+               return (newIndex < 0) ? max + newIndex : newIndex;\r
+       }\r
+\r
+       // Convert '%' and 'px' values to integers\r
+       function setSize(size, dimension) {\r
+               return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));\r
+       }\r
+       \r
+       // Checks an href to see if it is a photo.\r
+       // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.\r
+       function isImage(url) {\r
+               return settings.photo || /\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(url);\r
+       }\r
+       \r
+       // Assigns function results to their respective properties\r
+       function makeSettings() {\r
+        var i;\r
+        settings = $.extend({}, $.data(element, colorbox));\r
+        \r
+               for (i in settings) {\r
+                       if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.\r
+                           settings[i] = settings[i].call(element);\r
+                       }\r
+               }\r
+        \r
+               settings.rel = settings.rel || element.rel || 'nofollow';\r
+               settings.href = settings.href || $(element).attr('href');\r
+               settings.title = settings.title || element.title;\r
+        \r
+        if (typeof settings.href === "string") {\r
+            settings.href = $.trim(settings.href);\r
+        }\r
+       }\r
+\r
+       function trigger(event, callback) {\r
+               $.event.trigger(event);\r
+               if (callback) {\r
+                       callback.call(element);\r
+               }\r
+       }\r
+\r
+       // Slideshow functionality\r
+       function slideshow() {\r
+               var\r
+               timeOut,\r
+               className = prefix + "Slideshow_",\r
+               click = "click." + prefix,\r
+               start,\r
+               stop,\r
+               clear;\r
+               \r
+               if (settings.slideshow && $related[1]) {\r
+                       start = function () {\r
+                               $slideshow\r
+                                       .text(settings.slideshowStop)\r
+                                       .unbind(click)\r
+                                       .bind(event_complete, function () {\r
+                                               if (settings.loop || $related[index + 1]) {\r
+                                                       timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);\r
+                                               }\r
+                                       })\r
+                                       .bind(event_load, function () {\r
+                                               clearTimeout(timeOut);\r
+                                       })\r
+                                       .one(click + ' ' + event_cleanup, stop);\r
+                               $box.removeClass(className + "off").addClass(className + "on");\r
+                               timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);\r
+                       };\r
+                       \r
+                       stop = function () {\r
+                               clearTimeout(timeOut);\r
+                               $slideshow\r
+                                       .text(settings.slideshowStart)\r
+                                       .unbind([event_complete, event_load, event_cleanup, click].join(' '))\r
+                                       .one(click, function () {\r
+                                               publicMethod.next();\r
+                                               start();\r
+                                       });\r
+                               $box.removeClass(className + "on").addClass(className + "off");\r
+                       };\r
+                       \r
+                       if (settings.slideshowAuto) {\r
+                               start();\r
+                       } else {\r
+                               stop();\r
+                       }\r
+               } else {\r
+            $box.removeClass(className + "off " + className + "on");\r
+        }\r
+       }\r
+\r
+       function launch(target) {\r
+               if (!closing) {\r
+                       \r
+                       element = target;\r
+                       \r
+                       makeSettings();\r
+                       \r
+                       $related = $(element);\r
+                       \r
+                       index = 0;\r
+                       \r
+                       if (settings.rel !== 'nofollow') {\r
+                               $related = $('.' + boxElement).filter(function () {\r
+                                       var relRelated = $.data(this, colorbox).rel || this.rel;\r
+                                       return (relRelated === settings.rel);\r
+                               });\r
+                               index = $related.index(element);\r
+                               \r
+                               // Check direct calls to ColorBox.\r
+                               if (index === -1) {\r
+                                       $related = $related.add(element);\r
+                                       index = $related.length - 1;\r
+                               }\r
+                       }\r
+                       \r
+                       if (!open) {\r
+                               open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.\r
+                               \r
+                               $box.show();\r
+                               \r
+                               if (settings.returnFocus) {\r
+                                       $(element).blur().one(event_closed, function () {\r
+                                               $(this).focus();\r
+                                       });\r
+                               }\r
+                               \r
+                               // +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'\r
+                               $overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();\r
+                               \r
+                               // Opens inital empty ColorBox prior to content being loaded.\r
+                               settings.w = setSize(settings.initialWidth, 'x');\r
+                               settings.h = setSize(settings.initialHeight, 'y');\r
+                               publicMethod.position();\r
+                               \r
+                               if (isIE6) {\r
+                                       $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {\r
+                                               $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});\r
+                                       }).trigger('resize.' + event_ie6);\r
+                               }\r
+                               \r
+                               trigger(event_open, settings.onOpen);\r
+                               \r
+                               $groupControls.add($title).hide();\r
+                               \r
+                               $close.html(settings.close).show();\r
+                       }\r
+                       \r
+                       publicMethod.load(true);\r
+               }\r
+       }\r
+\r
+       // ColorBox's markup needs to be added to the DOM prior to being called\r
+       // so that the browser will go ahead and load the CSS background images.\r
+       function appendHTML() {\r
+               if (!$box && document.body) {\r
+                       init = false;\r
+\r
+                       $window = $(window);\r
+                       $box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''}).hide();\r
+                       $overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();\r
+                       $wrap = $tag(div, "Wrapper");\r
+                       $content = $tag(div, "Content").append(\r
+                               $loaded = $tag(div, "LoadedContent", 'width:0; height:0; overflow:hidden'),\r
+                               $loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic")),\r
+                               $title = $tag(div, "Title"),\r
+                               $current = $tag(div, "Current"),\r
+                               $next = $tag(div, "Next"),\r
+                               $prev = $tag(div, "Previous"),\r
+                               $slideshow = $tag(div, "Slideshow").bind(event_open, slideshow),\r
+                               $close = $tag(div, "Close")\r
+                       );\r
+                       \r
+                       $wrap.append( // The 3x3 Grid that makes up ColorBox\r
+                               $tag(div).append(\r
+                                       $tag(div, "TopLeft"),\r
+                                       $topBorder = $tag(div, "TopCenter"),\r
+                                       $tag(div, "TopRight")\r
+                               ),\r
+                               $tag(div, false, 'clear:left').append(\r
+                                       $leftBorder = $tag(div, "MiddleLeft"),\r
+                                       $content,\r
+                                       $rightBorder = $tag(div, "MiddleRight")\r
+                               ),\r
+                               $tag(div, false, 'clear:left').append(\r
+                                       $tag(div, "BottomLeft"),\r
+                                       $bottomBorder = $tag(div, "BottomCenter"),\r
+                                       $tag(div, "BottomRight")\r
+                               )\r
+                       ).find('div div').css({'float': 'left'});\r
+                       \r
+                       $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');\r
+                       \r
+                       $groupControls = $next.add($prev).add($current).add($slideshow);\r
+\r
+                       $(document.body).append($overlay, $box.append($wrap, $loadingBay));\r
+               }\r
+       }\r
+\r
+       // Add ColorBox's event bindings\r
+       function addBindings() {\r
+               if ($box) {\r
+                       if (!init) {\r
+                               init = true;\r
+\r
+                               // Cache values needed for size calculations\r
+                               interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6\r
+                               interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();\r
+                               loadedHeight = $loaded.outerHeight(true);\r
+                               loadedWidth = $loaded.outerWidth(true);\r
+                               \r
+                               // Setting padding to remove the need to do size conversions during the animation step.\r
+                               $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth});\r
+\r
+                               // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.\r
+                               $next.click(function () {\r
+                                       publicMethod.next();\r
+                               });\r
+                               $prev.click(function () {\r
+                                       publicMethod.prev();\r
+                               });\r
+                               $close.click(function () {\r
+                                       publicMethod.close();\r
+                               });\r
+                               $overlay.click(function () {\r
+                                       if (settings.overlayClose) {\r
+                                               publicMethod.close();\r
+                                       }\r
+                               });\r
+                               \r
+                               // Key Bindings\r
+                               $(document).bind('keydown.' + prefix, function (e) {\r
+                                       var key = e.keyCode;\r
+                                       if (open && settings.escKey && key === 27) {\r
+                                               e.preventDefault();\r
+                                               publicMethod.close();\r
+                                       }\r
+                                       if (open && settings.arrowKey && $related[1]) {\r
+                                               if (key === 37) {\r
+                                                       e.preventDefault();\r
+                                                       $prev.click();\r
+                                               } else if (key === 39) {\r
+                                                       e.preventDefault();\r
+                                                       $next.click();\r
+                                               }\r
+                                       }\r
+                               });\r
+\r
+                               $('.' + boxElement, document).live('click', function (e) {\r
+                               // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.\r
+                               // See: http://jacklmoore.com/notes/click-events/\r
+                               if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {\r
+                                   e.preventDefault();\r
+                                   launch(this);\r
+                               }\r
+                           });\r
+                       }\r
+                       return true;\r
+               }\r
+               return false;\r
+       }\r
+\r
+       // Don't do anything if ColorBox already exists.\r
+       if ($.colorbox) {\r
+               return;\r
+       }\r
+\r
+       // Append the HTML when the DOM loads\r
+       $(appendHTML);\r
+\r
+\r
+       // ****************\r
+       // PUBLIC FUNCTIONS\r
+       // Usage format: $.fn.colorbox.close();\r
+       // Usage from within an iframe: parent.$.fn.colorbox.close();\r
+       // ****************\r
+       \r
+       publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {\r
+               var $this = this;\r
+               \r
+        options = options || {};\r
+        \r
+        appendHTML();\r
+\r
+               if (addBindings()) {\r
+                       if (!$this[0]) {\r
+                               if ($this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.\r
+                       return $this;\r
+                   }\r
+                   // if no selector was given (ie. $.colorbox()), create a temporary element to work with\r
+                               $this = $('<a/>');\r
+                               options.open = true; // assume an immediate open\r
+                       }\r
+                       \r
+                       if (callback) {\r
+                               options.onComplete = callback;\r
+                       }\r
+                       \r
+                       $this.each(function () {\r
+                               $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));\r
+                       }).addClass(boxElement);\r
+                       \r
+               if (($.isFunction(options.open) && options.open.call($this)) || options.open) {\r
+                               launch($this[0]);\r
+                       }\r
+               }\r
+        \r
+               return $this;\r
+       };\r
+\r
+       publicMethod.position = function (speed, loadedCallback) {\r
+        var \r
+        top = 0, \r
+        left = 0, \r
+        offset = $box.offset(),\r
+        scrollTop = $window.scrollTop(), \r
+        scrollLeft = $window.scrollLeft();\r
+        \r
+        $window.unbind('resize.' + prefix);\r
+\r
+        // remove the modal so that it doesn't influence the document width/height        \r
+        $box.css({top: -9e4, left: -9e4});\r
+\r
+        if (settings.fixed && !isIE6) {\r
+                       offset.top -= scrollTop;\r
+                       offset.left -= scrollLeft;\r
+            $box.css({position: 'fixed'});\r
+        } else {\r
+            top = scrollTop;\r
+            left = scrollLeft;\r
+            $box.css({position: 'absolute'});\r
+        }\r
+\r
+               // keeps the top and left positions within the browser's viewport.\r
+        if (settings.right !== false) {\r
+            left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);\r
+        } else if (settings.left !== false) {\r
+            left += setSize(settings.left, 'x');\r
+        } else {\r
+            left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);\r
+        }\r
+        \r
+        if (settings.bottom !== false) {\r
+            top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);\r
+        } else if (settings.top !== false) {\r
+            top += setSize(settings.top, 'y');\r
+        } else {\r
+            top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);\r
+        }\r
+\r
+        $box.css({top: offset.top, left: offset.left});\r
+\r
+               // setting the speed to 0 to reduce the delay between same-sized content.\r
+               speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;\r
+        \r
+               // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,\r
+               // but it has to be shrank down around the size of div#colorbox when it's done.  If not,\r
+               // it can invoke an obscure IE bug when using iframes.\r
+               $wrap[0].style.width = $wrap[0].style.height = "9999px";\r
+               \r
+               function modalDimensions(that) {\r
+                       $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;\r
+                       $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;\r
+               }\r
+               \r
+               $box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: top, left: left}, {\r
+                       duration: speed,\r
+                       complete: function () {\r
+                               modalDimensions(this);\r
+                               \r
+                               active = false;\r
+                               \r
+                               // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.\r
+                               $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";\r
+                               $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";\r
+                \r
+                if (settings.reposition) {\r
+                       setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.\r
+                           $window.bind('resize.' + prefix, publicMethod.position);\r
+                       }, 1);\r
+                   }\r
+\r
+                               if (loadedCallback) {\r
+                                       loadedCallback();\r
+                               }\r
+                       },\r
+                       step: function () {\r
+                               modalDimensions(this);\r
+                       }\r
+               });\r
+       };\r
+\r
+       publicMethod.resize = function (options) {\r
+               if (open) {\r
+                       options = options || {};\r
+                       \r
+                       if (options.width) {\r
+                               settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;\r
+                       }\r
+                       if (options.innerWidth) {\r
+                               settings.w = setSize(options.innerWidth, 'x');\r
+                       }\r
+                       $loaded.css({width: settings.w});\r
+                       \r
+                       if (options.height) {\r
+                               settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;\r
+                       }\r
+                       if (options.innerHeight) {\r
+                               settings.h = setSize(options.innerHeight, 'y');\r
+                       }\r
+                       if (!options.innerHeight && !options.height) {\r
+                               $loaded.css({height: "auto"});\r
+                               settings.h = $loaded.height();\r
+                       }\r
+                       $loaded.css({height: settings.h});\r
+                       \r
+                       publicMethod.position(settings.transition === "none" ? 0 : settings.speed);\r
+               }\r
+       };\r
+\r
+       publicMethod.prep = function (object) {\r
+               if (!open) {\r
+                       return;\r
+               }\r
+               \r
+               var callback, speed = settings.transition === "none" ? 0 : settings.speed;\r
+               \r
+               $loaded.remove();\r
+               $loaded = $tag(div, 'LoadedContent').append(object);\r
+               \r
+               function getWidth() {\r
+                       settings.w = settings.w || $loaded.width();\r
+                       settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;\r
+                       return settings.w;\r
+               }\r
+               function getHeight() {\r
+                       settings.h = settings.h || $loaded.height();\r
+                       settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;\r
+                       return settings.h;\r
+               }\r
+               \r
+               $loaded.hide()\r
+               .appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.\r
+               .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})\r
+               .css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.\r
+               .prependTo($content);\r
+               \r
+               $loadingBay.hide();\r
+               \r
+               // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.\r
+               //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});\r
+               \r
+        $(photo).css({'float': 'none'});\r
+        \r
+               // Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.\r
+               if (isIE6) {\r
+                       $('select').not($box.find('select')).filter(function () {\r
+                               return this.style.visibility !== 'hidden';\r
+                       }).css({'visibility': 'hidden'}).one(event_cleanup, function () {\r
+                               this.style.visibility = 'inherit';\r
+                       });\r
+               }\r
+               \r
+               callback = function () {\r
+            var preload, i, total = $related.length, iframe, frameBorder = 'frameBorder', allowTransparency = 'allowTransparency', complete, src, img;\r
+            \r
+            if (!open) {\r
+                return;\r
+            }\r
+            \r
+            function removeFilter() {\r
+                if (isIE) {\r
+                    $box[0].style.removeAttribute('filter');\r
+                }\r
+            }\r
+            \r
+            complete = function () {\r
+                clearTimeout(loadingTimer);\r
+                $loadingOverlay.hide();\r
+                trigger(event_complete, settings.onComplete);\r
+            };\r
+            \r
+            if (isIE) {\r
+                //This fadeIn helps the bicubic resampling to kick-in.\r
+                if (photo) {\r
+                    $loaded.fadeIn(100);\r
+                }\r
+            }\r
+            \r
+            $title.html(settings.title).add($loaded).show();\r
+            \r
+            if (total > 1) { // handle grouping\r
+                if (typeof settings.current === "string") {\r
+                    $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();\r
+                }\r
+                \r
+                $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);\r
+                $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);\r
+                               \r
+                if (settings.slideshow) {\r
+                    $slideshow.show();\r
+                }\r
+                               \r
+                // Preloads images within a rel group\r
+                if (settings.preloading) {\r
+                                       preload = [\r
+                                               getIndex(-1),\r
+                                               getIndex(1)\r
+                                       ];\r
+                                       while (i = $related[preload.pop()]) {\r
+                                               src = $.data(i, colorbox).href || i.href;\r
+                                               if ($.isFunction(src)) {\r
+                                                       src = src.call(i);\r
+                                               }\r
+                                               if (isImage(src)) {\r
+                                                       img = new Image();\r
+                                                       img.src = src;\r
+                                               }\r
+                                       }\r
+                }\r
+            } else {\r
+                $groupControls.hide();\r
+            }\r
+            \r
+            if (settings.iframe) {\r
+                iframe = $tag('iframe')[0];\r
+                \r
+                if (frameBorder in iframe) {\r
+                    iframe[frameBorder] = 0;\r
+                }\r
+                if (allowTransparency in iframe) {\r
+                    iframe[allowTransparency] = "true";\r
+                }\r
+                // give the iframe a unique name to prevent caching\r
+                iframe.name = prefix + (+new Date());\r
+                if (settings.fastIframe) {\r
+                    complete();\r
+                } else {\r
+                    $(iframe).one('load', complete);\r
+                }\r
+                iframe.src = settings.href;\r
+                if (!settings.scrolling) {\r
+                    iframe.scrolling = "no";\r
+                }\r
+                $(iframe).addClass(prefix + 'Iframe').appendTo($loaded).one(event_purge, function () {\r
+                    iframe.src = "//about:blank";\r
+                });\r
+            } else {\r
+                complete();\r
+            }\r
+            \r
+            if (settings.transition === 'fade') {\r
+                $box.fadeTo(speed, 1, removeFilter);\r
+            } else {\r
+                removeFilter();\r
+            }\r
+               };\r
+               \r
+               if (settings.transition === 'fade') {\r
+                       $box.fadeTo(speed, 0, function () {\r
+                               publicMethod.position(0, callback);\r
+                       });\r
+               } else {\r
+                       publicMethod.position(speed, callback);\r
+               }\r
+       };\r
+\r
+       publicMethod.load = function (launched) {\r
+               var href, setResize, prep = publicMethod.prep;\r
+               \r
+               active = true;\r
+               \r
+               photo = false;\r
+               \r
+               element = $related[index];\r
+               \r
+               if (!launched) {\r
+                       makeSettings();\r
+               }\r
+               \r
+               trigger(event_purge);\r
+               \r
+               trigger(event_load, settings.onLoad);\r
+               \r
+               settings.h = settings.height ?\r
+                               setSize(settings.height, 'y') - loadedHeight - interfaceHeight :\r
+                               settings.innerHeight && setSize(settings.innerHeight, 'y');\r
+               \r
+               settings.w = settings.width ?\r
+                               setSize(settings.width, 'x') - loadedWidth - interfaceWidth :\r
+                               settings.innerWidth && setSize(settings.innerWidth, 'x');\r
+               \r
+               // Sets the minimum dimensions for use in image scaling\r
+               settings.mw = settings.w;\r
+               settings.mh = settings.h;\r
+               \r
+               // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.\r
+               // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.\r
+               if (settings.maxWidth) {\r
+                       settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;\r
+                       settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;\r
+               }\r
+               if (settings.maxHeight) {\r
+                       settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;\r
+                       settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;\r
+               }\r
+               \r
+               href = settings.href;\r
+               \r
+        loadingTimer = setTimeout(function () {\r
+            $loadingOverlay.show();\r
+        }, 100);\r
+        \r
+               if (settings.inline) {\r
+                       // Inserts an empty placeholder where inline content is being pulled from.\r
+                       // An event is bound to put inline content back when ColorBox closes or loads new content.\r
+                       $tag(div).hide().insertBefore($(href)[0]).one(event_purge, function () {\r
+                               $(this).replaceWith($loaded.children());\r
+                       });\r
+                       prep($(href));\r
+               } else if (settings.iframe) {\r
+                       // IFrame element won't be added to the DOM until it is ready to be displayed,\r
+                       // to avoid problems with DOM-ready JS that might be trying to run in that iframe.\r
+                       prep(" ");\r
+               } else if (settings.html) {\r
+                       prep(settings.html);\r
+               } else if (isImage(href)) {\r
+                       $(photo = new Image())\r
+                       .addClass(prefix + 'Photo')\r
+                       .error(function () {\r
+                               settings.title = false;\r
+                               prep($tag(div, 'Error').text('This image could not be loaded'));\r
+                       })\r
+                       .load(function () {\r
+                               var percent;\r
+                               photo.onload = null; //stops animated gifs from firing the onload repeatedly.\r
+                               \r
+                               if (settings.scalePhotos) {\r
+                                       setResize = function () {\r
+                                               photo.height -= photo.height * percent;\r
+                                               photo.width -= photo.width * percent;   \r
+                                       };\r
+                                       if (settings.mw && photo.width > settings.mw) {\r
+                                               percent = (photo.width - settings.mw) / photo.width;\r
+                                               setResize();\r
+                                       }\r
+                                       if (settings.mh && photo.height > settings.mh) {\r
+                                               percent = (photo.height - settings.mh) / photo.height;\r
+                                               setResize();\r
+                                       }\r
+                               }\r
+                               \r
+                               if (settings.h) {\r
+                                       photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';\r
+                               }\r
+                               \r
+                               if ($related[1] && (settings.loop || $related[index + 1])) {\r
+                                       photo.style.cursor = 'pointer';\r
+                                       photo.onclick = function () {\r
+                        publicMethod.next();\r
+                    };\r
+                               }\r
+                               \r
+                               if (isIE) {\r
+                                       photo.style.msInterpolationMode = 'bicubic';\r
+                               }\r
+                               \r
+                               setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.\r
+                                       prep(photo);\r
+                               }, 1);\r
+                       });\r
+                       \r
+                       setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.\r
+                               photo.src = href;\r
+                       }, 1);\r
+               } else if (href) {\r
+                       $loadingBay.load(href, settings.data, function (data, status, xhr) {\r
+                               prep(status === 'error' ? $tag(div, 'Error').text('Request unsuccessful: ' + xhr.statusText) : $(this).contents());\r
+                       });\r
+               }\r
+       };\r
+        \r
+       // Navigates to the next page/image in a set.\r
+       publicMethod.next = function () {\r
+               if (!active && $related[1] && (settings.loop || $related[index + 1])) {\r
+                       index = getIndex(1);\r
+                       publicMethod.load();\r
+               }\r
+       };\r
+       \r
+       publicMethod.prev = function () {\r
+               if (!active && $related[1] && (settings.loop || index)) {\r
+                       index = getIndex(-1);\r
+                       publicMethod.load();\r
+               }\r
+       };\r
+\r
+       // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();\r
+       publicMethod.close = function () {\r
+               if (open && !closing) {\r
+                       \r
+                       closing = true;\r
+                       \r
+                       open = false;\r
+                       \r
+                       trigger(event_cleanup, settings.onCleanup);\r
+                       \r
+                       $window.unbind('.' + prefix + ' .' + event_ie6);\r
+                       \r
+                       $overlay.fadeTo(200, 0);\r
+                       \r
+                       $box.stop().fadeTo(300, 0, function () {\r
+                 \r
+                               $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();\r
+                               \r
+                               trigger(event_purge);\r
+                               \r
+                               $loaded.remove();\r
+                               \r
+                               setTimeout(function () {\r
+                                       closing = false;\r
+                                       trigger(event_closed, settings.onClosed);\r
+                               }, 1);\r
+                       });\r
+               }\r
+       };\r
+\r
+       // Removes changes ColorBox made to the document, but does not remove the plugin\r
+       // from jQuery.\r
+       publicMethod.remove = function () {\r
+               $([]).add($box).add($overlay).remove();\r
+               $box = null;\r
+               $('.' + boxElement)\r
+                       .removeData(colorbox)\r
+                       .removeClass(boxElement)\r
+                       .die();\r
+       };\r
+\r
+       // A method for fetching the current element ColorBox is referencing.\r
+       // returns a jQuery object.\r
+       publicMethod.element = function () {\r
+               return $(element);\r
+       };\r
+\r
+       publicMethod.settings = defaults;\r
+\r
+}(jQuery, document, this));
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/js/jquery.dropkick-1.0.0.js b/snf-astakos-app/astakos/im/static/im/js/jquery.dropkick-1.0.0.js
new file mode 100644 (file)
index 0000000..aaffc4b
--- /dev/null
@@ -0,0 +1,402 @@
+/**
+ * DropKick
+ *
+ * Highly customizable <select> lists
+ * https://github.com/JamieLottering/DropKick
+ *
+ * &copy; 2011 Jamie Lottering <http://github.com/JamieLottering>
+ *                        <http://twitter.com/JamieLottering>
+ * 
+ */
+(function ($, window, document) {
+
+  var ie6 = false;
+
+  // Help prevent flashes of unstyled content
+  if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
+    ie6 = true;
+  } else {
+    document.documentElement.className = document.documentElement.className + ' dk_fouc';
+  }
+  
+  var
+    // Public methods exposed to $.fn.dropkick()
+    methods = {},
+
+    // Cache every <select> element that gets dropkicked
+    lists   = [],
+
+    // Convenience keys for keyboard navigation
+    keyMap = {
+      'left'  : 37,
+      'up'    : 38,
+      'right' : 39,
+      'down'  : 40,
+      'enter' : 13
+    },
+
+    // HTML template for the dropdowns
+    dropdownTemplate = [
+      '<div class="dk_container" id="dk_container_{{ id }}" tabindex="{{ tabindex }}">',
+        '<a class="dk_toggle">',
+          '<span class="dk_label">{{ label }}</span>',
+        '</a>',
+        '<div class="dk_options">',
+          '<ul class="dk_options_inner">',
+          '</ul>',
+        '</div>',
+      '</div>'
+    ].join(''),
+
+    // HTML template for dropdown options
+    optionTemplate = '<li class="{{ current }}"><a data-dk-dropdown-value="{{ value }}">{{ text }}</a></li>',
+
+    // Some nice default values
+    defaults = {
+      startSpeed : 1000,  // I recommend a high value here, I feel it makes the changes less noticeable to the user
+      theme  : false,
+      change : false
+    },
+
+    // Make sure we only bind keydown on the document once
+    keysBound = false
+  ;
+
+  // Called by using $('foo').dropkick();
+  methods.init = function (settings) {
+    settings = $.extend({}, defaults, settings);
+
+    return this.each(function () {
+      var
+        // The current <select> element
+        $select = $(this),
+
+        // Store a reference to the originally selected <option> element
+        $original = $select.find(':selected').first(),
+
+        // Save all of the <option> elements
+        $options = $select.find('option'),
+
+        // We store lots of great stuff using jQuery data
+        data = $select.data('dropkick') || {},
+
+        // This gets applied to the 'dk_container' element
+        id = $select.attr('id') || $select.attr('name'),
+
+        // This gets updated to be equal to the longest <option> element
+        width  = settings.width || $select.outerWidth(),
+
+        // Check if we have a tabindex set or not
+        tabindex  = $select.attr('tabindex') ? $select.attr('tabindex') : '',
+
+        // The completed dk_container element
+        $dk = false,
+
+        theme
+      ;
+
+      // Dont do anything if we've already setup dropkick on this element
+      if (data.id) {
+        return $select;
+      } else {
+        data.settings  = settings;
+        data.tabindex  = tabindex;
+        data.id        = id;
+        data.$original = $original;
+        data.$select   = $select;
+        data.value     = _notBlank($select.val()) || _notBlank($original.attr('value'));
+        data.label     = $original.text();
+        data.options   = $options;
+      }
+
+      // Build the dropdown HTML
+      $dk = _build(dropdownTemplate, data);
+
+      // Make the dropdown fixed width if desired
+      $dk.find('.dk_toggle').css({
+        'width' : width + 'px'
+      });
+
+      // Hide the <select> list and place our new one in front of it
+      $select.before($dk);
+
+      // Update the reference to $dk
+      $dk = $('#dk_container_' + id).fadeIn(settings.startSpeed);
+
+      // Save the current theme
+      theme = settings.theme ? settings.theme : 'default';
+      $dk.addClass('dk_theme_' + theme);
+      data.theme = theme;
+
+      // Save the updated $dk reference into our data object
+      data.$dk = $dk;
+
+      // Save the dropkick data onto the <select> element
+      $select.data('dropkick', data);
+
+      // Do the same for the dropdown, but add a few helpers
+      $dk.data('dropkick', data);
+
+      lists[lists.length] = $select;
+
+      // Focus events
+      $dk.bind('focus.dropkick', function (e) {
+        $dk.addClass('dk_focus');
+      }).bind('blur.dropkick', function (e) {
+        $dk.removeClass('dk_open dk_focus');
+      });
+
+      setTimeout(function () {
+        $select.hide();
+      }, 0);
+    });
+  };
+
+  // Allows dynamic theme changes
+  methods.theme = function (newTheme) {
+    var
+      $select   = $(this),
+      list      = $select.data('dropkick'),
+      $dk       = list.$dk,
+      oldtheme  = 'dk_theme_' + list.theme
+    ;
+
+    $dk.removeClass(oldtheme).addClass('dk_theme_' + newTheme);
+
+    list.theme = newTheme;
+  };
+
+  // Reset all <selects and dropdowns in our lists array
+  methods.reset = function () {
+    for (var i = 0, l = lists.length; i < l; i++) {
+      var
+        listData  = lists[i].data('dropkick'),
+        $dk       = listData.$dk,
+        $current  = $dk.find('li').first()
+      ;
+
+      $dk.find('.dk_label').text(listData.label);
+      $dk.find('.dk_options_inner').animate({ scrollTop: 0 }, 0);
+
+      _setCurrent($current, $dk);
+      _updateFields($current, $dk, true);
+    }
+  };
+
+  // Expose the plugin
+  $.fn.dropkick = function (method) {
+    if (!ie6) {
+      if (methods[method]) {
+        return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
+      } else if (typeof method === 'object' || ! method) {
+        return methods.init.apply(this, arguments);
+      }
+    }
+  };
+
+  // private
+  function _handleKeyBoardNav(e, $dk) {
+    var
+      code     = e.keyCode,
+      data     = $dk.data('dropkick'),
+      options  = $dk.find('.dk_options'),
+      open     = $dk.hasClass('dk_open'),
+      current  = $dk.find('.dk_option_current'),
+      first    = options.find('li').first(),
+      last     = options.find('li').last(),
+      next,
+      prev
+    ;
+
+    switch (code) {
+      case keyMap.enter:
+        if (open) {
+          _updateFields(current.find('a'), $dk);
+          _closeDropdown($dk);
+        } else {
+          _openDropdown($dk);
+        }
+        e.preventDefault();
+      break;
+
+      case keyMap.up:
+        prev = current.prev('li');
+        if (open) {
+          if (prev.length) {
+            _setCurrent(prev, $dk);
+          } else {
+            _setCurrent(last, $dk);
+          }
+        } else {
+          _openDropdown($dk);
+        }
+        e.preventDefault();
+      break;
+
+      case keyMap.down:
+        if (open) {
+          next = current.next('li').first();
+          if (next.length) {
+            _setCurrent(next, $dk);
+          } else {
+            _setCurrent(first, $dk);
+          }
+        } else {
+          _openDropdown($dk);
+        }
+        e.preventDefault();
+      break;
+
+      default:
+      break;
+    }
+  }
+
+  // Update the <select> value, and the dropdown label
+  function _updateFields(option, $dk, reset) {
+    var value, label, data;
+
+    value = option.attr('data-dk-dropdown-value');
+    label = option.text();
+    data  = $dk.data('dropkick');
+
+    $select = data.$select;
+    $select.val(value);
+
+    $dk.find('.dk_label').text(label);
+
+    reset = reset || false;
+
+    if (data.settings.change && !reset) {
+      data.settings.change.call($select, value, label);
+    }
+  }
+
+  // Set the currently selected option
+  function _setCurrent($current, $dk) {
+    $dk.find('.dk_option_current').removeClass('dk_option_current');
+    $current.addClass('dk_option_current');
+
+    _setScrollPos($dk, $current);
+  }
+
+  function _setScrollPos($dk, anchor) {
+    var height = anchor.prevAll('li').outerHeight() * anchor.prevAll('li').length;
+    $dk.find('.dk_options_inner').animate({ scrollTop: height + 'px' }, 0);
+  }
+
+  // Close a dropdown
+  function _closeDropdown($dk) {
+    $dk.removeClass('dk_open');
+  }
+
+  // Open a dropdown
+  function _openDropdown($dk) {
+    var data = $dk.data('dropkick');
+    $dk.find('.dk_options').css({ top : $dk.find('.dk_toggle').outerHeight() - 1 });
+    $dk.toggleClass('dk_open');
+
+  }
+
+  /**
+   * Turn the dropdownTemplate into a jQuery object and fill in the variables.
+   */
+  function _build (tpl, view) {
+    var
+      // Template for the dropdown
+      template  = tpl,
+      // Holder of the dropdowns options
+      options   = [],
+      $dk
+    ;
+
+    template = template.replace('{{ id }}', view.id);
+    template = template.replace('{{ label }}', view.label);
+    template = template.replace('{{ tabindex }}', view.tabindex);
+
+    if (view.options && view.options.length) {
+      for (var i = 0, l = view.options.length; i < l; i++) {
+        var
+          $option   = $(view.options[i]),
+          current   = 'dk_option_current',
+          oTemplate = optionTemplate
+        ;
+
+        oTemplate = oTemplate.replace('{{ value }}', $option.val());
+        oTemplate = oTemplate.replace('{{ current }}', (_notBlank($option.val()) === view.value) ? current : '');
+        oTemplate = oTemplate.replace('{{ text }}', $option.text());
+
+        options[options.length] = oTemplate;
+      }
+    }
+
+    $dk = $(template);
+    $dk.find('.dk_options_inner').html(options.join(''));
+
+    return $dk;
+  }
+
+  function _notBlank(text) {
+    return ($.trim(text).length > 0) ? text : false;
+  }
+
+  $(function () {
+
+    // Handle click events on the dropdown toggler
+    $('.dk_toggle').live('click', function (e) {
+      var $dk  = $(this).parents('.dk_container').first();
+
+      _openDropdown($dk);
+
+      if ("ontouchstart" in window) {
+        $dk.addClass('dk_touch');
+        $dk.find('.dk_options_inner').addClass('scrollable vertical');
+      }
+
+      e.preventDefault();
+      return false;
+    });
+
+    // Handle click events on individual dropdown options
+    $('.dk_options a').live(($.browser.msie ? 'mousedown' : 'click'), function (e) {
+      var
+        $option = $(this),
+        $dk     = $option.parents('.dk_container').first(),
+        data    = $dk.data('dropkick')
+      ;
+    
+      _closeDropdown($dk);
+      _updateFields($option, $dk);
+      _setCurrent($option.parent(), $dk);
+    
+      e.preventDefault();
+      return false;
+    });
+
+    // Setup keyboard nav
+    $(document).bind('keydown.dk_nav', function (e) {
+      var
+        // Look for an open dropdown...
+        $open    = $('.dk_container.dk_open'),
+
+        // Look for a focused dropdown
+        $focused = $('.dk_container.dk_focus'),
+
+        // Will be either $open, $focused, or null
+        $dk = null
+      ;
+
+      // If we have an open dropdown, key events should get sent to that one
+      if ($open.length) {
+        $dk = $open;
+      } else if ($focused.length && !$open.length) {
+        // But if we have no open dropdowns, use the focused dropdown instead
+        $dk = $focused;
+      }
+
+      if ($dk) {
+        _handleKeyBoardNav(e, $dk);
+      }
+    });
+  });
+})(jQuery, window, document);
\ No newline at end of file
diff --git a/snf-astakos-app/astakos/im/static/im/js/os.js b/snf-astakos-app/astakos/im/static/im/js/os.js
new file mode 100644 (file)
index 0000000..930d417
--- /dev/null
@@ -0,0 +1,129 @@
+//http://www.quirksmode.org/js/detect.html\r
+var BrowserDetect = {\r
+       init: function () {\r
+               this.browser = this.searchString(this.dataBrowser) || "An unknown browser";\r
+               this.version = this.searchVersion(navigator.userAgent)\r
+                       || this.searchVersion(navigator.appVersion)\r
+                       || "an unknown version";\r
+               this.OS = this.searchString(this.dataOS) || "an unknown OS";\r
+       },\r
+       searchString: function (data) {\r
+               for (var i=0;i<data.length;i++) {\r
+                       var dataString = data[i].string;\r
+                       var dataProp = data[i].prop;\r
+                       this.versionSearchString = data[i].versionSearch || data[i].identity;\r
+                       if (dataString) {\r
+                               if (dataString.indexOf(data[i].subString) != -1)\r
+                                       return data[i].identity;\r
+                       }\r
+                       else if (dataProp)\r
+                               return data[i].identity;\r
+               }\r
+       },\r
+       searchVersion: function (dataString) {\r
+               var index = dataString.indexOf(this.versionSearchString);\r
+               if (index == -1) return;\r
+               return parseFloat(dataString.substring(index+this.versionSearchString.length+1));\r
+       },\r
+       dataBrowser: [\r
+               {\r
+                       string: navigator.userAgent,\r
+                       subString: "Chrome",\r
+                       identity: "Chrome"\r
+               },\r
+               {       string: navigator.userAgent,\r
+                       subString: "OmniWeb",\r
+                       versionSearch: "OmniWeb/",\r
+                       identity: "OmniWeb"\r
+               },\r
+               {\r
+                       string: navigator.vendor,\r
+                       subString: "Apple",\r
+                       identity: "Safari",\r
+                       versionSearch: "Version"\r
+               },\r
+               {\r
+                       prop: window.opera,\r
+                       identity: "Opera",\r
+                       versionSearch: "Version"\r
+               },\r
+               {\r
+                       string: navigator.vendor,\r
+                       subString: "iCab",\r
+                       identity: "iCab"\r
+               },\r
+               {\r
+                       string: navigator.vendor,\r
+                       subString: "KDE",\r
+                       identity: "Konqueror"\r
+               },\r
+               {\r
+                       string: navigator.userAgent,\r
+                       subString: "Firefox",\r
+                       identity: "Firefox"\r
+               },\r
+               {\r
+                       string: navigator.vendor,\r
+                       subString: "Camino",\r
+                       identity: "Camino"\r
+               },\r
+               {               // for newer Netscapes (6+)\r
+                       string: navigator.userAgent,\r
+                       subString: "Netscape",\r
+                       identity: "Netscape"\r
+               },\r
+               {\r
+                       string: navigator.userAgent,\r
+                       subString: "MSIE",\r
+                       identity: "Explorer",\r
+                       versionSearch: "MSIE"\r
+               },\r
+               {\r
+                       string: navigator.userAgent,\r
+                       subString: "Gecko",\r
+                       identity: "Mozilla",\r
+                       versionSearch: "rv"\r
+               },\r
+               {               // for older Netscapes (4-)\r
+                       string: navigator.userAgent,\r
+                       subString: "Mozilla",\r
+                       identity: "Netscape",\r
+                       versionSearch: "Mozilla"\r
+               }\r
+       ],\r
+       dataOS : [\r
+               {\r
+                       string: navigator.platform,\r
+                       subString: "Win",\r
+                       identity: "windows"\r
+               },\r
+\r
+               {\r
+                       string: navigator.userAgent.toLowerCase(),\r
+                       subString: "android",\r
+                       identity: "Android"\r
+               },\r
+               {\r
+                       string: navigator.platform,\r
+                       subString: "Mac",\r
+                       identity: "MacOS"\r
+               },\r
+               {\r
+                  string: navigator.userAgent,\r
+                  subString: "iPhone",\r
+                  identity: "iPhone"\r
+           },\r
+           {\r
+                  string: navigator.userAgent,\r
+                  subString: "iPad",\r
+                  identity: "iPad"\r
+           },\r
+               {\r
+                       string: navigator.platform,\r
+                       subString: "Linux",\r
+                       identity: "linux"\r
+               }\r
+       ]\r
+\r
+};\r
+BrowserDetect.init();\r
diff --git a/snf-astakos-app/astakos/im/static/im/js/resources_list.js b/snf-astakos-app/astakos/im/static/im/js/resources_list.js
new file mode 100644 (file)
index 0000000..6b293b7
--- /dev/null
@@ -0,0 +1,120 @@
+// Array Remove - By John Resig (MIT Licensed)\r
+Array.prototype.remove = function(from, to) {\r
+  var rest = this.slice((to || from) + 1 || this.length);\r
+  this.length = from < 0 ? this.length + from : from;\r
+  return this.push.apply(this, rest);\r
+};\r
+\r
+function ResourcesModule(el, conf) {\r
+    \r
+    var defaults = {'page_limit': 5};\r
+    this.conf = $.extend(defaults, conf);\r
+\r
+    this.el = el;\r
+    \r
+    this.selected_category = window.location.hash.replace("#","");\r
+    if (!this.selected_category) { this.selected_category = undefined };\r
+    \r
+    this.categories = this.el.find(".categories ul li");\r
+    this.orig_categories = this.categories.clone();\r
+        \r
+    //this.update_page_objects();\r
+    \r
+    this.grid_height = 251;\r
+    this.grid_width = 251;\r
+    this.grid_gap = 22;\r
+\r
+    var self = this;\r
+    $(window).bind('hashchange', function() {\r
+        self.selected_category = window.location.hash.substring(1);\r
+        self.update_page_objects();\r
+        self.update_selected_category();\r
+    })\r
+\r
+    self.update_page_objects();\r
+    self.update_selected_category();\r
+}\r
+\r
+ResourcesModule.prototype.switch = function(hide, show) {\r
+    var hide = $(hide), show = $(show);\r
+    var toparent = hide.parent();\r
+    var newshow = show.clone();\r
+    toparent.append(newshow);\r
+    hide.animate({top:"-249px"})\r
+    newshow.animate({\r
+                    top:"-249px"\r
+                }, \r
+                {\r
+                    complete:function(){\r
+                        hide.remove();\r
+                        newshow.css({top:0});\r
+                }\r
+    })\r
+}\r
+\r
+\r
+ResourcesModule.prototype.resources = function() {\r
+    this._resources  = this.el.find(".resource-wrapper");\r
+    return this._resources;\r
+}\r
+\r
+ResourcesModule.prototype.hide = function(q) {\r
+    q.fadeOut(300);\r
+}\r
+\r
+ResourcesModule.prototype.animate_els = function(els) {\r
+    $(el).css({ position:'absolute' });\r
+    var left = i % 3 == 0 ? 0 : (i % 3) * (self.grid_width) + ((i % 3)-1) * self.grid_gap;\r
+\r
+    var row = Math.floor(i/3);\r
+    var top = row * (self.grid_gap + self.grid_height);\r
+\r
+    $(el).animate({left: left}, { complete: function(){\r
+        $(el).animate({top: top}, {complete: function(){\r
+        \r
+            self.el.height((self.grid_height + self.grid_gap) * (Math.floor(to_show.length/3) + 1));\r
+        \r
+        }});\r
+    }});\r
+     \r
+    $(el).removeClass("hidden");\r
+    $(el).show('slow');\r
+}\r
+\r
+ResourcesModule.prototype.update_selected_category = function() {\r
+    if (!this.selected_category) {\r
+        this.categories.removeClass("inactive").removeClass("active");\r
+        this.categories.show();\r
+        this.el.find(".categories a.clear").hide();\r
+        return;\r
+    }\r
+\r
+    var to_hide = this.categories.filter("[data-id="+this.selected_category+"]");\r
+    var to_show = this.categories.filter("[data-id!="+this.selected_category+"]");\r
+\r
+    to_show.removeClass("active").addClass("inactive");\r
+    to_hide.removeClass("inactive").addClass("active");\r
+    this.el.find(".categories a.clear").show();\r
+}\r
+\r
+ResourcesModule.prototype.update_page_objects = function() {\r
+    var to_show = this.resources().filter("[data-category="+this.selected_category+"]");\r
+    var to_hide = this.resources().filter("[data-category!="+this.selected_category+"]");\r
+        \r
+    if (!this.selected_category) { to_show = this.resources(); }\r
+    _.each(to_hide, function(el){\r
+        $(el).hide('slow');\r
+    });\r
+\r
+    _.each(to_show, function(el, i){\r
+         \r
+        $(el).fadeIn(40);\r
+    });\r
+}\r
+\r
+$(document).ready(function(){\r
+    var rm = new ResourcesModule($("#resources-list"), {}, []);\r
+    window.rm = rm;\r
+})\r
+\r
+\r
diff --git a/snf-astakos-app/astakos/im/static/im/js/underscore.js b/snf-astakos-app/astakos/im/static/im/js/underscore.js
new file mode 100644 (file)
index 0000000..f6f7e2f
--- /dev/null
@@ -0,0 +1,1059 @@
+//     Underscore.js 1.3.3
+//     (c) 2009-2012 Jeremy Ashkenas, DocumentCloud Inc.
+//     Underscore is freely distributable under the MIT license.
+//     Portions of Underscore are inspired or borrowed from Prototype,
+//     Oliver Steele's Functional, and John Resig's Micro-Templating.
+//     For all details and documentation:
+//     http://documentcloud.github.com/underscore
+
+(function() {
+
+  // Baseline setup
+  // --------------
+
+  // Establish the root object, `window` in the browser, or `global` on the server.
+  var root = this;
+
+  // Save the previous value of the `_` variable.
+  var previousUnderscore = root._;
+
+  // Establish the object that gets returned to break out of a loop iteration.
+  var breaker = {};
+
+  // Save bytes in the minified (but not gzipped) version:
+  var ArrayProto = Array.prototype, ObjProto = Object.prototype, FuncProto = Function.prototype;
+
+  // Create quick reference variables for speed access to core prototypes.
+  var slice            = ArrayProto.slice,
+      unshift          = ArrayProto.unshift,
+      toString         = ObjProto.toString,
+      hasOwnProperty   = ObjProto.hasOwnProperty;
+
+  // All **ECMAScript 5** native function implementations that we hope to use
+  // are declared here.
+  var
+    nativeForEach      = ArrayProto.forEach,
+    nativeMap          = ArrayProto.map,
+    nativeReduce       = ArrayProto.reduce,
+    nativeReduceRight  = ArrayProto.reduceRight,
+    nativeFilter       = ArrayProto.filter,
+    nativeEvery        = ArrayProto.every,
+    nativeSome         = ArrayProto.some,
+    nativeIndexOf      = ArrayProto.indexOf,
+    nativeLastIndexOf  = ArrayProto.lastIndexOf,
+    nativeIsArray      = Array.isArray,
+    nativeKeys         = Object.keys,
+    nativeBind         = FuncProto.bind;
+
+  // Create a safe reference to the Underscore object for use below.
+  var _ = function(obj) { return new wrapper(obj); };
+
+  // Export the Underscore object for **Node.js**, with
+  // backwards-compatibility for the old `require()` API. If we're in
+  // the browser, add `_` as a global object via a string identifier,
+  // for Closure Compiler "advanced" mode.
+  if (typeof exports !== 'undefined') {
+    if (typeof module !== 'undefined' && module.exports) {
+      exports = module.exports = _;
+    }
+    exports._ = _;
+  } else {
+    root['_'] = _;
+  }
+
+  // Current version.
+  _.VERSION = '1.3.3';
+
+  // Collection Functions
+  // --------------------
+
+  // The cornerstone, an `each` implementation, aka `forEach`.
+  // Handles objects with the built-in `forEach`, arrays, and raw objects.
+  // Delegates to **ECMAScript 5**'s native `forEach` if available.
+  var each = _.each = _.forEach = function(obj, iterator, context) {
+    if (obj == null) return;
+    if (nativeForEach && obj.forEach === nativeForEach) {
+      obj.forEach(iterator, context);
+    } else if (obj.length === +obj.length) {
+      for (var i = 0, l = obj.length; i < l; i++) {
+        if (i in obj && iterator.call(context, obj[i], i, obj) === breaker) return;
+      }
+    } else {
+      for (var key in obj) {
+        if (_.has(obj, key)) {
+          if (iterator.call(context, obj[key], key, obj) === breaker) return;
+        }
+      }
+    }
+  };
+
+  // Return the results of applying the iterator to each element.
+  // Delegates to **ECMAScript 5**'s native `map` if available.
+  _.map = _.collect = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context);
+    each(obj, function(value, index, list) {
+      results[results.length] = iterator.call(context, value, index, list);
+    });
+    if (obj.length === +obj.length) results.length = obj.length;
+    return results;
+  };
+
+  // **Reduce** builds up a single result from a list of values, aka `inject`,
+  // or `foldl`. Delegates to **ECMAScript 5**'s native `reduce` if available.
+  _.reduce = _.foldl = _.inject = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduce && obj.reduce === nativeReduce) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduce(iterator, memo) : obj.reduce(iterator);
+    }
+    each(obj, function(value, index, list) {
+      if (!initial) {
+        memo = value;
+        initial = true;
+      } else {
+        memo = iterator.call(context, memo, value, index, list);
+      }
+    });
+    if (!initial) throw new TypeError('Reduce of empty array with no initial value');
+    return memo;
+  };
+
+  // The right-associative version of reduce, also known as `foldr`.
+  // Delegates to **ECMAScript 5**'s native `reduceRight` if available.
+  _.reduceRight = _.foldr = function(obj, iterator, memo, context) {
+    var initial = arguments.length > 2;
+    if (obj == null) obj = [];
+    if (nativeReduceRight && obj.reduceRight === nativeReduceRight) {
+      if (context) iterator = _.bind(iterator, context);
+      return initial ? obj.reduceRight(iterator, memo) : obj.reduceRight(iterator);
+    }
+    var reversed = _.toArray(obj).reverse();
+    if (context && !initial) iterator = _.bind(iterator, context);
+    return initial ? _.reduce(reversed, iterator, memo, context) : _.reduce(reversed, iterator);
+  };
+
+  // Return the first value which passes a truth test. Aliased as `detect`.
+  _.find = _.detect = function(obj, iterator, context) {
+    var result;
+    any(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) {
+        result = value;
+        return true;
+      }
+    });
+    return result;
+  };
+
+  // Return all the elements that pass a truth test.
+  // Delegates to **ECMAScript 5**'s native `filter` if available.
+  // Aliased as `select`.
+  _.filter = _.select = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    if (nativeFilter && obj.filter === nativeFilter) return obj.filter(iterator, context);
+    each(obj, function(value, index, list) {
+      if (iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Return all the elements for which a truth test fails.
+  _.reject = function(obj, iterator, context) {
+    var results = [];
+    if (obj == null) return results;
+    each(obj, function(value, index, list) {
+      if (!iterator.call(context, value, index, list)) results[results.length] = value;
+    });
+    return results;
+  };
+
+  // Determine whether all of the elements match a truth test.
+  // Delegates to **ECMAScript 5**'s native `every` if available.
+  // Aliased as `all`.
+  _.every = _.all = function(obj, iterator, context) {
+    var result = true;
+    if (obj == null) return result;
+    if (nativeEvery && obj.every === nativeEvery) return obj.every(iterator, context);
+    each(obj, function(value, index, list) {
+      if (!(result = result && iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if at least one element in the object matches a truth test.
+  // Delegates to **ECMAScript 5**'s native `some` if available.
+  // Aliased as `any`.
+  var any = _.some = _.any = function(obj, iterator, context) {
+    iterator || (iterator = _.identity);
+    var result = false;
+    if (obj == null) return result;
+    if (nativeSome && obj.some === nativeSome) return obj.some(iterator, context);
+    each(obj, function(value, index, list) {
+      if (result || (result = iterator.call(context, value, index, list))) return breaker;
+    });
+    return !!result;
+  };
+
+  // Determine if a given value is included in the array or object using `===`.
+  // Aliased as `contains`.
+  _.include = _.contains = function(obj, target) {
+    var found = false;
+    if (obj == null) return found;
+    if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1;
+    found = any(obj, function(value) {
+      return value === target;
+    });
+    return found;
+  };
+
+  // Invoke a method (with arguments) on every item in a collection.
+  _.invoke = function(obj, method) {
+    var args = slice.call(arguments, 2);
+    return _.map(obj, function(value) {
+      return (_.isFunction(method) ? method || value : value[method]).apply(value, args);
+    });
+  };
+
+  // Convenience version of a common use case of `map`: fetching a property.
+  _.pluck = function(obj, key) {
+    return _.map(obj, function(value){ return value[key]; });
+  };
+
+  // Return the maximum element or (element-based computation).
+  _.max = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0]) return Math.max.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return -Infinity;
+    var result = {computed : -Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed >= result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Return the minimum element (or element-based computation).
+  _.min = function(obj, iterator, context) {
+    if (!iterator && _.isArray(obj) && obj[0] === +obj[0]) return Math.min.apply(Math, obj);
+    if (!iterator && _.isEmpty(obj)) return Infinity;
+    var result = {computed : Infinity};
+    each(obj, function(value, index, list) {
+      var computed = iterator ? iterator.call(context, value, index, list) : value;
+      computed < result.computed && (result = {value : value, computed : computed});
+    });
+    return result.value;
+  };
+
+  // Shuffle an array.
+  _.shuffle = function(obj) {
+    var shuffled = [], rand;
+    each(obj, function(value, index, list) {
+      rand = Math.floor(Math.random() * (index + 1));
+      shuffled[index] = shuffled[rand];
+      shuffled[rand] = value;
+    });
+    return shuffled;
+  };
+
+  // Sort the object's values by a criterion produced by an iterator.
+  _.sortBy = function(obj, val, context) {
+    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+    return _.pluck(_.map(obj, function(value, index, list) {
+      return {
+        value : value,
+        criteria : iterator.call(context, value, index, list)
+      };
+    }).sort(function(left, right) {
+      var a = left.criteria, b = right.criteria;
+      if (a === void 0) return 1;
+      if (b === void 0) return -1;
+      return a < b ? -1 : a > b ? 1 : 0;
+    }), 'value');
+  };
+
+  // Groups the object's values by a criterion. Pass either a string attribute
+  // to group by, or a function that returns the criterion.
+  _.groupBy = function(obj, val) {
+    var result = {};
+    var iterator = _.isFunction(val) ? val : function(obj) { return obj[val]; };
+    each(obj, function(value, index) {
+      var key = iterator(value, index);
+      (result[key] || (result[key] = [])).push(value);
+    });
+    return result;
+  };
+
+  // Use a comparator function to figure out at what index an object should
+  // be inserted so as to maintain order. Uses binary search.
+  _.sortedIndex = function(array, obj, iterator) {
+    iterator || (iterator = _.identity);
+    var low = 0, high = array.length;
+    while (low < high) {
+      var mid = (low + high) >> 1;
+      iterator(array[mid]) < iterator(obj) ? low = mid + 1 : high = mid;
+    }
+    return low;
+  };
+
+  // Safely convert anything iterable into a real, live array.
+  _.toArray = function(obj) {
+    if (!obj)                                     return [];
+    if (_.isArray(obj))                           return slice.call(obj);
+    if (_.isArguments(obj))                       return slice.call(obj);
+    if (obj.toArray && _.isFunction(obj.toArray)) return obj.toArray();
+    return _.values(obj);
+  };
+
+  // Return the number of elements in an object.
+  _.size = function(obj) {
+    return _.isArray(obj) ? obj.length : _.keys(obj).length;
+  };
+
+  // Array Functions
+  // ---------------
+
+  // Get the first element of an array. Passing **n** will return the first N
+  // values in the array. Aliased as `head` and `take`. The **guard** check
+  // allows it to work with `_.map`.
+  _.first = _.head = _.take = function(array, n, guard) {
+    return (n != null) && !guard ? slice.call(array, 0, n) : array[0];
+  };
+
+  // Returns everything but the last entry of the array. Especcialy useful on
+  // the arguments object. Passing **n** will return all the values in
+  // the array, excluding the last N. The **guard** check allows it to work with
+  // `_.map`.
+  _.initial = function(array, n, guard) {
+    return slice.call(array, 0, array.length - ((n == null) || guard ? 1 : n));
+  };
+
+  // Get the last element of an array. Passing **n** will return the last N
+  // values in the array. The **guard** check allows it to work with `_.map`.
+  _.last = function(array, n, guard) {
+    if ((n != null) && !guard) {
+      return slice.call(array, Math.max(array.length - n, 0));
+    } else {
+      return array[array.length - 1];
+    }
+  };
+
+  // Returns everything but the first entry of the array. Aliased as `tail`.
+  // Especially useful on the arguments object. Passing an **index** will return
+  // the rest of the values in the array from that index onward. The **guard**
+  // check allows it to work with `_.map`.
+  _.rest = _.tail = function(array, index, guard) {
+    return slice.call(array, (index == null) || guard ? 1 : index);
+  };
+
+  // Trim out all falsy values from an array.
+  _.compact = function(array) {
+    return _.filter(array, function(value){ return !!value; });
+  };
+
+  // Return a completely flattened version of an array.
+  _.flatten = function(array, shallow) {
+    return _.reduce(array, function(memo, value) {
+      if (_.isArray(value)) return memo.concat(shallow ? value : _.flatten(value));
+      memo[memo.length] = value;
+      return memo;
+    }, []);
+  };
+
+  // Return a version of the array that does not contain the specified value(s).
+  _.without = function(array) {
+    return _.difference(array, slice.call(arguments, 1));
+  };
+
+  // Produce a duplicate-free version of the array. If the array has already
+  // been sorted, you have the option of using a faster algorithm.
+  // Aliased as `unique`.
+  _.uniq = _.unique = function(array, isSorted, iterator) {
+    var initial = iterator ? _.map(array, iterator) : array;
+    var results = [];
+    // The `isSorted` flag is irrelevant if the array only contains two elements.
+    if (array.length < 3) isSorted = true;
+    _.reduce(initial, function (memo, value, index) {
+      if (isSorted ? _.last(memo) !== value || !memo.length : !_.include(memo, value)) {
+        memo.push(value);
+        results.push(array[index]);
+      }
+      return memo;
+    }, []);
+    return results;
+  };
+
+  // Produce an array that contains the union: each distinct element from all of
+  // the passed-in arrays.
+  _.union = function() {
+    return _.uniq(_.flatten(arguments, true));
+  };
+
+  // Produce an array that contains every item shared between all the
+  // passed-in arrays. (Aliased as "intersect" for back-compat.)
+  _.intersection = _.intersect = function(array) {
+    var rest = slice.call(arguments, 1);
+    return _.filter(_.uniq(array), function(item) {
+      return _.every(rest, function(other) {
+        return _.indexOf(other, item) >= 0;
+      });
+    });
+  };
+
+  // Take the difference between one array and a number of other arrays.
+  // Only the elements present in just the first array will remain.
+  _.difference = function(array) {
+    var rest = _.flatten(slice.call(arguments, 1), true);
+    return _.filter(array, function(value){ return !_.include(rest, value); });
+  };
+
+  // Zip together multiple lists into a single array -- elements that share
+  // an index go together.
+  _.zip = function() {
+    var args = slice.call(arguments);
+    var length = _.max(_.pluck(args, 'length'));
+    var results = new Array(length);
+    for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i);
+    return results;
+  };
+
+  // If the browser doesn't supply us with indexOf (I'm looking at you, **MSIE**),
+  // we need this function. Return the position of the first occurrence of an
+  // item in an array, or -1 if the item is not included in the array.
+  // Delegates to **ECMAScript 5**'s native `indexOf` if available.
+  // If the array is large and already in sort order, pass `true`
+  // for **isSorted** to use binary search.
+  _.indexOf = function(array, item, isSorted) {
+    if (array == null) return -1;
+    var i, l;
+    if (isSorted) {
+      i = _.sortedIndex(array, item);
+      return array[i] === item ? i : -1;
+    }
+    if (nativeIndexOf && array.indexOf === nativeIndexOf) return array.indexOf(item);
+    for (i = 0, l = array.length; i < l; i++) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Delegates to **ECMAScript 5**'s native `lastIndexOf` if available.
+  _.lastIndexOf = function(array, item) {
+    if (array == null) return -1;
+    if (nativeLastIndexOf && array.lastIndexOf === nativeLastIndexOf) return array.lastIndexOf(item);
+    var i = array.length;
+    while (i--) if (i in array && array[i] === item) return i;
+    return -1;
+  };
+
+  // Generate an integer Array containing an arithmetic progression. A port of
+  // the native Python `range()` function. See
+  // [the Python documentation](http://docs.python.org/library/functions.html#range).
+  _.range = function(start, stop, step) {
+    if (arguments.length <= 1) {
+      stop = start || 0;
+      start = 0;
+    }
+    step = arguments[2] || 1;
+
+    var len = Math.max(Math.ceil((stop - start) / step), 0);
+    var idx = 0;
+    var range = new Array(len);
+
+    while(idx < len) {
+      range[idx++] = start;
+      start += step;
+    }
+
+    return range;
+  };
+
+  // Function (ahem) Functions
+  // ------------------
+
+  // Reusable constructor function for prototype setting.
+  var ctor = function(){};
+
+  // Create a function bound to a given object (assigning `this`, and arguments,
+  // optionally). Binding with arguments is also known as `curry`.
+  // Delegates to **ECMAScript 5**'s native `Function.bind` if available.
+  // We check for `func.bind` first, to fail fast when `func` is undefined.
+  _.bind = function bind(func, context) {
+    var bound, args;
+    if (func.bind === nativeBind && nativeBind) return nativeBind.apply(func, slice.call(arguments, 1));
+    if (!_.isFunction(func)) throw new TypeError;
+    args = slice.call(arguments, 2);
+    return bound = function() {
+      if (!(this instanceof bound)) return func.apply(context, args.concat(slice.call(arguments)));
+      ctor.prototype = func.prototype;
+      var self = new ctor;
+      var result = func.apply(self, args.concat(slice.call(arguments)));
+      if (Object(result) === result) return result;
+      return self;
+    };
+  };
+
+  // Bind all of an object's methods to that object. Useful for ensuring that
+  // all callbacks defined on an object belong to it.
+  _.bindAll = function(obj) {
+    var funcs = slice.call(arguments, 1);
+    if (funcs.length == 0) funcs = _.functions(obj);
+    each(funcs, function(f) { obj[f] = _.bind(obj[f], obj); });
+    return obj;
+  };
+
+  // Memoize an expensive function by storing its results.
+  _.memoize = function(func, hasher) {
+    var memo = {};
+    hasher || (hasher = _.identity);
+    return function() {
+      var key = hasher.apply(this, arguments);
+      return _.has(memo, key) ? memo[key] : (memo[key] = func.apply(this, arguments));
+    };
+  };
+
+  // Delays a function for the given number of milliseconds, and then calls
+  // it with the arguments supplied.
+  _.delay = function(func, wait) {
+    var args = slice.call(arguments, 2);
+    return setTimeout(function(){ return func.apply(null, args); }, wait);
+  };
+
+  // Defers a function, scheduling it to run after the current call stack has
+  // cleared.
+  _.defer = function(func) {
+    return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1)));
+  };
+
+  // Returns a function, that, when invoked, will only be triggered at most once
+  // during a given window of time.
+  _.throttle = function(func, wait) {
+    var context, args, timeout, throttling, more, result;
+    var whenDone = _.debounce(function(){ more = throttling = false; }, wait);
+    return function() {
+      context = this; args = arguments;
+      var later = function() {
+        timeout = null;
+        if (more) func.apply(context, args);
+        whenDone();
+      };
+      if (!timeout) timeout = setTimeout(later, wait);
+      if (throttling) {
+        more = true;
+      } else {
+        result = func.apply(context, args);
+      }
+      whenDone();
+      throttling = true;
+      return result;
+    };
+  };
+
+  // Returns a function, that, as long as it continues to be invoked, will not
+  // be triggered. The function will be called after it stops being called for
+  // N milliseconds. If `immediate` is passed, trigger the function on the
+  // leading edge, instead of the trailing.
+  _.debounce = function(func, wait, immediate) {
+    var timeout;
+    return function() {
+      var context = this, args = arguments;
+      var later = function() {
+        timeout = null;
+        if (!immediate) func.apply(context, args);
+      };
+      if (immediate && !timeout) func.apply(context, args);
+      clearTimeout(timeout);
+      timeout = setTimeout(later, wait);
+    };
+  };
+
+  // Returns a function that will be executed at most one time, no matter how
+  // often you call it. Useful for lazy initialization.
+  _.once = function(func) {
+    var ran = false, memo;
+    return function() {
+      if (ran) return memo;
+      ran = true;
+      return memo = func.apply(this, arguments);
+    };
+  };
+
+  // Returns the first function passed as an argument to the second,
+  // allowing you to adjust arguments, run code before and after, and
+  // conditionally execute the original function.
+  _.wrap = function(func, wrapper) {
+    return function() {
+      var args = [func].concat(slice.call(arguments, 0));
+      return wrapper.apply(this, args);
+    };
+  };
+
+  // Returns a function that is the composition of a list of functions, each
+  // consuming the return value of the function that follows.
+  _.compose = function() {
+    var funcs = arguments;
+    return function() {
+      var args = arguments;
+      for (var i = funcs.length - 1; i >= 0; i--) {
+        args = [funcs[i].apply(this, args)];
+      }
+      return args[0];
+    };
+  };
+
+  // Returns a function that will only be executed after being called N times.
+  _.after = function(times, func) {
+    if (times <= 0) return func();
+    return function() {
+      if (--times < 1) { return func.apply(this, arguments); }
+    };
+  };
+
+  // Object Functions
+  // ----------------
+
+  // Retrieve the names of an object's properties.
+  // Delegates to **ECMAScript 5**'s native `Object.keys`
+  _.keys = nativeKeys || function(obj) {
+    if (obj !== Object(obj)) throw new TypeError('Invalid object');
+    var keys = [];
+    for (var key in obj) if (_.has(obj, key)) keys[keys.length] = key;
+    return keys;
+  };
+
+  // Retrieve the values of an object's properties.
+  _.values = function(obj) {
+    return _.map(obj, _.identity);
+  };
+
+  // Return a sorted list of the function names available on the object.
+  // Aliased as `methods`
+  _.functions = _.methods = function(obj) {
+    var names = [];
+    for (var key in obj) {
+      if (_.isFunction(obj[key])) names.push(key);
+    }
+    return names.sort();
+  };
+
+  // Extend a given object with all the properties in passed-in object(s).
+  _.extend = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Return a copy of the object only containing the whitelisted properties.
+  _.pick = function(obj) {
+    var result = {};
+    each(_.flatten(slice.call(arguments, 1)), function(key) {
+      if (key in obj) result[key] = obj[key];
+    });
+    return result;
+  };
+
+  // Fill in a given object with default properties.
+  _.defaults = function(obj) {
+    each(slice.call(arguments, 1), function(source) {
+      for (var prop in source) {
+        if (obj[prop] == null) obj[prop] = source[prop];
+      }
+    });
+    return obj;
+  };
+
+  // Create a (shallow-cloned) duplicate of an object.
+  _.clone = function(obj) {
+    if (!_.isObject(obj)) return obj;
+    return _.isArray(obj) ? obj.slice() : _.extend({}, obj);
+  };
+
+  // Invokes interceptor with the obj, and then returns obj.
+  // The primary purpose of this method is to "tap into" a method chain, in
+  // order to perform operations on intermediate results within the chain.
+  _.tap = function(obj, interceptor) {
+    interceptor(obj);
+    return obj;
+  };
+
+  // Internal recursive comparison function.
+  function eq(a, b, stack) {
+    // Identical objects are equal. `0 === -0`, but they aren't identical.
+    // See the Harmony `egal` proposal: http://wiki.ecmascript.org/doku.php?id=harmony:egal.
+    if (a === b) return a !== 0 || 1 / a == 1 / b;
+    // A strict comparison is necessary because `null == undefined`.
+    if (a == null || b == null) return a === b;
+    // Unwrap any wrapped objects.
+    if (a._chain) a = a._wrapped;
+    if (b._chain) b = b._wrapped;
+    // Invoke a custom `isEqual` method if one is provided.
+    if (a.isEqual && _.isFunction(a.isEqual)) return a.isEqual(b);
+    if (b.isEqual && _.isFunction(b.isEqual)) return b.isEqual(a);
+    // Compare `[[Class]]` names.
+    var className = toString.call(a);
+    if (className != toString.call(b)) return false;
+    switch (className) {
+      // Strings, numbers, dates, and booleans are compared by value.
+      case '[object String]':
+        // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is
+        // equivalent to `new String("5")`.
+        return a == String(b);
+      case '[object Number]':
+        // `NaN`s are equivalent, but non-reflexive. An `egal` comparison is performed for
+        // other numeric values.
+        return a != +a ? b != +b : (a == 0 ? 1 / a == 1 / b : a == +b);
+      case '[object Date]':
+      case '[object Boolean]':
+        // Coerce dates and booleans to numeric primitive values. Dates are compared by their
+        // millisecond representations. Note that invalid dates with millisecond representations
+        // of `NaN` are not equivalent.
+        return +a == +b;
+      // RegExps are compared by their source patterns and flags.
+      case '[object RegExp]':
+        return a.source == b.source &&
+               a.global == b.global &&
+               a.multiline == b.multiline &&
+               a.ignoreCase == b.ignoreCase;
+    }
+    if (typeof a != 'object' || typeof b != 'object') return false;
+    // Assume equality for cyclic structures. The algorithm for detecting cyclic
+    // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
+    var length = stack.length;
+    while (length--) {
+      // Linear search. Performance is inversely proportional to the number of
+      // unique nested structures.
+      if (stack[length] == a) return true;
+    }
+    // Add the first object to the stack of traversed objects.
+    stack.push(a);
+    var size = 0, result = true;
+    // Recursively compare objects and arrays.
+    if (className == '[object Array]') {
+      // Compare array lengths to determine if a deep comparison is necessary.
+      size = a.length;
+      result = size == b.length;
+      if (result) {
+        // Deep compare the contents, ignoring non-numeric properties.
+        while (size--) {
+          // Ensure commutative equality for sparse arrays.
+          if (!(result = size in a == size in b && eq(a[size], b[size], stack))) break;
+        }
+      }
+    } else {
+      // Objects with different constructors are not equivalent.
+      if ('constructor' in a != 'constructor' in b || a.constructor != b.constructor) return false;
+      // Deep compare objects.
+      for (var key in a) {
+        if (_.has(a, key)) {
+          // Count the expected number of properties.
+          size++;
+          // Deep compare each member.
+          if (!(result = _.has(b, key) && eq(a[key], b[key], stack))) break;
+        }
+      }
+      // Ensure that both objects contain the same number of properties.
+      if (result) {
+        for (key in b) {
+          if (_.has(b, key) && !(size--)) break;
+        }
+        result = !size;
+      }
+    }
+    // Remove the first object from the stack of traversed objects.
+    stack.pop();
+    return result;
+  }
+
+  // Perform a deep comparison to check if two objects are equal.
+  _.isEqual = function(a, b) {
+    return eq(a, b, []);
+  };
+
+  // Is a given array, string, or object empty?
+  // An "empty" object has no enumerable own-properties.
+  _.isEmpty = function(obj) {
+    if (obj == null) return true;
+    if (_.isArray(obj) || _.isString(obj)) return obj.length === 0;
+    for (var key in obj) if (_.has(obj, key)) return false;
+    return true;
+  };
+
+  // Is a given value a DOM element?
+  _.isElement = function(obj) {
+    return !!(obj && obj.nodeType == 1);
+  };
+
+  // Is a given value an array?
+  // Delegates to ECMA5's native Array.isArray
+  _.isArray = nativeIsArray || function(obj) {
+    return toString.call(obj) == '[object Array]';
+  };
+
+  // Is a given variable an object?
+  _.isObject = function(obj) {
+    return obj === Object(obj);
+  };
+
+  // Is a given variable an arguments object?
+  _.isArguments = function(obj) {
+    return toString.call(obj) == '[object Arguments]';
+  };
+  if (!_.isArguments(arguments)) {
+    _.isArguments = function(obj) {
+      return !!(obj && _.has(obj, 'callee'));
+    };
+  }
+
+  // Is a given value a function?
+  _.isFunction = function(obj) {
+    return toString.call(obj) == '[object Function]';
+  };
+
+  // Is a given value a string?
+  _.isString = function(obj) {
+    return toString.call(obj) == '[object String]';
+  };
+
+  // Is a given value a number?
+  _.isNumber = function(obj) {
+    return toString.call(obj) == '[object Number]';
+  };
+
+  // Is a given object a finite number?
+  _.isFinite = function(obj) {
+    return _.isNumber(obj) && isFinite(obj);
+  };
+
+  // Is the given value `NaN`?
+  _.isNaN = function(obj) {
+    // `NaN` is the only value for which `===` is not reflexive.
+    return obj !== obj;
+  };
+
+  // Is a given value a boolean?
+  _.isBoolean = function(obj) {
+    return obj === true || obj === false || toString.call(obj) == '[object Boolean]';
+  };
+
+  // Is a given value a date?
+  _.isDate = function(obj) {
+    return toString.call(obj) == '[object Date]';
+  };
+
+  // Is the given value a regular expression?
+  _.isRegExp = function(obj) {
+    return toString.call(obj) == '[object RegExp]';
+  };
+
+  // Is a given value equal to null?
+  _.isNull = function(obj) {
+    return obj === null;
+  };
+
+  // Is a given variable undefined?
+  _.isUndefined = function(obj) {
+    return obj === void 0;
+  };
+
+  // Has own property?
+  _.has = function(obj, key) {
+    return hasOwnProperty.call(obj, key);
+  };
+
+  // Utility Functions
+  // -----------------
+
+  // Run Underscore.js in *noConflict* mode, returning the `_` variable to its
+  // previous owner. Returns a reference to the Underscore object.
+  _.noConflict = function() {
+    root._ = previousUnderscore;
+    return this;
+  };
+
+  // Keep the identity function around for default iterators.
+  _.identity = function(value) {
+    return value;
+  };
+
+  // Run a function **n** times.
+  _.times = function (n, iterator, context) {
+    for (var i = 0; i < n; i++) iterator.call(context, i);
+  };
+
+  // Escape a string for HTML interpolation.
+  _.escape = function(string) {
+    return (''+string).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g,'&#x2F;');
+  };
+
+  // If the value of the named property is a function then invoke it;
+  // otherwise, return it.
+  _.result = function(object, property) {
+    if (object == null) return null;
+    var value = object[property];
+    return _.isFunction(value) ? value.call(object) : value;
+  };
+
+  // Add your own custom functions to the Underscore object, ensuring that
+  // they're correctly added to the OOP wrapper as well.
+  _.mixin = function(obj) {
+    each(_.functions(obj), function(name){
+      addToWrapper(name, _[name] = obj[name]);
+    });
+  };
+
+  // Generate a unique integer id (unique within the entire client session).
+  // Useful for temporary DOM ids.
+  var idCounter = 0;
+  _.uniqueId = function(prefix) {
+    var id = idCounter++;
+    return prefix ? prefix + id : id;
+  };
+
+  // By default, Underscore uses ERB-style template delimiters, change the
+  // following template settings to use alternative delimiters.
+  _.templateSettings = {
+    evaluate    : /<%([\s\S]+?)%>/g,
+    interpolate : /<%=([\s\S]+?)%>/g,
+    escape      : /<%-([\s\S]+?)%>/g
+  };
+
+  // When customizing `templateSettings`, if you don't want to define an
+  // interpolation, evaluation or escaping regex, we need one that is
+  // guaranteed not to match.
+  var noMatch = /.^/;
+
+  // Certain characters need to be escaped so that they can be put into a
+  // string literal.
+  var escapes = {
+    '\\': '\\',
+    "'": "'",
+    'r': '\r',
+    'n': '\n',
+    't': '\t',
+    'u2028': '\u2028',
+    'u2029': '\u2029'
+  };
+
+  for (var p in escapes) escapes[escapes[p]] = p;
+  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
+  var unescaper = /\\(\\|'|r|n|t|u2028|u2029)/g;
+
+  // Within an interpolation, evaluation, or escaping, remove HTML escaping
+  // that had been previously added.
+  var unescape = function(code) {
+    return code.replace(unescaper, function(match, escape) {
+      return escapes[escape];
+    });
+  };
+
+  // JavaScript micro-templating, similar to John Resig's implementation.
+  // Underscore templating handles arbitrary delimiters, preserves whitespace,
+  // and correctly escapes quotes within interpolated code.
+  _.template = function(text, data, settings) {
+    settings = _.defaults(settings || {}, _.templateSettings);
+
+    // Compile the template source, taking care to escape characters that
+    // cannot be included in a string literal and then unescape them in code
+    // blocks.
+    var source = "__p+='" + text
+      .replace(escaper, function(match) {
+        return '\\' + escapes[match];
+      })
+      .replace(settings.escape || noMatch, function(match, code) {
+        return "'+\n_.escape(" + unescape(code) + ")+\n'";
+      })
+      .replace(settings.interpolate || noMatch, function(match, code) {
+        return "'+\n(" + unescape(code) + ")+\n'";
+      })
+      .replace(settings.evaluate || noMatch, function(match, code) {
+        return "';\n" + unescape(code) + "\n;__p+='";
+      }) + "';\n";
+
+    // If a variable is not specified, place data values in local scope.
+    if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
+
+    source = "var __p='';" +
+      "var print=function(){__p+=Array.prototype.join.call(arguments, '')};\n" +
+      source + "return __p;\n";
+
+    var render = new Function(settings.variable || 'obj', '_', source);
+    if (data) return render(data, _);
+    var template = function(data) {
+      return render.call(this, data, _);
+    };
+
+    // Provide the compiled function source as a convenience for build time
+    // precompilation.
+    template.source = 'function(' + (settings.variable || 'obj') + '){\n' +
+      source + '}';
+
+    return template;
+  };
+
+  // Add a "chain" function, which will delegate to the wrapper.
+  _.chain = function(obj) {
+    return _(obj).chain();
+  };
+
+  // The OOP Wrapper
+  // ---------------
+
+  // If Underscore is called as a function, it returns a wrapped object that
+  // can be used OO-style. This wrapper holds altered versions of all the
+  // underscore functions. Wrapped objects may be chained.
+  var wrapper = function(obj) { this._wrapped = obj; };
+
+  // Expose `wrapper.prototype` as `_.prototype`
+  _.prototype = wrapper.prototype;
+
+  // Helper function to continue chaining intermediate results.
+  var result = function(obj, chain) {
+    return chain ? _(obj).chain() : obj;
+  };
+
+  // A method to easily add functions to the OOP wrapper.
+  var addToWrapper = function(name, func) {
+    wrapper.prototype[name] = function() {
+      var args = slice.call(arguments);
+      unshift.call(args, this._wrapped);
+      return result(func.apply(_, args), this._chain);
+    };
+  };
+
+  // Add all of the Underscore functions to the wrapper object.
+  _.mixin(_);
+
+  // Add all mutator Array functions to the wrapper.
+  each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      var wrapped = this._wrapped;
+      method.apply(wrapped, arguments);
+      var length = wrapped.length;
+      if ((name == 'shift' || name == 'splice') && length === 0) delete wrapped[0];
+      return result(wrapped, this._chain);
+    };
+  });
+
+  // Add all accessor Array functions to the wrapper.
+  each(['concat', 'join', 'slice'], function(name) {
+    var method = ArrayProto[name];
+    wrapper.prototype[name] = function() {
+      return result(method.apply(this._wrapped, arguments), this._chain);
+    };
+  });
+
+  // Start chaining a wrapped Underscore object.
+  wrapper.prototype.chain = function() {
+    this._chain = true;
+    return this;
+  };
+
+  // Extracts the result from a wrapped and chained object.
+  wrapper.prototype.value = function() {
+    return this._wrapped;
+  };
+
+}).call(this);
index f61414f..f75af97 100644 (file)
@@ -1,15 +1,4 @@
-{% extends "im/base_two_cols.html" %}
-
-{% block extra_messages %}
-    {% if not messages %}
-        {% for msg_type, msg in GLOBAL_MESSAGES.items %}
-            <li class="{{ msg_type }}">{{ msg|safe }}</li>
-        {% endfor %}
-        {% for msg_type, msg in PROFILE_MESSAGES.items %}
-            <li class="{{ msg_type }}">{{ msg|safe }}</li>
-        {% endfor %}
-    {% endif %}
-{% endblock %}
+{% extends "im/base.html" %}
 
 {% load filters %}
 
 
 {% block page.nav.items %}
     {% for item in menu%}
-        <li class="{% if item|lookup:"is_active" %}active{% endif %}">
+        <li {% if item|lookup:"is_active" %}class="active"{% endif %}>
             <a href="{{ item|lookup:"url" }}">{{ item|lookup:"name" }}</a>
         </li>
     {% endfor %}
 {% endblock %}
     
 {% block page.body %}
-<div class="maincol {% block innerpage.class %}full{% endblock %}">
+<div class="{% block innerpage.class %}full{% endblock %}">
 {% block body %}{% endblock %}
 
     {% if PROFILE_EXTRA_LINKS %}
-    <div class="extra-buttons buttons-list fixpos">
+    <div class="buttons-list fixpos">
         {% for href, name in PROFILE_EXTRA_LINKS.items %}
             <a class="button back right" href="{{ href }}">{{ name }}</a>
         {% endfor %}
     </div>
     {% endif %}
+    
 
 </div>
 
 {% endblock %}
index 8e4a26c..e8616c3 100644 (file)
@@ -1,8 +1,4 @@
-<!doctype html>
-<!--[if lt IE 7 ]> <html lang="en" class="no-js ie6"> <![endif]-->
-<!--[if IE 7 ]>    <html lang="en" class="no-js ie7"> <![endif]-->
-<!--[if IE 8 ]>    <html lang="en" class="no-js ie8"> <![endif]-->
-<!--[if (gte IE 9)|!(IE)]><!--> <html lang="en" class="no-js"> <!--<![endif]-->
+{% load astakos_tags %}<!doctype html>
 <head>
   {% block starthead %}{% endblock starthead %}
   <meta charset="UTF-8">
@@ -15,7 +11,7 @@
   
   <meta name="description" content="">
   <meta name="author" content="">
-  <meta name="viewport" content="">
+  <meta name="viewport" content="width=device-width, initial-scale=1.0,minimum-scale=1.0, maximum-scale=1.0">
     
   {% block page.js %}
   <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
   {% endblock page.favicons %}
 
   {% block page.css %}
-      <link href='https://fonts.googleapis.com/css?family=Antic' 
-        rel='stylesheet' type='text/css'>
-      <link rel="stylesheet" href="{{ IM_STATIC_URL }}css/styles.css" 
-        type='text/css'>
-      <link rel="stylesheet" href="{{ IM_STATIC_URL }}css/custom.css" 
-      type='text/css'>
+       
+      <link href='http://fonts.googleapis.com/css?family=Didact+Gothic&subset=latin' rel='stylesheet' type='text/css'>
+      <link rel="stylesheet" type="text/css" href="{{ IM_STATIC_URL }}css/global.css">
+      <link rel="stylesheet" type="text/css" href="{{ IM_STATIC_URL }}css/print.css" media="print">
       <!--[if lte IE 7]>
-            <link rel="stylesheet" type="text/css" 
-            href="{{ IM_STATIC_URL }}im/css/ie7.css">
+            <link rel="stylesheet" type="text/css" href="{{ IM_STATIC_URL }}css/ie7.css">
       <![endif]-->
+      <link rel="stylesheet" media="screen and (max-width: 960px)" href="{{ IM_STATIC_URL }}css/max960.css"/>
+      <link rel="stylesheet" media="screen and (max-width: 768px)" href="{{ IM_STATIC_URL }}css/max768.css"/>  
+      <link rel="stylesheet" media="screen and (max-width: 480px)" href="{{ IM_STATIC_URL }}css/max480.css"/>  
+      <link rel="stylesheet" type="text/css" href="{{ IM_STATIC_URL }}css/jquery-ui-1.8.21.custom.css"/>
+      
   {% endblock page.css %}
 
   {% block headjs %}
-      <script src="{{ IM_STATIC_URL }}js/modernizr-2.0.6.js"
-          type="text/javascript"></script>
-      <script src="{{ IM_STATIC_URL }}js/jquery.js" 
-          type="text/javascript"></script>
-      <script src="{{ IM_STATIC_URL }}js/jquery.infieldlabel.js" 
-          type="text/javascript"></script>
-      <script src="{{ IM_STATIC_URL }}js/forms.js" 
-          type="text/javascript"></script>
+         <script src="{{ IM_STATIC_URL }}js/jquery-1.7.1.min.js"></script>     
+         
+         <script src="{{ IM_STATIC_URL }}js/os.js"></script>   
+      <script src="{{ IM_STATIC_URL }}js/modernizr-2.0.6.js"></script> 
+      <script src="{{ IM_STATIC_URL }}js/jquery.js"></script>  
+      <script src="{{ IM_STATIC_URL }}js/jquery.infieldlabel.js"></script>     
+      <script src="{{ IM_STATIC_URL }}js/forms.js"></script>    
+      <script src="{{ IM_STATIC_URL }}js/common.js"></script> 
   {% endblock headjs %}
   {% block endhead %}{% endblock endhead %}
 
 </head>
 
 <body>
-    <div class='container'>
-        <div class='header'>
-            <div class="mainlogo">
-                <h1>accounts</h1>
-            </div>
+    <div class="container">
+        <div class="wrapper">       
             
+            {% display_messages %}
+
+               <div class="mainlogo">
+                <a href="{% url astakos.im.views.index %}">
+                               <img src="{{ IM_STATIC_URL }}images/accounts-logo.png" alt="accounts" />
+                       </a>
+               </div>
             {% block page.nav %}
             <div class="navigation">
-            <ul class="mainnav inline">
-                {% block page.nav.items %}
-                {% endblock %}
-            </ul>
-            <ul class="mainnav inline subnav">
-                {% block page.subnav %}{%endblock %}
-            </ul>
+                   <ul>
+                       {% block page.nav.items %}
+                       {% endblock %}
+                   </ul>
+                   <ul>
+                       {% block page.subnav %}{%endblock %}
+                   </ul>
             </div>
             {% endblock %}
-        </div>
-        {% if messages or EXTRA_MESSAGES_SET %}
-        <ul class="messages">
-            {% block extra_messages %}{% endblock %}
-            {% for message in messages %}
-            <li{% if message.tags %} 
-                class="{{ message.tags }}"{% endif %}>
-                {{ message }}</li>
-            {% endfor %}
-        </ul>
-        {% endif %}
-        <div class="page">
-            {% block page.body %}
-                <div class="maincol full">
-                    {% block body %}
-                    {% endblock %}
-                </div>
-            {% endblock %}
+               <div class="content">
+                   {% block page.body %}
+                       <div class="full">
+                           {% block body %}
+                           {% endblock %}
+                       </div>
+                   {% endblock %}
+               </div>
+          </div>
+    </div>
+    <div class="footer">
+        <div class="wrapper">
+               {% include "im/footer.html" %}
         </div>
     </div>
-    {% include "im/footer.html" %}
+    
 </body>
 </html>
index dedec7c..5dc3cd1 100644 (file)
@@ -1,12 +1,14 @@
 {% extends "im/base.html" %}
 
 {% block page.body %}
-<div class="maincol">
-    {% block body %}
-    {% endblock %}
-</div>
-<div class="rightcol">
-    {% block body.right %}
-    {% endblock %}
+<div class="two-cols clearfix">
+       <div class="rt">
+           {% block body.right %}
+           {% endblock %}
+       </div>
+       <div class="lt">
+           {% block body.left %}
+           {% endblock %}
+       </div>
 </div>
 {% endblock %}
diff --git a/snf-astakos-app/astakos/im/templates/im/captcha.html b/snf-astakos-app/astakos/im/templates/im/captcha.html
new file mode 100644 (file)
index 0000000..8ad8b77
--- /dev/null
@@ -0,0 +1,18 @@
+ <div id="okeanos_recaptcha" style="display:none" class="clearfix">
+
+   <div id="recaptcha_image"></div>
+   <div class="recaptcha_only_if_incorrect_sol" style="color:red">Incorrect please try again</div>
+
+   <label for="recaptcha_response_field" class="recaptcha_only_if_image">Enter the words above:</label>
+   <label for="recaptcha_response_field" class="recaptcha_only_if_audio">Enter the numbers you hear:</label>
+
+   <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />
+   <div class="actions-wrap clearfix">
+          <div class="img img-refresh"><a href="javascript:Recaptcha.reload()">Get another CAPTCHA</a></div>
+          <div class="recaptcha_only_if_image img-audio img"><a href="javascript:Recaptcha.switch_type('audio')">Get an audio CAPTCHA</a></div>
+   </div>
+   
+   <!--<div class="recaptcha_only_if_audio"><a href="javascript:Recaptcha.switch_type('image')">Get an image CAPTCHA</a></div>-->
+
+    
+ </div>
index fc512e0..6a23e36 100644 (file)
@@ -11,7 +11,7 @@
     <div class="form-row submit">
         <input type="hidden" name="next" value="{{ next }}">
         <input type="hidden" name="auth" value="{{ user.auth_token }}">
-    <input type="hidden" name="username" value="{{ username }}">
+       <input type="hidden" name="username" value="{{ username }}">
         <input type="submit" class="submit altcol" value="SEND" />
     </div>
   
index c4f148d..0169929 100644 (file)
@@ -1,9 +1,8 @@
-<div class="footer">
-    {% block footer_content %}
-    <div class="last row clearme">
-        Copyright 2011-2012 <a href="http://www.grnet.gr" alt="GRNET S.A.">GRNET S.A.</a> All rights reserved.
-        <div class="termslink" style="float:right"><a href="{% url latest_terms %}">Terms of use</a></div>
-    </div>
-    {% endblock %}
-</div>
+{% block footer_content %}
+<p class="termslink" style="float:right"><a href="{% url latest_terms %}">Terms of use</a></p>
+<p>Copyright 2011-2012 <a href="http://www.grnet.gr" target="_blank" title="GRNET S.A.">GRNET S.A.</a> All rights reserved.</p>
+{% endblock %}
 
index 0c63d01..534c01c 100644 (file)
@@ -6,11 +6,18 @@
 {% endfor %}
 </div>
 {% for field in form %}
-<div class="form-row {% if field.errors|length %}with-errors{% endif %}">
+<div class="form-row {% if field.errors|length %}with-errors{% endif %}  {% if field.is_hidden %}with-hidden{% endif %}">
         {{ field.errors }}
-     <p class="{% if field.blank %}required{% endif %}">
+     <p class="clearfix {% if field.blank %}required{% endif %}">
         {{ field.label_tag }}
         {{ field|safe }}
-        </p>
-    </div>
+        <span class="extra-img">&nbsp;</span>
+        {%  if field.help_text %}
+               <span class="info"> 
+                           <em>more info</em>
+                           <span>{{ field.help_text|safe }}</span>
+                   </span>
+        {% endif %}
+     </p>
+</div>
 {% endfor %}
index 5d75ef3..4840334 100644 (file)
@@ -1,48 +1,55 @@
 {% extends "im/account_base.html" %}
 
 {% block page.body %}
-<div class="maincol {% block innerpage.class %}{% endblock %}">
-    <div class="section">
-        <h2>You have <em>{{ inviter.invitations }}</em> invitation{{ inviter.invitations|pluralize }} left.</h2>
-        {% if sent|length %}
-          <table class="zebra-striped id-sorted">
-            <thead>
-              <tr>
-                <th>Email</th>
-                <th>Real Name</th>
-                <th>Used</th>
-              </tr>
-            </thead>
-            <tbody>
-              {% for inv in sent %}
-              <tr class="{% if inv.is_consumed %}used{% endif %}">
-                <td>{{ inv.email }}</td>
-                <td>{{ inv.realname }}</td>
-                <td class="consumed">{% if inv.is_consumed %}Yes{% else %}No{% endif %}</td>
-              </tr>
-              {% endfor %}
-            </tbody>
-        </table>
-        {% else %}
-            <p>No invitations sent</p>
-        {% endif %}
-    </div>
+<div class="full bottom-bordered clearfix">
+       <div class="lt-div">
+               <p>Invite someone else</p>
+       </div>
+        
+        {% if inviter.invitations %}
+         <form action="{% url astakos.im.views.invite %}" method="post"
+           class="innerlabels overflow-hidden">{% csrf_token %}
+       
+           {% with invitation_form as form %}
+               {% include "im/form_render.html" %}
+           {% endwith %}
+       
+           <div class="form-row submit">
+               <input type="submit" class="submit altcol" value="SEND" />
+           </div>
+         </form>
+         {% endif %}
+        
 </div>
+       <div class="full {% block innerpage.class %}{% endblock %}">
+           
+           <h2>You have <em>{{ inviter.invitations }}</em> invitation{{ inviter.invitations|pluralize }} left.</h2>
+           {% if sent|length %}
+             <table class="zebra-striped id-sorted">
+               <thead>
+                 <tr>
+                   <th>Email</th>
+                   <th>Real Name</th>
+                   <th>Used</th>
+                 </tr>
+               </thead>
+               <tbody>
+                 {% for inv in sent %}
+                 <tr class="{% if inv.is_consumed %}used{% endif %}">
+                   <td>{{ inv.email }}</td>
+                   <td>{{ inv.realname }}</td>
+                   <td class="consumed">{% if inv.is_consumed %}Yes{% else %}No{% endif %}</td>
+                 </tr>
+                 {% endfor %}
+               </tbody>
+           </table>
+           {% else %}
+               <p>No invitations sent</p>
+           {% endif %}
+       </div>     
+
 
-<div class="rightcol">
- {% if inviter.invitations %}
-  <form action="{% url astakos.im.views.invite %}" method="post"
-    class="innerlabels">{% csrf_token %}
-    <h2>INVITE SOMEONE ELSE</h2>
-    {% with invitation_form as form %}
-    {% include "im/form_render.html" %}
-    {% endwith %}
 
-    <div class="form-row submit">
-        <input type="submit" class="submit altcol" value="SEND" />
-    </div>
-  </form>
-  {% endif %}
-</div>
 {% endblock %}
 
index 4cfce43..33b1872 100644 (file)
@@ -1,68 +1,50 @@
 {% extends 'im/base_two_cols.html'%}
 
-{% block extra_messages %}
-    {% if not messages %}
-        {% for msg_type, msg in GLOBAL_MESSAGES.items %}
-            <li class="{{ msg_type }}">{{ msg|safe }}</li>
-        {% endfor %}
-        {% for msg_type, msg in LOGIN_MESSAGES.items %}
-            <li class="{{ msg_type }}">{{ msg|safe }}</li>
-        {% endfor %}
-    {% endif %}
-{% endblock %}
-
 {% block signup_class %}hidden{% endblock %}
-{% block page.title %}
-Login
-{% endblock %}
+{% block page.title %}{% endblock %}
 
-{% block body %}
-<div class="section">
-    <img class="pic" src="{{ IM_STATIC_URL }}images/pictures/login_pic.png" />
-</div>
-{% comment %}{% include "im/services_description.html" %}{% endcomment %}
-{% endblock body %}
+{% block body.left %}
+       <img class="pic" src="{{ IM_STATIC_URL }}images/porta.png" />
+       {% comment %}{% include "im/services_description.html" %}{% endcomment %}
+{% endblock body.left %}
     
-{% block body.right %}
-<div class="section">
-     {% if "local" in im_modules %}
-        <form action="{% url astakos.im.target.local.login %}" method="post"
-            class="login innerlabels">{% csrf_token %}
-            <h2 class="formheader"><span>LOGIN</span></h2>
-            {% with login_form as form %}
-            {% include "im/form_render.html" %}
-            {% endwith %}
-            <input type="hidden" name="next" value="{{ next }}">
-            <div class="form-row submit">
-                <input type="submit" class="submit altcol" value="SUBMIT" />
-                <a class="extra-link" href="{% url django.contrib.auth.views.password_reset %}">Forgot your password?</a>
-            </div>
-        </form>
-      {% endif %}
-
-          <div class="extralogin">
-              {% for o in im_modules %}
-              <div>
-            {% if o != 'local' %}
-            LOGIN using
+{% block body.right %} 
+       {% if "local" in im_modules %}
+       <form action="{% url astakos.im.target.local.login %}" method="post"class="login innerlabels">{% csrf_token %}
+                   <h2>LOGIN</h2>
+                   {% with login_form as form %}
+                       {% include "im/form_render.html" %}
+                   {% endwith %}
+                   <input type="hidden" name="next" value="{{ next }}">
+                   <div class="form-row submit clearfix">
+                       
+                       <input type="submit" class="submit altcol" value="SUBMIT" />
+                       <a class="extra-link" href="{% url django.contrib.auth.views.password_reset %}">Forgot your password?</a>
+                   </div>
+       </form>
+    {% endif %}
+    <div class="extralogin">
+         {% for o in im_modules %}
+       <div>
+        {% if o != 'local' %}
+        LOGIN using
             <a href="/im/login/{{ o }}?{% ifnotequal next "" %}&next={{ next|urlencode }}{% endifnotequal %}{% ifnotequal code ""%}{% if next != "" %}&{% else %}?{% endif %}code={{ code }}{% endifnotequal %}"
-                alt="{{ o|title }}">{{ o }}</a>
-            {% endif %}
-            </div>
-            {% endfor %}
+            alt="{{ o|title }}">{{ o }}</a>
+        {% endif %}
         </div>
-        {% block body.signup %}
-        {% for o in im_modules %}
-            {% if o != 'local' %}
-            <br />
-            {% endif %}
         {% endfor %}
-        <div class="bottom">
-            {% block body.login.signup %}
-                new to okeanos ? <a href="{% url astakos.im.views.signup %}{% ifnotequal code "" %}?code={{ code|urlencode }}{% endifnotequal %}">CREATE ACCOUNT</a>
-            {% endblock %}
-            </div>
-        </div>
-        {% endblock %}
-    </div>
-{% endblock %}
+    </div><br />
+    {% block body.signup %}
+           {% for o in im_modules %}
+               {% if o != 'local' %}
+              
+               {% endif %}
+           {% endfor %}
+           <div class="bottom">
+               {% block body.login.signup %}
+                   new to okeanos ? <a href="{% url astakos.im.views.signup %}{% ifnotequal code "" %}?code={{ code|urlencode }}{% endifnotequal %}">CREATE ACCOUNT</a>
+               {% endblock %}
+           </div>
+       {% endblock body.signup %}
+{% endblock body.right%}
index ffc0651..277a7e3 100644 (file)
@@ -2,8 +2,7 @@
 
 {% block body %}
 
-<form action={%url astakos.im.views.edit_profile %} method="post"
-    class="withlabels">{% csrf_token %}
+<form action={%url astakos.im.views.edit_profile %} method="post" class="withlabels">{% csrf_token %}
     
     {% with profile_form as form %}
     {% include "im/form_render.html" %}
index c7194b1..eaeb5be 100644 (file)
@@ -1,26 +1,13 @@
 {% extends 'im/base_two_cols.html' %}
 
-{% block extra_messages %}
-    {% if not messages %}
-        {% for msg_type, msg in GLOBAL_MESSAGES.items %}
-            <li class="{{ msg_type }}">{{ msg|safe }}</li>
-        {% endfor %}
-        {% for msg_type, msg in SIGNUP_MESSAGES.items %}
-            <li class="{{ msg_type }}">{{ msg|safe }}</li>
-        {% endfor %}
-    {% endif %}
-{% endblock %}
-
 {% block page.title %}
     Signup
 {% endblock %}
 
-{% block body %}
-<div class="section">
-    <img class="pic" src="{{ IM_STATIC_URL }}images/pictures/signup_pic.png" />
-</div>
+{% block body.left %}
+    <img class="pic" src="{{ IM_STATIC_URL }}images/pictures/accounts_3.png" />
 {% comment %}{% include "im/services_description.html" %}{% endcomment %}
-{% endblock body %}
+{% endblock body.left %}
 
 {% block body.right %}
     {% if "local" in im_modules %}
index 5c7936e..3b199e7 100644 (file)
@@ -4,12 +4,12 @@
 Password reset
 {% endblock %}
 
-{% block body %}
+{% block body.left %}
 <div class="section">
     <img class="pic" src="{{ IM_STATIC_URL }}images/pictures/login_pic.png" />
 </div>
 {% comment %}{% include "im/services_description.html" %}{% endcomment %}
-{% endblock body %}
+{% endblock body.left %}
     
 {% block body.right %}
      {% if "local" in im_modules %}
diff --git a/snf-astakos-app/astakos/im/templatetags/astakos_tags.py b/snf-astakos-app/astakos/im/templatetags/astakos_tags.py
new file mode 100644 (file)
index 0000000..b8b18b3
--- /dev/null
@@ -0,0 +1,62 @@
+from django import template
+from django.core.urlresolvers import reverse, resolve
+from django.conf import settings
+
+register = template.Library()
+
+MESSAGES_VIEWS_MAP = getattr(settings, 'ASTAKOS_MESSAGES_VIEWS_MAP', {
+    'astakos.im.views.index': 'LOGIN_MESSAGES',
+    'astakos.im.views.logout': 'LOGIN_MESSAGES',
+    'astakos.im.views.login': 'LOGIN_MESSAGES',
+    'astakos.im.views.signup': 'SIGNUP_MESSAGES',
+    'astakos.im.views.edit_profile': 'PROFILE_MESSAGES',
+    'astakos.im.views.change_password': 'PROFILE_MESSAGES',
+    'astakos.im.views.invite': 'PROFILE_MESSAGES',
+    'astakos.im.views.feedback': 'PROFILE_MESSAGES',
+})
+
+@register.tag(name='display_messages')
+def display_messages(parser, token):
+    return MessagesNode()
+
+class DummyMessage(object):
+    def __init__(self, type, msg):
+        self.message = msg
+        self.tags = type
+
+    def __repr__(self):
+        return "%s: %s" % (self.tags, self.message)
+
+class MessagesNode(template.Node):
+
+    def get_view_messages(self, context):
+        messages = list(context['GLOBAL_MESSAGES'])
+        try:
+            view = resolve(context['request'].get_full_path())[0]
+            view_name = "%s.%s" % (view.__module__, view.func_name)
+            messages += context[MESSAGES_VIEWS_MAP.get(view_name)]
+            return messages
+        except Exception, e:
+            return messages
+
+    def render(self, context):
+        if self not in context.render_context:
+            messages = list(context['messages'])
+            if context['EXTRA_MESSAGES_SET']:
+                view_messages = self.get_view_messages(context)
+                for msg_object in view_messages:
+                    messages.append(DummyMessage(msg_object[0], msg_object[1]))
+
+            if not messages:
+                return ""
+
+            cls = messages[-1].tags
+            content = '<div class="top-msg active %s">' % cls
+            for msg in messages:
+                content += '<div class="msg %s">%s</div>' % (msg.tags, msg.message)
+
+            content += '<a href="#" title="close" class="close">X</a>'
+            content += '</div>'
+            context.render_context[self] = content
+
+        return context.render_context[self]
index 904b821..7a1fe37 100644 (file)
@@ -262,7 +262,7 @@ def edit_profile(request, template_name='im/profile.html', extra_context={}):
                 next = request.POST.get('next')
                 if next:
                     return redirect(next)
-                msg = _('Profile has been updated successfully')
+                msg = _('<p>Profile has been updated successfully</p>')
                 messages.add_message(request, messages.SUCCESS, msg)
             except ValueError, ve:
                 messages.add_message(request, messages.ERROR, ve)
@@ -425,7 +425,7 @@ def logout(request, template='registration/logged_out.html', extra_context={}):
         response['Location'] = LOGOUT_NEXT
         response.status_code = 301
         return response
-    messages.add_message(request, messages.SUCCESS, _('You have successfully logged out.'))
+    messages.add_message(request, messages.SUCCESS, _('<p>You have successfully logged out.</p>'))
     context = get_context(request, extra_context)
     response.write(render_to_string(template, context_instance=context))
     return response
@@ -583,4 +583,4 @@ def change_email(request, activation_key=None,
     return render_response(form_template_name,
                            form = form,
                            context_instance = get_context(request,
-                                                          extra_context))
\ No newline at end of file
+                                                          extra_context))
index f59a0e2..502d9a3 100644 (file)
@@ -37,6 +37,7 @@ from django import forms
 from django.utils.safestring import mark_safe
 from django.utils import simplejson as json
 from django.utils.translation import ugettext as _
+from django.template.loader import render_to_string
 
 from astakos.im.settings import RECAPTCHA_PUBLIC_KEY, RECAPTCHA_OPTIONS, \
         RECAPTCHA_USE_SSL
@@ -48,7 +49,10 @@ class RecaptchaWidget(forms.Widget):
         recaptcha_conf = ('<script type="text/javascript">'
                          'var RecaptchaOptions = %s'
                          '</script>') % json.dumps(conf)
+        custom_widget_html = render_to_string("im/captcha.html", 
+ {'conf': 'Bob'})
         return mark_safe(recaptcha_conf + \
+                         custom_widget_html + \
                     captcha.displayhtml(RECAPTCHA_PUBLIC_KEY,
                         use_ssl=RECAPTCHA_USE_SSL))
 
index 6506337..38ac2dd 100644 (file)
 #ASTAKOS_RE_USER_EMAIL_PATTERNS = []
 
 # Messages to display on login page header
-# e.g. {'warning': 'This warning message will be displayed on the top of login page'}
-#ASTAKOS_LOGIN_MESSAGES = {}
+# e.g. [('warning', 'This warning message will be displayed on the top of login page')]
+#ASTAKOS_LOGIN_MESSAGES = []
 
 # Messages to display on signup page header
-# e.g. {'warning': 'This warning message will be displayed on the top of signup page'}
-#ASTAKOS_SIGNUP_MESSAGES = {}
+# e.g. [('warning', 'This warning message will be displayed on the top of signup page')]
+#ASTAKOS_SIGNUP_MESSAGES = []
 
 # Messages to display on profile page header
-# e.g. {'warning': 'This warning message will be displayed on the top of profile pages'}
-#ASTAKOS_PROFILE_MESSAGES = {}
+# e.g. [('warning', 'This warning message will be displayed on the top of profile pages')]
+#ASTAKOS_PROFILE_MESSAGES = []
 
 # Messages to display on global page header
-# e.g. {'warning': 'This warning message will be displayed on the top of all pages'}
-#ASTAKOS_GLOBAL_MESSAGES = {}
+# e.g. [('warning', 'This warning message will be displayed on the top of all pages')]
+#ASTAKOS_GLOBAL_MESSAGES = []
 
 # messages to display as extra actions in account forms
 # e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'}
-#ASTAKOS_PROFILE_EXTRA_LINKS = {}
+#ASTAKOS_PROFILE_EXTRA_LINKS = []
 
 # The number of unsuccessful login requests per minute allowed for a specific email
 #ASTAKOS_RATELIMIT_RETRIES_ALLOWED = 3
diff --git a/snf-astakos-app/conf/20-snf-astakos-app-settings.conf~ b/snf-astakos-app/conf/20-snf-astakos-app-settings.conf~
new file mode 100644 (file)
index 0000000..50e2407
--- /dev/null
@@ -0,0 +1,84 @@
+# Set the expiration time of newly created auth tokens
+# to be this many hours after their creation time.
+#ASTAKOS_AUTH_TOKEN_DURATION = 30 * 24
+
+# Authenticate via Twitter.
+#ASTAKOS_TWITTER_KEY = ''
+#ASTAKOS_TWITTER_SECRET = ''
+
+#ASTAKOS_DEFAULT_USER_LEVEL = 4
+
+#ASTAKOS_INVITATIONS_PER_LEVEL = {
+#    0   :   100,
+#    1   :   2,
+#    2   :   0,
+#    3   :   0,
+#    4   :   0
+#}
+
+# Address to use for outgoing emails
+#ASTAKOS_DEFAULT_FROM_EMAIL = 'GRNET Cloud <no-reply@grnet.gr>'
+#ASTAKOS_DEFAULT_CONTACT_EMAIL = 'support@cloud.grnet.gr'
+#ASTAKOS_DEFAULT_ADMIN_EMAIL = 'admin@cloud.grnet.gr'
+
+# Identity Management enabled modules
+#ASTAKOS_IM_MODULES = ['local', 'twitter', 'shibboleth']
+
+# Force user profile verification
+#ASTAKOS_FORCE_PROFILE_UPDATE = True
+
+#Enable invitations
+#ASTAKOS_INVITATIONS_ENABLED = True
+
+#ASTAKOS_COOKIE_NAME = '_pithos2_a'
+#ASTAKOS_COOKIE_DOMAIN = None
+#ASTAKOS_COOKIE_SECURE = True
+
+#ASTAKOS_IM_STATIC_URL = '/static/im/'
+
+# If set to False and invitations not enabled newly created user will be 
+# automatically accepted
+#ASTAKOS_MODERATION_ENABLED = True
+
+# Set baseurl
+#ASTAKOS_BASEURL = 'http://pithos.dev.grnet.gr'
+
+# Set service name
+#ASTAKOS_SITENAME = 'GRNET Cloud'
+
+# Set cloud services appear in the horizontal bar
+#ASTAKOS_CLOUD_SERVICES = (
+#        { 'url':'/', 'name':'grnet cloud', 'id':'cloud', 'icon':'home-icon.png' },
+#        { 'url':'/okeanos.html', 'name':'~okeanos', 'id':'okeanos' },
+#        { 'url':'/ui/', 'name':'pithos+', 'id':'pithos' })
+#
+
+# Set recaptcha keys
+# http://www.google.com/recaptcha/whyrecaptcha 
+#ASTAKOS_RECAPTCHA_PUBLIC_KEY = ''
+#ASTAKOS_RECAPTCHA_PRIVATE_KEY = ''
+ASTAKOS_RECAPTCHA_OPTIONS = {'theme':'clean'}
+#ASTAKOS_RECAPTCHA_USE_SSL = True
+#ASTAKOS_RECAPTCHA_ENABLED = True
+
+# set AstakosUser fields to propagate in the billing system
+#ASTAKOS_BILLING_FIELDS = ['is_active']
+
+# Queue for billing.
+#'rabbitmq://guest:guest@localhost:5672/astakos'
+#QUEUE_CONNECTION = None 
+
+# Set where the user should be redirected after logout
+#ASTAKOS_LOGOUT_NEXT = ''
+
+# Set user email patterns that are automatically activated
+#ASTAKOS_RE_USER_EMAIL_PATTERNS = []
+
+# Messages to display on login page header
+# e.g. {'warning': 'This warning message will be displayed on the top of login page'}
+#ASTAKOS_LOGIN_MESSAGES = {}
+
+# messages to display as extra actions in account forms
+# e.g. {'https://cms.okeanos.grnet.gr/': 'Back to ~okeanos'}
+#ASTAKOS_PROFILE_EXTRA_LINKS = {}
+