summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhanna <nowakh3d@wp.pl>2013-09-10 10:38:51 (GMT)
committer hanna <nowakh3d@wp.pl>2013-09-10 10:38:51 (GMT)
commit62fdcbb9362e6d0e9bc9b4dafa9ba0edd7433d3a (patch)
treeca23753f43180360fbbb1fd6ea8db4de23ce358d
parent9794dc10c810d9d7b3e95bcaa82ff73b53b1c687 (diff)
parentdc9747ef3458ff5a695227c30f8adf338e9b8878 (diff)
downloadQCG-Data-master.zip
QCG-Data-master.tar.gz
QCG-Data-master.tar.bz2
metasearchHEADmaster
-rw-r--r--idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java2
-rw-r--r--idrop-swing/lib/libbrowser.jarbin0 -> 72048 bytes
-rw-r--r--idrop-swing/pom.xml5
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form1
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java2
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java2
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form296
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java1656
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/MetaSearch.java5
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form4
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java170
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/CertificateConverter.java103
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssSecurityException.java27
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssUtil.java597
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/ZipFileExtractor.java111
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form5
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java9
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java109
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java14
-rw-r--r--idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java2
-rw-r--r--idrop-swing/src/main/resources/certificates.zipbin0 -> 23930 bytes
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color2.pngbin0 -> 28124 bytes
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo.pngbin0 -> 27615 bytes
-rw-r--r--idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo_data_logo.pngbin0 -> 27615 bytes
-rwxr-xr-xidrop-web/grails-app/conf/Config.groovy5
-rwxr-xr-xidrop-web/grails-app/conf/Config.groovy~6
-rwxr-xr-xidrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy1
-rw-r--r--idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy267
-rwxr-xr-xidrop-web/grails-app/i18n/messages.properties1
-rwxr-xr-xidrop-web/grails-app/views/common/_cssAndJs.gsp3
-rwxr-xr-xidrop-web/grails-app/views/common/_cssAndJs.gsp~41
-rwxr-xr-xidrop-web/grails-app/views/common/_topbar.gsp2
-rwxr-xr-xidrop-web/grails-app/views/common/_topbar.gsp~75
-rw-r--r--idrop-web/grails-app/views/metadata/index.gsp104
-rw-r--r--idrop-web/grails-app/views/metadataSearch/index.gsp158
-rwxr-xr-xidrop-web/src/templates/war/web.xml2
-rw-r--r--idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy17
-rwxr-xr-xidrop-web/web-app/css/bootstrap.css6981
-rwxr-xr-xidrop-web/web-app/css/bootstrap.css~5952
-rwxr-xr-xidrop-web/web-app/css/style.css18
-rw-r--r--idrop-web/web-app/js/mydrop/metaFiltering.js207
-rwxr-xr-xidrop-web/web-app/js/mydrop/search.js136
-rw-r--r--pom.xml5
43 files changed, 12992 insertions, 4109 deletions
diff --git a/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java b/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java
index cf29458..4305d1c 100644
--- a/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java
+++ b/idrop-lite/src/main/java/org/irods/jargon/idrop/lite/Version.java
@@ -1,5 +1,5 @@
package org.irods.jargon.idrop.lite;
public final class Version {
public static String VERSION="2.0.1-SNAPSHOT";
- public static String BUILD_TIME="20130529-0944";
+ public static String BUILD_TIME="20130723-1452";
}
diff --git a/idrop-swing/lib/libbrowser.jar b/idrop-swing/lib/libbrowser.jar
new file mode 100644
index 0000000..dc7211c
--- /dev/null
+++ b/idrop-swing/lib/libbrowser.jar
Binary files differ
diff --git a/idrop-swing/pom.xml b/idrop-swing/pom.xml
index 530627a..996239c 100644
--- a/idrop-swing/pom.xml
+++ b/idrop-swing/pom.xml
@@ -107,6 +107,11 @@
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.10</version>
</dependency>
+ <dependency>
+ <groupId>vine_certman</groupId>
+ <artifactId>libbrowser</artifactId>
+ <version>1</version>
+ </dependency>
</dependencies>
<build>
<plugins>
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form
index 097ab59..4ec4767 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/AddPermissionsDialog.form
@@ -15,6 +15,7 @@
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+ <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java
index 9e941e0..37b6c7a 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPConfigurationPanel.java
@@ -1714,7 +1714,7 @@ public class IDROPConfigurationPanel extends javax.swing.JDialog {
IRODSAccount savedAccount = idropCore.getIrodsAccount();
idropCore.setIrodsAccount(null);
iDrop idrop = (iDrop) thisPanel.getParent();
- LoginDialog loginDialog = new LoginDialog(thisPanel, idropCore);
+ LoginDialog loginDialog = new LoginDialog(thisPanel, idropCore,false);
loginDialog.setVisible(true);
if (idropCore.getIrodsAccount() == null) {
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java
index aa80d05..79facc9 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/IDROPDesktop.java
@@ -168,7 +168,7 @@ public class IDROPDesktop {
log.info("logging in in splash background thread");
idropSplashWindow.setStatus("Logging in...", ++count);
- final LoginDialog loginDialog = new LoginDialog(null, idropCore);
+ final LoginDialog loginDialog = new LoginDialog(null, idropCore,true);
Toolkit tk = idrop.getToolkit();
int x = (tk.getScreenSize().width - loginDialog.getWidth()) / 2;
int y = (tk.getScreenSize().height - loginDialog.getHeight()) / 2;
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form
index 43f33c2..12a7651 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.form
@@ -1,6 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.7" type="org.netbeans.modules.form.forminfo.JDialogFormInfo">
+ <NonVisualComponents>
+ <Component class="javax.swing.ButtonGroup" name="btngrpProxySource">
+ </Component>
+ </NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="2"/>
</Properties>
@@ -18,7 +22,7 @@
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
- <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,96,0,0,3,9"/>
+ <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,-68,0,0,2,-87"/>
</AuxValues>
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/>
@@ -178,7 +182,7 @@
<Container class="javax.swing.JPanel" name="jPanel1">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="1" gridY="10" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="1" gridY="17" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
@@ -218,7 +222,7 @@
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="0" gridY="9" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="0" gridY="16" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
@@ -234,7 +238,7 @@
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="1" gridY="9" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="1" gridY="16" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
@@ -244,14 +248,14 @@
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="0" gridY="9" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="txtProxy">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="1" gridY="7" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="1" gridY="9" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
@@ -261,14 +265,14 @@
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="0" gridY="8" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="0" gridY="11" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
<Component class="javax.swing.JTextField" name="txtCerts">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="1" gridY="8" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="1" gridY="11" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
@@ -281,7 +285,7 @@
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="2" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="2" gridY="9" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
@@ -294,10 +298,284 @@
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="2" gridY="11" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lblCertMode">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Certificate mode:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="13" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Container class="javax.swing.JPanel" name="jPanel2">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+
+ <Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout"/>
+ <SubComponents>
+ <Component class="javax.swing.JRadioButton" name="btnProxyCertKeyPair">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="btngrpProxySource"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="cert/key pair"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnProxyCertKeyPairActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JRadioButton" name="btnProxyP12">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="btngrpProxySource"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="p12 certificate"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnProxyP12ActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JRadioButton" name="btnProxyBrowser">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="btngrpProxySource"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="certificate in browser"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnProxyBrowserActionPerformed"/>
+ </Events>
+ </Component>
+ <Component class="javax.swing.JRadioButton" name="btnProxyFile">
+ <Properties>
+ <Property name="buttonGroup" type="javax.swing.ButtonGroup" editor="org.netbeans.modules.form.RADComponent$ButtonGroupPropertyEditor">
+ <ComponentRef name="btngrpProxySource"/>
+ </Property>
+ <Property name="text" type="java.lang.String" value="proxy file"/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnProxyFileActionPerformed"/>
+ </Events>
+ </Component>
+ </SubComponents>
+ </Container>
+ <Component class="javax.swing.JTextField" name="txtKeyLocation">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="10" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="21" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lblKeyLocation">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Key location:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="10" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JButton" name="btnKeyLocation">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Choose..."/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnKeyLocationActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="2" gridY="10" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lblP12CertificateLocation">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="P12 Certificate location:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JTextField" name="txtP12CertificateLocation">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="7" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JButton" name="btnP12CertificateLocation">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Choose..."/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnP12CertificateLocationActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="2" gridY="7" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lblCertPass">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Certificate password:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="12" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JPasswordField" name="certpass">
+ <Properties>
+ <Property name="columns" type="int" value="30"/>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="null"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="12" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lblPEMCertificateLocation">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="PEM Certificate location:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="8" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JTextField" name="txtPEMCertificateLocation">
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="8" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JButton" name="btnPEMCertificateLocation">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Choose..."/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnPEMCertificateLocationActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
<GridBagConstraints gridX="2" gridY="8" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
+ <Component class="javax.swing.JLabel" name="lbllBrowserCombo">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Selected browser:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="13" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JPasswordField" name="browserpass">
+ <Properties>
+ <Property name="columns" type="int" value="30"/>
+ <Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
+ <Dimension value="null"/>
+ </Property>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="14" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="17" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lblBrowserPass">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Browser password:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="14" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JComboBox" name="cmbBrowsers">
+ <Properties>
+ <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+ <StringArray count="4">
+ <StringItem index="0" value="Item 1"/>
+ <StringItem index="1" value="Item 2"/>
+ <StringItem index="2" value="Item 3"/>
+ <StringItem index="3" value="Item 4"/>
+ </StringArray>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cmbBrowsersActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="13" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JLabel" name="lbllCertCombo">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Selected certificate:"/>
+ </Properties>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="0" gridY="15" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="22" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JComboBox" name="cmbCertificates">
+ <Properties>
+ <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor">
+ <StringArray count="4">
+ <StringItem index="0" value="Item 1"/>
+ <StringItem index="1" value="Item 2"/>
+ <StringItem index="2" value="Item 3"/>
+ <StringItem index="3" value="Item 4"/>
+ </StringArray>
+ </Property>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cmbCertificatesActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="1" gridY="15" gridWidth="1" gridHeight="1" fill="1" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
+ <Component class="javax.swing.JButton" name="btnCheckCertsInBrowser">
+ <Properties>
+ <Property name="text" type="java.lang.String" value="Access..."/>
+ </Properties>
+ <Events>
+ <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="btnCheckCertsInBrowserActionPerformed"/>
+ </Events>
+ <Constraints>
+ <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
+ <GridBagConstraints gridX="2" gridY="14" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ </Constraint>
+ </Constraints>
+ </Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="pnlToolbar">
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java
index b60cc97..d45d35c 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/LoginDialog.java
@@ -2,6 +2,15 @@ package org.irods.jargon.idrop.desktop.systraygui;
import java.awt.Color;
import java.awt.event.ActionEvent;
+import java.io.File;
+import java.io.IOException;
+import java.security.GeneralSecurityException;
+import java.security.InvalidAlgorithmParameterException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.PrivateKey;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -11,9 +20,11 @@ import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.KeyStroke;
+import org.globus.gsi.GSIConstants;
import org.globus.gsi.GlobusCredential;
import org.globus.gsi.GlobusCredentialException;
import org.globus.gsi.gssapi.GlobusGSSCredentialImpl;
+
import org.ietf.jgss.GSSCredential;
import org.ietf.jgss.GSSException;
import org.irods.jargon.core.connection.GSIIRODSAccount;
@@ -22,374 +33,455 @@ import org.irods.jargon.core.connection.IRODSAccount;
import org.irods.jargon.core.connection.auth.AuthResponse;
import org.irods.jargon.core.exception.JargonException;
import org.irods.jargon.core.pub.IRODSFileSystem;
+import org.irods.jargon.idrop.desktop.systraygui.gss.CertificateConverter;
+import org.irods.jargon.idrop.desktop.systraygui.gss.GssSecurityException;
+import org.irods.jargon.idrop.desktop.systraygui.gss.GssUtil;
import org.irods.jargon.idrop.desktop.systraygui.services.IdropConfigurationService;
import org.irods.jargon.idrop.desktop.systraygui.utils.IdropPropertiesHelper;
import org.irods.jargon.idrop.exceptions.IdropException;
import org.irods.jargon.idrop.exceptions.IdropRuntimeException;
-import org.openide.util.Exceptions;
import org.slf4j.LoggerFactory;
+import uk.ac.rl.esc.browser.Browser;
/**
- *
+ *
* @author mikeconway
*/
public class LoginDialog extends JDialog {
- private static final long serialVersionUID = 1L;
- private IDROPCore idropCore = null;
- public static org.slf4j.Logger log = LoggerFactory
- .getLogger(LoginDialog.class);
+ private static final long serialVersionUID = 1L;
+ private IDROPCore idropCore = null;
+ public static org.slf4j.Logger log = LoggerFactory.getLogger(LoginDialog.class);
+ private boolean loginTrialSuccesful = false;
+
+ public boolean isLoginTrialSuccesful() {
+ return loginTrialSuccesful;
+ }
+ // Indexes of gsi modes used in properties to store users choice
+ static final int PEM_MODE = 1;
+ static final int P12_MODE = 2;
+ static final int BROWSER_MODE = 3;
+ static final int PROXY_MODE = 4;
+
+ boolean tryToLogin;
+
+ public LoginDialog(final JDialog parentDialog, final IDROPCore idropCore, boolean tryToLogin) {
+ super(parentDialog, true);
+ this.tryToLogin = tryToLogin;
+
+ if (idropCore == null) {
+ throw new IllegalArgumentException("null idropCore");
+ }
+ this.idropCore = idropCore;
+ initComponents();
- private boolean loginTrialSuccesful = false;
+ if (idropCore.getIdropConfig().isLoginPreset()) {
+ loginUsingPreset();
+ } else {
+ loginNormally();
+ }
- public boolean isLoginTrialSuccesful() {
- return loginTrialSuccesful;
+ registerKeystrokeListener();
+ setLocationRelativeTo(parentDialog);
+
+ }
+
+ private void loginNormally() {
+ // predispose based on preferences
+ String host = idropCore.getIdropConfig().getPropertyForKey(
+ IdropConfigurationService.ACCOUNT_CACHE_HOST);
+ if (host != null) {
+ txtHost.setText(host);
+ }
+ String port = idropCore.getIdropConfig().getPropertyForKey(
+ IdropConfigurationService.ACCOUNT_CACHE_PORT);
+ if (port == null || port.isEmpty()) {
+ port = "1247";
}
- public LoginDialog(final JDialog parentDialog, final IDROPCore idropCore) {
- super(parentDialog, true);
- if (idropCore == null) {
- throw new IllegalArgumentException("null idropCore");
- }
- this.idropCore = idropCore;
- initComponents();
-
- if (idropCore.getIdropConfig().isLoginPreset()) {
- loginUsingPreset();
- } else {
- loginNormally();
- }
-
- registerKeystrokeListener();
- setLocationRelativeTo(parentDialog);
-
- }
-
- private void loginNormally() {
- // predispose based on preferences
- String host = idropCore.getIdropConfig().getPropertyForKey(
- IdropConfigurationService.ACCOUNT_CACHE_HOST);
- if (host != null) {
- txtHost.setText(host);
- }
- String port = idropCore.getIdropConfig().getPropertyForKey(
- IdropConfigurationService.ACCOUNT_CACHE_PORT);
- if (port == null || port.isEmpty()) {
- port = "1247";
- }
-
- String mode = idropCore.getIdropConfig().getPropertyForKey(
- IdropConfigurationService.ACCOUNT_CACHE_LOGIN_MODE);
- if (mode == null || mode.isEmpty()) {
- mode = IRODSAccount.AuthScheme.STANDARD.name();
- } else {
- comboLoginMode.setSelectedItem(mode);
- }
-
- String proxy = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION);
-
- if(proxy!=null){
- txtProxy.setText(proxy);
+ String mode = idropCore.getIdropConfig().getPropertyForKey(
+ IdropConfigurationService.ACCOUNT_CACHE_LOGIN_MODE);
+ if (mode == null || mode.isEmpty()) {
+ mode = IRODSAccount.AuthScheme.STANDARD.name();
+ } else {
+ comboLoginMode.setSelectedItem(mode);
+ }
+
+ String proxy = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION);
+
+ if (proxy != null) {
+ txtProxy.setText(proxy);
+ }
+
+ String certificates = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION);
+
+ if (certificates != null) {
+ txtCerts.setText(certificates);
+ }
+
+ // Read paths from propeties: PEM certificate, PEM key, p12 certificate
+ String pemcert = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_PEM_LOCATION);
+ if (pemcert != null) {
+ txtPEMCertificateLocation.setText(pemcert);
+
+ }
+ String p12cert = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_P12_LOCATION);
+ if (p12cert != null) {
+ txtP12CertificateLocation.setText(p12cert);
+ }
+
+ String keyLoc = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_KEY_PEM_LOCATION);
+ if (keyLoc != null) {
+ txtKeyLocation.setText(keyLoc);
+ }
+ // Read gsi mode from properties (p12, PEM, browser, proxy file)
+ String certMode = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE);
+ try {
+ int certModeNum = Integer.parseInt(certMode);
+ setSelectedModeFields(certModeNum);
+ } catch (Exception ex) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.WARNING, null, ex);
+ }
+ //
+ txtPort.setText(port);
+ String zone = idropCore.getIdropConfig().getPropertyForKey(
+ IdropConfigurationService.ACCOUNT_CACHE_ZONE);
+ txtZone.setText(zone);
+ String resource = idropCore.getIdropConfig().getPropertyForKey(
+ IdropConfigurationService.ACCOUNT_CACHE_RESOURCE);
+ txtResource.setText(resource);
+ String username = idropCore.getIdropConfig().getPropertyForKey(
+ IdropConfigurationService.ACCOUNT_CACHE_USER_NAME);
+ txtUserName.setText(username);
+
+
+ String save = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS);
+ boolean saveP = "true".equals(save);
+ boolean autoGsi = false;
+ String gsi = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI);
+ autoGsi = "true".equals(gsi);
+
+ hideAdvancedViewFields();
+ hideProxyLoginFields();
+
+ if(autoGsi){
+ hideNormalLoginFields();
+ showProxyLoginFields();
+ chkProxyLogin.setSelected(true);
+ String gsiMode = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE);
+ try{
+ int gsiModeNum = Integer.parseInt(gsiMode);
+ setSelectedModeFields(gsiModeNum);
+ showProxyChoosenModeFields();
+ }catch(Exception e){
+ }
+ }
+
+ if (saveP) {
+ String savedPassword = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD);
+ password.setText(savedPassword);
+ chkRememberPass.setSelected(true);
+
+ String certPassword = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERT_PASSWORD);
+ certpass.setText(certPassword);
+ if(tryToLogin){
+ loginTrialSuccesful = !processLogin();
+ }
+ }
+ }
+
+ private void loginUsingPreset() {
+ log.debug("login will use presets");
+ lblHost.setVisible(false);
+ txtHost.setVisible(false);
+ lblPort.setVisible(false);
+ txtPort.setVisible(false);
+ lblZone.setVisible(false);
+ txtZone.setVisible(false);
+ lblResource.setVisible(false);
+ txtResource.setVisible(false);
+ chkAdvancedLogin.setVisible(false);
+ lblLoginMode.setVisible(false);
+ comboLoginMode.setVisible(false);
+ }
+
+ /**
+ * Action to take when login is initiated
+ *
+ * @return
+ * @throws NumberFormatException
+ */
+ private boolean processLogin() throws NumberFormatException {
+ // validate various inputs based on whether a full login, or a uid only
+ // login is indicated
+ if (!idropCore.getIdropConfig().isLoginPreset()) {
+ txtHost.setBackground(Color.white);
+ txtPort.setBackground(Color.white);
+ txtZone.setBackground(Color.white);
+ txtResource.setBackground(Color.white);
+ if (txtHost.getText().length() == 0) {
+ txtHost.setBackground(Color.red);
+ }
+ if (txtPort.getText().length() == 0) {
+ txtPort.setBackground(Color.red);
+ } else {
+ try {
+ Integer.parseInt(txtPort.getText());
+ } catch (Exception e) {
+ txtPort.setBackground(Color.red);
}
-
- String certificates = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION);
-
- if(certificates!=null){
- txtCerts.setText(certificates);
+ }
+ if (txtZone.getText().length() == 0) {
+ txtZone.setBackground(Color.red);
+ }
+ if (txtResource.getText().length() == 0) {
+ txtResource.setBackground(Color.red);
+ }
+ }
+
+ txtUserName.setBackground(Color.white);
+ password.setBackground(Color.white);
+ if (txtUserName.getText().length() == 0) {
+ txtUserName.setBackground(Color.red);
+ }
+ if (password.getPassword().length == 0) {
+ password.setBackground(Color.red);
+ }
+ StringBuilder sb = new StringBuilder();
+ final IRODSAccount irodsAccount;
+
+ try {
+
+ // validated, now try to log in
+ if (idropCore.getIdropConfig().isLoginPreset()) {
+ log.debug("creating account with presets");
+ String presetHost = idropCore.getIdropConfig()
+ .getPropertyForKey(
+ IdropPropertiesHelper.LOGIN_PRESET_HOST);
+ log.info("presetHost:{}", presetHost);
+ int presetPort = Integer.parseInt(idropCore.getIdropConfig()
+ .getPropertyForKey(
+ IdropPropertiesHelper.LOGIN_PRESET_PORT));
+ log.info("presetPort:{}", presetPort);
+ String presetZone = idropCore.getIdropConfig()
+ .getPropertyForKey(
+ IdropPropertiesHelper.LOGIN_PRESET_ZONE);
+ log.info("presetZone:{}", presetZone);
+ String presetResource = idropCore.getIdropConfig()
+ .getPropertyForKey(
+ IdropPropertiesHelper.LOGIN_PRESET_RESOURCE);
+ log.info("presetResource:{}", presetResource);
+ sb.append('/');
+ sb.append(presetZone);
+ sb.append("/home/");
+ sb.append(txtUserName.getText());
+
+ if (chkGuestLogin.isSelected()) {
+ irodsAccount = IRODSAccount.instanceForAnonymous(
+ presetHost, presetPort, "", presetZone,
+ presetResource);
+ } else if (chkProxyLogin.isSelected()) {
+
+ GSSCredential gssCred = getGssCredential();
+
+ GSIIRODSAccount acc = GSIIRODSAccount.instance(presetHost, presetPort, gssCred, presetResource);
+ acc.setCertificateAuthority(txtCerts.getText());
+ irodsAccount = acc;
+ } else {
+ irodsAccount = IRODSAccount.instance(presetHost,
+ presetPort, txtUserName.getText(), new String(
+ password.getPassword()), sb.toString(),
+ presetZone, presetResource);
+ }
+ } else {
+ sb.append('/');
+ sb.append(txtZone.getText());
+ sb.append("/home/");
+ sb.append(txtUserName.getText());
+
+ if (chkGuestLogin.isSelected()) {
+ irodsAccount = IRODSAccount.instanceForAnonymous(txtHost
+ .getText().trim(), Integer.parseInt(txtPort
+ .getText().trim()), "", txtZone.getText().trim(),
+ txtResource.getText().trim());
+ } else if (chkProxyLogin.isSelected()) {
+ // TODO
+ GSSCredential gssCred = getGssCredential();
+
+
+ GSIIRODSAccount acc = GSIIRODSAccount.instance(
+ txtHost.getText().trim(),
+ Integer.parseInt(txtPort.getText().trim()), gssCred, txtResource.getText().trim());
+ acc.setCertificateAuthority(txtCerts.getText().trim());
+ irodsAccount = acc;
+
+ } else {
+ irodsAccount = IRODSAccount.instance(txtHost.getText()
+ .trim(),
+ Integer.parseInt(txtPort.getText().trim()),
+ txtUserName.getText().trim(),
+ new String(password.getPassword()).trim(), sb
+ .toString().trim(), txtZone.getText()
+ .trim(), txtResource.getText().trim());
}
+ }
+ } catch (JargonException ex) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
+ null, ex);
+ MessageManager.showError(this, ex.getMessage(),
+ MessageManager.TITLE_MESSAGE);
+ return true;
+ } catch (GlobusCredentialException ex) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE, null, ex);
+ MessageManager.showError(this, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ return true;
+ } catch (GSSException ex) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE, null, ex);
+ MessageManager.showError(this, ex.getMessage(), MessageManager.TITLE_MESSAGE);
+ return true;
+ } catch (GssSecurityException ex) {//?
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE, null, ex);
+ MessageManager.showError(this,
+ "Wrong certifcate, key, password or proxy.",
+ "Login Error");
+ return true;
+ }
- txtPort.setText(port);
- String zone = idropCore.getIdropConfig().getPropertyForKey(
- IdropConfigurationService.ACCOUNT_CACHE_ZONE);
- txtZone.setText(zone);
- String resource = idropCore.getIdropConfig().getPropertyForKey(
- IdropConfigurationService.ACCOUNT_CACHE_RESOURCE);
- txtResource.setText(resource);
- String username = idropCore.getIdropConfig().getPropertyForKey(
- IdropConfigurationService.ACCOUNT_CACHE_USER_NAME);
- txtUserName.setText(username);
+ if (comboLoginMode.getSelectedItem().toString()
+ .equals(IRODSAccount.AuthScheme.PAM.name())) {
+ irodsAccount.setAuthenticationScheme(IRODSAccount.AuthScheme.PAM);
+ }
-
- String save = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS);
- boolean saveP = "true".equals(save);
- if(saveP){
- String savedPassword = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD);
- password.setText(savedPassword);
- chkRememberPass.setSelected(true);
-
- String gsi = idropCore.getIdropConfig().getPropertyForKey(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI);
- boolean autoGsi = "true".equals(gsi);
- chkProxyLogin.setSelected(autoGsi);
+ IRODSFileSystem irodsFileSystem = null;
+
+ /*
+ * getting userAO will attempt the login
+ */
+
+ try {
+ irodsFileSystem = idropCore.getIrodsFileSystem();
+ AuthResponse authResponse = irodsFileSystem
+ .getIRODSAccessObjectFactory().authenticateIRODSAccount(
+ irodsAccount);
+ idropCore.setIrodsAccount(authResponse
+ .getAuthenticatedIRODSAccount());
+ try {
+ idropCore.getIdropConfigurationService().saveLogin(irodsAccount);
+ if(chkRememberPass.isSelected()){
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD,
+ irodsAccount.getPassword());
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS,
+ "true");
- loginTrialSuccesful = !processLogin();
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_PASSWORD,
+ certpass.getText());
+ }else{
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD,
+ "");
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS,
+ "false");
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_PASSWORD,
+ "");
}
-
- hideAdvancedViewFields();
- hideProxyLoginFields();
- }
-
- private void loginUsingPreset() {
- log.debug("login will use presets");
- lblHost.setVisible(false);
- txtHost.setVisible(false);
- lblPort.setVisible(false);
- txtPort.setVisible(false);
- lblZone.setVisible(false);
- txtZone.setVisible(false);
- lblResource.setVisible(false);
- txtResource.setVisible(false);
- chkAdvancedLogin.setVisible(false);
- lblLoginMode.setVisible(false);
- comboLoginMode.setVisible(false);
- }
-
- /**
- * Action to take when login is initiated
- *
- * @return
- * @throws NumberFormatException
- */
- private boolean processLogin() throws NumberFormatException {
- // validate various inputs based on whether a full login, or a uid only
- // login is indicated
- if (!idropCore.getIdropConfig().isLoginPreset()) {
- txtHost.setBackground(Color.white);
- txtPort.setBackground(Color.white);
- txtZone.setBackground(Color.white);
- txtResource.setBackground(Color.white);
- if (txtHost.getText().length() == 0) {
- txtHost.setBackground(Color.red);
- }
- if (txtPort.getText().length() == 0) {
- txtPort.setBackground(Color.red);
- } else {
- try {
- Integer.parseInt(txtPort.getText());
- } catch (Exception e) {
- txtPort.setBackground(Color.red);
- }
- }
- if (txtZone.getText().length() == 0) {
- txtZone.setBackground(Color.red);
- }
- if (txtResource.getText().length() == 0) {
- txtResource.setBackground(Color.red);
- }
- }
-
- txtUserName.setBackground(Color.white);
- password.setBackground(Color.white);
- if (txtUserName.getText().length() == 0) {
- txtUserName.setBackground(Color.red);
- }
- if (password.getPassword().length == 0) {
- password.setBackground(Color.red);
- }
- StringBuilder sb = new StringBuilder();
- final IRODSAccount irodsAccount;
-
- try {
-
- // validated, now try to log in
- if (idropCore.getIdropConfig().isLoginPreset()) {
- log.debug("creating account with presets");
- String presetHost = idropCore.getIdropConfig()
- .getPropertyForKey(
- IdropPropertiesHelper.LOGIN_PRESET_HOST);
- log.info("presetHost:{}", presetHost);
- int presetPort = Integer.parseInt(idropCore.getIdropConfig()
- .getPropertyForKey(
- IdropPropertiesHelper.LOGIN_PRESET_PORT));
- log.info("presetPort:{}", presetPort);
- String presetZone = idropCore.getIdropConfig()
- .getPropertyForKey(
- IdropPropertiesHelper.LOGIN_PRESET_ZONE);
- log.info("presetZone:{}", presetZone);
- String presetResource = idropCore.getIdropConfig()
- .getPropertyForKey(
- IdropPropertiesHelper.LOGIN_PRESET_RESOURCE);
- log.info("presetResource:{}", presetResource);
- sb.append('/');
- sb.append(presetZone);
- sb.append("/home/");
- sb.append(txtUserName.getText());
-
- if (chkGuestLogin.isSelected()) {
- irodsAccount = IRODSAccount.instanceForAnonymous(
- presetHost, presetPort, "", presetZone,
- presetResource);
- } else if(chkProxyLogin.isSelected()){
- GlobusCredential globusCred = new GlobusCredential(txtProxy.getText());
- GSSCredential gssCred = new GlobusGSSCredentialImpl(globusCred,GSSCredential.INITIATE_AND_ACCEPT);
- GSIIRODSAccount acc = GSIIRODSAccount.instance(presetHost, presetPort, gssCred, presetResource);
- acc.setCertificateAuthority(txtCerts.getText());
- irodsAccount = acc;
- } else {
- irodsAccount = IRODSAccount.instance(presetHost,
- presetPort, txtUserName.getText(), new String(
- password.getPassword()), sb.toString(),
- presetZone, presetResource);
- }
- } else {
- sb.append('/');
- sb.append(txtZone.getText());
- sb.append("/home/");
- sb.append(txtUserName.getText());
-
- if (chkGuestLogin.isSelected()) {
- irodsAccount = IRODSAccount.instanceForAnonymous(txtHost
- .getText().trim(), Integer.parseInt(txtPort
- .getText().trim()), "", txtZone.getText().trim(),
- txtResource.getText().trim());
- } else if(chkProxyLogin.isSelected()){
- // TODO
- GlobusCredential globusCred = new GlobusCredential(txtProxy.getText());
- GSSCredential gssCred = new GlobusGSSCredentialImpl(globusCred, GSSCredential.INITIATE_AND_ACCEPT);
- GSIIRODSAccount acc = GSIIRODSAccount.instance(
- txtHost.getText().trim(),
- Integer.parseInt(txtPort.getText().trim()), gssCred, txtResource.getText().trim());
- acc.setCertificateAuthority(txtCerts.getText().trim());
- irodsAccount = acc;
-
- } else{
- irodsAccount = IRODSAccount.instance(txtHost.getText()
- .trim(),
- Integer.parseInt(txtPort.getText().trim()),
- txtUserName.getText().trim(),
- new String(password.getPassword()).trim(), sb
- .toString().trim(), txtZone.getText()
- .trim(), txtResource.getText().trim());
- }
- }
- } catch (JargonException ex) {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
- null, ex);
- MessageManager.showError(this, ex.getMessage(),
- MessageManager.TITLE_MESSAGE);
- return true;
- } catch (GlobusCredentialException ex) {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,null,ex);
- MessageManager.showError(this, ex.getMessage(), MessageManager.TITLE_MESSAGE);
- return true;
- } catch (GSSException ex) {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,null,ex);
- MessageManager.showError(this, ex.getMessage(), MessageManager.TITLE_MESSAGE);
- return true;
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION, txtProxy.getText());
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION, txtCerts.getText());
+
+ if (chkProxyLogin.isSelected()) {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI, "true");
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE, "" + getSelectedModeFieldNum());
+ } else {
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI, "false");
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_LOGIN_MODE, "-1");
}
- if (comboLoginMode.getSelectedItem().toString()
- .equals(IRODSAccount.AuthScheme.PAM.name())) {
- irodsAccount.setAuthenticationScheme(IRODSAccount.AuthScheme.PAM);
- }
-
- IRODSFileSystem irodsFileSystem = null;
-
- /*
- * getting userAO will attempt the login
- */
-
- try {
- irodsFileSystem = idropCore.getIrodsFileSystem();
- AuthResponse authResponse = irodsFileSystem
- .getIRODSAccessObjectFactory().authenticateIRODSAccount(
- irodsAccount);
- idropCore.setIrodsAccount(authResponse
- .getAuthenticatedIRODSAccount());
- try {
- idropCore.getIdropConfigurationService()
-
- .saveLogin(irodsAccount, chkRememberPass.isSelected());
-
- idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_PROXY_LOCATION, txtProxy.getText());
- idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERTIFICATES_LOCATION, txtCerts.getText());
- if(chkProxyLogin.isSelected()){
- idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI,"true");
- }else{
- idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_AUTO_GSI,"false");
- }
- //todo save proxy path and certificates location
-
- } catch (IdropException ex) {
- throw new IdropRuntimeException("error saving irodsAccount", ex);
- }
- dispose();
- } catch (JargonException ex) {
- if (ex.getMessage().indexOf("Connection refused") > -1) {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
- null, ex);
- MessageManager.showError(this,
- "Cannot connect to the server, is it down?",
- "Login Error");
-
- return true;
- } else if (ex.getMessage().indexOf("Connection reset") > -1) {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
- null, ex);
- MessageManager.showError(this,
- "Cannot connect to the server, is it down?",
- "Login Error");
-
- return true;
- } else if (ex.getMessage().indexOf("io exception opening socket") > -1) {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
- null, ex);
- MessageManager.showError(this,
- "Cannot connect to the server, is it down?",
- "Login Error");
-
- return true;
- } else {
- Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
- null, ex);
- MessageManager.showError(this,
- "login error - unable to log in, or invalid user id",
- "Login Error");
-
- return true;
- }
- } finally {
- if (irodsFileSystem != null) {
- irodsFileSystem.closeAndEatExceptions();
- }
- }
- return false;
- }
-
- /**
- * Register a listener for the enter event, so login can occur.
- */
- private void registerKeystrokeListener() {
-
- KeyStroke enter = KeyStroke.getKeyStroke(
- java.awt.event.KeyEvent.VK_ENTER, 0);
- Action enterAction = new AbstractAction() {
- /**
- *
- */
- private static final long serialVersionUID = 3468144821565093455L;
-
- @Override
- public void actionPerformed(final ActionEvent e) {
- processLogin();
- }
- };
- btnOK.registerKeyboardAction(enterAction, enter,
- JComponent.WHEN_IN_FOCUSED_WINDOW);
-
- }
-
- /**
- * This method is called from within the constructor to initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is always
- * regenerated by the Form Editor.
- */
-
- // <editor-fold defaultstate="collapsed"
- // <editor-fold defaultstate="collapsed"
+ // Save in properties: paths to certificates, key and gsi mode
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_PEM_LOCATION, txtPEMCertificateLocation.getText());
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_KEY_PEM_LOCATION, txtKeyLocation.getText());
+ idropCore.getIdropConfigurationService().updateConfig(IdropConfigurationService.ACCOUNT_CACHE_CERT_P12_LOCATION, txtP12CertificateLocation.getText());
+
+ //todo save proxy path and certificates location
+
+ } catch (IdropException ex) {
+ throw new IdropRuntimeException("error saving irodsAccount", ex);
+ }
+ dispose();
+ } catch (JargonException ex) {
+ if (ex.getMessage().indexOf("Connection refused") > -1) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
+ null, ex);
+ MessageManager.showError(this,
+ "Cannot connect to the server, is it down?",
+ "Login Error");
+
+ return true;
+ } else if (ex.getMessage().indexOf("Connection reset") > -1) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
+ null, ex);
+ MessageManager.showError(this,
+ "Cannot connect to the server, is it down?",
+ "Login Error");
+
+ return true;
+ } else if (ex.getMessage().indexOf("io exception opening socket") > -1) {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
+ null, ex);
+ MessageManager.showError(this,
+ "Cannot connect to the server, is it down?",
+ "Login Error");
+
+ return true;
+ } else {
+ Logger.getLogger(LoginDialog.class.getName()).log(Level.SEVERE,
+ null, ex);
+ MessageManager.showError(this,
+ "login error - unable to log in, or invalid user id",
+ "Login Error");
+
+ return true;
+ }
+ } finally {
+ if (irodsFileSystem != null) {
+ irodsFileSystem.closeAndEatExceptions();
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Register a listener for the enter event, so login can occur.
+ */
+ private void registerKeystrokeListener() {
+
+ KeyStroke enter = KeyStroke.getKeyStroke(
+ java.awt.event.KeyEvent.VK_ENTER, 0);
+ Action enterAction = new AbstractAction() {
+ /**
+ *
+ */
+ private static final long serialVersionUID = 3468144821565093455L;
+
+ @Override
+ public void actionPerformed(final ActionEvent e) {
+ processLogin();
+ }
+ };
+ btnOK.registerKeyboardAction(enterAction, enter,
+ JComponent.WHEN_IN_FOCUSED_WINDOW);
+
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // <editor-fold defaultstate="collapsed"
+ // <editor-fold defaultstate="collapsed"
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
+ btngrpProxySource = new javax.swing.ButtonGroup();
pnlLoginInfo = new javax.swing.JPanel();
lblHost = new javax.swing.JLabel();
txtHost = new javax.swing.JTextField();
@@ -415,6 +507,30 @@ public class LoginDialog extends JDialog {
txtCerts = new javax.swing.JTextField();
btnProxy = new javax.swing.JButton();
btnCerts = new javax.swing.JButton();
+ lblCertMode = new javax.swing.JLabel();
+ jPanel2 = new javax.swing.JPanel();
+ btnProxyCertKeyPair = new javax.swing.JRadioButton();
+ btnProxyP12 = new javax.swing.JRadioButton();
+ btnProxyBrowser = new javax.swing.JRadioButton();
+ btnProxyFile = new javax.swing.JRadioButton();
+ txtKeyLocation = new javax.swing.JTextField();
+ lblKeyLocation = new javax.swing.JLabel();
+ btnKeyLocation = new javax.swing.JButton();
+ lblP12CertificateLocation = new javax.swing.JLabel();
+ txtP12CertificateLocation = new javax.swing.JTextField();
+ btnP12CertificateLocation = new javax.swing.JButton();
+ lblCertPass = new javax.swing.JLabel();
+ certpass = new javax.swing.JPasswordField();
+ lblPEMCertificateLocation = new javax.swing.JLabel();
+ txtPEMCertificateLocation = new javax.swing.JTextField();
+ btnPEMCertificateLocation = new javax.swing.JButton();
+ lbllBrowserCombo = new javax.swing.JLabel();
+ browserpass = new javax.swing.JPasswordField();
+ lblBrowserPass = new javax.swing.JLabel();
+ cmbBrowsers = new javax.swing.JComboBox();
+ lbllCertCombo = new javax.swing.JLabel();
+ cmbCertificates = new javax.swing.JComboBox();
+ btnCheckCertsInBrowser = new javax.swing.JButton();
pnlToolbar = new javax.swing.JPanel();
chkRememberPass = new javax.swing.JCheckBox();
btnOK = new javax.swing.JButton();
@@ -551,14 +667,14 @@ public class LoginDialog extends JDialog {
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 10;
+ gridBagConstraints.gridy = 17;
pnlLoginInfo.add(jPanel1, gridBagConstraints);
lblLoginMode.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
lblLoginMode.setText("Login Mode:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 9;
+ gridBagConstraints.gridy = 16;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
pnlLoginInfo.add(lblLoginMode, gridBagConstraints);
@@ -566,31 +682,31 @@ public class LoginDialog extends JDialog {
comboLoginMode.setToolTipText("Authentication mode used at login");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 9;
+ gridBagConstraints.gridy = 16;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
pnlLoginInfo.add(comboLoginMode, gridBagConstraints);
lblProxy.setText("Proxy location:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 7;
+ gridBagConstraints.gridy = 9;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
pnlLoginInfo.add(lblProxy, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 7;
+ gridBagConstraints.gridy = 9;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
pnlLoginInfo.add(txtProxy, gridBagConstraints);
lblCerts.setText("Certificates location:");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
- gridBagConstraints.gridy = 8;
+ gridBagConstraints.gridy = 11;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
pnlLoginInfo.add(lblCerts, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
- gridBagConstraints.gridy = 8;
+ gridBagConstraints.gridy = 11;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
pnlLoginInfo.add(txtCerts, gridBagConstraints);
@@ -603,7 +719,7 @@ public class LoginDialog extends JDialog {
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 7;
+ gridBagConstraints.gridy = 9;
pnlLoginInfo.add(btnProxy, gridBagConstraints);
btnCerts.setText("Choose...");
@@ -614,9 +730,203 @@ public class LoginDialog extends JDialog {
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
- gridBagConstraints.gridy = 8;
+ gridBagConstraints.gridy = 11;
pnlLoginInfo.add(btnCerts, gridBagConstraints);
+ lblCertMode.setText("Certificate mode:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
+ pnlLoginInfo.add(lblCertMode, gridBagConstraints);
+
+ btngrpProxySource.add(btnProxyCertKeyPair);
+ btnProxyCertKeyPair.setText("cert/key pair");
+ btnProxyCertKeyPair.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnProxyCertKeyPairActionPerformed(evt);
+ }
+ });
+ jPanel2.add(btnProxyCertKeyPair);
+
+ btngrpProxySource.add(btnProxyP12);
+ btnProxyP12.setText("p12 certificate");
+ btnProxyP12.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnProxyP12ActionPerformed(evt);
+ }
+ });
+ jPanel2.add(btnProxyP12);
+
+ btngrpProxySource.add(btnProxyBrowser);
+ btnProxyBrowser.setText("certificate in browser");
+ btnProxyBrowser.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnProxyBrowserActionPerformed(evt);
+ }
+ });
+ jPanel2.add(btnProxyBrowser);
+
+ btngrpProxySource.add(btnProxyFile);
+ btnProxyFile.setText("proxy file");
+ btnProxyFile.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnProxyFileActionPerformed(evt);
+ }
+ });
+ jPanel2.add(btnProxyFile);
+
+ pnlLoginInfo.add(jPanel2, new java.awt.GridBagConstraints());
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 10;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
+ pnlLoginInfo.add(txtKeyLocation, gridBagConstraints);
+
+ lblKeyLocation.setText("Key location:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 10;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lblKeyLocation, gridBagConstraints);
+
+ btnKeyLocation.setText("Choose...");
+ btnKeyLocation.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnKeyLocationActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 10;
+ pnlLoginInfo.add(btnKeyLocation, gridBagConstraints);
+
+ lblP12CertificateLocation.setText("P12 Certificate location:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lblP12CertificateLocation, gridBagConstraints);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 7;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlLoginInfo.add(txtP12CertificateLocation, gridBagConstraints);
+
+ btnP12CertificateLocation.setText("Choose...");
+ btnP12CertificateLocation.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnP12CertificateLocationActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 7;
+ pnlLoginInfo.add(btnP12CertificateLocation, gridBagConstraints);
+
+ lblCertPass.setText("Certificate password:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 12;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lblCertPass, gridBagConstraints);
+
+ certpass.setColumns(30);
+ certpass.setPreferredSize(null);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 12;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ pnlLoginInfo.add(certpass, gridBagConstraints);
+
+ lblPEMCertificateLocation.setText("PEM Certificate location:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 8;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lblPEMCertificateLocation, gridBagConstraints);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 8;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlLoginInfo.add(txtPEMCertificateLocation, gridBagConstraints);
+
+ btnPEMCertificateLocation.setText("Choose...");
+ btnPEMCertificateLocation.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnPEMCertificateLocationActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 8;
+ pnlLoginInfo.add(btnPEMCertificateLocation, gridBagConstraints);
+
+ lbllBrowserCombo.setText("Selected browser:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 13;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lbllBrowserCombo, gridBagConstraints);
+
+ browserpass.setColumns(30);
+ browserpass.setPreferredSize(null);
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 14;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
+ pnlLoginInfo.add(browserpass, gridBagConstraints);
+
+ lblBrowserPass.setText("Browser password:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 14;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lblBrowserPass, gridBagConstraints);
+
+ cmbBrowsers.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ cmbBrowsers.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ cmbBrowsersActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 13;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlLoginInfo.add(cmbBrowsers, gridBagConstraints);
+
+ lbllCertCombo.setText("Selected certificate:");
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 0;
+ gridBagConstraints.gridy = 15;
+ gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
+ pnlLoginInfo.add(lbllCertCombo, gridBagConstraints);
+
+ cmbCertificates.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
+ cmbCertificates.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ cmbCertificatesActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 1;
+ gridBagConstraints.gridy = 15;
+ gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
+ pnlLoginInfo.add(cmbCertificates, gridBagConstraints);
+
+ btnCheckCertsInBrowser.setText("Access...");
+ btnCheckCertsInBrowser.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnCheckCertsInBrowserActionPerformed(evt);
+ }
+ });
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 2;
+ gridBagConstraints.gridy = 14;
+ pnlLoginInfo.add(btnCheckCertsInBrowser, gridBagConstraints);
+
getContentPane().add(pnlLoginInfo, java.awt.BorderLayout.CENTER);
pnlToolbar.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT, 2, 5));
@@ -663,15 +973,17 @@ public class LoginDialog extends JDialog {
}//GEN-LAST:event_chkRememberPassActionPerformed
private void chkProxyLoginActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_chkProxyLoginActionPerformed
- if(chkProxyLogin.isSelected()){
+ if (chkProxyLogin.isSelected()) {
chkGuestLogin.setSelected(false);
//hide username/pass
hideForGuestLogin();
- showProxyLoginFields();
- }else{
+ showProxyLoginFields();
+ //Shows proper fields for choosen gsi mode (p12/pem/browser/proxy file)
+ showProxyChoosenModeFields();
+ } else {
//show username/password
showWhenGuestLogin();
- hideProxyLoginFields();
+ hideProxyLoginFields();
}
}//GEN-LAST:event_chkProxyLoginActionPerformed
@@ -679,11 +991,11 @@ public class LoginDialog extends JDialog {
final JFileChooser chooser = new JFileChooser();
chooser.setFileHidingEnabled(false);
int res = chooser.showOpenDialog(this);
- if(res == JFileChooser.APPROVE_OPTION){
- if(chooser.getSelectedFile().canRead()){
+ if (res == JFileChooser.APPROVE_OPTION) {
+ if (chooser.getSelectedFile().canRead()) {
txtProxy.setText(chooser.getSelectedFile().getAbsolutePath());
}
- }
+ }
}//GEN-LAST:event_btnProxyActionPerformed
private void btnCertsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCertsActionPerformed
@@ -691,66 +1003,166 @@ public class LoginDialog extends JDialog {
chooser.setFileHidingEnabled(false);
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
int res = chooser.showOpenDialog(this);
- if(res == JFileChooser.APPROVE_OPTION){
+ if (res == JFileChooser.APPROVE_OPTION) {
txtCerts.setText(chooser.getSelectedFile().getAbsolutePath());
- }
+ }
}//GEN-LAST:event_btnCertsActionPerformed
- private void chkAdvancedLoginActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_chkAdvancedLoginActionPerformed
- // TODO add your handling code here:
- if (chkAdvancedLogin.isSelected()) {
- showAdvancedViewFields();
- } else {
- hideAdvancedViewFields();
- }
- }// GEN-LAST:event_chkAdvancedLoginActionPerformed
-
- private void chkGuestLoginActionPerformed(
- final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_chkGuestLoginActionPerformed
- if (chkGuestLogin.isSelected()) {
- chkProxyLogin.setSelected(false);
- hideProxyLoginFields();
- hideForGuestLogin();
-
- } else {
- showWhenGuestLogin();
- }
- }// GEN-LAST:event_chkGuestLoginActionPerformed
-
- private void btnOKActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnOKActionPerformed
- processLogin();
- }// GEN-LAST:event_btnOKActionPerformed
-
- private void btnCancelActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnCancelActionPerformed
- dispose();
- }// GEN-LAST:event_btnCancelActionPerformed
+ private void btnKeyLocationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnKeyLocationActionPerformed
+ //get path of key file when using PEM pair to authenticate user
+ final JFileChooser chooser = new JFileChooser();
+ int res = chooser.showOpenDialog(this);
+ if (res == JFileChooser.APPROVE_OPTION) {
+ txtKeyLocation.setText(chooser.getSelectedFile().getAbsolutePath());
+ }
+ }//GEN-LAST:event_btnKeyLocationActionPerformed
+
+ private void btnP12CertificateLocationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnP12CertificateLocationActionPerformed
+ //get path of certificate file when using p12 certificate to authenticate user
+ final JFileChooser chooser = new JFileChooser();
+ int res = chooser.showOpenDialog(this);
+ if (res == JFileChooser.APPROVE_OPTION) {
+ txtP12CertificateLocation.setText(chooser.getSelectedFile().getAbsolutePath());
+ }
+ }//GEN-LAST:event_btnP12CertificateLocationActionPerformed
+
+ private void btnProxyCertKeyPairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnProxyCertKeyPairActionPerformed
+// show proper fields when using PEM pair to authenticate user
+ hideCertP12Fields();
+ hideCertInBrowserFields();
+ hideProxyFileFields();
+ showCertKeyPairFields();
+ }//GEN-LAST:event_btnProxyCertKeyPairActionPerformed
+
+ private void btnProxyP12ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnProxyP12ActionPerformed
+// show proper fields when using p12 certificate to authenticate user
+ hideCertKeyPairFields();
+ hideCertInBrowserFields();
+ hideProxyFileFields();
+ showCertP12Fields();
+ }//GEN-LAST:event_btnProxyP12ActionPerformed
+
+ private void btnProxyBrowserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnProxyBrowserActionPerformed
+// show proper fields when using credentials from browser to authenticate user
+ hideCertKeyPairFields();
+ hideCertP12Fields();
+ hideProxyFileFields();
+ showCertInBrowserFields();
+ fillBrowserComboBox();
+ }//GEN-LAST:event_btnProxyBrowserActionPerformed
+
+ private void btnProxyFileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnProxyFileActionPerformed
+// show proper fields when using proxy file to authenticate user
+ hideCertKeyPairFields();
+ hideCertP12Fields();
+ hideCertInBrowserFields();
+ showProxyFileFields();
+ }//GEN-LAST:event_btnProxyFileActionPerformed
+
+ private void btnPEMCertificateLocationActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPEMCertificateLocationActionPerformed
+ //get path of certificate file when using PEM pair to authenticate user
+ final JFileChooser chooser = new JFileChooser();
+ int res = chooser.showOpenDialog(this);
+ if (res == JFileChooser.APPROVE_OPTION) {
+ txtPEMCertificateLocation.setText(chooser.getSelectedFile().getAbsolutePath());
+ }
+ }//GEN-LAST:event_btnPEMCertificateLocationActionPerformed
+
+ private void cmbBrowsersActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbBrowsersActionPerformed
+ }//GEN-LAST:event_cmbBrowsersActionPerformed
+
+ private void cmbCertificatesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cmbCertificatesActionPerformed
+ }//GEN-LAST:event_cmbCertificatesActionPerformed
+
+ private void btnCheckCertsInBrowserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCheckCertsInBrowserActionPerformed
+ //fill proper combobox with certificates' list derived from selected browser
+ String choosenBrowser = (String) cmbBrowsers.getSelectedItem();
+ if (choosenBrowser != null) {
+ setSelectedBrowser(choosenBrowser);
+ fillCertificateComboBox();
+ }
+ }//GEN-LAST:event_btnCheckCertsInBrowserActionPerformed
+
+ private void chkAdvancedLoginActionPerformed(
+ final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_chkAdvancedLoginActionPerformed
+ // TODO add your handling code here:
+ if (chkAdvancedLogin.isSelected()) {
+ showAdvancedViewFields();
+ } else {
+ hideAdvancedViewFields();
+ }
+ }// GEN-LAST:event_chkAdvancedLoginActionPerformed
+
+ private void chkGuestLoginActionPerformed(
+ final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_chkGuestLoginActionPerformed
+ if (chkGuestLogin.isSelected()) {
+ chkProxyLogin.setSelected(false);
+ hideProxyLoginFields();
+ hideForGuestLogin();
+
+ } else {
+ showWhenGuestLogin();
+ }
+ }// GEN-LAST:event_chkGuestLoginActionPerformed
+
+ private void btnOKActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnOKActionPerformed
+ processLogin();
+ }// GEN-LAST:event_btnOKActionPerformed
+
+ private void btnCancelActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnCancelActionPerformed
+ dispose();
+ }// GEN-LAST:event_btnCancelActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPasswordField browserpass;
private javax.swing.JButton btnCancel;
private javax.swing.JButton btnCerts;
+ private javax.swing.JButton btnCheckCertsInBrowser;
+ private javax.swing.JButton btnKeyLocation;
private javax.swing.JButton btnOK;
+ private javax.swing.JButton btnP12CertificateLocation;
+ private javax.swing.JButton btnPEMCertificateLocation;
private javax.swing.JButton btnProxy;
+ private javax.swing.JRadioButton btnProxyBrowser;
+ private javax.swing.JRadioButton btnProxyCertKeyPair;
+ private javax.swing.JRadioButton btnProxyFile;
+ private javax.swing.JRadioButton btnProxyP12;
+ private javax.swing.ButtonGroup btngrpProxySource;
+ private javax.swing.JPasswordField certpass;
private javax.swing.JCheckBox chkAdvancedLogin;
private javax.swing.JCheckBox chkGuestLogin;
private javax.swing.JCheckBox chkProxyLogin;
private javax.swing.JCheckBox chkRememberPass;
+ private javax.swing.JComboBox cmbBrowsers;
+ private javax.swing.JComboBox cmbCertificates;
private javax.swing.JComboBox comboLoginMode;
private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JLabel lblBrowserPass;
+ private javax.swing.JLabel lblCertMode;
+ private javax.swing.JLabel lblCertPass;
private javax.swing.JLabel lblCerts;
private javax.swing.JLabel lblHost;
+ private javax.swing.JLabel lblKeyLocation;
private javax.swing.JLabel lblLogin;
private javax.swing.JLabel lblLoginMode;
+ private javax.swing.JLabel lblP12CertificateLocation;
+ private javax.swing.JLabel lblPEMCertificateLocation;
private javax.swing.JLabel lblPassword;
private javax.swing.JLabel lblPort;
private javax.swing.JLabel lblProxy;
private javax.swing.JLabel lblResource;
private javax.swing.JLabel lblUserName;
private javax.swing.JLabel lblZone;
+ private javax.swing.JLabel lbllBrowserCombo;
+ private javax.swing.JLabel lbllCertCombo;
private javax.swing.JPasswordField password;
private javax.swing.JPanel pnlLoginInfo;
private javax.swing.JPanel pnlToolbar;
private javax.swing.JTextField txtCerts;
private javax.swing.JTextField txtHost;
+ private javax.swing.JTextField txtKeyLocation;
+ private javax.swing.JTextField txtP12CertificateLocation;
+ private javax.swing.JTextField txtPEMCertificateLocation;
private javax.swing.JTextField txtPort;
private javax.swing.JTextField txtProxy;
private javax.swing.JTextField txtResource;
@@ -758,62 +1170,418 @@ public class LoginDialog extends JDialog {
private javax.swing.JTextField txtZone;
// End of variables declaration//GEN-END:variables
- private void showAdvancedViewFields() {
- lblHost.setVisible(true);
- txtHost.setVisible(true);
- lblZone.setVisible(true);
- txtZone.setVisible(true);
- txtResource.setVisible(true);
- txtPort.setVisible(true);
- lblPort.setVisible(true);
- lblResource.setVisible(true);
- }
-
- private void hideAdvancedViewFields() {
- lblHost.setVisible(false);
- txtHost.setVisible(false);
- lblZone.setVisible(false);
- txtZone.setVisible(false);
- txtResource.setVisible(false);
- txtPort.setVisible(false);
- lblPort.setVisible(false);
- lblResource.setVisible(false);
- }
-
- private void hideForGuestLogin() {
- lblUserName.setVisible(false);
- txtUserName.setVisible(false);
- lblPassword.setVisible(false);
- password.setVisible(false);
- lblLoginMode.setVisible(false);
- comboLoginMode.setVisible(false);
- }
-
- private void showWhenGuestLogin() {
- lblUserName.setVisible(true);
- txtUserName.setVisible(true);
- lblPassword.setVisible(true);
- password.setVisible(true);
- }
-
- private void showProxyLoginFields(){
- lblProxy.setVisible(true);
- txtProxy.setVisible(true);
- btnProxy.setVisible(true);
- lblCerts.setVisible(true);
- txtCerts.setVisible(true);
- btnCerts.setVisible(true);
+ private void hideNormalLoginFields(){
+ password.setVisible(false);
+ lblPassword.setVisible(false);
+ txtUserName.setVisible(false);
+ lblUserName.setVisible(false);
+ }
+
+ private void showAdvancedViewFields() {
+ lblHost.setVisible(true);
+ txtHost.setVisible(true);
+ lblZone.setVisible(true);
+ txtZone.setVisible(true);
+ txtResource.setVisible(true);
+ txtPort.setVisible(true);
+ lblPort.setVisible(true);
+ lblResource.setVisible(true);
+
+ lblCerts.setVisible(true);
+ txtCerts.setVisible(true);
+ btnCerts.setVisible(true);
+ }
+
+ private void hideAdvancedViewFields() {
+ lblHost.setVisible(false);
+ txtHost.setVisible(false);
+ lblZone.setVisible(false);
+ txtZone.setVisible(false);
+ txtResource.setVisible(false);
+ txtPort.setVisible(false);
+ lblPort.setVisible(false);
+ lblResource.setVisible(false);
+
+ lblCerts.setVisible(false);
+ txtCerts.setVisible(false);
+ btnCerts.setVisible(false);
+ }
+
+ private void hideForGuestLogin() {
+ lblUserName.setVisible(false);
+ txtUserName.setVisible(false);
+ lblPassword.setVisible(false);
+ password.setVisible(false);
+ lblLoginMode.setVisible(false);
+ comboLoginMode.setVisible(false);
+ }
+
+ private void showWhenGuestLogin() {
+ lblUserName.setVisible(true);
+ txtUserName.setVisible(true);
+ lblPassword.setVisible(true);
+ password.setVisible(true);
+ lblLoginMode.setVisible(true);//symetric
+ comboLoginMode.setVisible(true);
+ }
+
+ private void showProxyLoginFields() {
+ //show buttngroup to let user choose a way to authenticate
+ btnProxyBrowser.setVisible(true);
+ btnProxyCertKeyPair.setVisible(true);
+ btnProxyFile.setVisible(true);
+ btnProxyP12.setVisible(true);
+ lblCertMode.setVisible(true);
+ }
+
+ private void hideProxyLoginFields() {
+ btnProxyBrowser.setVisible(false);
+ btnProxyCertKeyPair.setVisible(false);
+ btnProxyFile.setVisible(false);
+ btnProxyP12.setVisible(false);
+ lblCertMode.setVisible(false);
+
+ hideCertKeyPairFields();
+ hideCertP12Fields();
+ hideCertInBrowserFields();
+ hideProxyFileFields();
+ // lblPassword.setVisible(true);
+ // password.setVisible(true);
+ }
+
+ private void hideCertKeyPairFields() {
+ lblPEMCertificateLocation.setVisible(false);
+ txtPEMCertificateLocation.setVisible(false);
+ btnPEMCertificateLocation.setVisible(false);
+ lblKeyLocation.setVisible(false);
+ txtKeyLocation.setVisible(false);
+ btnKeyLocation.setVisible(false);
+ lblCertPass.setVisible(false);
+ certpass.setVisible(false);
+ }
+
+ private void showCertKeyPairFields() {
+ lblPEMCertificateLocation.setVisible(true);
+ txtPEMCertificateLocation.setVisible(true);
+ btnPEMCertificateLocation.setVisible(true);
+ lblKeyLocation.setVisible(true);
+ txtKeyLocation.setVisible(true);
+ btnKeyLocation.setVisible(true);
+ lblCertPass.setVisible(true);
+ certpass.setVisible(true);
+ }
+
+ private void hideCertP12Fields() {
+ lblP12CertificateLocation.setVisible(false);
+ txtP12CertificateLocation.setVisible(false);
+ btnP12CertificateLocation.setVisible(false);
+ lblCertPass.setVisible(false);
+ certpass.setVisible(false);
+ }
+
+ private void showCertP12Fields() {
+ lblP12CertificateLocation.setVisible(true);
+ txtP12CertificateLocation.setVisible(true);
+ btnP12CertificateLocation.setVisible(true);
+ lblCertPass.setVisible(true);
+ certpass.setVisible(true);
+ }
+
+ private void hideCertInBrowserFields() {
+ lblBrowserPass.setVisible(false);
+ browserpass.setVisible(false);
+ lbllBrowserCombo.setVisible(false);
+ cmbBrowsers.setVisible(false);
+ lbllCertCombo.setVisible(false);
+ cmbCertificates.setVisible(false);
+ btnCheckCertsInBrowser.setVisible(false);
+ cmbCertificates.removeAllItems();
+ cmbBrowsers.removeAllItems();
+ }
+
+ private void showCertInBrowserFields() {
+ lblBrowserPass.setVisible(true);
+ browserpass.setVisible(true);
+ lbllBrowserCombo.setVisible(true);
+ cmbBrowsers.setVisible(true);
+ lbllCertCombo.setVisible(true);
+ cmbCertificates.setVisible(true);
+ btnCheckCertsInBrowser.setVisible(true);
+ cmbCertificates.removeAllItems();
+ cmbBrowsers.removeAllItems();
+ }
+
+ private void hideProxyFileFields() {
+ lblProxy.setVisible(false);
+ txtProxy.setVisible(false);
+ btnProxy.setVisible(false);
+ }
+
+ private void showProxyFileFields() {
+ lblProxy.setVisible(true);
+ txtProxy.setVisible(true);
+ btnProxy.setVisible(true);
+ }
+ /*
+ * Set selected the proper radiobutton depending the number of mode
+ * used while reading from properties
+ */
+
+ private void setSelectedModeFields(int num) {
+ switch (num) {
+ case PEM_MODE:
+ btnProxyCertKeyPair.setSelected(true);
+ break;
+ case P12_MODE:
+ btnProxyP12.setSelected(true);
+ break;
+ case BROWSER_MODE:
+ btnProxyBrowser.setSelected(true);
+ break;
+ case PROXY_MODE:
+ btnProxyFile.setSelected(true);
+ break;
}
-
- private void hideProxyLoginFields(){
- lblProxy.setVisible(false);
- txtProxy.setVisible(false);
- btnProxy.setVisible(false);
- lblCerts.setVisible(false);
- txtCerts.setVisible(false);
- btnCerts.setVisible(false);
+ }
+
+ private int getSelectedModeFieldNum() {
+ if (btnProxyCertKeyPair.isSelected()) {
+ return PEM_MODE;
}
-
-
-
+ if (btnProxyP12.isSelected()) {
+ return P12_MODE;
+ }
+ if (btnProxyBrowser.isSelected()) {
+ return BROWSER_MODE;
+ }
+ if (btnProxyFile.isSelected()) {
+ return PROXY_MODE;
+ }
+ return -1; //old option used as default
+ }
+
+ private void showProxyChoosenModeFields() {
+ if (btnProxyCertKeyPair.isSelected()) {
+ showCertKeyPairFields();
+ } else if (btnProxyP12.isSelected()) {
+ showCertP12Fields();
+ } else if (btnProxyBrowser.isSelected()) {
+ showCertInBrowserFields();
+ } else if (btnProxyFile.isSelected()) {
+ showProxyFileFields();
+ }
+ }
+ /*
+ * Creates a GSSCredential form diferent data: proxy file, p12, pem form file system or browser
+ * Proxy type as default in grid-proxy-init (GSIConstants.GSI_3_IMPERSONATION_PROXY).
+ */
+
+ private GSSCredential getGssCredential() throws GlobusCredentialException, GSSException {
+ // should it be possinble to change by user?
+ int proxyLifetimeSeconds = 1000;
+ if (btnProxyFile.isSelected()) {
+ //a it was previously
+ String proxyFilePath = txtProxy.getText();
+ GlobusCredential globusCred = new GlobusCredential(proxyFilePath);
+ return new GlobusGSSCredentialImpl(globusCred, GSSCredential.INITIATE_AND_ACCEPT);
+ } else if (btnProxyCertKeyPair.isSelected()) {
+ String pemCert = txtPEMCertificateLocation.getText();
+ String pemKey = txtKeyLocation.getText();
+ return GssUtil.createCredentialFromCertKeyPassTime(pemCert, pemKey, certpass.getText(), proxyLifetimeSeconds, GSIConstants.GSI_3_IMPERSONATION_PROXY);
+ } else if (btnProxyP12.isSelected()) {
+ String p12Cert = txtP12CertificateLocation.getText();
+ //convert p12 to pem pair
+ String certPath = System.getProperty("user.home") + File.separator + ".idrop" + File.separator + "usercert.pem";
+ String keyPath = System.getProperty("user.home") + File.separator + ".idrop" + File.separator + "userkey.pem";
+ try {
+ CertificateConverter.PKCS12ToPem(p12Cert, certpass.getText());
+ } catch (Exception ex) {
+ log.error("Error during certificate conversion." + ex.getMessage());
+ }
+ return GssUtil.createCredentialFromCertKeyPassTime(certPath, keyPath, certpass.getText(), proxyLifetimeSeconds, GSIConstants.GSI_3_IMPERSONATION_PROXY);
+ } else if (btnProxyBrowser.isSelected()) {
+ String dn = (String) cmbCertificates.getSelectedItem();
+ X509Certificate browserCert = getSelectedCertificateFromBrowser(dn);
+ PrivateKey browserKey = getSelectedKeyFromBrowser(dn);
+ String emptyPass = "";
+ GssUtil.createCredentialFromCertKeyPassTime(browserCert, browserKey, emptyPass, proxyLifetimeSeconds, GSIConstants.GSI_3_IMPERSONATION_PROXY);
+ }
+ return null;
+ }
+ /*
+ * WARNING:
+ * - partly untested code below
+ * - code based on correct function actionPerformed from CertificateManager.java in Certman project
+ *
+ * - to install requred jar file in yout local maven repo please excute:
+ * mvn install:install-file -Dfile=<your location of this jar>/libbrowser.jar -DgroupId=vine_certman -DartifactId=libbrowser -Dversion=1 -Dpackaging=jar -e
+ *
+ * It is necessary due to he fact, that this jar is unreachable in main maven repo
+ */
+
+ private void fillBrowserComboBox() {
+ cmbBrowsers.removeAllItems();
+ String[] browsers = getBrowsersList();
+ if (browsers != null) {
+ for (String s : browsers) {
+ cmbBrowsers.addItem(s);
+ }
+ }
+ }
+
+ private void fillCertificateComboBox() {
+ cmbCertificates.removeAllItems();
+ String[] certs = getCertifiatesInBrowserList();
+ if (certs != null) {
+ for (String s : certs) {
+ cmbCertificates.addItem(s);
+ }
+ }
+ }
+ /*
+ * Class needed by Browser class used by code based on certman
+ */
+
+ private static class PasswordPrompt implements Browser.PasswordCallback {
+
+ public char[] prompt(String promptString) {
+ return dialog.browserpass.getPassword();
+ }
+
+ public PasswordPrompt(LoginDialog tmp) {
+ this.dialog = tmp;
+ }
+ final LoginDialog dialog;
+ }
+ private String profile = null;
+ /*
+ * Gets the list of browsers.
+ */
+
+ private String[] getBrowsersList() {
+ //Browser.getCurrentBrowser();
+ String profiles[] = null;
+ if (profile == null) {
+ profiles = new String[0];
+ try {
+ profiles = Browser.getBrowserList();
+ } catch (IOException e) {
+ log.debug("Could not find any recognized browsers." + e);
+ MessageManager.showError(this, "Could not find any recognized browsers.", "Browser Error");
+ return null;
+ }
+ if (profiles.length == 0) {
+ log.debug("No browsers found");
+ MessageManager.showError(this, "No browsers found.", "Browser Error");
+ return null;
+ }
+ }
+ return profiles;
+ }
+ /*
+ * Sets the selected browser, what is needed for other funkctions to know
+ * where to look for the certificates
+ */
+
+ private void setSelectedBrowser(String browserChoosen) {
+ log.debug("Response option: " + browserChoosen);
+ if (browserChoosen == null) {
+ return;
+ } else {
+ Browser.setBrowser(browserChoosen);
+ }
+ profile = Browser.getCurrentBrowser();
+ log.debug("Current browser profile: " + profile);
+ }
+ /*
+ * Gets list of certificates in selected browser keystore
+ * Acceses selected browser keystore, uses prossword provided by user
+ */
+
+ private String[] getCertifiatesInBrowserList() {
+ if (Browser.getCurrentBrowser() == null) {
+ return null;
+ }
+ String dnlist[] = null;
+ try {
+ dnlist = Browser.getDNlist(new PasswordPrompt(this));
+ log.debug("Current dnlist: " + dnlist);
+ } catch (IOException e) {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, "Could not access keystore in profile: " + profile, e.getLocalizedMessage());
+ return null;
+ } catch (KeyStoreException e) {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, "Could not access keystore in profile: " + profile, e.getLocalizedMessage());
+ return null;
+ } catch (NoSuchAlgorithmException e) {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, "Could not access keystore in profile: " + profile, e.getLocalizedMessage());
+ return null;
+ } catch (CertificateException e) {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, "Could not access keystore in profile: " + profile, e.getLocalizedMessage());
+ return null;
+ } catch (InvalidAlgorithmParameterException e) {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, "Could not access keystore in profile: " + profile, e.getLocalizedMessage());
+ return null;
+ } catch (javax.security.auth.login.FailedLoginException e) {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, e.getMessage(), "Incorrect Password");
+ return null;
+ } catch (GeneralSecurityException e) {
+ if (e.getMessage().indexOf("version>=1.5") >= 0) {
+ MessageManager.showError(this, e.getMessage(), "Browser selection tool");
+ } else {
+ log.debug("Could not access keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, "Could not access keystore in profile: " + profile, e.getLocalizedMessage());
+ }
+ return null;
+ }
+ if (dnlist == null) {
+ log.debug("Certificates list is empty: " + profile);
+ MessageManager.showError(this, "No Certificates found", "Browser selection tool");
+ return null;
+ }
+ if (dnlist.length == 0) {
+ MessageManager.showError(this, "No Certificates found", "Browser selection tool");
+ return null;
+ }
+ return dnlist;
+ }
+ /*
+ * Gets the choosen certificate from actual browser.
+ */
+
+ private X509Certificate getSelectedCertificateFromBrowser(String dnChoosen) {
+ X509Certificate certificateBrowser = null;
+ String browserDNChosen = dnChoosen;
+ log.debug("Browser cert DN chosen : " + browserDNChosen);
+ Browser.CertInfo info = null;
+ try {
+ certificateBrowser = Browser.getCertificate(browserDNChosen);
+ log.debug("Browser cert retrieved: " + certificateBrowser.getSubjectDN());
+ info = Browser.theProfile;
+ log.debug("Browser cert info : " + info);
+ } catch (IOException e) {
+ log.debug("Could not access certificate in the browser keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, e.getMessage(), "Could not access certificate in the browser keystore in profile: " + profile);
+ return null;
+ } catch (GeneralSecurityException e) {
+ log.debug("Could not access certificate in the browser keystore in profile: " + profile + " : " + e);
+ MessageManager.showError(this, e.getMessage(), "Could not access certificate in the browser keystore in profile: " + profile);
+ return null;
+ }
+ return certificateBrowser;
+ }
+ /*
+ * Gets the choosen key from actual browser.
+ */
+
+ private PrivateKey getSelectedKeyFromBrowser(String dnChoosen) {
+ PrivateKey browserKey = uk.ac.rl.esc.browser.IECertificateInterface.getKey(dnChoosen);
+ log.debug("Browser cert key present : " + (browserKey != null));
+ return browserKey;
+ }
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/MetaSearch.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/MetaSearch.java
index d053928..4afadbd 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/MetaSearch.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/MetaSearch.java
@@ -5,20 +5,15 @@
package org.irods.jargon.idrop.desktop.systraygui;
import java.awt.Dimension;
-import java.awt.FlowLayout;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import javax.swing.JComboBox;
-import javax.swing.JFrame;
-import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
-import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import org.irods.jargon.core.exception.JargonException;
import org.irods.jargon.core.pub.DataObjectAO;
-//import org.irods.jargon.core.query.MetaDataSet;
import org.irods.jargon.core.query.AVUQueryElement;
import org.irods.jargon.core.query.AVUQueryElement.AVUQueryPart;
import org.irods.jargon.core.query.AVUQueryOperatorEnum;
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form
index 9457c45..13b06da 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.form
@@ -109,7 +109,7 @@
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
- <EmptySpace pref="556" max="32767" attributes="0"/>
+ <EmptySpace pref="528" max="32767" attributes="0"/>
<Component id="btnDismiss" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="38" max="-2" attributes="0"/>
</Group>
@@ -120,7 +120,7 @@
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="15" max="-2" attributes="0"/>
<Component id="btnDismiss" min="-2" max="-2" attributes="0"/>
- <EmptySpace pref="12" max="32767" attributes="0"/>
+ <EmptySpace max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java
index 430d23b..f09f73c 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/SearchResultsDialog.java
@@ -146,94 +146,96 @@ public class SearchResultsDialog extends javax.swing.JDialog implements
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed"
- // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
- private void initComponents() {
-
- jPanel1 = new javax.swing.JPanel();
- pnlTabSearch = new javax.swing.JPanel();
- pnlTabSearchTop = new javax.swing.JPanel();
- pnlTabSearchResults = new javax.swing.JPanel();
- scrollPaneSearchResults = new javax.swing.JScrollPane();
- tableSearchResults = new javax.swing.JTable();
- jPanel2 = new javax.swing.JPanel();
- btnDismiss = new javax.swing.JButton();
-
- setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
- setTitle(org.openide.util.NbBundle.getMessage(SearchResultsDialog.class, "SearchResultsDialog.title")); // NOI18N
-
- jPanel1.setLayout(new java.awt.BorderLayout());
-
- pnlTabSearch.setToolTipText(org.openide.util.NbBundle.getMessage(SearchResultsDialog.class, "SearchResultsDialog.pnlTabSearch.toolTipText")); // NOI18N
- pnlTabSearch.setLayout(new java.awt.BorderLayout());
- pnlTabSearch.add(pnlTabSearchTop, java.awt.BorderLayout.NORTH);
-
- pnlTabSearchResults.setLayout(new java.awt.GridLayout(1, 0));
-
- tableSearchResults.setModel(new javax.swing.table.DefaultTableModel(
- new Object [][] {
- {null, null, null, null},
- {null, null, null, null},
- {null, null, null, null},
- {null, null, null, null}
- },
- new String [] {
- "Title 1", "Title 2", "Title 3", "Title 4"
- }
- ));
- scrollPaneSearchResults.setViewportView(tableSearchResults);
-
- pnlTabSearchResults.add(scrollPaneSearchResults);
-
- pnlTabSearch.add(pnlTabSearchResults, java.awt.BorderLayout.CENTER);
-
- jPanel1.add(pnlTabSearch, java.awt.BorderLayout.CENTER);
-
- getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
-
- jPanel2.setPreferredSize(new java.awt.Dimension(661, 50));
-
- btnDismiss.setLabel(org.openide.util.NbBundle.getMessage(SearchResultsDialog.class, "SearchResultsDialog.btnDismiss.label")); // NOI18N
- btnDismiss.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- btnDismissActionPerformed(evt);
- }
- });
-
- org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(jPanel2);
- jPanel2.setLayout(jPanel2Layout);
- jPanel2Layout.setHorizontalGroup(
- jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel2Layout.createSequentialGroup()
- .addContainerGap(556, Short.MAX_VALUE)
- .add(btnDismiss)
- .add(38, 38, 38))
- );
- jPanel2Layout.setVerticalGroup(
- jPanel2Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(jPanel2Layout.createSequentialGroup()
- .add(15, 15, 15)
- .add(btnDismiss)
- .addContainerGap(12, Short.MAX_VALUE))
- );
-
- getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);
-
- pack();
- }// </editor-fold>//GEN-END:initComponents
+ // desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel1 = new javax.swing.JPanel();
+ pnlTabSearch = new javax.swing.JPanel();
+ pnlTabSearchTop = new javax.swing.JPanel();
+ pnlTabSearchResults = new javax.swing.JPanel();
+ scrollPaneSearchResults = new javax.swing.JScrollPane();
+ tableSearchResults = new javax.swing.JTable();
+ jPanel2 = new javax.swing.JPanel();
+ btnDismiss = new javax.swing.JButton();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ setTitle(org.openide.util.NbBundle.getMessage(
+ SearchResultsDialog.class, "SearchResultsDialog.title")); // NOI18N
+
+ jPanel1.setLayout(new java.awt.BorderLayout());
+
+ pnlTabSearch.setToolTipText(org.openide.util.NbBundle.getMessage(
+ SearchResultsDialog.class,
+ "SearchResultsDialog.pnlTabSearch.toolTipText")); // NOI18N
+ pnlTabSearch.setLayout(new java.awt.BorderLayout());
+ pnlTabSearch.add(pnlTabSearchTop, java.awt.BorderLayout.NORTH);
+
+ pnlTabSearchResults.setLayout(new java.awt.GridLayout());
+
+ tableSearchResults.setModel(new javax.swing.table.DefaultTableModel(
+ new Object[][] { { null, null, null, null },
+ { null, null, null, null }, { null, null, null, null },
+ { null, null, null, null } }, new String[] { "Title 1",
+ "Title 2", "Title 3", "Title 4" }));
+ scrollPaneSearchResults.setViewportView(tableSearchResults);
+
+ pnlTabSearchResults.add(scrollPaneSearchResults);
+
+ pnlTabSearch.add(pnlTabSearchResults, java.awt.BorderLayout.CENTER);
+
+ jPanel1.add(pnlTabSearch, java.awt.BorderLayout.CENTER);
+
+ getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
+
+ jPanel2.setPreferredSize(new java.awt.Dimension(661, 50));
+
+ btnDismiss.setLabel(org.openide.util.NbBundle.getMessage(
+ SearchResultsDialog.class,
+ "SearchResultsDialog.btnDismiss.label")); // NOI18N
+ btnDismiss.addActionListener(new java.awt.event.ActionListener() {
+ @Override
+ public void actionPerformed(final java.awt.event.ActionEvent evt) {
+ btnDismissActionPerformed(evt);
+ }
+ });
+
+ org.jdesktop.layout.GroupLayout jPanel2Layout = new org.jdesktop.layout.GroupLayout(
+ jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(jPanel2Layout.createParallelGroup(
+ org.jdesktop.layout.GroupLayout.LEADING).add(
+ org.jdesktop.layout.GroupLayout.TRAILING,
+ jPanel2Layout.createSequentialGroup()
+ .addContainerGap(528, Short.MAX_VALUE).add(btnDismiss)
+ .add(38, 38, 38)));
+ jPanel2Layout.setVerticalGroup(jPanel2Layout.createParallelGroup(
+ org.jdesktop.layout.GroupLayout.LEADING).add(
+ jPanel2Layout
+ .createSequentialGroup()
+ .add(15, 15, 15)
+ .add(btnDismiss)
+ .addContainerGap(
+ org.jdesktop.layout.GroupLayout.DEFAULT_SIZE,
+ Short.MAX_VALUE)));
+
+ getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
private void btnDismissActionPerformed(final java.awt.event.ActionEvent evt) {// GEN-FIRST:event_btnDismissActionPerformed
dispose();
}// GEN-LAST:event_btnDismissActionPerformed
- // Variables declaration - do not modify//GEN-BEGIN:variables
- private javax.swing.JButton btnDismiss;
- private javax.swing.JPanel jPanel1;
- private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel pnlTabSearch;
- private javax.swing.JPanel pnlTabSearchResults;
- private javax.swing.JPanel pnlTabSearchTop;
- private javax.swing.JScrollPane scrollPaneSearchResults;
- private javax.swing.JTable tableSearchResults;
- // End of variables declaration//GEN-END:variables
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton btnDismiss;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel pnlTabSearch;
+ private javax.swing.JPanel pnlTabSearchResults;
+ private javax.swing.JPanel pnlTabSearchTop;
+ private javax.swing.JScrollPane scrollPaneSearchResults;
+ private javax.swing.JTable tableSearchResults;
+ // End of variables declaration//GEN-END:variables
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/CertificateConverter.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/CertificateConverter.java
new file mode 100644
index 0000000..4d2d447
--- /dev/null
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/CertificateConverter.java
@@ -0,0 +1,103 @@
+package org.irods.jargon.idrop.desktop.systraygui.gss;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.security.Key;
+import java.security.SecureRandom;
+import java.security.Security;
+import org.bouncycastle.openssl.PEMWriter;
+import java.security.cert.Certificate;
+
+/**
+ * Class based on QCG-Icon project on CertificateFromP12ToPem.java file
+ *
+ * Commented code - possible improvements requiering much more copied code and classes.
+ *
+ * @author Kalina Jasinska
+ * @author jkonczak
+ */
+public class CertificateConverter {
+
+ static org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(CertificateConverter.class.getName());
+
+ public static void PKCS12ToPem(final String cerFile, final String password) throws Exception {
+ char[] pass = password.toCharArray();
+ try {
+ java.security.KeyStore ks = java.security.KeyStore.getInstance("PKCS12");
+ ks.load(new FileInputStream(cerFile), pass);
+ String alias = ks.aliases().nextElement();
+ logger.error("Alias: " + alias);
+ Key key = ks.getKey(alias, pass);
+ Certificate cert = ks.getCertificate(alias);
+
+ WriteCert(cert);
+ WriteKey(key, pass);
+
+ } catch (Exception ex) {
+ logger.error("PKCK12 to PEM conversion failed.\n" + ex.getMessage());
+ ex.printStackTrace();
+ throw ex;
+ }
+ }
+
+ public static void WriteCert(Certificate cert) throws IOException {
+ File certFile = initializeCredentialFile("usercert.pem");
+ FileWriter certWriter = new FileWriter(certFile);
+ PEMWriter pemCertWriter = new PEMWriter(certWriter);
+ pemCertWriter.writeObject(cert);
+ pemCertWriter.close();
+ certWriter.close();
+ //Utils.trySetOwnerOnlyChmod(certFile, true);
+ //Utils.tryHideFile(globusDir.getAbsolutePath());
+ }
+
+ public static void WriteKey(Key key, char[] password) throws IOException {
+ File keyFile = initializeCredentialFile("userkey.pem");
+ FileWriter keyWriter = new FileWriter(keyFile);
+ PEMWriter pemKeyWriter = new PEMWriter(keyWriter);
+ Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
+ pemKeyWriter.writeObject(key, "DESEDE", password, new SecureRandom());//to sypie
+ pemKeyWriter.close();
+ keyWriter.close();
+ // Utils.trySetOwnerOnlyChmod(keyFile, true);
+ // Utils.tryHideFile(globusDir.getAbsolutePath());
+ }
+
+ public static File initializeCredentialFile(String name) throws IOException {
+ File keyFile = new File(System.getProperty("user.home") + File.separator + ".idrop" + File.separator + name);
+ //trySetOwnerOnlyChmod(keyFile, false);
+ return keyFile;
+ }
+// public static void secureCredentialFile(String property) throws IOException {
+// File globusDir = new File(System.getProperty(property)).getParentFile();
+// File keyFile = new File(System.getProperty(property));
+// trySetOwnerOnlyChmod(keyFile, true);
+// tryHideFile(globusDir.getAbsolutePath());
+// }
+// public static void tryHideFile(String filePath) {
+// try {
+// PlatformProvider.getProvider().tryHideFile(filePath);
+// } catch (Exception ex) {
+// logger.debug("Utils.tryHideFile", ex);
+// }
+// }
+ /**
+ * Probably makes the file owner-only accessible and - if specified - read
+ * only
+ */
+// public static void trySetOwnerOnlyChmod(File file, boolean readOnly) {
+// try {
+// if (file.exists()) {
+// PlatformProvider.getProvider().trySetOwnerOnlyChmod(file, readOnly);
+// return;
+// }
+// logger.debug("Utils.trySetOwnerOnlyChmod.0: the specified file doesn't exist:" + file.getAbsolutePath());
+// } catch (IOException ex) {
+// logger.debug("Utils.trySetOwnerOnlyChmod.2", ex);
+// } catch (InterruptedException ex) {
+// logger.debug("Utils.trySetOwnerOnlyChmod.3", ex);
+// }
+// }
+}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssSecurityException.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssSecurityException.java
new file mode 100644
index 0000000..3078eeb
--- /dev/null
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssSecurityException.java
@@ -0,0 +1,27 @@
+package org.irods.jargon.idrop.desktop.systraygui.gss;
+/**
+ * @author <a href="mailto:michael.russell@aei.mpg.de">Michael Russell</a>
+ * @version $Id: GssSecurityException.java 5 2006-03-08 15:33:41Z wehrens $
+ */
+
+/**
+ * Describes a credential related exception.
+ */
+public class GssSecurityException extends RuntimeException {
+
+ public GssSecurityException() {
+ super();
+ }
+
+ public GssSecurityException(Throwable ex) {
+ super(ex);
+ }
+
+ public GssSecurityException(String message) {
+ super(message);
+ }
+
+ public GssSecurityException(String message, Throwable ex) {
+ super(message, ex);
+ }
+} \ No newline at end of file
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssUtil.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssUtil.java
new file mode 100644
index 0000000..f171375
--- /dev/null
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/GssUtil.java
@@ -0,0 +1,597 @@
+package org.irods.jargon.idrop.desktop.systraygui.gss;
+
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
+import org.globus.gsi.GSIConstants;
+import org.globus.gsi.GlobusCredential;
+import org.globus.gsi.OpenSSLKey;
+import org.globus.gsi.X509ExtensionSet;
+import org.globus.gsi.bc.BouncyCastleCertProcessingFactory;
+import org.globus.gsi.bc.BouncyCastleOpenSSLKey;
+import org.globus.gsi.gssapi.GlobusGSSCredentialImpl;
+import org.globus.util.Base64;
+import org.gridforum.jgss.ExtendedGSSCredential;
+import org.gridforum.jgss.ExtendedGSSManager;
+import org.ietf.jgss.GSSCredential;
+import org.apache.log4j.Logger;
+import java.io.*;
+import java.security.*;
+import java.security.cert.CertificateFactory;
+import java.security.cert.X509Certificate;
+
+/*
+ * Class from Certman project, without some unused functions.
+ */
+public class GssUtil {
+
+ static Logger log = Logger.getLogger(GssUtil.class.getName());
+ /**
+ * Default credential type:
+ * <code>GSIConstants.GSI_3_IMPERSONATION_PROXY</code>
+ *
+ * @see GSIConstants
+ */
+ public static final int DEFAULT_CREDENTIAL_TYPE = GSIConstants.GSI_3_IMPERSONATION_PROXY;
+ /**
+ * Default credential lifetime is the "maximum permitted" credential
+ * lifetime. See
+ * <code>ExtendedGSSManager</code> for more information.
+ *
+ * @see org.ietf.jgss.GSSCredential
+ */
+ public static final int DEFAULT_CREDENTIAL_LIFETIME = GSSCredential.DEFAULT_LIFETIME;
+ /**
+ * Default signature algorithm: "MD5WithRSA"
+ */
+ /**
+ * The Java security provider is determined during initialization of this
+ * utility. The default will be
+ * <code>BouncyCastle</code> if one is not already set.
+ */
+ private static Provider provider = null;
+ /**
+ * The X509
+ * <code>CertificateFactory</code> is determined during initialization of
+ * this utility and depends on which security provider is enabled for this
+ * utility. The default will be the
+ * <code>BouncyCastle</code> certificate factory if one is not already set.
+ */
+ private static CertificateFactory certificateFactory = null;
+ /**
+ * Indicates whether this utility has been initialized or not.
+ */
+ private static boolean isInited = false;
+ private static KeyPair keyPair = null;
+
+ public static KeyPair getKeyPair() {
+ return keyPair;
+ }
+
+ /**
+ * Creates a GSS credential for the system user under which this application
+ * is running.
+ *
+ * @return The default system user GSS credential.
+ * @throws org.vinetoolkit.certman.spi.GssSecurityException If an error
+ * occurs while retrieving the GSS credential
+ */
+ public static GSSCredential createDefaultSystemUserGssCredential() throws GssSecurityException {
+ try {
+ log.info("Creating default GSS credential for environment ");
+ GlobusCredential credential = GlobusCredential.getDefaultCredential();
+ return new GlobusGSSCredentialImpl(credential,
+ GSSCredential.INITIATE_AND_ACCEPT);
+ } catch (Exception e) {
+ log.error("Unable to create default GSS credential for environment", e);
+ throw new GssSecurityException(e);
+ }
+ }
+
+ /**
+ * Creates a GSS credential stored in the given proxy file.
+ *
+ * @param file The proxy file
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromProxyFile(File file) throws GssSecurityException {
+ return createCredentialFromProxyFileTime(file, DEFAULT_CREDENTIAL_LIFETIME);
+ }
+
+ /**
+ * Creates a GSS credential from the given proxy file for the given
+ * lifetime.
+ *
+ * @param proxyFile The proxy file
+ * @param time The credential lifetime
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromProxyFileTime(File proxyFile, int time) throws GssSecurityException {
+ FileInputStream in = null;
+ try {
+
+ // Make sure we're initialized
+ init();
+
+ log.info("Creating GSS credential with proxy file " + proxyFile.getPath());
+ byte[] data = new byte[(int) proxyFile.length()];
+ in = new FileInputStream(proxyFile);
+ // read in the credential data
+ in.read(data);
+ in.close();
+ ExtendedGSSManager manager = (ExtendedGSSManager) ExtendedGSSManager.getInstance();
+ if (time <= 0) {
+ time = DEFAULT_CREDENTIAL_LIFETIME;
+ }
+ return manager.createCredential(data,
+ ExtendedGSSCredential.IMPEXP_OPAQUE,
+ time,
+ null, // use default mechanism - GSI
+ GSSCredential.INITIATE_AND_ACCEPT);
+ } catch (Exception e) {
+ log.error("Unable to create GSS credential with " + proxyFile);
+ throw new GssSecurityException(e);
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (Exception ex) {
+ }
+ }
+ }
+ }
+
+ /**
+ * Creates a GSS credential from the given proxy file for the given
+ * lifetime.
+ *
+ * @param data The proxy file
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromProxyFileTime(byte[] data) throws GssSecurityException {
+ return createCredentialFromData(data, DEFAULT_CREDENTIAL_LIFETIME);
+ }
+
+ /**
+ * Creates a GSS credential from the given proxy file for the given
+ * lifetime.
+ *
+ * @param data The proxy data
+ * @param time The credential lifetime
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromData(byte[] data, int time) throws GssSecurityException {
+ try {
+
+ // Make sure we're initialized
+ init();
+
+ log.info("Creating GSS credential with data " + data.length);
+ ExtendedGSSManager manager = (ExtendedGSSManager) ExtendedGSSManager.getInstance();
+ if (time <= 0) {
+ time = DEFAULT_CREDENTIAL_LIFETIME;
+ }
+ return manager.createCredential(data,
+ ExtendedGSSCredential.IMPEXP_OPAQUE,
+ time,
+ null, // use default mechanism - GSI
+ GSSCredential.INITIATE_AND_ACCEPT);
+ } catch (Exception e) {
+ log.error("Unable to create GSS credential with data " + data.length, e);
+ throw new GssSecurityException(e);
+ }
+ }
+
+ /**
+ * Creates a GSS credential from the given certificate file and private key
+ * file paths lasting for the maximum permitted lifetime.
+ *
+ * @param certFilePath The path to the certificate file
+ * @param keyFilePath The path to the private key file
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromCertKey(String certFilePath, String keyFilePath)
+ throws GssSecurityException {
+ return createCredentialFromCertKeyTime(certFilePath, keyFilePath, DEFAULT_CREDENTIAL_LIFETIME);
+ }
+
+ public static GSSCredential createCredentialFromCertKeyTime(String certFilePath, String keyFilePath, int time)
+ throws GssSecurityException {
+ return createCredentialFromCertKeyPassTime(certFilePath, keyFilePath, null, time);
+ }
+
+ /**
+ * Creates a GSS credential from the given certificate file and private key
+ * file paths and private key password lasting for the maximum permitted
+ * lifetime.
+ *
+ * @param certFilePath The path to the certificate file
+ * @param keyFilePath The path to the private key file
+ * @param password The private key password
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromCertKeyPass(String certFilePath, String keyFilePath, String password)
+ throws GssSecurityException {
+ return createCredentialFromCertKeyPassTime(certFilePath, keyFilePath, password, 0);
+ }
+
+ /**
+ * Creates a GSS credential from the given certificate file and private key
+ * file paths and private key password lasting for the maximum permitted
+ * lifetime.
+ *
+ * @param certFilePath The path to the certificate file
+ * @param keyFilePath The path to the private key file
+ * @param password The private key password
+ * @param proxyType type of the proxy
+ * @return The GSS credential
+ * @throws GssSecurityException If an error occurs while creating the GSS
+ * credential
+ */
+ public static GSSCredential createCredentialFromCertKeyPass(String certFilePath, String keyFilePath, String password, int proxyType)
+ throws GssSecurityException {
+ return createCredentialFromCertKeyPassTime(certFilePath, keyFilePath, password, 0, proxyType);
+ }
+
+ public static GSSCredential createCredentialFromCertKeyPassTime(String certFilePath, String keyFilePath, String password, int time)
+ throws GssSecurityException {
+ return createCredentialFromCertKeyPassTime(certFilePath, keyFilePath, password, time, DEFAULT_CREDENTIAL_TYPE);
+ }
+
+ public static GSSCredential createCredentialFromCertKeyPassTime(String certFilePath, String keyFilePath, String password, int time, int proxyType)
+ throws GssSecurityException {
+ try {
+
+ // Make sure we're initialized
+ init();
+
+ GlobusCredential cred = null;
+ PrivateKey privateKey = loadPrivateKey(keyFilePath, password);
+ X509Certificate[] certificates = new X509Certificate[]{loadCertificate(certFilePath)};
+ BouncyCastleCertProcessingFactory factorybc =
+ BouncyCastleCertProcessingFactory.getDefault();
+ X509ExtensionSet extSet = null;
+ log.debug("Creating GSS credential");
+ cred = factorybc.createCredential(certificates,
+ privateKey,
+ 512,
+ time,
+ proxyType,
+ extSet);
+ log.debug("createCredentialFromCertKeyPassTime() cred \n" + cred.toString());
+ GSSCredential gsscred = new GlobusGSSCredentialImpl(cred,
+ GSSCredential.INITIATE_AND_ACCEPT);
+ return gsscred;
+ } catch (Exception e) {
+ log.error("Unable to create GSS credential with " + certFilePath + " and " + keyFilePath + ". Error message: " + e.getMessage());
+ throw new GssSecurityException(e);
+ }
+
+ }
+
+ public static GSSCredential createCredentialFromCertKeyPassTime(X509Certificate publicCert, PrivateKey key, String password, int time, int proxyType)
+ throws GssSecurityException {
+ try {
+
+ // Make sure we're initialized
+ init();
+
+ GlobusCredential cred = null;
+ X509Certificate[] certificates = new X509Certificate[]{publicCert};
+ BouncyCastleCertProcessingFactory factorybc =
+ BouncyCastleCertProcessingFactory.getDefault();
+ X509ExtensionSet extSet = null;
+ log.debug("Creating GSS credential");
+ cred = factorybc.createCredential(certificates,
+ key,
+ 512,
+ time,
+ proxyType,
+ extSet);
+ log.debug("createCredentialFromCertKeyPassTime() cred \n" + cred.toString());
+ GSSCredential gsscred = new GlobusGSSCredentialImpl(cred,
+ GSSCredential.INITIATE_AND_ACCEPT);
+ return gsscred;
+ } catch (Exception e) {
+ log.error("Unable to create GSS credential with " + publicCert + " and " + key + ". Error message: " + e.getMessage());
+ throw new GssSecurityException(e);
+ }
+
+ }
+
+ public static GlobusCredential createCredentialFromKeystorePassTime(String keystoreFilePath, String password, String alias, int time, int proxyType)
+ throws GssSecurityException {
+ try {
+
+ // Make sure we're initialized
+ init();
+
+ GlobusCredential cred = null;
+ PrivateKey privateKey = loadPrivateKey(keystoreFilePath, alias, password);
+ X509Certificate[] certificates = new X509Certificate[]{loadCertificateFromKeystore(keystoreFilePath, alias, password)};
+ BouncyCastleCertProcessingFactory factorybc =
+ BouncyCastleCertProcessingFactory.getDefault();
+ X509ExtensionSet extSet = null;
+ log.debug("Creating GSS credential");
+ cred = factorybc.createCredential(certificates,
+ privateKey,
+ 512,
+ time,
+ proxyType,
+ extSet);
+ log.debug("createCredentialFromCertKeyPassTime() cred: " + cred.toString());
+ log.debug("createCredentialFromCertKeyPassTime() cred class: " + cred.getClass());
+ /*GSSCredential gsscred = new GlobusGSSCredentialImpl(cred,
+ GSSCredential.INITIATE_AND_ACCEPT);
+ return gsscred; */
+ return cred;
+ } catch (Exception e) {
+ log.error("Unable to create GSS credential with keystore: " + keystoreFilePath + ". Error message: " + e.getMessage());
+ throw new GssSecurityException(e);
+ }
+
+ }
+
+ public static X509Certificate loadCertificate(String filePath) throws GssSecurityException {
+
+
+ boolean isCert = false;
+ X509Certificate cert = null;
+
+ String line;
+ StringBuffer buff = new StringBuffer();
+
+ try {
+
+ // Make sure we're inited
+ init();
+
+ BufferedReader reader = new BufferedReader(new FileReader(filePath));
+ while ((line = reader.readLine()) != null) {
+ if (line.indexOf("BEGIN CERTIFICATE") != -1) {
+ isCert = true;
+ } else if (isCert && line.indexOf("END CERTIFICATE") != -1) {
+ byte[] data = Base64.decode(buff.toString().getBytes());
+ cert = loadCertificate(new ByteArrayInputStream(data));
+ } else if (isCert) {
+ buff.append(line);
+ }
+ }
+ reader.close();
+ } catch (Exception e) {
+ log.error("Error loading X509 certificate from file " + filePath, e);
+ throw new GssSecurityException(e);
+ }
+
+ if (cert == null) {
+ log.error("No data found in X509 certificate from file " + filePath);
+ throw new GssSecurityException("Certificate data not found.");
+ }
+
+ return cert;
+ }
+
+ /**
+ * Deserializes the X509 certificate stored in the given file path
+ *
+ * @param keystoreFilePath The X509 certificate file path
+ * @return The X509 certificate
+ * @throws GssSecurityException If an error occurs during deserialization
+ */
+ public static X509Certificate loadCertificateFromKeystore(String keystoreFilePath, String alias, String password) throws GssSecurityException {
+ boolean isCert = false;
+ X509Certificate cert = null;
+
+ String line;
+ StringBuffer buff = new StringBuffer();
+
+ try {
+
+ // Make sure we're inited
+ init();
+
+ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+ log.debug("GssUtil: loadCertificateFromKeystore() load keystore " + keystoreFilePath);
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(keystoreFilePath);
+ ks.load(fis, password.toCharArray());
+ } finally {
+ if (fis != null) {
+ fis.close();
+ }
+ }
+ log.debug("GssUtil: loadCertificateFromKeystore() keystore loaded: " + ks);
+
+ cert = (X509Certificate) ks.getCertificate(alias);
+
+ log.debug("GssUtil: loadCertificateFromKeystore() cert loaded: " + cert);
+
+ } catch (Exception e) {
+ log.error("Error loading X509 certificate from file " + keystoreFilePath, e);
+ throw new GssSecurityException(e);
+ }
+
+ if (cert == null) {
+ log.error("No data found in X509 certificate from file " + keystoreFilePath);
+ throw new GssSecurityException("Certificate data not found.");
+ }
+
+ return cert;
+ }
+
+ /**
+ * Deserializes the X509 certificate stored in the given input stream
+ *
+ * @param in The input stream
+ * @return The X509 certificate
+ * @throws GssSecurityException If an error occurs during deserialization
+ */
+ public static X509Certificate loadCertificate(InputStream in) throws GeneralSecurityException {
+ return (X509Certificate) getCertificateFactory().generateCertificate(in);
+ }
+
+ /**
+ * Returns the private key from the given file path using the given
+ * password.
+ *
+ * @param keyFile The private key file path
+ * @param password The password
+ * @return The private key
+ * @throws GssSecurityException If an error occurs while retrieving the
+ * private key
+ */
+ public static PrivateKey loadPrivateKey(String keyFile, String password) throws GssSecurityException {
+ try {
+
+ // Make sure we're inited
+ init();
+
+ OpenSSLKey key = new BouncyCastleOpenSSLKey(keyFile);
+ if (key.isEncrypted()) {
+ key.decrypt(password);
+ }
+ return key.getPrivateKey();
+ } catch (IOException e) {
+ log.error("Failed to load private key ", e);
+ throw new GssSecurityException("Failed to load private key ", e);
+ } catch (GeneralSecurityException e) {
+ log.error("Looks like wrong pass phrase. Error message: " + e.getMessage());
+ throw new GssSecurityException(e);
+ }
+ }
+
+ /**
+ * Returns the private key from the given file path to keystore using the
+ * given password.
+ *
+ * @param keyStoreFile The private key file path
+ * @param alias Alias
+ * @param password The password
+ * @return The private key
+ * @throws GssSecurityException If an error occurs while retrieving the
+ * private key
+ */
+ public static PrivateKey loadPrivateKey(String keyStoreFile, String alias, String password) throws GssSecurityException {
+ try {
+
+ // Make sure we're inited
+ init();
+
+ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+ log.debug("GssUtil: loadPrivateKey() load keystore " + keyStoreFile);
+
+ FileInputStream fis = null;
+ try {
+ fis = new FileInputStream(keyStoreFile);
+ ks.load(fis, password.toCharArray());
+ } finally {
+ if (fis != null) {
+ fis.close();
+ }
+ }
+ log.debug("GssUtil: loadPrivateKey() keystore loaded: " + ks);
+ KeyStore.PasswordProtection pp = new KeyStore.PasswordProtection(password.toCharArray());
+ KeyStore.PrivateKeyEntry pkEntry = (KeyStore.PrivateKeyEntry) ks.getEntry(alias, pp);
+ PrivateKey myPrivateKey = pkEntry.getPrivateKey();
+ log.debug("GssUtil: loadPrivateKey() private key loaded: " + myPrivateKey);
+
+ return myPrivateKey;
+ } catch (IOException e) {
+ log.error("Failed to load private key ", e);
+ throw new GssSecurityException("Failed to load private key ", e);
+ } catch (GeneralSecurityException e) {
+ log.error("Looks like wrong pass phrase. Error message: " + e.getMessage());
+ throw new GssSecurityException("Wrong pass phrase", e);
+ }
+ }
+
+ public static Provider getProvider() throws GeneralSecurityException {
+ // Make sure we're initialized
+ init();
+ return provider;
+ }
+
+ /**
+ * Sets the security provider for this utility. This method will also
+ * reconfigure the certificate factory used by this utility.
+ *
+ * @param provider The security provider
+ * @throws java.security.GeneralSecurityException If an error occurs getting
+ * a new certificate factory for the provider.
+ */
+ public static void setProvider(Provider provider) throws GeneralSecurityException {
+ GssUtil.provider = provider;
+ // TODO: Should we assume the provider was already added to the JVM?
+ certificateFactory = CertificateFactory.getInstance("X.509", provider);
+ }
+
+ /**
+ * Returns the certificate factory configured for use by this utility. This
+ * method will initialize this utility if hasn't already been initialized
+ *
+ * @return The certificate factory
+ * @throws java.security.GeneralSecurityException If an error occurs while
+ * initializing this utilty.
+ */
+ public static CertificateFactory getCertificateFactory() throws GeneralSecurityException {
+ // Make sure we're initialized
+ init();
+ return certificateFactory;
+ }
+
+ /**
+ * Sets the certificate factory for this utilty. This method will also
+ * reconfigure the security provider used by this utility.
+ *
+ * @param certificateFactory The certificate factory
+ */
+ public static void setCertificateFactory(CertificateFactory certificateFactory) {
+ GssUtil.certificateFactory = certificateFactory;
+ GssUtil.provider = certificateFactory.getProvider();
+ // TODO: Should we assume the provider was already added to the JVM?
+ }
+
+ /**
+ * Initializes this utility. Determines the Java security provider and
+ * certificate factory to use for handling GSS certificates.
+ *
+ * @throws java.security.GeneralSecurityException If an error occurs during
+ * initialization.
+ */
+ public static void init() throws GeneralSecurityException {
+ // Invoked by credential manager at startup, so don't need to synchronize
+ if (!isInited) {
+ log.info("Initializing GSS security");
+ if (certificateFactory == null) {
+ if (provider == null) {
+ provider = new BouncyCastleProvider();
+ if (Security.getProvider(provider.getName()) == null) {
+ log.info("Registering security provider: " + provider.getName());
+ Security.addProvider(provider);
+ } else {
+ provider = Security.getProvider(provider.getName());
+ log.info("Obtaining security provider: " + provider.getName());
+ }
+ // TODO: Should we just pass the provider here or what (was originally copied from cog)?
+ }
+ log.info("Creating certificate factory with security provider: " + provider);
+ certificateFactory = CertificateFactory.getInstance("X.509", provider);
+ } else {
+ }
+
+ isInited = true;
+ }
+ }
+}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/ZipFileExtractor.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/ZipFileExtractor.java
new file mode 100644
index 0000000..1fb7554
--- /dev/null
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/gss/ZipFileExtractor.java
@@ -0,0 +1,111 @@
+package org.irods.jargon.idrop.desktop.systraygui.gss;
+
+import java.io.*;
+import java.util.Enumeration;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import org.slf4j.LoggerFactory;
+
+/*
+ * Class based on certMan, used to extract cerificates.
+ */
+public class ZipFileExtractor {
+
+ public static org.slf4j.Logger log = LoggerFactory.getLogger(ZipFileExtractor.class);
+
+ public static void unzipFile(String zipFileName,
+ String zipFileDest) throws IOException {
+ log.info("Unzipping " + zipFileName + " to " + zipFileDest + " with this class loader");
+ ClassLoader classLoader = ZipFileExtractor.class.getClassLoader();
+ unzipFile(classLoader, zipFileName, zipFileDest);
+ }
+
+ public static void unzipFile(ClassLoader classLoader,
+ String zipFileName,
+ String zipFileDest) throws IOException {
+ // Unzip with our class loader
+ extractZipFile(classLoader, zipFileName, zipFileDest);
+ // Unzip the file
+ unzip(zipFileDest);
+ }
+
+ public static void extractZipFile(String zipFileName,
+ String zipFileDest) throws IOException {
+ log.info("Extracting " + zipFileName + " to " + zipFileDest + " with this class loader");
+ ClassLoader classLoader = ZipFileExtractor.class.getClassLoader();
+ extractZipFile(classLoader, zipFileName, zipFileDest);
+ }
+
+ public static void extractZipFile(ClassLoader classLoader,
+ String zipFileName,
+ String zipFileDest) throws IOException {
+
+ log.info("Extracting " + zipFileName + " from class loader to " + zipFileDest);
+
+ try {
+ log.info("Getting input stream for " + zipFileName);
+ InputStream inputStream = classLoader.getResourceAsStream(zipFileName);
+ if (inputStream == null) {
+ throw new IOException("Unable to get input stream for " + zipFileName + " from class loader!");
+ }
+ log.info("Creating file output stream for " + zipFileDest);
+ OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(zipFileDest));
+ log.info("Output stream created.");
+ byte[] buffer = new byte[2048];
+ for (;;) {
+ int nBytes = inputStream.read(buffer);
+ if (nBytes <= 0) {
+ break;
+ }
+ outputStream.write(buffer, 0, nBytes);
+ }
+ outputStream.flush();
+ outputStream.close();
+ inputStream.close();
+ log.info(zipFileName + " has been unloaded to " + zipFileDest);
+ } catch (IOException e) {
+ log.error("Failed to extract " + zipFileName + " to " + zipFileDest);
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ public static void unzip(String path) {
+ Enumeration entries;
+ ZipFile zipFile;
+ String dir = new File(path).getParent();
+
+ try {
+ zipFile = new ZipFile(path);
+ entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = (ZipEntry) entries.nextElement();
+ String entryDest = dir + File.separator + entry.getName();
+ if (entry.isDirectory()) {
+ // Assume directories are stored parents first then children.
+ log.error("Extracting directory: " + entry.getName());
+ // This is not robust, just for demonstration purposes.
+ (new File(entryDest)).mkdir();
+ } else {
+ log.error("Extracting file: " + entry.getName());
+ copyInputStream(zipFile.getInputStream(entry),
+ new BufferedOutputStream(new FileOutputStream(entryDest)));
+ }
+ }
+ zipFile.close();
+ } catch (IOException ioe) {
+ ioe.printStackTrace();
+ }
+ }
+
+ public static void copyInputStream(InputStream in, OutputStream out)
+ throws IOException {
+ byte[] buffer = new byte[1024];
+ int len;
+ while ((len = in.read(buffer)) >= 0) {
+ out.write(buffer, 0, len);
+ }
+ in.close();
+ out.close();
+ }
+} \ No newline at end of file
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form
index 199862b..87f7d7c 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.form
@@ -17,6 +17,7 @@
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
+ <SyntheticProperty name="generateCenter" type="boolean" value="false"/>
</SyntheticProperties>
<Events>
<EventHandler event="windowClosing" listener="java.awt.event.WindowListener" parameters="java.awt.event.WindowEvent" handler="formWindowClosing"/>
@@ -64,7 +65,7 @@
<Dimension value="[622, 125]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
- <Dimension value="[1121, 190]"/>
+ <Dimension value="[1121, 120]"/>
</Property>
</Properties>
<Constraints>
@@ -491,7 +492,7 @@
</Events>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout" value="org.netbeans.modules.form.compat2.layouts.DesignGridBagLayout$GridBagConstraintsDescription">
- <GridBagConstraints gridX="-1" gridY="-1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
+ <GridBagConstraints gridX="13" gridY="1" gridWidth="1" gridHeight="1" fill="0" ipadX="0" ipadY="0" insetsTop="0" insetsLeft="0" insetsBottom="0" insetsRight="0" anchor="10" weightX="0.0" weightY="0.0"/>
</Constraint>
</Constraints>
</Component>
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java
index aa45c04..a173b8c 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/iDrop.java
@@ -166,7 +166,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
IRODSAccount savedAccount = iDropCore.getIrodsAccount();
iDropCore.setIrodsAccount(null);
- LoginDialog loginDialog = new LoginDialog(null, iDropCore);
+ LoginDialog loginDialog = new LoginDialog(null, iDropCore,false);
loginDialog.setLocationRelativeTo(null);
loginDialog.setVisible(true);
@@ -1384,7 +1384,7 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
pnlMainToolbarIcons.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 20, 10, 20));
pnlMainToolbarIcons.setMinimumSize(new java.awt.Dimension(622, 125));
- pnlMainToolbarIcons.setPreferredSize(new java.awt.Dimension(1121, 190));
+ pnlMainToolbarIcons.setPreferredSize(new java.awt.Dimension(1121, 120));
pnlMainToolbarIcons.setLayout(new java.awt.GridBagLayout());
btnMainToolbarTree.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icon_tree.png"))); // NOI18N
@@ -1636,7 +1636,10 @@ public class iDrop extends javax.swing.JFrame implements ActionListener,
btnMainToolbarSettings1ActionPerformed(evt);
}
});
- pnlMainToolbarIcons.add(btnMainToolbarSettings1, new java.awt.GridBagConstraints());
+ gridBagConstraints = new java.awt.GridBagConstraints();
+ gridBagConstraints.gridx = 13;
+ gridBagConstraints.gridy = 1;
+ pnlMainToolbarIcons.add(btnMainToolbarSettings1, gridBagConstraints);
pnlMain.add(pnlMainToolbarIcons, java.awt.BorderLayout.PAGE_START);
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java
index 1558152..a9e49f9 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationService.java
@@ -15,57 +15,62 @@ import org.irods.jargon.transfer.engine.synch.ConflictingSynchException;
public interface IdropConfigurationService {
-public static final String IDROP_VERSION_FILE_NAME = ".idropVersion";
-
-public static final String VERSION_3_1 = "3.1.0.0";
-
-public static final String VERSION_NUMBER = "idrop.version";
-public static final String IDROP_PROPS_FILE_NAME = "idrop.properties";
-public static final String FORCE_MODE = "force.mode";
-public static final String FORCE_NO_SYNCH = "force.no.synch";
-public static final String LOGIN_PRESET = "login.preset";
-public static final String SHOW_STARTUP = "show.startup";
-public static final String SHOW_GUI = "idrop.show.gui";
-public static final String DEVICE_NAME = "idrop.device.name";
-// account info for cache
-public static final String ACCOUNT_CACHE_HOST = "irods.account.host";
-public static final String ACCOUNT_CACHE_PORT = "irods.account.port";
-public static final String ACCOUNT_CACHE_ZONE = "irods.account.zone";
-public static final String ACCOUNT_CACHE_RESOURCE = "irods.account.resource";
-public static final String ACCOUNT_CACHE_USER_NAME = "irods.account.user";
-public static final String ACCOUNT_CACHE_USER_PASSWORD = "irods.account.password";
-public static final String ACCOUNT_CACHE_USER_SAVE_PASS = "irods.account.savepassword";
-public static final String ACCOUNT_CACHE_ROOT_DIR = "irods.account.root.dir";
-public static final String ACCOUNT_CACHE_LOGIN_MODE = "irods.account.login.mode";
-// for GSI
-public static final String ACCOUNT_CACHE_PROXY_LOCATION = "irods.account.gsi.proxy.location";
-public static final String ACCOUNT_CACHE_CERTIFICATES_LOCATION = "irods.account.gsi.certificates.location";
-public static final String ACCOUNT_CACHE_USER_AUTO_GSI = "irods.account.autogsi";
-// /for GSI
-public static final String POLICY_AWARE_PROPERTY = "policy.aware";
-public static final String LOOK_AND_FEEL = "idrop.lookandfeel";
-public static final String TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES = "transferengine.record.successful.files";
-public static final String VERIFY_CHECKSUM_ON_TRANSFER = "transfer.computeandvalidate.checksum";
-public static final String ALLOW_CONNECTION_REROUTING = "transfer.allow.redirects";
-public static final String INTRA_FILE_STATUS_CALLBACKS = "transfer.intra.file.callbacks";
-public static final String IRODS_CONNECTION_TIMEOUT = "socket.timeout";
-public static final String IRODS_PARALLEL_CONNECTION_TIMEOUT = "parallel.socket.timeout";
-public static final String IRODS_PARALLEL_CONNECTION_MAX_THREADS = "transfer.max.parallel.threads";
-public static final String IRODS_PARALLEL_USE_PARALLEL = "transfer.use.parallel";
-public static final String IRODS_PARALLEL_USE_NIO = "transfer.use.nio.for.parallel";
-public static final String IRODS_PARALLEL_USE_POOL = "transfer.use.pool";
-public static final String IRODS_IO_INTERNAL_INPUT_STREAM_BUFFER_SIZE = "jargon.io.internal.input.stream.buffer.size";
-public static final String IRODS_IO_INTERNAL_OUTPUT_STREAM_BUFFER_SIZE = "jargon.io.internal.output.stream.buffer.size";
-public static final String IRODS_IO_INTERNAL_CACHE_BUFFER_SIZE = "jargon.io.internal.cache.buffer.size";
-public static final String IRODS_IO_SEND_INPUT_STREAM_BUFFER_SIZE = "jargon.io.send.input.stream.buffer.size";
-public static final String IRODS_IO_INPUT_TO_OUTPUT_COPY_BUFFER_SIZE = "jargon.io.input.to.output.copy.byte.buffer.size";
-public static final String IRODS_IO_LOCAL_INPUT_STREAM_BUFFER_SIZE = "jargon.io.local.input.stream.buffer.size";
-public static final String IRODS_IO_LOCAL_OUTPUT_STREAM_BUFFER_SIZE = "jargon.io.local.output.stream.buffer.size";
-public static final String IRODS_IO_PUT_BUFFER_SIZE = "jargon.put.buffer.size";
-public static final String IRODS_IO_GET_BUFFER_SIZE = "jargon.get.buffer.size";
-public static final String IRODS_CONNECTION_RESTART = "transfer.reconnect";
-public static final String IDROP_ENABLE_RESC_EDIT = "idrop.settings.enable_default_resc_edit";
-public static final String IDROP_PUBLIC_LINK_SERVICE = "idrop.public.link.service.url";
+ public static final String IDROP_VERSION_FILE_NAME = ".idropVersion";
+
+ public static final String VERSION_3_1 = "3.1.0.0";
+
+ public static final String VERSION_NUMBER = "idrop.version";
+ public static final String IDROP_PROPS_FILE_NAME = "idrop.properties";
+ public static final String FORCE_MODE = "force.mode";
+ public static final String FORCE_NO_SYNCH = "force.no.synch";
+ public static final String LOGIN_PRESET = "login.preset";
+ public static final String SHOW_STARTUP = "show.startup";
+ public static final String SHOW_GUI = "idrop.show.gui";
+ public static final String DEVICE_NAME = "idrop.device.name";
+ // account info for cache
+ public static final String ACCOUNT_CACHE_HOST = "irods.account.host";
+ public static final String ACCOUNT_CACHE_PORT = "irods.account.port";
+ public static final String ACCOUNT_CACHE_ZONE = "irods.account.zone";
+ public static final String ACCOUNT_CACHE_RESOURCE = "irods.account.resource";
+ public static final String ACCOUNT_CACHE_USER_NAME = "irods.account.user";
+ public static final String ACCOUNT_CACHE_USER_PASSWORD = "irods.account.password";
+ public static final String ACCOUNT_CACHE_USER_SAVE_PASS = "irods.account.savepassword";
+ public static final String ACCOUNT_CACHE_ROOT_DIR = "irods.account.root.dir";
+ public static final String ACCOUNT_CACHE_LOGIN_MODE = "irods.account.login.mode";
+ // for GSI
+ public static final String ACCOUNT_CACHE_PROXY_LOCATION = "irods.account.gsi.proxy.location";
+ public static final String ACCOUNT_CACHE_CERTIFICATES_LOCATION = "irods.account.gsi.certificates.location";
+ public static final String ACCOUNT_CACHE_USER_AUTO_GSI = "irods.account.autogsi";
+ public static final String ACCOUNT_CACHE_CERT_PEM_LOCATION = "irods.account.gsi.cert.pem.location";
+ public static final String ACCOUNT_CACHE_KEY_PEM_LOCATION = "irods.account.gsi.key.pem.location";
+ public static final String ACCOUNT_CACHE_CERT_P12_LOCATION = "irods.account.gsi.cert.p12.location";
+ public static final String ACCOUNT_CACHE_CERT_PASSWORD = "irods.account.gsi.cert.password";
+ public static final String ACCOUNT_CACHE_CERT_LOGIN_MODE = "irods.account.gsi.cert.login.mode";
+ // /for GSI
+ public static final String POLICY_AWARE_PROPERTY = "policy.aware";
+ public static final String LOOK_AND_FEEL = "idrop.lookandfeel";
+ public static final String TRANSFER_ENGINE_RECORD_SUCCESSFUL_FILES = "transferengine.record.successful.files";
+ public static final String VERIFY_CHECKSUM_ON_TRANSFER = "transfer.computeandvalidate.checksum";
+ public static final String ALLOW_CONNECTION_REROUTING = "transfer.allow.redirects";
+ public static final String INTRA_FILE_STATUS_CALLBACKS = "transfer.intra.file.callbacks";
+ public static final String IRODS_CONNECTION_TIMEOUT = "socket.timeout";
+ public static final String IRODS_PARALLEL_CONNECTION_TIMEOUT = "parallel.socket.timeout";
+ public static final String IRODS_PARALLEL_CONNECTION_MAX_THREADS = "transfer.max.parallel.threads";
+ public static final String IRODS_PARALLEL_USE_PARALLEL = "transfer.use.parallel";
+ public static final String IRODS_PARALLEL_USE_NIO = "transfer.use.nio.for.parallel";
+ public static final String IRODS_PARALLEL_USE_POOL = "transfer.use.pool";
+ public static final String IRODS_IO_INTERNAL_INPUT_STREAM_BUFFER_SIZE = "jargon.io.internal.input.stream.buffer.size";
+ public static final String IRODS_IO_INTERNAL_OUTPUT_STREAM_BUFFER_SIZE = "jargon.io.internal.output.stream.buffer.size";
+ public static final String IRODS_IO_INTERNAL_CACHE_BUFFER_SIZE = "jargon.io.internal.cache.buffer.size";
+ public static final String IRODS_IO_SEND_INPUT_STREAM_BUFFER_SIZE = "jargon.io.send.input.stream.buffer.size";
+ public static final String IRODS_IO_INPUT_TO_OUTPUT_COPY_BUFFER_SIZE = "jargon.io.input.to.output.copy.byte.buffer.size";
+ public static final String IRODS_IO_LOCAL_INPUT_STREAM_BUFFER_SIZE = "jargon.io.local.input.stream.buffer.size";
+ public static final String IRODS_IO_LOCAL_OUTPUT_STREAM_BUFFER_SIZE = "jargon.io.local.output.stream.buffer.size";
+ public static final String IRODS_IO_PUT_BUFFER_SIZE = "jargon.put.buffer.size";
+ public static final String IRODS_IO_GET_BUFFER_SIZE = "jargon.get.buffer.size";
+ public static final String IRODS_CONNECTION_RESTART = "transfer.reconnect";
+ public static final String IDROP_ENABLE_RESC_EDIT = "idrop.settings.enable_default_resc_edit";
+ public static final String IDROP_PUBLIC_LINK_SERVICE = "idrop.public.link.service.url";
Properties bootstrapConfigurationAndMergePropertiesFromLocalAndClasspath()
throws IdropException;
@@ -96,7 +101,7 @@ public static final String IDROP_PUBLIC_LINK_SERVICE = "idrop.public.link.servic
* {@link IRODSAccount} to be cached
* @throws IdropException
*/
- void saveLogin(final IRODSAccount irodsAccount, boolean savePassword) throws IdropException;
+ void saveLogin(final IRODSAccount irodsAccount) throws IdropException;
void removeConfigProperty(final String key) throws IdropException;
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java
index 264f361..cd23864 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/services/IdropConfigurationServiceImpl.java
@@ -250,7 +250,7 @@ public class IdropConfigurationServiceImpl implements IdropConfigurationService
}
@Override
- public void saveLogin(final IRODSAccount irodsAccount, boolean savePassword)
+ public void saveLogin(final IRODSAccount irodsAccount)
throws IdropException {
log.info("save login");
if (irodsAccount == null) {
@@ -272,17 +272,7 @@ public class IdropConfigurationServiceImpl implements IdropConfigurationService
irodsAccount.getUserName());
updateConfig(IdropConfigurationService.ACCOUNT_CACHE_LOGIN_MODE,
irodsAccount.getAuthenticationScheme().name());
- if(savePassword){
- updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD,
- irodsAccount.getPassword());
- updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS,
- "true");
- }else{
- updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_PASSWORD,
- "");
- updateConfig(IdropConfigurationService.ACCOUNT_CACHE_USER_SAVE_PASS,
- "false");
- }
+
log.info("config updated");
}
diff --git a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
index 7080ebd..bc3281c 100644
--- a/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
+++ b/idrop-swing/src/main/java/org/irods/jargon/idrop/desktop/systraygui/utils/Version.java
@@ -1,5 +1,5 @@
package org.irods.jargon.idrop.desktop.systraygui.utils;
public final class Version {
public static String VERSION="2.0.1-SNAPSHOT";
- public static String BUILD_TIME="20130901-0147";
+ public static String BUILD_TIME="20130829-1603";
}
diff --git a/idrop-swing/src/main/resources/certificates.zip b/idrop-swing/src/main/resources/certificates.zip
new file mode 100644
index 0000000..cb7d4c5
--- /dev/null
+++ b/idrop-swing/src/main/resources/certificates.zip
Binary files differ
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color2.png b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color2.png
new file mode 100644
index 0000000..0447e30
--- /dev/null
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg-logo-large-color2.png
Binary files differ
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo.png b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo.png
new file mode 100644
index 0000000..67b285d
--- /dev/null
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo.png
Binary files differ
diff --git a/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo_data_logo.png b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo_data_logo.png
new file mode 100644
index 0000000..67b285d
--- /dev/null
+++ b/idrop-swing/src/main/resources/org/irods/jargon/idrop/desktop/images/qcg_logo_data_logo.png
Binary files differ
diff --git a/idrop-web/grails-app/conf/Config.groovy b/idrop-web/grails-app/conf/Config.groovy
index db1bb49..3577777 100755
--- a/idrop-web/grails-app/conf/Config.groovy
+++ b/idrop-web/grails-app/conf/Config.groovy
@@ -18,9 +18,14 @@ environments {
production { grails.serverURL = "http://iren-web.renci.org:8080/${appName}" }
production { grails.serverURL = "http://srbbrick15.ucsd.edu:1525//${appName}" }
production { grails.serverURL = "http://www.irods.org" } */
+ production { grails.serverURL = "http://elder10.man.poznan.pl:8090/${appName}" }
+ development { grails.serverURL = "http://elder10.man.poznan.pl:8090/${appName}" }
+ test { grails.serverURL = "http://elder10.man.poznan.pl:8090/${appName}" }
+/*
production { grails.serverURL = "http://localhost:8080/${appName}" }
development { grails.serverURL = "http://localhost:8080/${appName}" }
test { grails.serverURL = "http://localhost:8080/${appName}" }
+*/
}
/*
diff --git a/idrop-web/grails-app/conf/Config.groovy~ b/idrop-web/grails-app/conf/Config.groovy~
index 97def3b..749417f 100755
--- a/idrop-web/grails-app/conf/Config.groovy~
+++ b/idrop-web/grails-app/conf/Config.groovy~
@@ -26,13 +26,13 @@ environments {
/*
* 2) If you want to set things up so that the idrop web browser automatically points to a certain grid (i.e. only user ID and password show, then do something like below.
* Take the following outside of the comment block and configure here
- *
+ */
idrop.config.preset.host="elder10.man.poznan.pl"
idrop.config.preset.port="1247"
idrop.config.preset.zone="testZone"
idrop.config.preset.resource=""
idrop.config.preset.authScheme="Standard"
- */
+
/*
@@ -61,7 +61,7 @@ idrop.config.idrop.lite.use.applet.dir=false
* idrop.config.idrop.jnlp="https://lifetime-library.ils.unc.edu/llclient/idrop.jnlp"
*/
-idrop.config.idrop.jnlp="http://localhost:8080/idrop-web/idrop.jnlp"
+idrop.config.idrop.jnlp="http://elder10.man.poznan.pl:8080/idrop-web/idrop.jnlp"
//drop.config.idrop.jnlp="http://iren-web.renci.org/idrop-snapshot/idrop.jnlp"
//idrop.config.idrop.jnlp="http://http://iren-web.renci.org/idrop.jnlp"
/*
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy
index ece2f82..1edb684 100755
--- a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataController.groovy
@@ -43,6 +43,7 @@ class MetadataController {
irodsAccessObjectFactory.closeSession()
}
+ def index = { }
/**
* Load the metadata details area, this will show the main form, and subsequently, the table will be loaded via AJAX
*/
diff --git a/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy
new file mode 100644
index 0000000..f9dd3fb
--- /dev/null
+++ b/idrop-web/grails-app/controllers/org/irods/mydrop/controller/MetadataSearchController.groovy
@@ -0,0 +1,267 @@
+package org.irods.mydrop.controller
+
+import org.apache.commons.collections.FactoryUtils
+import org.apache.commons.collections.ListUtils
+import org.irods.jargon.core.connection.IRODSAccount
+import org.irods.jargon.core.pub.CollectionAO
+import org.irods.jargon.core.pub.CollectionAndDataObjectListAndSearchAO;
+import org.irods.jargon.core.pub.IRODSAccessObjectFactory
+import org.irods.jargon.core.query.AVUQueryElement
+import org.irods.jargon.core.query.AVUQueryOperatorEnum
+import org.irods.jargon.core.query.CollectionAndDataObjectListingEntry;
+import org.irods.jargon.core.query.MetaDataAndDomainData
+import org.irods.jargon.core.query.AVUQueryElement.AVUQueryPart
+import org.irods.jargon.core.pub.DataObjectAO;
+
+
+
+import java.util.ArrayList;
+
+class MetadataSearchController {
+
+ IRODSAccessObjectFactory irodsAccessObjectFactory
+ IRODSAccount irodsAccount
+
+ /**
+ * Interceptor grabs IRODSAccount from the SecurityContextHolder
+ */
+ def beforeInterceptor = [action:this.&auth]
+
+ def auth() {
+ if(!session["SPRING_SECURITY_CONTEXT"]) {
+ redirect(controller:"login", action:"login")
+ return false
+ }
+ irodsAccount = session["SPRING_SECURITY_CONTEXT"]
+ }
+
+
+ def afterInterceptor = {
+ log.debug("closing the session")
+ irodsAccessObjectFactory.closeSession()
+ }
+
+ def index = {
+
+ }
+
+ /**
+ * Search iRODS metadata
+ * Here the data from inputs is posted.
+ */
+ def search (MetadataSearchCommand metadataSearchCommand) {
+
+ CollectionAndDataObjectListAndSearchAO collectionAndDataObjectListAndSearchAO = irodsAccessObjectFactory.getCollectionAndDataObjectListAndSearchAO(irodsAccount)
+ DataObjectAO dataObjAO = irodsAccessObjectFactory.getDataObjectAO(irodsAccount) //dataObjects
+ CollectionAO collectionAO = irodsAccessObjectFactory.getCollectionAO(irodsAccount) //folders
+
+ List<CollectionAndDataObjectListingEntry> results = new ArrayList<CollectionAndDataObjectListingEntry>()
+ List<MetaDataAndDomainData> queryResults = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> finalResults = new ArrayList<MetaDataAndDomainData>()
+
+ int counter = -1
+
+ for(AVUNode avuNode in metadataSearchCommand.AVUNodes) { //for every condition node do:
+ if(avuNode.andOr == "Every") { //if every condition has to be fulfilled
+ queryResults = connectedByAnd(avuNode, dataObjAO, collectionAO)
+ } else { //if at least one condition has to be fulfilled
+ queryResults = connectedByOr(avuNode, dataObjAO, collectionAO)
+ }
+ if(counter >= 0) { //if there's more than one node, check operator between nodes
+ log.info("OPERATOR:" + metadataSearchCommand.AVUOps[counter])
+ if (metadataSearchCommand.AVUOps[counter] == "AND") {
+ finalResults = intersectLists(finalResults, queryResults)
+ } else {
+ finalResults = sumOfLists(finalResults, queryResults)
+ }
+ } else {
+ finalResults = sumOfLists(finalResults, queryResults)
+ }
+ counter++
+ }
+
+
+
+ for (MetaDataAndDomainData data : finalResults){
+ results.add(collectionAndDataObjectListAndSearchAO.getCollectionAndDataObjectListingEntryAtGivenAbsolutePath(data.domainObjectUniqueName))
+ }
+
+
+ render(view:"/search/searchResult", model:[results:results])
+ }
+ //method used to finding files as well as folders matching every metadata query, final result is the sum of these results
+ private def connectedByAnd(AVUNode avuNode, DataObjectAO dataObjAO, CollectionAO collectionAO) {
+ List<MetaDataAndDomainData> queryRes1 = collectionAO.findMetadataValuesByMetadataQuery(createAVUQ(avuNode), true) //match folders names
+ List<MetaDataAndDomainData> queryRes2 = dataObjAO.findMetadataValuesByMetadataQuery(createAVUQ(avuNode)) //match dataObj names
+ List<MetaDataAndDomainData> queryResults = ListUtils.sum(queryRes1, queryRes2) //connect lists
+
+ queryResults
+ }
+
+ //method used to finding files as well as folders matching AT LEAST ONE metadata query
+ private def connectedByOr(AVUNode avuNode, DataObjectAO dataObjAO, CollectionAO collectionAO) {
+ List<AVUQueryElement> metadataQuery = new ArrayList<AVUQueryElement>()
+ List<MetaDataAndDomainData> finalResult = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> queryRes1 = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> queryRes2 = new ArrayList<MetaDataAndDomainData>()
+ List<MetaDataAndDomainData> queryResults = new ArrayList<MetaDataAndDomainData>()
+
+ for(AVUCommand avu in avuNode.AVUs) {
+ metadataQuery.clear()
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.ATTRIBUTE, AVUQueryOperatorEnum.EQUAL, avu.attribute));
+ if((avu.value).isNumber() && avu.operator in ["<", "<=", ">="]) //">"
+ {
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.VALUE, chooseNumOperator(avu.operator), avu.value));
+ } else {
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.VALUE, chooseOperator(avu.operator), avu.value));
+ }
+
+ if(!avu.unit.empty){
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.UNITS, AVUQueryOperatorEnum.EQUAL, avu.unit));
+ }
+
+ queryRes1 = collectionAO.findMetadataValuesByMetadataQuery(metadataQuery, true)
+ queryRes2 = dataObjAO.findMetadataValuesByMetadataQuery(metadataQuery)
+ queryResults = ListUtils.sum(queryRes1, queryRes2)
+
+ finalResult = sumOfLists(finalResult, queryResults)
+ }
+
+ finalResult //return list without duplicates
+
+ }
+
+ def createAVUQ(AVUNode avuNode) { //create list of metadata queries
+
+ List<AVUQueryElement> metadataQuery = new ArrayList<AVUQueryElement>()
+
+ for(AVUCommand avu in avuNode.AVUs){
+
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.ATTRIBUTE, AVUQueryOperatorEnum.EQUAL, avu.attribute));
+ if((avu.value).isNumber() && avu.operator in ["<", "<=", ">="]) //">"
+ {
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.VALUE, chooseNumOperator(avu.operator), avu.value));
+ } else {
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.VALUE, chooseOperator(avu.operator), avu.value));
+ }
+
+ if(!avu.unit.empty){
+ metadataQuery.add(AVUQueryElement.instanceForValueQuery(AVUQueryPart.UNITS, AVUQueryOperatorEnum.EQUAL, avu.unit));
+ }
+ }
+
+ metadataQuery
+ }
+
+ //create one list from two ones without duplicates
+ private def sumOfLists(List<MetaDataAndDomainData> list1, List<MetaDataAndDomainData> list2) {
+
+ boolean alreadyEx = false
+
+ for(MetaDataAndDomainData elem1 in list1) {
+ alreadyEx = false
+ for(MetaDataAndDomainData elem2 in list2) {
+ if(elem1.getDomainObjectUniqueName() == elem2.getDomainObjectUniqueName())
+ alreadyEx = true
+ }
+ if(!alreadyEx) list2.add(elem1)
+ }
+ list2
+ }
+
+
+ //create list in which there are files and collections occured in both input lists
+ private def intersectLists(List<MetaDataAndDomainData> list1, List<MetaDataAndDomainData> list2) {
+
+ List<MetaDataAndDomainData> finalList = new ArrayList<MetaDataAndDomainData>()
+ boolean ex = false
+
+ for(MetaDataAndDomainData elem1 in list1) {
+ ex = false
+ for(MetaDataAndDomainData elem2 in list2) {
+ if(elem1.getDomainObjectUniqueName() == elem2.getDomainObjectUniqueName())
+ ex = true
+ }
+ if(ex) finalList.add(elem1)
+ }
+ finalList
+ }
+
+
+
+ def chooseOperator(String op) {
+ switch(op){
+ case "=":
+ AVUQueryOperatorEnum.EQUAL;
+ break
+ case ">":
+ AVUQueryOperatorEnum.GREATER_THAN;
+ break
+ case "<":
+ AVUQueryOperatorEnum.LESS_THAN;
+ break
+ case ">=":
+ AVUQueryOperatorEnum.GREATER_OR_EQUAL;
+ break
+ case "<=":
+ AVUQueryOperatorEnum.LESS_OR_EQUAL;
+ break
+ case "<>":
+ AVUQueryOperatorEnum.NOT_EQUAL;
+ break
+ case "like":
+ AVUQueryOperatorEnum.LIKE;
+ break
+ case "not like":
+ AVUQueryOperatorEnum.NOT_LIKE;
+ break
+ }
+ }
+
+ def chooseNumOperator(String op) {
+ switch(op) {
+ /*case ">":
+ AVUQueryOperatorEnum.NUM_GREATER_THAN;
+ break*/
+ case "<":
+ AVUQueryOperatorEnum.NUM_LESS_THAN;
+ break
+ case ">=":
+ AVUQueryOperatorEnum.NUM_GREATER_OR_EQUAL;
+ break
+ case "<=":
+ AVUQueryOperatorEnum.NUM_LESS_OR_EQUAL;
+ break
+ }
+ }
+
+}
+
+
+//Class which constists of the list of condition nodes and list of operators connecting them
+class MetadataSearchCommand {
+ List <AVUNode> AVUNodes = ListUtils.lazyList([], FactoryUtils.instantiateFactory(AVUNode))
+ List <String> AVUOps = ListUtils.lazyList([], FactoryUtils.instantiateFactory(String))
+
+}
+
+//class consisted of AVU + operator
+class AVUCommand {
+ String attribute
+ String operator //=, <, >, <=, >=, <>, like, not like
+ String value
+ String unit
+
+ static constraints = {
+ attribute(blank:false)
+ value(blank:false)
+ }
+
+}
+
+//Class consisted of list of conditions and the option (in GUI radiobutton), decripted below
+class AVUNode {
+ List <AVUCommand> AVUs = ListUtils.lazyList([], FactoryUtils.instantiateFactory(AVUCommand))
+ String andOr //every condition fulfilled or at least one
+}
+
diff --git a/idrop-web/grails-app/i18n/messages.properties b/idrop-web/grails-app/i18n/messages.properties
index ee447a1..f5ce9e6 100755
--- a/idrop-web/grails-app/i18n/messages.properties
+++ b/idrop-web/grails-app/i18n/messages.properties
@@ -59,6 +59,7 @@ text.length=Size
text.login=Login
text.logout=Logout
text.metadata=Metadata
+text.metaSearch=By Metadata
text.modified=Modified
text.name=Name
text.new.folder=New Folder
diff --git a/idrop-web/grails-app/views/common/_cssAndJs.gsp b/idrop-web/grails-app/views/common/_cssAndJs.gsp
index a516319..cf957dd 100755
--- a/idrop-web/grails-app/views/common/_cssAndJs.gsp
+++ b/idrop-web/grails-app/views/common/_cssAndJs.gsp
@@ -1,5 +1,6 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><g:layoutTitle default="iDrop-web - iRODS Cloud Browser" /></title>
+ <link rel="stylesheet" href="${resource(dir:'css',file:'dhx_comboStyle.css')}" />
<link rel="stylesheet" href="${resource(dir:'css',file:'style.css')}" />
<link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap.css')}" />
<link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap-responsive.min.css')}" />
@@ -38,4 +39,4 @@
<g:javascript library="galleria-1.2.6" />
<g:javascript library="jquery.gritter.min" />
<g:javascript library="jquery.opacityrollover" />
- <g:javascript library="superfish" /> \ No newline at end of file
+ <g:javascript library="superfish" />
diff --git a/idrop-web/grails-app/views/common/_cssAndJs.gsp~ b/idrop-web/grails-app/views/common/_cssAndJs.gsp~
new file mode 100755
index 0000000..a516319
--- /dev/null
+++ b/idrop-web/grails-app/views/common/_cssAndJs.gsp~
@@ -0,0 +1,41 @@
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title><g:layoutTitle default="iDrop-web - iRODS Cloud Browser" /></title>
+ <link rel="stylesheet" href="${resource(dir:'css',file:'style.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'bootstrap-responsive.min.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'jqcloud.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'layout-default-latest.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'jquery.fileupload-ui.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'superfish.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'jquery.gritter.css')}" />
+ <link rel="stylesheet" href="${resource(dir:'css',file:'overcast/jquery-ui-1.9.0.custom.css')}" />
+ <link rel="shortcut icon"
+ href="${resource(dir:'images',file:'favicon.ico')}" type="image/x-icon" />
+ <g:layoutHead />
+ <g:javascript library="jquery-1.7.2.min" />
+ <g:javascript library="jquery-ui-1.8.7.custom.min" />
+ <g:javascript library="bootstrap.min" />
+ <g:javascript library="jquery.hotkeys" />
+ <g:javascript library="jquery.jstree" />
+ <g:javascript library="jquery.jeditable.mini" />
+ <g:javascript library="jquery.dataTables.min" />
+ <g:javascript library="mydrop/ticket" />
+ <g:javascript library="jquery.i18n.properties-min-1.0.9" />
+ <g:javascript library="jqcloud-0.1.6" />
+ <g:javascript library="jquery.fileupload-ui" />
+ <g:javascript library="jquery.fileupload" />
+ <g:javascript library="jquery.media" />
+ <g:javascript library="mydrop/lingo_common" />
+ <g:javascript library="mydrop/main" />
+ <g:javascript library="jquery-ui-13" />
+ <g:javascript library="jquery.blockUI" />
+ <g:javascript library="jquery.ba-bbq.min" />
+ <g:javascript library="jquery.layout-latest.min" />
+ <g:javascript library="jquery-ui-13" />
+ <g:javascript library="jquery.tools.min" />
+ <g:javascript library="mydrop/shopping_cart" />
+ <g:javascript library="mydrop/user" />
+ <g:javascript library="galleria-1.2.6" />
+ <g:javascript library="jquery.gritter.min" />
+ <g:javascript library="jquery.opacityrollover" />
+ <g:javascript library="superfish" /> \ No newline at end of file
diff --git a/idrop-web/grails-app/views/common/_topbar.gsp b/idrop-web/grails-app/views/common/_topbar.gsp
index fee43d3..43f7c6f 100755
--- a/idrop-web/grails-app/views/common/_topbar.gsp
+++ b/idrop-web/grails-app/views/common/_topbar.gsp
@@ -21,6 +21,8 @@
<ul class="dropdown-menu">
<!-- <li><a href="#" id="searchFileName" onclick="xxx()")>Search By File Name</a></li> -->
<li><a href="#" id="searchTag"><g:link controller="tags" action="index"><g:message code="text.tags" /></g:link></li>
+ <li><a href="#" id="searchMeta"><g:link controller="MetadataSearch" action="index"><g:message code="text.metaSearch" /></g:link></li>
+
<!-- <li><a href="#" id="searchMetadata" onclick="xxx()")>Search By Metadata</a></li> -->
</ul>
</li>
diff --git a/idrop-web/grails-app/views/common/_topbar.gsp~ b/idrop-web/grails-app/views/common/_topbar.gsp~
new file mode 100755
index 0000000..fee43d3
--- /dev/null
+++ b/idrop-web/grails-app/views/common/_topbar.gsp~
@@ -0,0 +1,75 @@
+<div class="navbar navbar-fixed-top navbar-inverse">
+<div class="navbar-inner">
+ <a class="brand" href="#">iDrop</a>
+
+ <ul class="nav">
+ <g:ifAuthenticated>
+
+ <!-- menu items shown if user has been authenticated -->
+
+ <li id="topbarHome" class="topbarItem"><g:link controller="home" action="index"><g:message code="text.home" /></g:link></li>
+ <li id="topbarBrowser" class="topbarItem"><g:link controller="browse" action="index"><g:message code="text.browse" /></g:link></li>
+
+ <g:ifNotGuestAccount>
+ <g:if test="${grailsApplication.config.idrop.config.use.userprofile==true}">
+ <li id="topbarPreferences" class="topbarItem"><g:link controller="profile" action="index">Profile</g:link></li>
+ </g:if>
+ </g:ifNotGuestAccount>
+ <li id="topbarSearch" class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <g:message code="text.search" /><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <!-- <li><a href="#" id="searchFileName" onclick="xxx()")>Search By File Name</a></li> -->
+ <li><a href="#" id="searchTag"><g:link controller="tags" action="index"><g:message code="text.tags" /></g:link></li>
+ <!-- <li><a href="#" id="searchMetadata" onclick="xxx()")>Search By Metadata</a></li> -->
+ </ul>
+ </li>
+ <li id="topbarTools" class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <g:message code="text.tools" /><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li><a href="${grailsApplication.config.idrop.config.idrop.jnlp}" id="idropDesktop")>iDrop Desktop</a></li>
+ </ul>
+ </li>
+
+ </g:ifAuthenticated>
+
+ <li id="topbarAccount" class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">
+ <g:message code="text.account" /> <g:ifAuthenticated> <g:ifNotGuestAccount>( <span id="accountZoneAndUserDisplay"><g:accountInfo /></span> )<b class="caret"></b> </g:ifNotGuestAccount></g:ifAuthenticated></a>
+ <ul class="dropdown-menu">
+ <g:ifAuthenticated>
+ <li><g:link controller="login" action="logout"><g:message code="text.logout" /></g:link></li>
+ <g:ifNotGuestAccount>
+ <li><a href="#" id="changePasswordButton"><g:link controller="login" action="changePasswordForm"><g:message code="text.change.password" /></g:link></a></li>
+ </g:ifNotGuestAccount>
+ <li><a href="#" id="setDefaultResourceButton"><g:link controller="login" action="defaultResource"><g:message code="text.set.default.resource" /></g:link></a></li>
+ </g:ifAuthenticated>
+ <g:ifNotAuthenticated>
+ <li><g:link href="#" id="loginButton" controller="login" action="login"><g:message code="text.login" /></g:link></li>
+ </g:ifNotAuthenticated>
+
+ </ul>
+ </li>
+
+ <g:ifAuthenticated>
+ <li id="topbarShoppingCart" class="topbarItem"><g:link class="pull-right" controller="shoppingCart" action="index"><span id="shoppingCartToolbarLabel"><g:message code="text.shopping.cart" /></span></g:link></li>
+ </g:ifAuthenticated>
+
+ </ul>
+ </div>
+</div>
+ <g:ifAuthenticated>
+<script>
+ var currentZone = "${irodsAccount?.zone}";
+ var currentUser = "${irodsAccount?.userName}";
+ //$(function() {
+ //$("#accountZoneAndUserDisplay").html(currentZone + ":" + currentUser);
+// });
+ </g:ifAuthenticated>
+</script>
+
+
+
+
+
diff --git a/idrop-web/grails-app/views/metadata/index.gsp b/idrop-web/grails-app/views/metadata/index.gsp
new file mode 100644
index 0000000..c775f34
--- /dev/null
+++ b/idrop-web/grails-app/views/metadata/index.gsp
@@ -0,0 +1,104 @@
+<head>
+ <meta name="layout" content="mainNoSidebar" />
+<g:javascript library="mydrop/metadata"/>
+<g:javascript library="mydrop/metaFiltering"/>
+<g:javascript library="mydrop/myScript"/>
+
+</head>
+
+
+
+<ul class="nav nav-tabs" id="searchTabsMeta">
+ <li><a href="#">Search</a></li>
+ <li><a href="#">Results</a></li>
+</ul>
+
+
+<div class="row-fluid">
+ <div class="span2">
+ <div class="nav-header">Help</div>
+ <div class="metaHelp">
+ <p>
+ There'll be help
+ <br><br><br><br><br><br><br><br>
+ </p>
+ </div>
+
+ </div>
+ <div class="span9">
+ <table class="filterMetaTable" id="filterTab1">
+ <thead>
+ <tr>
+ <th colspan="2">
+
+ </th>
+ <th colspan="2">
+ <button class="deleteNodeBtn" id="del" disabled>X</button>
+ </th>
+ </tr>
+ <tr>
+ <th colspan="2">
+ <input type="radio" value="Every" id="every" name="condOption0" checked>
+ <label class="labelRadio" for="every"> Every condition fulfilled </label>
+ </th>
+ <th colspan="2">
+ <input type="radio" value="One" id="one" name="condOption0">
+ <label class="labelRadio" for="one"> At least one condition fulfilled</label>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="filterRow0">
+ <!-- <td colspan="2">
+ <!-- <form class="formMeta">
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Attribute </div>
+ <div class="dhx_combo_box dhx_skyblue" style="width: 180px;">
+ <input class="dhx_combo_input" type="text" autocomplete="off" style="width: 155px;">
+ <input type="hidden" name="" value="">
+ <input type="hidden" name="_new_value" value="false">
+ <img class="dhx_combo_img" src="<g:resource dir="imgs" file="combo_select_dhx_skyblue.gif" alt="file icon"/>"/>
+ </div>
+ </td>
+ <!-- </div>
+ <div class="singleFilter"> -->
+ <td>
+ <div class="meta-header"> Operator</div>
+ <select id="MetaOp1" class="metaOperator">
+ <option> = </option>
+ <option> > </option>
+ <option> < </option>
+ <option> >= </option>
+ <option> <= </option>
+ <option> <> </option>
+ </select>
+ </td>
+ <!--</div>
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Value </div><input type="text">
+ </td>
+ <!--</div>
+ <div class="singleFilter">-->
+ <td>
+ <br>
+ <button class="delConditionBtn" disabled>DELETE</button>
+ </td>
+ <!--</div>
+ </form>-->
+ <!-- </td> -->
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan ="2">
+ <button class="addConditionBtn">ADD CONDITION</button>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+
+ <div><button id="newNodeBtn">New conditions node</button></div>
+ <div><button id="searchBtn">SEARCH</button></div>
+ </div>
+</div>
+
diff --git a/idrop-web/grails-app/views/metadataSearch/index.gsp b/idrop-web/grails-app/views/metadataSearch/index.gsp
new file mode 100644
index 0000000..734b9d6
--- /dev/null
+++ b/idrop-web/grails-app/views/metadataSearch/index.gsp
@@ -0,0 +1,158 @@
+<head>
+ <meta name="layout" content="mainNoSidebar" />
+<g:javascript library="mydrop/metadata"/>
+<g:javascript library="mydrop/metaFiltering"/>
+<g:javascript library="mydrop/search" />
+<g:javascript library="mydrop/tag" />
+<g:javascript library="mydrop/home" />
+
+</head>
+
+
+
+<ul class="nav nav-tabs" id="searchTabs">
+ <li><a href="#metaQueryTab">Query</a></li>
+ <li><a href="#resultsTab">Results</a></li>
+</ul>
+
+<div class="tab-content">
+ <div class="tab-pane active" id="metaQueryTab">
+ <div class="row-fluid">
+ <div class="span2">
+ <div class="nav-header">Help</div>
+ <div class="metaHelp">
+ <p>
+ To search by metadata please enter some conditions to inputs. One table limited by the lines is one condition node.
+ In this node you can enter as much queries as you want to. Additionaly, you can connect them by option choosing suitable
+ radiobutton. The nodes of conditions can also be connected, by "AND" - then the result will have to fulfill EVERY conditions
+ node according to the chosen option - or "OR" - at least one node. To add new query, press "ADD CONDITION", to delete it
+ "DELETE" , to add new node "New condition node", to delete node press the "X" button in the right corner of chosen table.
+ Eventually, to search by entered queries press "SEARCH" and be satisfied by results!
+ </p>
+ </div>
+
+ </div>
+ <div class="span9">
+ <g:form id="avuQuery" method="post" controller="metadataSearch"
+ action="search" class="">
+ <table class="filterMetaTable" id="filterTab1">
+ <thead>
+ <tr>
+ <th colspan="2">
+
+ </th>
+ <th colspan="3">
+ <input type="button" class="deleteNodeBtn" id="del" disabled value="X">
+ </th>
+ </tr>
+ <tr>
+ <th colspan="2">
+ <input type="radio" value="Every" name="AVUNodes[0].andOr" checked>
+ <label class="labelRadio"> Every condition fulfilled </label>
+ </th>
+ <th colspan="3">
+ <input type="radio" value="One" name="AVUNodes[0].andOr">
+ <label class="labelRadio"> At least one condition fulfilled</label>
+ </th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr id="filterRow0">
+ <!-- <td colspan="2">
+ <!-- <form class="formMeta">
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Attribute </div>
+ <input name="attr" type="text" autocomplete="off">
+ </td>
+ <!-- </div>
+ <div class="singleFilter"> -->
+ <td>
+ <div class="meta-header"> Operator</div>
+ <select name="op" class="metaOperator">
+ <option> = </option>
+ <option> > </option>
+ <option> < </option>
+ <option> >= </option>
+ <option> <= </option>
+ <option> <> </option>
+ <option> like </option>
+ <option> not like </option>
+ </select>
+ </td>
+ <!--</div>
+ <div class="singleFilter"> -->
+ <td> <div class="meta-header"> Value </div>
+ <input name="val" type="text" autocomplete="off">
+ </td>
+ <td> <div class="meta-header"> Unit </div>
+ <input name="unit" type="text" autocomplete="off">
+ </td>
+ <!--</div>
+ <div class="singleFilter">-->
+ <td>
+ <br>
+ <input type='button' class="delConditionBtn" value='DELETE' disabled>
+ </td>
+ <!--</div>
+ </form>-->
+ <!-- </td> -->
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td colspan ="2">
+ <input type="button" class="addConditionBtn" value="ADD CONDITION">
+ </td>
+ </tr>
+ </tfoot>
+ </table>
+
+ <div><input type="button" id="newNodeBtn" value="New conditions node"></div>
+ </g:form>
+ <div><button id="searchBtn" onclick="processMetadataQuery()">SEARCH</button></div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="tab-pane" id="resultsTab">
+ <div id="resultsTabInner">Search Results here</div>
+
+ </div>
+
+</div>
+
+<script>
+ $(document).ready(function() {
+
+ $.ajaxSetup({
+ cache : false
+ });
+ $("#topbarSearch").addClass("active");
+
+ $('#searchTabs a').click(function (e) {
+
+ e.preventDefault();
+ $(this).tab('show');
+ var state = {};
+ var tabId = this.hash
+ state["tab"] = tabId;
+ $.bbq.pushState(state);
+ });
+
+ $(window).bind( 'hashchange', function(e) {
+ processTagSearchStateChange( $.bbq.getState());
+ });
+
+ $(window).trigger( 'hashchange' );
+
+
+ });
+
+
+ //function addAVUTriplet() {
+
+
+ //}
+
+</script> \ No newline at end of file
diff --git a/idrop-web/src/templates/war/web.xml b/idrop-web/src/templates/war/web.xml
index aa5182b..51543b3 100755
--- a/idrop-web/src/templates/war/web.xml
+++ b/idrop-web/src/templates/war/web.xml
@@ -88,7 +88,7 @@
-->
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
- <welcome-file>index.gsp</welcome-file>
+ <welcome-file>login/login</welcome-file>
</welcome-file-list>
<jsp-config>
diff --git a/idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy b/idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy
new file mode 100644
index 0000000..3a61185
--- /dev/null
+++ b/idrop-web/test/unit/org/irods/mydrop/controller/MetadataSearchControllerTests.groovy
@@ -0,0 +1,17 @@
+package org.irods.mydrop.controller
+
+
+
+import grails.test.mixin.*
+import org.junit.*
+
+/**
+ * See the API for {@link grails.test.mixin.web.ControllerUnitTestMixin} for usage instructions
+ */
+@TestFor(MetadataSearchController)
+class MetadataSearchControllerTests {
+
+ void testSomething() {
+ fail "Implement me"
+ }
+}
diff --git a/idrop-web/web-app/css/bootstrap.css b/idrop-web/web-app/css/bootstrap.css
index 323e264..258561d 100755
--- a/idrop-web/web-app/css/bootstrap.css
+++ b/idrop-web/web-app/css/bootstrap.css
@@ -8,31 +8,31 @@
* Designed and built with all the love in the world @twitter by @mdo and @fat.
*/
.clearfix {
- *zoom: 1;
+ *zoom: 1;
}
.clearfix:before,
.clearfix:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
-.clearfix:after {
- clear: both;
+.clearfix:afterP {
+ clear: both;
}
.hide-text {
- font: 0/0 a;
- color: transparent;
- text-shadow: none;
- background-color: transparent;
- border: 0;
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
}
.input-block-level {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
article,
aside,
@@ -44,476 +44,590 @@ header,
hgroup,
nav,
section {
- display: block;
+ display: block;
}
audio,
canvas,
video {
- display: inline-block;
- *display: inline;
- *zoom: 1;
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
}
audio:not([controls]) {
- display: none;
+ display: none;
}
html {
- font-size: 100%;
- -webkit-text-size-adjust: 100%;
- -ms-text-size-adjust: 100%;
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
}
a:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
a:hover,
a:active {
- outline: 0;
+ outline: 0;
}
sub,
sup {
- position: relative;
- font-size: 75%;
- line-height: 0;
- vertical-align: baseline;
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
}
sup {
- top: -0.5em;
+ top: -0.5em;
}
sub {
- bottom: -0.25em;
+ bottom: -0.25em;
}
img {
- /* Responsive images (ensure images don't scale beyond their parents) */
+ /* Responsive images (ensure images don't scale beyond their parents) */
- max-width: 100%;
- /* Part 1: Set a maxium relative to the parent */
+ max-width: 100%;
+ /* Part 1: Set a maxium relative to the parent */
- width: auto\9;
- /* IE7-8 need help adjusting responsive images */
+ width: auto\9;
+ /* IE7-8 need help adjusting responsive images */
- height: auto;
- /* Part 2: Scale the height according to the width, otherwise you get stretching */
+ height: auto;
+ /* Part 2: Scale the height according to the width, otherwise you get stretching */
- vertical-align: middle;
- border: 0;
- -ms-interpolation-mode: bicubic;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
}
#map_canvas img {
- max-width: none;
+ max-width: none;
}
button,
input,
select,
textarea {
- margin: 0;
- font-size: 100%;
- vertical-align: middle;
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
}
button,
input {
- *overflow: visible;
- line-height: normal;
+ *overflow: visible;
+ line-height: normal;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
- padding: 0;
- border: 0;
+ padding: 0;
+ border: 0;
}
button,
input[type="button"],
input[type="reset"],
input[type="submit"] {
- cursor: pointer;
- -webkit-appearance: button;
+ cursor: pointer;
+ -webkit-appearance: button;
}
input[type="search"] {
- -webkit-box-sizing: content-box;
- -moz-box-sizing: content-box;
- box-sizing: content-box;
- -webkit-appearance: textfield;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button {
- -webkit-appearance: none;
+ -webkit-appearance: none;
}
textarea {
- overflow: auto;
- vertical-align: top;
+ overflow: auto;
+ vertical-align: top;
}
body {
- margin: 0;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 14px;
- line-height: 20px;
- color: #333333;
- background-color: #ffffff;
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333333;
+ background-color: #ffffff;
}
a {
- color: #0088cc;
- text-decoration: none;
+ color: #0088cc;
+ text-decoration: none;
}
a:hover {
- color: #005580;
- text-decoration: underline;
+ color: #005580;
+ text-decoration: underline;
+}
+
+/*Paulina's changes start*/
+
+.delConditionBtn{
+ padding: 5px 20px;
+ background-color: transparent;
+ font-size: 14px;
+ color: #B80000;
+ text-shadow: 0 1px 0 #B80000;
+ opacity: 0.75;
+ border-color: #B80000;
+ border-style: solid;
+ border-width: 2px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+
+}
+
+.addConditionBtn{
+ padding: 5px;
+ margin-right: 70%;
+ margin-top: 10px;
+ margin-bottom: 10px;
+ background-color: transparent;
+ font-size: 14px;
+ font-weight: bold;
+ color: #336699;
+ text-shadow: 0 1px 0 #336699;
+ opacity: 0.75;
+ border-color: #336699;
+ border-style: solid;
+ border-width: 2px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+}
+
+.deleteNodeBtn{
+ margin-left: 85%;
+ font-size: 15px;
+ font-weight: bold;
+ color: #336699;
+ opacity: 0.75;
+ border-color: transparent;
+
+}
+.span2 > .metaHelp{
+ display: block;
+ background-color: #d5d5d5;
+ width: 100%;
+ font-size: 13px;
+ text-align: justify;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
+}
+
+.filterMetaTable {
+ min-width: 95%;
+ border-bottom: medium inset silver;
+ border-top: medium ridge silver;
+}
+
+.filterMetaTable th {
+ padding: 8px;
+ vertical-align: middle;
+}
+
+.filterMetaTable > tbody > tr {
+ vertical-align: middle;
+ border-top: thin solid silver;
+ padding: 10px;
+}
+.filterMetaTable > tbody > tr > td {
+
+ padding: 8px;
+ width:25%;
+}
+
+
+
+.labelRadio {
+ font-size: 13px;
+ display: inline;
+ color: #336699;
+ text-shadow: 0 1px 0 #336699;
+}
+
+
+
+.meta-header { /*header for input in filter form */
+
+ display: block;
+ padding: 3px;
+ width: 180px;
+ font-size: 12px;
+ font-weight: bold;
+ color: #336699;
+ background-color: #d5d5d5;
+ text-shadow: 0 1px 0 #336699;
+ text-transform: uppercase;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
+
+
+.metaOperator {
+ width: 80px;
+}
+
+
+/*Paulina's changes end*/
.img-rounded {
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
.img-polaroid {
- padding: 4px;
- background-color: #fff;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.2);
- -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
- -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ padding: 4px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.img-circle {
- -webkit-border-radius: 500px;
- -moz-border-radius: 500px;
- border-radius: 500px;
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
}
.row {
- margin-left: -20px;
- *zoom: 1;
+ margin-left: -20px;
+ *zoom: 1;
}
.row:before,
.row:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.row:after {
- clear: both;
+ clear: both;
}
[class*="span"] {
- float: left;
- min-height: 1px;
- margin-left: 20px;
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
}
.container,
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
- width: 940px;
+ width: 940px;
}
.span12 {
- width: 940px;
+ width: 940px;
}
.span11 {
- width: 860px;
+ width: 860px;
}
.span10 {
- width: 780px;
+ width: 780px;
}
.span9 {
- width: 700px;
+ width: 700px;
}
.span8 {
- width: 620px;
+ width: 620px;
}
.span7 {
- width: 540px;
+ width: 540px;
}
.span6 {
- width: 460px;
+ width: 460px;
}
.span5 {
- width: 380px;
+ width: 380px;
}
.span4 {
- width: 300px;
+ width: 300px;
}
.span3 {
- width: 220px;
+ width: 220px;
}
.span2 {
- width: 140px;
+ width: 140px;
}
.span1 {
- width: 60px;
+ width: 60px;
}
.offset12 {
- margin-left: 980px;
+ margin-left: 980px;
}
.offset11 {
- margin-left: 900px;
+ margin-left: 900px;
}
.offset10 {
- margin-left: 820px;
+ margin-left: 820px;
}
.offset9 {
- margin-left: 740px;
+ margin-left: 740px;
}
.offset8 {
- margin-left: 660px;
+ margin-left: 660px;
}
.offset7 {
- margin-left: 580px;
+ margin-left: 580px;
}
.offset6 {
- margin-left: 500px;
+ margin-left: 500px;
}
.offset5 {
- margin-left: 420px;
+ margin-left: 420px;
}
.offset4 {
- margin-left: 340px;
+ margin-left: 340px;
}
.offset3 {
- margin-left: 260px;
+ margin-left: 260px;
}
.offset2 {
- margin-left: 180px;
+ margin-left: 180px;
}
.offset1 {
- margin-left: 100px;
+ margin-left: 100px;
}
.row-fluid {
- width: 100%;
- *zoom: 1;
+ width: 100%;
+ *zoom: 1;
}
.row-fluid:before,
.row-fluid:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.row-fluid:after {
- clear: both;
+ clear: both;
}
.row-fluid [class*="span"] {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- float: left;
- margin-left: 2.127659574468085%;
- *margin-left: 2.074468085106383%;
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: left;
+ margin-left: 2.127659574468085%;
+ *margin-left: 2.074468085106383%;
}
.row-fluid [class*="span"]:first-child {
- margin-left: 0;
+ margin-left: 0;
}
.row-fluid .span12 {
- width: 100%;
- *width: 99.94680851063829%;
+ width: 100%;
+ *width: 99.94680851063829%;
}
.row-fluid .span11 {
- width: 91.48936170212765%;
- *width: 91.43617021276594%;
+ width: 91.48936170212765%;
+ *width: 91.43617021276594%;
}
.row-fluid .span10 {
- width: 82.97872340425532%;
- *width: 82.92553191489361%;
+ width: 82.97872340425532%;
+ *width: 82.92553191489361%;
}
.row-fluid .span9 {
- width: 74.46808510638297%;
- *width: 74.41489361702126%;
+ width: 74.46808510638297%;
+ *width: 74.41489361702126%;
}
.row-fluid .span8 {
- width: 65.95744680851064%;
- *width: 65.90425531914893%;
+ width: 65.95744680851064%;
+ *width: 65.90425531914893%;
}
.row-fluid .span7 {
- width: 57.44680851063829%;
- *width: 57.39361702127659%;
+ width: 57.44680851063829%;
+ *width: 57.39361702127659%;
}
.row-fluid .span6 {
- width: 48.93617021276595%;
- *width: 48.88297872340425%;
+ width: 48.93617021276595%;
+ *width: 48.88297872340425%;
}
.row-fluid .span5 {
- width: 40.42553191489362%;
- *width: 40.37234042553192%;
+ width: 40.42553191489362%;
+ *width: 40.37234042553192%;
}
.row-fluid .span4 {
- width: 31.914893617021278%;
- *width: 31.861702127659576%;
+ width: 31.914893617021278%;
+ *width: 31.861702127659576%;
}
.row-fluid .span3 {
- width: 23.404255319148934%;
- *width: 23.351063829787233%;
+ width: 23.404255319148934%;
+ *width: 23.351063829787233%;
}
.row-fluid .span2 {
- width: 14.893617021276595%;
- *width: 14.840425531914894%;
+ width: 14.893617021276595%;
+ *width: 14.840425531914894%;
}
.row-fluid .span1 {
- width: 6.382978723404255%;
- *width: 6.329787234042553%;
+ width: 6.382978723404255%;
+ *width: 6.329787234042553%;
}
.row-fluid .offset12 {
- margin-left: 104.25531914893617%;
- *margin-left: 104.14893617021275%;
+ margin-left: 104.25531914893617%;
+ *margin-left: 104.14893617021275%;
}
.row-fluid .offset12:first-child {
- margin-left: 102.12765957446808%;
- *margin-left: 102.02127659574467%;
+ margin-left: 102.12765957446808%;
+ *margin-left: 102.02127659574467%;
}
.row-fluid .offset11 {
- margin-left: 95.74468085106382%;
- *margin-left: 95.6382978723404%;
+ margin-left: 95.74468085106382%;
+ *margin-left: 95.6382978723404%;
}
.row-fluid .offset11:first-child {
- margin-left: 93.61702127659574%;
- *margin-left: 93.51063829787232%;
+ margin-left: 93.61702127659574%;
+ *margin-left: 93.51063829787232%;
}
.row-fluid .offset10 {
- margin-left: 87.23404255319149%;
- *margin-left: 87.12765957446807%;
+ margin-left: 87.23404255319149%;
+ *margin-left: 87.12765957446807%;
}
.row-fluid .offset10:first-child {
- margin-left: 85.1063829787234%;
- *margin-left: 84.99999999999999%;
+ margin-left: 85.1063829787234%;
+ *margin-left: 84.99999999999999%;
}
.row-fluid .offset9 {
- margin-left: 78.72340425531914%;
- *margin-left: 78.61702127659572%;
+ margin-left: 78.72340425531914%;
+ *margin-left: 78.61702127659572%;
}
.row-fluid .offset9:first-child {
- margin-left: 76.59574468085106%;
- *margin-left: 76.48936170212764%;
+ margin-left: 76.59574468085106%;
+ *margin-left: 76.48936170212764%;
}
.row-fluid .offset8 {
- margin-left: 70.2127659574468%;
- *margin-left: 70.10638297872339%;
+ margin-left: 70.2127659574468%;
+ *margin-left: 70.10638297872339%;
}
.row-fluid .offset8:first-child {
- margin-left: 68.08510638297872%;
- *margin-left: 67.9787234042553%;
+ margin-left: 68.08510638297872%;
+ *margin-left: 67.9787234042553%;
}
.row-fluid .offset7 {
- margin-left: 61.70212765957446%;
- *margin-left: 61.59574468085106%;
+ margin-left: 61.70212765957446%;
+ *margin-left: 61.59574468085106%;
}
.row-fluid .offset7:first-child {
- margin-left: 59.574468085106375%;
- *margin-left: 59.46808510638297%;
+ margin-left: 59.574468085106375%;
+ *margin-left: 59.46808510638297%;
}
.row-fluid .offset6 {
- margin-left: 53.191489361702125%;
- *margin-left: 53.085106382978715%;
+ margin-left: 53.191489361702125%;
+ *margin-left: 53.085106382978715%;
}
.row-fluid .offset6:first-child {
- margin-left: 51.063829787234035%;
- *margin-left: 50.95744680851063%;
+ margin-left: 51.063829787234035%;
+ *margin-left: 50.95744680851063%;
}
.row-fluid .offset5 {
- margin-left: 44.68085106382979%;
- *margin-left: 44.57446808510638%;
+ margin-left: 44.68085106382979%;
+ *margin-left: 44.57446808510638%;
}
.row-fluid .offset5:first-child {
- margin-left: 42.5531914893617%;
- *margin-left: 42.4468085106383%;
+ margin-left: 42.5531914893617%;
+ *margin-left: 42.4468085106383%;
}
.row-fluid .offset4 {
- margin-left: 36.170212765957444%;
- *margin-left: 36.06382978723405%;
+ margin-left: 36.170212765957444%;
+ *margin-left: 36.06382978723405%;
}
.row-fluid .offset4:first-child {
- margin-left: 34.04255319148936%;
- *margin-left: 33.93617021276596%;
+ margin-left: 34.04255319148936%;
+ *margin-left: 33.93617021276596%;
}
.row-fluid .offset3 {
- margin-left: 27.659574468085104%;
- *margin-left: 27.5531914893617%;
+ margin-left: 27.659574468085104%;
+ *margin-left: 27.5531914893617%;
}
.row-fluid .offset3:first-child {
- margin-left: 25.53191489361702%;
- *margin-left: 25.425531914893618%;
+ margin-left: 25.53191489361702%;
+ *margin-left: 25.425531914893618%;
}
.row-fluid .offset2 {
- margin-left: 19.148936170212764%;
- *margin-left: 19.04255319148936%;
+ margin-left: 19.148936170212764%;
+ *margin-left: 19.04255319148936%;
}
.row-fluid .offset2:first-child {
- margin-left: 17.02127659574468%;
- *margin-left: 16.914893617021278%;
+ margin-left: 17.02127659574468%;
+ *margin-left: 16.914893617021278%;
}
.row-fluid .offset1 {
- margin-left: 10.638297872340425%;
- *margin-left: 10.53191489361702%;
+ margin-left: 10.638297872340425%;
+ *margin-left: 10.53191489361702%;
}
.row-fluid .offset1:first-child {
- margin-left: 8.51063829787234%;
- *margin-left: 8.404255319148938%;
+ margin-left: 8.51063829787234%;
+ *margin-left: 8.404255319148938%;
}
[class*="span"].hide,
.row-fluid [class*="span"].hide {
- display: none;
+ display: none;
}
[class*="span"].pull-right,
.row-fluid [class*="span"].pull-right {
- float: right;
+ float: right;
}
.container {
- margin-right: auto;
- margin-left: auto;
- *zoom: 1;
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
}
.container:before,
.container:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.container:after {
- clear: both;
+ clear: both;
}
.container-fluid {
- padding-right: 20px;
- padding-left: 20px;
- *zoom: 1;
+ padding-right: 20px;
+ padding-left: 20px;
+ *zoom: 1;
}
.container-fluid:before,
.container-fluid:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.container-fluid:after {
- clear: both;
+ clear: both;
}
p {
- margin: 0 0 10px;
+ margin: 0 0 10px;
}
.lead {
- margin-bottom: 20px;
- font-size: 21px;
- font-weight: 200;
- line-height: 30px;
+ margin-bottom: 20px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 30px;
}
small {
- font-size: 85%;
+ font-size: 85%;
}
strong {
- font-weight: bold;
+ font-weight: bold;
}
em {
- font-style: italic;
+ font-style: italic;
}
cite {
- font-style: normal;
+ font-style: normal;
}
.muted {
- color: #999999;
+ color: #999999;
}
.text-warning {
- color: #c09853;
+ color: #c09853;
}
.text-error {
- color: #b94a48;
+ color: #b94a48;
}
.text-info {
- color: #3a87ad;
+ color: #3a87ad;
}
.text-success {
- color: #468847;
+ color: #468847;
}
h1,
h2,
@@ -521,12 +635,12 @@ h3,
h4,
h5,
h6 {
- margin: 10px 0;
- font-family: inherit;
- font-weight: bold;
- line-height: 1;
- color: inherit;
- text-rendering: optimizelegibility;
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 1;
+ color: inherit;
+ text-rendering: optimizelegibility;
}
h1 small,
h2 small,
@@ -534,316 +648,319 @@ h3 small,
h4 small,
h5 small,
h6 small {
- font-weight: normal;
- line-height: 1;
- color: #999999;
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
}
h1 {
- font-size: 36px;
- line-height: 40px;
+ font-size: 36px;
+ line-height: 40px;
}
h2 {
- font-size: 30px;
- line-height: 40px;
+ font-size: 30px;
+ line-height: 40px;
}
h3 {
- font-size: 24px;
- line-height: 40px;
+ font-size: 24px;
+ line-height: 40px;
}
h4 {
- font-size: 18px;
- line-height: 20px;
+ font-size: 18px;
+ line-height: 20px;
}
h5 {
- font-size: 14px;
- line-height: 20px;
+ font-size: 14px;
+ line-height: 20px;
}
h6 {
- font-size: 12px;
- line-height: 20px;
+ font-size: 12px;
+ line-height: 20px;
}
h1 small {
- font-size: 24px;
+ font-size: 24px;
}
h2 small {
- font-size: 18px;
+ font-size: 18px;
}
h3 small {
- font-size: 14px;
+ font-size: 14px;
}
h4 small {
- font-size: 14px;
+ font-size: 14px;
}
.page-header {
- padding-bottom: 9px;
- margin: 20px 0 30px;
- border-bottom: 1px solid #eeeeee;
+ padding-bottom: 9px;
+ margin: 20px 0 30px;
+ border-bottom: 1px solid #eeeeee;
}
ul,
ol {
- padding: 0;
- margin: 0 0 10px 25px;
+ padding: 0;
+ margin: 0 0 10px 25px;
}
ul ul,
ul ol,
ol ol,
ol ul {
- margin-bottom: 0;
+ margin-bottom: 0;
}
li {
- line-height: 20px;
+ line-height: 20px;
}
ul.unstyled,
ol.unstyled {
- margin-left: 0;
- list-style: none;
+ margin-left: 0;
+ list-style: none;
}
dl {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
dt,
dd {
- line-height: 20px;
+ line-height: 20px;
}
dt {
- font-weight: bold;
+ font-weight: bold;
}
dd {
- margin-left: 10px;
+ margin-left: 10px;
}
.dl-horizontal {
- *zoom: 1;
+ *zoom: 1;
}
.dl-horizontal:before,
.dl-horizontal:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.dl-horizontal:after {
- clear: both;
+ clear: both;
}
.dl-horizontal dt {
- float: left;
- width: 160px;
- clear: left;
- text-align: right;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
}
.dl-horizontal dd {
- margin-left: 180px;
+ margin-left: 180px;
}
hr {
- margin: 20px 0;
- border: 0;
- border-top: 1px solid #eeeeee;
- border-bottom: 1px solid #ffffff;
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
}
abbr[title] {
- cursor: help;
- border-bottom: 1px dotted #999999;
+ cursor: help;
+ border-bottom: 1px dotted #999999;
}
abbr.initialism {
- font-size: 90%;
- text-transform: uppercase;
+ font-size: 90%;
+ text-transform: uppercase;
}
blockquote {
- padding: 0 0 0 15px;
- margin: 0 0 20px;
- border-left: 5px solid #eeeeee;
+ padding: 0 0 0 15px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eeeeee;tab
}
blockquote p {
- margin-bottom: 0;
- font-size: 16px;
- font-weight: 300;
- line-height: 25px;
+ margin-bottom: 0;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 25px;
}
blockquote small {
- display: block;
- line-height: 20px;
- color: #999999;
+ display: block;
+ line-height: 20px;
+ color: #999999;
}
blockquote small:before {
- content: '\2014 \00A0';
+ content: '\2014 \00A0';
}
blockquote.pull-right {
- float: right;
- padding-right: 15px;
- padding-left: 0;
- border-right: 5px solid #eeeeee;
- border-left: 0;
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
}
blockquote.pull-right p,
blockquote.pull-right small {
- text-align: right;
+ text-align: right;
}
blockquote.pull-right small:before {
- content: '';
+ content: '';
}
blockquote.pull-right small:after {
- content: '\00A0 \2014';
+ content: '\00A0 \2014';
}
q:before,
q:after,
blockquote:before,
blockquote:after {
- content: "";
+ content: "";
}
address {
- display: block;
- margin-bottom: 20px;
- font-style: normal;
- line-height: 20px;
+ display: block;
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 20px;
}
code,
pre {
- padding: 0 3px 2px;
- font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
- font-size: 12px;
- color: #333333;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ padding: 0 3px 2px;
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
code {
- padding: 2px 4px;
- color: #d14;
- background-color: #f7f7f9;
- border: 1px solid #e1e1e8;
+ padding: 2px 4px;
+ color: #d14;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
}
pre {
- display: block;
- padding: 9.5px;
- margin: 0 0 10px;
- font-size: 13px;
- line-height: 20px;
- word-break: break-all;
- word-wrap: break-word;
- white-space: pre;
- white-space: pre-wrap;
- background-color: #f5f5f5;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.15);
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 20px;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
pre.prettyprint {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
pre code {
- padding: 0;
- color: inherit;
- background-color: transparent;
- border: 0;
+ padding: 0;
+ color: inherit;
+ background-color: transparent;
+ border: 0;
}
.pre-scrollable {
- max-height: 340px;
- overflow-y: scroll;
+ max-height: 340px;
+ overflow-y: scroll;
}
.label,
.badge {
- font-size: 11.844px;
- font-weight: bold;
- line-height: 14px;
- color: #ffffff;
- vertical-align: baseline;
- white-space: nowrap;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #999999;
+ font-size: 11.844px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #ffffff;
+ vertical-align: baseline;
+ white-space: nowrap;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #999999;
}
.label {
- padding: 1px 4px 2px;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ padding: 1px 4px 2px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
.badge {
- padding: 1px 9px 2px;
- -webkit-border-radius: 9px;
- -moz-border-radius: 9px;
- border-radius: 9px;
+ padding: 1px 9px 2px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
}
a.label:hover,
a.badge:hover {
- color: #ffffff;
- text-decoration: none;
- cursor: pointer;
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
}
.label-important,
.badge-important {
- background-color: #b94a48;
+ background-color: #b94a48;
}
.label-important[href],
.badge-important[href] {
- background-color: #953b39;
+ background-color: #953b39;
}
.label-warning,
.badge-warning {
- background-color: #f89406;
+ background-color: #f89406;
}
.label-warning[href],
.badge-warning[href] {
- background-color: #c67605;
+ background-color: #c67605;
}
.label-success,
.badge-success {
- background-color: #468847;
+ background-color: #468847;
}
.label-success[href],
.badge-success[href] {
- background-color: #356635;
+ background-color: #356635;
}
.label-info,
.badge-info {
- background-color: #3a87ad;
+ background-color: #3a87ad;
}
.label-info[href],
.badge-info[href] {
- background-color: #2d6987;
+ background-color: #2d6987;
}
.label-inverse,
.badge-inverse {
- background-color: #333333;
+ background-color: #333333;
}
.label-inverse[href],
.badge-inverse[href] {
- background-color: #1a1a1a;
+ background-color: #1a1a1a;
}
.btn .label,
.btn .badge {
- position: relative;
- top: -1px;
+ position: relative;
+ top: -1px;
}
.btn-mini .label,
.btn-mini .badge {
- top: 0;
+ top: 0;
}
table {
- max-width: 100%;
- background-color: transparent;
- border-collapse: collapse;
- border-spacing: 0;
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
}
+
+
.table {
- width: 100%;
- margin-bottom: 20px;
+ width: 100%;
+ margin-bottom: 20px;
}
.table th,
.table td {
- padding: 8px;
- line-height: 20px;
- text-align: left;
- vertical-align: top;
- border-top: 1px solid #dddddd;
+ padding: 8px;
+ line-height: 20px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
}
+
.table th {
- font-weight: bold;
+ font-weight: bold;
}
.table thead th {
- vertical-align: bottom;
+ vertical-align: bottom;
}
.table caption + thead tr:first-child th,
.table caption + thead tr:first-child td,
@@ -851,27 +968,27 @@ table {
.table colgroup + thead tr:first-child td,
.table thead:first-child tr:first-child th,
.table thead:first-child tr:first-child td {
- border-top: 0;
+ border-top: 0;
}
.table tbody + tbody {
- border-top: 2px solid #dddddd;
+ border-top: 2px solid #dddddd;
}
.table-condensed th,
.table-condensed td {
- padding: 4px 5px;
+ padding: 4px 5px;
}
.table-bordered {
- border: 1px solid #dddddd;
- border-collapse: separate;
- *border-collapse: collapse;
- border-left: 0;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ border: 1px solid #dddddd;
+ border-collapse: separate;
+ *border-collapse: collapse;
+ border-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.table-bordered th,
.table-bordered td {
- border-left: 1px solid #dddddd;
+ border-left: 1px solid #dddddd;
}
.table-bordered caption + thead tr:first-child th,
.table-bordered caption + tbody tr:first-child th,
@@ -882,252 +999,252 @@ table {
.table-bordered thead:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child th,
.table-bordered tbody:first-child tr:first-child td {
- border-top: 0;
+ border-top: 0;
}
.table-bordered thead:first-child tr:first-child th:first-child,
.table-bordered tbody:first-child tr:first-child td:first-child {
- -webkit-border-top-left-radius: 4px;
- border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
}
.table-bordered thead:first-child tr:first-child th:last-child,
.table-bordered tbody:first-child tr:first-child td:last-child {
- -webkit-border-top-right-radius: 4px;
- border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
}
.table-bordered thead:last-child tr:last-child th:first-child,
.table-bordered tbody:last-child tr:last-child td:first-child,
.table-bordered tfoot:last-child 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;
- -webkit-border-bottom-left-radius: 4px;
- border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
+ -webkit-border-radius: 0 0 0 4px;
+ -moz-border-radius: 0 0 0 4px;
+ border-radius: 0 0 0 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
}
.table-bordered thead:last-child tr:last-child th:last-child,
.table-bordered tbody:last-child tr:last-child td:last-child,
.table-bordered tfoot:last-child tr:last-child td:last-child {
- -webkit-border-bottom-right-radius: 4px;
- border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
}
.table-bordered caption + thead tr:first-child th:first-child,
.table-bordered caption + tbody tr:first-child td:first-child,
.table-bordered colgroup + thead tr:first-child th:first-child,
.table-bordered colgroup + tbody tr:first-child td:first-child {
- -webkit-border-top-left-radius: 4px;
- border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
}
.table-bordered caption + thead tr:first-child th:last-child,
.table-bordered caption + tbody tr:first-child td:last-child,
.table-bordered colgroup + thead tr:first-child th:last-child,
.table-bordered colgroup + tbody tr:first-child td:last-child {
- -webkit-border-top-right-radius: 4px;
- border-top-right-radius: 4px;
- -moz-border-radius-topleft: 4px;
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topleft: 4px;
}
.table-striped tbody tr:nth-child(odd) td,
.table-striped tbody tr:nth-child(odd) th {
- background-color: #f9f9f9;
+ background-color: #f9f9f9;
}
.table-hover tbody tr:hover td,
.table-hover tbody tr:hover th {
- background-color: #f5f5f5;
+ background-color: #f5f5f5;
}
table [class*=span],
.row-fluid table [class*=span] {
- display: table-cell;
- float: none;
- margin-left: 0;
+ display: table-cell;
+ float: none;
+ margin-left: 0;
}
.table .span1 {
- float: none;
- width: 44px;
- margin-left: 0;
+ float: none;
+ width: 44px;
+ margin-left: 0;
}
.table .span2 {
- float: none;
- width: 124px;
- margin-left: 0;
+ float: none;
+ width: 124px;
+ margin-left: 0;
}
.table .span3 {
- float: none;
- width: 204px;
- margin-left: 0;
+ float: none;
+ width: 204px;
+ margin-left: 0;
}
.table .span4 {
- float: none;
- width: 284px;
- margin-left: 0;
+ float: none;
+ width: 284px;
+ margin-left: 0;
}
.table .span5 {
- float: none;
- width: 364px;
- margin-left: 0;
+ float: none;
+ width: 364px;
+ margin-left: 0;
}
.table .span6 {
- float: none;
- width: 444px;
- margin-left: 0;
+ float: none;
+ width: 444px;
+ margin-left: 0;
}
.table .span7 {
- float: none;
- width: 524px;
- margin-left: 0;
+ float: none;
+ width: 524px;
+ margin-left: 0;
}
.table .span8 {
- float: none;
- width: 604px;
- margin-left: 0;
+ float: none;
+ width: 604px;
+ margin-left: 0;
}
.table .span9 {
- float: none;
- width: 684px;
- margin-left: 0;
+ float: none;
+ width: 684px;
+ margin-left: 0;
}
.table .span10 {
- float: none;
- width: 764px;
- margin-left: 0;
+ float: none;
+ width: 764px;
+ margin-left: 0;
}
.table .span11 {
- float: none;
- width: 844px;
- margin-left: 0;
+ float: none;
+ width: 844px;
+ margin-left: 0;
}
.table .span12 {
- float: none;
- width: 924px;
- margin-left: 0;
+ float: none;
+ width: 924px;
+ margin-left: 0;
}
.table .span13 {
- float: none;
- width: 1004px;
- margin-left: 0;
+ float: none;
+ width: 1004px;
+ margin-left: 0;
}
.table .span14 {
- float: none;
- width: 1084px;
- margin-left: 0;
+ float: none;
+ width: 1084px;
+ margin-left: 0;
}
.table .span15 {
- float: none;
- width: 1164px;
- margin-left: 0;
+ float: none;
+ width: 1164px;
+ margin-left: 0;
}
.table .span16 {
- float: none;
- width: 1244px;
- margin-left: 0;
+ float: none;
+ width: 1244px;
+ margin-left: 0;
}
.table .span17 {
- float: none;
- width: 1324px;
- margin-left: 0;
+ float: none;
+ width: 1324px;
+ margin-left: 0;
}
.table .span18 {
- float: none;
- width: 1404px;
- margin-left: 0;
+ float: none;
+ width: 1404px;
+ margin-left: 0;
}
.table .span19 {
- float: none;
- width: 1484px;
- margin-left: 0;
+ float: none;
+ width: 1484px;
+ margin-left: 0;
}
.table .span20 {
- float: none;
- width: 1564px;
- margin-left: 0;
+ float: none;
+ width: 1564px;
+ margin-left: 0;
}
.table .span21 {
- float: none;
- width: 1644px;
- margin-left: 0;
+ float: none;
+ width: 1644px;
+ margin-left: 0;
}
.table .span22 {
- float: none;
- width: 1724px;
- margin-left: 0;
+ float: none;
+ width: 1724px;
+ margin-left: 0;
}
.table .span23 {
- float: none;
- width: 1804px;
- margin-left: 0;
+ float: none;
+ width: 1804px;
+ margin-left: 0;
}
.table .span24 {
- float: none;
- width: 1884px;
- margin-left: 0;
+ float: none;
+ width: 1884px;
+ margin-left: 0;
}
.table tbody tr.success td {
- background-color: #dff0d8;
+ background-color: #dff0d8;
}
.table tbody tr.error td {
- background-color: #f2dede;
+ background-color: #f2dede;
}
.table tbody tr.warning td {
- background-color: #fcf8e3;
+ background-color: #fcf8e3;
}
.table tbody tr.info td {
- background-color: #d9edf7;
+ background-color: #d9edf7;
}
.table-hover tbody tr.success:hover td {
- background-color: #d0e9c6;
+ background-color: #d0e9c6;
}
.table-hover tbody tr.error:hover td {
- background-color: #ebcccc;
+ background-color: #ebcccc;
}
.table-hover tbody tr.warning:hover td {
- background-color: #faf2cc;
+ background-color: #faf2cc;
}
.table-hover tbody tr.info:hover td {
- background-color: #c4e3f3;
+ background-color: #c4e3f3;
}
form {
- margin: 0 0 20px;
+ margin: 0 0 20px;
}
fieldset {
- padding: 0;
- margin: 0;
- border: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
}
legend {
- display: block;
- width: 100%;
- padding: 0;
- margin-bottom: 20px;
- font-size: 21px;
- line-height: 40px;
- color: #333333;
- border: 0;
- border-bottom: 1px solid #e5e5e5;
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: 40px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
}
legend small {
- font-size: 15px;
- color: #999999;
+ font-size: 15px;
+ color: #999999;
}
label,
input,
button,
select,
textarea {
- font-size: 14px;
- font-weight: normal;
- line-height: 20px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
}
input,
button,
select,
textarea {
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
label {
- display: block;
- margin-bottom: 5px;
+ display: block;
+ margin-bottom: 5px;
}
select,
textarea,
@@ -1146,24 +1263,24 @@ input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
- display: inline-block;
- height: 20px;
- padding: 4px 6px;
- margin-bottom: 9px;
- font-size: 14px;
- line-height: 20px;
- color: #555555;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ display: inline-block;
+ height: 20px;
+ padding: 4px 6px;
+ margin-bottom: 9px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #555555;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
input,
textarea,
.uneditable-input {
- /*width: 206px;*/
+ /*width: 206px;*/
}
textarea {
- height: auto;
+ height: auto;
}
textarea,
input[type="text"],
@@ -1181,15 +1298,15 @@ input[type="search"],
input[type="tel"],
input[type="color"],
.uneditable-input {
- background-color: #ffffff;
- border: 1px solid #cccccc;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -webkit-transition: border linear .2s, box-shadow linear .2s;
- -moz-transition: border linear .2s, box-shadow linear .2s;
- -o-transition: border linear .2s, box-shadow linear .2s;
- transition: border linear .2s, box-shadow linear .2s;
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear .2s, box-shadow linear .2s;
+ -moz-transition: border linear .2s, box-shadow linear .2s;
+ -o-transition: border linear .2s, box-shadow linear .2s;
+ transition: border linear .2s, box-shadow linear .2s;
}
textarea:focus,
input[type="text"]:focus,
@@ -1207,26 +1324,26 @@ input[type="search"]:focus,
input[type="tel"]:focus,
input[type="color"]:focus,
.uneditable-input:focus {
- border-color: rgba(82, 168, 236, 0.8);
- outline: 0;
- outline: thin dotted \9;
- /* IE6-9 */
+ border-color: rgba(82, 168, 236, 0.8);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
}
input[type="radio"],
input[type="checkbox"] {
- margin: 4px 0 0;
- *margin-top: 0;
- /* IE7 */
+ margin: 4px 0 0;
+ *margin-top: 0;
+ /* IE7 */
- margin-top: 1px \9;
- /* IE8-9 */
+ margin-top: 1px \9;
+ /* IE8-9 */
- line-height: normal;
- cursor: pointer;
+ line-height: normal;
+ cursor: pointer;
}
input[type="file"],
input[type="image"],
@@ -1235,107 +1352,107 @@ input[type="reset"],
input[type="button"],
input[type="radio"],
input[type="checkbox"] {
- width: auto;
+ width: auto;
}
select,
input[type="file"] {
- height: 30px;
- /* In IE7, the height of the select element cannot be changed by height, only font-size */
+ height: 30px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
- *margin-top: 4px;
- /* For IE7, add top margin to align select with labels */
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
- line-height: 30px;
+ line-height: 30px;
}
select {
- width: 220px;
- border: 1px solid #cccccc;
- background-color: #ffffff;
+ width: 220px;
+ border: 1px solid #cccccc;
+ background-color: #ffffff;
}
select[multiple],
select[size] {
- height: auto;
+ height: auto;
}
select:focus,
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
.uneditable-input,
.uneditable-textarea {
- color: #999999;
- background-color: #fcfcfc;
- border-color: #cccccc;
- -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;
+ color: #999999;
+ background-color: #fcfcfc;
+ border-color: #cccccc;
+ -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;
}
.uneditable-input {
- overflow: hidden;
- white-space: nowrap;
+ overflow: hidden;
+ white-space: nowrap;
}
.uneditable-textarea {
- width: auto;
- height: auto;
+ width: auto;
+ height: auto;
}
input:-moz-placeholder,
textarea:-moz-placeholder {
- color: #999999;
+ color: #999999;
}
input:-ms-input-placeholder,
textarea:-ms-input-placeholder {
- color: #999999;
+ color: #999999;
}
input::-webkit-input-placeholder,
textarea::-webkit-input-placeholder {
- color: #999999;
+ color: #999999;
}
.radio,
.checkbox {
- min-height: 18px;
- padding-left: 18px;
+ min-height: 18px;
+ padding-left: 18px;
}
.radio input[type="radio"],
.checkbox input[type="checkbox"] {
- float: left;
- margin-left: -18px;
+ float: left;
+ margin-left: -18px;
}
.controls > .radio:first-child,
.controls > .checkbox:first-child {
- padding-top: 5px;
+ padding-top: 5px;
}
.radio.inline,
.checkbox.inline {
- display: inline-block;
- padding-top: 5px;
- margin-bottom: 0;
- vertical-align: middle;
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
}
.radio.inline + .radio.inline,
.checkbox.inline + .checkbox.inline {
- margin-left: 10px;
+ margin-left: 10px;
}
.input-mini {
- width: 60px;
+ width: 60px;
}
.input-small {
- width: 90px;
+ width: 90px;
}
.input-medium {
- width: 150px;
+ width: 150px;
}
.input-large {
- width: 210px;
+ width: 210px;
}
.input-xlarge {
- width: 270px;
+ width: 270px;
}
.input-xxlarge {
- width: 530px;
+ width: 530px;
}
input[class*="span"],
select[class*="span"],
@@ -1345,8 +1462,8 @@ textarea[class*="span"],
.row-fluid select[class*="span"],
.row-fluid textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"] {
- float: none;
- margin-left: 0;
+ float: none;
+ margin-left: 0;
}
.input-append input[class*="span"],
.input-append .uneditable-input[class*="span"],
@@ -1358,66 +1475,66 @@ textarea[class*="span"],
.row-fluid .uneditable-input[class*="span"],
.row-fluid .input-prepend [class*="span"],
.row-fluid .input-append [class*="span"] {
- display: inline-block;
+ display: inline-block;
}
input,
textarea,
.uneditable-input {
- margin-left: 0;
+ margin-left: 0;
}
.controls-row [class*="span"] + [class*="span"] {
- margin-left: 20px;
+ margin-left: 20px;
}
input.span12, textarea.span12, .uneditable-input.span12 {
- width: 926px;
+ width: 926px;
}
input.span11, textarea.span11, .uneditable-input.span11 {
- width: 846px;
+ width: 846px;
}
input.span10, textarea.span10, .uneditable-input.span10 {
- width: 766px;
+ width: 766px;
}
input.span9, textarea.span9, .uneditable-input.span9 {
- width: 686px;
+ width: 686px;
}
input.span8, textarea.span8, .uneditable-input.span8 {
- width: 606px;
+ width: 606px;
}
input.span7, textarea.span7, .uneditable-input.span7 {
- width: 526px;
+ width: 526px;
}
input.span6, textarea.span6, .uneditable-input.span6 {
- width: 446px;
+ width: 446px;
}
input.span5, textarea.span5, .uneditable-input.span5 {
- width: 366px;
+ width: 366px;
}
input.span4, textarea.span4, .uneditable-input.span4 {
- width: 286px;
+ width: 286px;
}
input.span3, textarea.span3, .uneditable-input.span3 {
- width: 206px;
+ width: 206px;
}
input.span2, textarea.span2, .uneditable-input.span2 {
- width: 126px;
+ width: 126px;
}
input.span1, textarea.span1, .uneditable-input.span1 {
- width: 46px;
+ width: 46px;
}
.controls-row {
- *zoom: 1;
+ *zoom: 1;
}
.controls-row:before,
.controls-row:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.controls-row:after {
- clear: both;
+ clear: both;
}
.controls-row [class*="span"] {
- float: left;
+ float: left;
}
input[disabled],
select[disabled],
@@ -1425,204 +1542,204 @@ textarea[disabled],
input[readonly],
select[readonly],
textarea[readonly] {
- cursor: not-allowed;
- background-color: #eeeeee;
+ cursor: not-allowed;
+ background-color: #eeeeee;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"][readonly],
input[type="checkbox"][readonly] {
- background-color: transparent;
+ background-color: transparent;
}
.control-group.warning > label,
.control-group.warning .help-block,
.control-group.warning .help-inline {
- color: #c09853;
+ color: #c09853;
}
.control-group.warning .checkbox,
.control-group.warning .radio,
.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
- color: #c09853;
+ color: #c09853;
}
.control-group.warning input,
.control-group.warning select,
.control-group.warning textarea {
- border-color: #c09853;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #c09853;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.warning input:focus,
.control-group.warning select:focus,
.control-group.warning textarea:focus {
- border-color: #a47e3c;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ border-color: #a47e3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
}
.control-group.warning .input-prepend .add-on,
.control-group.warning .input-append .add-on {
- color: #c09853;
- background-color: #fcf8e3;
- border-color: #c09853;
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
}
.control-group.error > label,
.control-group.error .help-block,
.control-group.error .help-inline {
- color: #b94a48;
+ color: #b94a48;
}
.control-group.error .checkbox,
.control-group.error .radio,
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
- color: #b94a48;
+ color: #b94a48;
}
.control-group.error input,
.control-group.error select,
.control-group.error textarea {
- border-color: #b94a48;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #b94a48;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.error input:focus,
.control-group.error select:focus,
.control-group.error textarea:focus {
- border-color: #953b39;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ border-color: #953b39;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
}
.control-group.error .input-prepend .add-on,
.control-group.error .input-append .add-on {
- color: #b94a48;
- background-color: #f2dede;
- border-color: #b94a48;
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
}
.control-group.success > label,
.control-group.success .help-block,
.control-group.success .help-inline {
- color: #468847;
+ color: #468847;
}
.control-group.success .checkbox,
.control-group.success .radio,
.control-group.success input,
.control-group.success select,
.control-group.success textarea {
- color: #468847;
+ color: #468847;
}
.control-group.success input,
.control-group.success select,
.control-group.success textarea {
- border-color: #468847;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #468847;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.success input:focus,
.control-group.success select:focus,
.control-group.success textarea:focus {
- border-color: #356635;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ border-color: #356635;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
}
.control-group.success .input-prepend .add-on,
.control-group.success .input-append .add-on {
- color: #468847;
- background-color: #dff0d8;
- border-color: #468847;
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
}
.control-group.info > label,
.control-group.info .help-block,
.control-group.info .help-inline {
- color: #3a87ad;
+ color: #3a87ad;
}
.control-group.info .checkbox,
.control-group.info .radio,
.control-group.info input,
.control-group.info select,
.control-group.info textarea {
- color: #3a87ad;
+ color: #3a87ad;
}
.control-group.info input,
.control-group.info select,
.control-group.info textarea {
- border-color: #3a87ad;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ border-color: #3a87ad;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.control-group.info input:focus,
.control-group.info select:focus,
.control-group.info textarea:focus {
- border-color: #2d6987;
- -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
- -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ border-color: #2d6987;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
}
.control-group.info .input-prepend .add-on,
.control-group.info .input-append .add-on {
- color: #3a87ad;
- background-color: #d9edf7;
- border-color: #3a87ad;
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #3a87ad;
}
input:focus:required:invalid,
textarea:focus:required:invalid,
select:focus:required:invalid {
- color: #b94a48;
- border-color: #ee5f5b;
+ color: #b94a48;
+ border-color: #ee5f5b;
}
input:focus:required:invalid:focus,
textarea:focus:required:invalid:focus,
select:focus:required:invalid:focus {
- border-color: #e9322d;
- -webkit-box-shadow: 0 0 6px #f8b9b7;
- -moz-box-shadow: 0 0 6px #f8b9b7;
- box-shadow: 0 0 6px #f8b9b7;
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
}
.form-actions {
- padding: 19px 20px 20px;
- margin-top: 20px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border-top: 1px solid #e5e5e5;
- *zoom: 1;
+ padding: 19px 20px 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ *zoom: 1;
}
.form-actions:before,
.form-actions:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.form-actions:after {
- clear: both;
+ clear: both;
}
.help-block,
.help-inline {
- color: #595959;
+ color: #595959;
}
.help-block {
- display: block;
- margin-bottom: 10px;
+ display: block;
+ margin-bottom: 10px;
}
.help-inline {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- vertical-align: middle;
- padding-left: 5px;
+ *zoom: 1;
+ vertical-align: middle;
+ padding-left: 5px;
}
.input-append,
.input-prepend {
- margin-bottom: 5px;
- font-size: 0;
- white-space: nowrap;
+ margin-bottom: 5px;
+ font-size: 0;
+ white-space: nowrap;
}
.input-append input,
.input-prepend input,
@@ -1630,14 +1747,14 @@ select:focus:required:invalid:focus {
.input-prepend select,
.input-append .uneditable-input,
.input-prepend .uneditable-input {
- position: relative;
- margin-bottom: 0;
- *margin-left: 0;
- font-size: 14px;
- vertical-align: top;
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ position: relative;
+ margin-bottom: 0;
+ *margin-left: 0;
+ font-size: 14px;
+ vertical-align: top;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
.input-append input:focus,
.input-prepend input:focus,
@@ -1645,123 +1762,123 @@ select:focus:required:invalid:focus {
.input-prepend select:focus,
.input-append .uneditable-input:focus,
.input-prepend .uneditable-input:focus {
- z-index: 2;
+ z-index: 2;
}
.input-append .add-on,
.input-prepend .add-on {
- display: inline-block;
- width: auto;
- height: 20px;
- min-width: 16px;
- padding: 4px 5px;
- font-size: 14px;
- font-weight: normal;
- line-height: 20px;
- text-align: center;
- text-shadow: 0 1px 0 #ffffff;
- background-color: #eeeeee;
- border: 1px solid #ccc;
+ display: inline-block;
+ width: auto;
+ height: 20px;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
}
.input-append .add-on,
.input-prepend .add-on,
.input-append .btn,
.input-prepend .btn {
- vertical-align: top;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ vertical-align: top;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.input-append .active,
.input-prepend .active {
- background-color: #a9dba9;
- border-color: #46a546;
+ background-color: #a9dba9;
+ border-color: #46a546;
}
.input-prepend .add-on,
.input-prepend .btn {
- margin-right: -1px;
+ margin-right: -1px;
}
.input-prepend .add-on:first-child,
.input-prepend .btn:first-child {
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.input-append input,
.input-append select,
.input-append .uneditable-input {
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.input-append .add-on,
.input-append .btn {
- margin-left: -1px;
+ margin-left: -1px;
}
.input-append .add-on:last-child,
.input-append .btn:last-child {
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
.input-prepend.input-append input,
.input-prepend.input-append select,
.input-prepend.input-append .uneditable-input {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.input-prepend.input-append .add-on:first-child,
.input-prepend.input-append .btn:first-child {
- margin-right: -1px;
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ margin-right: -1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.input-prepend.input-append .add-on:last-child,
.input-prepend.input-append .btn:last-child {
- margin-left: -1px;
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
input.search-query {
- padding-right: 14px;
- padding-right: 4px \9;
- padding-left: 14px;
- padding-left: 4px \9;
- /* IE7-8 doesn't have border-radius, so don't indent the padding */
+ padding-right: 14px;
+ padding-right: 4px \9;
+ padding-left: 14px;
+ padding-left: 4px \9;
+ /* IE7-8 doesn't have border-radius, so don't indent the padding */
- margin-bottom: 0;
- -webkit-border-radius: 15px;
- -moz-border-radius: 15px;
- border-radius: 15px;
+ margin-bottom: 0;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
}
/* Allow for input prepend/append in search forms */
.form-search .input-append .search-query,
.form-search .input-prepend .search-query {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.form-search .input-append .search-query {
- -webkit-border-radius: 14px 0 0 14px;
- -moz-border-radius: 14px 0 0 14px;
- border-radius: 14px 0 0 14px;
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
}
.form-search .input-append .btn {
- -webkit-border-radius: 0 14px 14px 0;
- -moz-border-radius: 0 14px 14px 0;
- border-radius: 0 14px 14px 0;
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
}
.form-search .input-prepend .search-query {
- -webkit-border-radius: 0 14px 14px 0;
- -moz-border-radius: 0 14px 14px 0;
- border-radius: 0 14px 14px 0;
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
}
.form-search .input-prepend .btn {
- -webkit-border-radius: 14px 0 0 14px;
- -moz-border-radius: 14px 0 0 14px;
- border-radius: 14px 0 0 14px;
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
}
.form-search input,
.form-inline input,
@@ -1784,229 +1901,229 @@ input.search-query {
.form-search .input-append,
.form-inline .input-append,
.form-horizontal .input-append {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- margin-bottom: 0;
- vertical-align: middle;
+ *zoom: 1;
+ margin-bottom: 0;
+ vertical-align: middle;
}
.form-search .hide,
.form-inline .hide,
.form-horizontal .hide {
- display: none;
+ display: none;
}
.form-search label,
.form-inline label,
.form-search .btn-group,
.form-inline .btn-group {
- display: inline-block;
+ display: inline-block;
}
.form-search .input-append,
.form-inline .input-append,
.form-search .input-prepend,
.form-inline .input-prepend {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.form-search .radio,
.form-search .checkbox,
.form-inline .radio,
.form-inline .checkbox {
- padding-left: 0;
- margin-bottom: 0;
- vertical-align: middle;
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
}
.form-search .radio input[type="radio"],
.form-search .checkbox input[type="checkbox"],
.form-inline .radio input[type="radio"],
.form-inline .checkbox input[type="checkbox"] {
- float: left;
- margin-right: 3px;
- margin-left: 0;
+ float: left;
+ margin-right: 3px;
+ margin-left: 0;
}
.control-group {
- margin-bottom: 10px;
+ margin-bottom: 10px;
}
legend + .control-group {
- margin-top: 20px;
- -webkit-margin-top-collapse: separate;
+ margin-top: 20px;
+ -webkit-margin-top-collapse: separate;
}
.form-horizontal .control-group {
- margin-bottom: 20px;
- *zoom: 1;
+ margin-bottom: 20px;
+ *zoom: 1;
}
.form-horizontal .control-group:before,
.form-horizontal .control-group:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.form-horizontal .control-group:after {
- clear: both;
+ clear: both;
}
.form-horizontal .control-label {
- float: left;
- width: 160px;
- padding-top: 5px;
- text-align: right;
+ float: left;
+ width: 160px;
+ padding-top: 5px;
+ text-align: right;
}
.form-horizontal .controls {
- *display: inline-block;
- *padding-left: 20px;
- margin-left: 180px;
- *margin-left: 0;
+ *display: inline-block;
+ *padding-left: 20px;
+ margin-left: 180px;
+ *margin-left: 0;
}
.form-horizontal .controls:first-child {
- *padding-left: 180px;
+ *padding-left: 180px;
}
.form-horizontal .help-block {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.form-horizontal input + .help-block,
.form-horizontal select + .help-block,
.form-horizontal textarea + .help-block {
- margin-top: 10px;
+ margin-top: 10px;
}
.form-horizontal .form-actions {
- padding-left: 180px;
+ padding-left: 180px;
}
.btn {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- padding: 4px 14px;
- margin-bottom: 0;
- font-size: 14px;
- line-height: 20px;
- *line-height: 20px;
- text-align: center;
- vertical-align: middle;
- cursor: pointer;
- color: #333333;
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
- background-color: #f5f5f5;
- background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
- background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
- background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
- background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
- border-color: #e6e6e6 #e6e6e6 #bfbfbf;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #e6e6e6;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ *zoom: 1;
+ padding: 4px 14px;
+ margin-bottom: 0;
+ font-size: 14px;
+ line-height: 20px;
+ *line-height: 20px;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ color: #333333;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ background-color: #f5f5f5;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #e6e6e6;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
- border: 1px solid #bbbbbb;
- *border: 0;
- border-bottom-color: #a2a2a2;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- *margin-left: .3em;
- -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);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ border: 1px solid #bbbbbb;
+ *border: 0;
+ border-bottom-color: #a2a2a2;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ *margin-left: .3em;
+ -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);
}
.btn:hover,
.btn:active,
.btn.active,
.btn.disabled,
.btn[disabled] {
- color: #333333;
- background-color: #e6e6e6;
- *background-color: #d9d9d9;
+ color: #333333;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
}
.btn:active,
.btn.active {
- background-color: #cccccc \9;
+ background-color: #cccccc \9;
}
.btn:first-child {
- *margin-left: 0;
+ *margin-left: 0;
}
.btn:hover {
- color: #333333;
- text-decoration: none;
- background-color: #e6e6e6;
- *background-color: #d9d9d9;
- /* Buttons in IE7 don't get borders, so darken on hover */
+ color: #333333;
+ text-decoration: none;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+ /* Buttons in IE7 don't get borders, so darken on hover */
- background-position: 0 -15px;
- -webkit-transition: background-position 0.1s linear;
- -moz-transition: background-position 0.1s linear;
- -o-transition: background-position 0.1s linear;
- transition: background-position 0.1s linear;
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
}
.btn:focus {
- outline: thin dotted #333;
- outline: 5px auto -webkit-focus-ring-color;
- outline-offset: -2px;
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
}
.btn.active,
.btn:active {
- background-color: #e6e6e6;
- background-color: #d9d9d9 \9;
- background-image: none;
- outline: 0;
- -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ background-color: #e6e6e6;
+ background-color: #d9d9d9 \9;
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.btn.disabled,
.btn[disabled] {
- cursor: default;
- background-color: #e6e6e6;
- background-image: none;
- opacity: 0.65;
- filter: alpha(opacity=65);
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
+ cursor: default;
+ background-color: #e6e6e6;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
}
.btn-large {
- padding: 9px 14px;
- font-size: 16px;
- line-height: normal;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
+ padding: 9px 14px;
+ font-size: 16px;
+ line-height: normal;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
}
.btn-large [class^="icon-"] {
- margin-top: 2px;
+ margin-top: 2px;
}
.btn-small {
- padding: 3px 9px;
- font-size: 12px;
- line-height: 18px;
+ padding: 3px 9px;
+ font-size: 12px;
+ line-height: 18px;
}
.btn-small [class^="icon-"] {
- margin-top: 0;
+ margin-top: 0;
}
.btn-mini {
- padding: 2px 6px;
- font-size: 11px;
- line-height: 17px;
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 17px;
}
.btn-block {
- display: block;
- width: 100%;
- padding-left: 0;
- padding-right: 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
+ display: block;
+ width: 100%;
+ padding-left: 0;
+ padding-right: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
}
.btn-block + .btn-block {
- margin-top: 5px;
+ margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
- width: 100%;
+ width: 100%;
}
.btn-primary.active,
.btn-warning.active,
@@ -2014,261 +2131,261 @@ input[type="button"].btn-block {
.btn-success.active,
.btn-info.active,
.btn-inverse.active {
- color: rgba(255, 255, 255, 0.75);
+ color: rgba(255, 255, 255, 0.75);
}
.btn {
- border-color: #c5c5c5;
- border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+ border-color: #c5c5c5;
+ border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
}
.btn-primary {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #006dcc;
- background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
- background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
- background-image: -o-linear-gradient(top, #0088cc, #0044cc);
- background-image: linear-gradient(to bottom, #0088cc, #0044cc);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
- border-color: #0044cc #0044cc #002a80;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #0044cc;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #0044cc;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-primary:hover,
.btn-primary:active,
.btn-primary.active,
.btn-primary.disabled,
.btn-primary[disabled] {
- color: #ffffff;
- background-color: #0044cc;
- *background-color: #003bb3;
+ color: #ffffff;
+ background-color: #0044cc;
+ *background-color: #003bb3;
}
.btn-primary:active,
.btn-primary.active {
- background-color: #003399 \9;
+ background-color: #003399 \9;
}
.btn-warning {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #faa732;
- background-image: -moz-linear-gradient(top, #fbb450, #f89406);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
- background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
- background-image: -o-linear-gradient(top, #fbb450, #f89406);
- background-image: linear-gradient(to bottom, #fbb450, #f89406);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
- border-color: #f89406 #f89406 #ad6704;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #f89406;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #f89406;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-warning:hover,
.btn-warning:active,
.btn-warning.active,
.btn-warning.disabled,
.btn-warning[disabled] {
- color: #ffffff;
- background-color: #f89406;
- *background-color: #df8505;
+ color: #ffffff;
+ background-color: #f89406;
+ *background-color: #df8505;
}
.btn-warning:active,
.btn-warning.active {
- background-color: #c67605 \9;
+ background-color: #c67605 \9;
}
.btn-danger {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #da4f49;
- background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
- background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
- background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
- background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
- border-color: #bd362f #bd362f #802420;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #bd362f;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #da4f49;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #bd362f;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-danger:hover,
.btn-danger:active,
.btn-danger.active,
.btn-danger.disabled,
.btn-danger[disabled] {
- color: #ffffff;
- background-color: #bd362f;
- *background-color: #a9302a;
+ color: #ffffff;
+ background-color: #bd362f;
+ *background-color: #a9302a;
}
.btn-danger:active,
.btn-danger.active {
- background-color: #942a25 \9;
+ background-color: #942a25 \9;
}
.btn-success {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #5bb75b;
- background-image: -moz-linear-gradient(top, #62c462, #51a351);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
- background-image: -webkit-linear-gradient(top, #62c462, #51a351);
- background-image: -o-linear-gradient(top, #62c462, #51a351);
- background-image: linear-gradient(to bottom, #62c462, #51a351);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
- border-color: #51a351 #51a351 #387038;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #51a351;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #5bb75b;
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(to bottom, #62c462, #51a351);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #51a351;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-success:hover,
.btn-success:active,
.btn-success.active,
.btn-success.disabled,
.btn-success[disabled] {
- color: #ffffff;
- background-color: #51a351;
- *background-color: #499249;
+ color: #ffffff;
+ background-color: #51a351;
+ *background-color: #499249;
}
.btn-success:active,
.btn-success.active {
- background-color: #408140 \9;
+ background-color: #408140 \9;
}
.btn-info {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #49afcd;
- background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
- background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
- background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
- background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
- border-color: #2f96b4 #2f96b4 #1f6377;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #2f96b4;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #49afcd;
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #2f96b4;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-info:hover,
.btn-info:active,
.btn-info.active,
.btn-info.disabled,
.btn-info[disabled] {
- color: #ffffff;
- background-color: #2f96b4;
- *background-color: #2a85a0;
+ color: #ffffff;
+ background-color: #2f96b4;
+ *background-color: #2a85a0;
}
.btn-info:active,
.btn-info.active {
- background-color: #24748c \9;
+ background-color: #24748c \9;
}
.btn-inverse {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #363636;
- background-image: -moz-linear-gradient(top, #444444, #222222);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
- background-image: -webkit-linear-gradient(top, #444444, #222222);
- background-image: -o-linear-gradient(top, #444444, #222222);
- background-image: linear-gradient(to bottom, #444444, #222222);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
- border-color: #222222 #222222 #000000;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #222222;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #363636;
+ background-image: -moz-linear-gradient(top, #444444, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+ background-image: -webkit-linear-gradient(top, #444444, #222222);
+ background-image: -o-linear-gradient(top, #444444, #222222);
+ background-image: linear-gradient(to bottom, #444444, #222222);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #222222;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.btn-inverse:hover,
.btn-inverse:active,
.btn-inverse.active,
.btn-inverse.disabled,
.btn-inverse[disabled] {
- color: #ffffff;
- background-color: #222222;
- *background-color: #151515;
+ color: #ffffff;
+ background-color: #222222;
+ *background-color: #151515;
}
.btn-inverse:active,
.btn-inverse.active {
- background-color: #080808 \9;
+ background-color: #080808 \9;
}
button.btn,
input[type="submit"].btn {
- *padding-top: 3px;
- *padding-bottom: 3px;
+ *padding-top: 3px;
+ *padding-bottom: 3px;
}
button.btn::-moz-focus-inner,
input[type="submit"].btn::-moz-focus-inner {
- padding: 0;
- border: 0;
+ padding: 0;
+ border: 0;
}
button.btn.btn-large,
input[type="submit"].btn.btn-large {
- *padding-top: 7px;
- *padding-bottom: 7px;
+ *padding-top: 7px;
+ *padding-bottom: 7px;
}
button.btn.btn-small,
input[type="submit"].btn.btn-small {
- *padding-top: 3px;
- *padding-bottom: 3px;
+ *padding-top: 3px;
+ *padding-bottom: 3px;
}
button.btn.btn-mini,
input[type="submit"].btn.btn-mini {
- *padding-top: 1px;
- *padding-bottom: 1px;
+ *padding-top: 1px;
+ *padding-bottom: 1px;
}
.btn-link,
.btn-link:active,
.btn-link[disabled] {
- background-color: transparent;
- background-image: none;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
+ background-color: transparent;
+ background-image: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
}
.btn-link {
- border-color: transparent;
- cursor: pointer;
- color: #0088cc;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ border-color: transparent;
+ cursor: pointer;
+ color: #0088cc;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.btn-link:hover {
- color: #005580;
- text-decoration: underline;
- background-color: transparent;
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
}
.btn-link[disabled]:hover {
- color: #333333;
- text-decoration: none;
+ color: #333333;
+ text-decoration: none;
}
[class^="icon-"],
[class*=" icon-"] {
- display: inline-block;
- width: 14px;
- height: 14px;
- *margin-right: .3em;
- line-height: 14px;
- vertical-align: text-top;
- background-image: url("../img/glyphicons-halflings.png");
- background-position: 14px 14px;
- background-repeat: no-repeat;
- margin-top: 1px;
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ *margin-right: .3em;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("../img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+ margin-top: 1px;
}
/* White icons with optional class, or on hover/active states of certain elements */
.icon-white,
@@ -2284,597 +2401,597 @@ input[type="submit"].btn.btn-mini {
.dropdown-menu > li > a:hover > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"] {
- background-image: url("../img/glyphicons-halflings-white.png");
+ background-image: url("../img/glyphicons-halflings-white.png");
}
.icon-glass {
- background-position: 0 0;
+ background-position: 0 0;
}
.icon-music {
- background-position: -24px 0;
+ background-position: -24px 0;
}
.icon-search {
- background-position: -48px 0;
+ background-position: -48px 0;
}
.icon-envelope {
- background-position: -72px 0;
+ background-position: -72px 0;
}
.icon-heart {
- background-position: -96px 0;
+ background-position: -96px 0;
}
.icon-star {
- background-position: -120px 0;
+ background-position: -120px 0;
}
.icon-star-empty {
- background-position: -144px 0;
+ background-position: -144px 0;
}
.icon-user {
- background-position: -168px 0;
+ background-position: -168px 0;
}
.icon-film {
- background-position: -192px 0;
+ background-position: -192px 0;
}
.icon-th-large {
- background-position: -216px 0;
+ background-position: -216px 0;
}
.icon-th {
- background-position: -240px 0;
+ background-position: -240px 0;
}
.icon-th-list {
- background-position: -264px 0;
+ background-position: -264px 0;
}
.icon-ok {
- background-position: -288px 0;
+ background-position: -288px 0;
}
.icon-remove {
- background-position: -312px 0;
+ background-position: -312px 0;
}
.icon-zoom-in {
- background-position: -336px 0;
+ background-position: -336px 0;
}
.icon-zoom-out {
- background-position: -360px 0;
+ background-position: -360px 0;
}
.icon-off {
- background-position: -384px 0;
+ background-position: -384px 0;
}
.icon-signal {
- background-position: -408px 0;
+ background-position: -408px 0;
}
.icon-cog {
- background-position: -432px 0;
+ background-position: -432px 0;
}
.icon-trash {
- background-position: -456px 0;
+ background-position: -456px 0;
}
.icon-home {
- background-position: 0 -24px;
+ background-position: 0 -24px;
}
.icon-file {
- background-position: -24px -24px;
+ background-position: -24px -24px;
}
.icon-time {
- background-position: -48px -24px;
+ background-position: -48px -24px;
}
.icon-road {
- background-position: -72px -24px;
+ background-position: -72px -24px;
}
.icon-download-alt {
- background-position: -96px -24px;
+ background-position: -96px -24px;
}
.icon-download {
- background-position: -120px -24px;
+ background-position: -120px -24px;
}
.icon-upload {
- background-position: -144px -24px;
+ background-position: -144px -24px;
}
.icon-inbox {
- background-position: -168px -24px;
+ background-position: -168px -24px;
}
.icon-play-circle {
- background-position: -192px -24px;
+ background-position: -192px -24px;
}
.icon-repeat {
- background-position: -216px -24px;
+ background-position: -216px -24px;
}
.icon-refresh {
- background-position: -240px -24px;
+ background-position: -240px -24px;
}
.icon-list-alt {
- background-position: -264px -24px;
+ background-position: -264px -24px;
}
.icon-lock {
- background-position: -287px -24px;
+ background-position: -287px -24px;
}
.icon-flag {
- background-position: -312px -24px;
+ background-position: -312px -24px;
}
.icon-headphones {
- background-position: -336px -24px;
+ background-position: -336px -24px;
}
.icon-volume-off {
- background-position: -360px -24px;
+ background-position: -360px -24px;
}
.icon-volume-down {
- background-position: -384px -24px;
+ background-position: -384px -24px;
}
.icon-volume-up {
- background-position: -408px -24px;
+ background-position: -408px -24px;
}
.icon-qrcode {
- background-position: -432px -24px;
+ background-position: -432px -24px;
}
.icon-barcode {
- background-position: -456px -24px;
+ background-position: -456px -24px;
}
.icon-tag {
- background-position: 0 -48px;
+ background-position: 0 -48px;
}
.icon-tags {
- background-position: -25px -48px;
+ background-position: -25px -48px;
}
.icon-book {
- background-position: -48px -48px;
+ background-position: -48px -48px;
}
.icon-bookmark {
- background-position: -72px -48px;
+ background-position: -72px -48px;
}
.icon-print {
- background-position: -96px -48px;
+ background-position: -96px -48px;
}
.icon-camera {
- background-position: -120px -48px;
+ background-position: -120px -48px;
}
.icon-font {
- background-position: -144px -48px;
+ background-position: -144px -48px;
}
.icon-bold {
- background-position: -167px -48px;
+ background-position: -167px -48px;
}
.icon-italic {
- background-position: -192px -48px;
+ background-position: -192px -48px;
}
.icon-text-height {
- background-position: -216px -48px;
+ background-position: -216px -48px;
}
.icon-text-width {
- background-position: -240px -48px;
+ background-position: -240px -48px;
}
.icon-align-left {
- background-position: -264px -48px;
+ background-position: -264px -48px;
}
.icon-align-center {
- background-position: -288px -48px;
+ background-position: -288px -48px;
}
.icon-align-right {
- background-position: -312px -48px;
+ background-position: -312px -48px;
}
.icon-align-justify {
- background-position: -336px -48px;
+ background-position: -336px -48px;
}
.icon-list {
- background-position: -360px -48px;
+ background-position: -360px -48px;
}
.icon-indent-left {
- background-position: -384px -48px;
+ background-position: -384px -48px;
}
.icon-indent-right {
- background-position: -408px -48px;
+ background-position: -408px -48px;
}
.icon-facetime-video {
- background-position: -432px -48px;
+ background-position: -432px -48px;
}
.icon-picture {
- background-position: -456px -48px;
+ background-position: -456px -48px;
}
.icon-pencil {
- background-position: 0 -72px;
+ background-position: 0 -72px;
}
.icon-map-marker {
- background-position: -24px -72px;
+ background-position: -24px -72px;
}
.icon-adjust {
- background-position: -48px -72px;
+ background-position: -48px -72px;
}
.icon-tint {
- background-position: -72px -72px;
+ background-position: -72px -72px;
}
.icon-edit {
- background-position: -96px -72px;
+ background-position: -96px -72px;
}
.icon-share {
- background-position: -120px -72px;
+ background-position: -120px -72px;
}
.icon-check {
- background-position: -144px -72px;
+ background-position: -144px -72px;
}
.icon-move {
- background-position: -168px -72px;
+ background-position: -168px -72px;
}
.icon-step-backward {
- background-position: -192px -72px;
+ background-position: -192px -72px;
}
.icon-fast-backward {
- background-position: -216px -72px;
+ background-position: -216px -72px;
}
.icon-backward {
- background-position: -240px -72px;
+ background-position: -240px -72px;
}
.icon-play {
- background-position: -264px -72px;
+ background-position: -264px -72px;
}
.icon-pause {
- background-position: -288px -72px;
+ background-position: -288px -72px;
}
.icon-stop {
- background-position: -312px -72px;
+ background-position: -312px -72px;
}
.icon-forward {
- background-position: -336px -72px;
+ background-position: -336px -72px;
}
.icon-fast-forward {
- background-position: -360px -72px;
+ background-position: -360px -72px;
}
.icon-step-forward {
- background-position: -384px -72px;
+ background-position: -384px -72px;
}
.icon-eject {
- background-position: -408px -72px;
+ background-position: -408px -72px;
}
.icon-chevron-left {
- background-position: -432px -72px;
+ background-position: -432px -72px;
}
.icon-chevron-right {
- background-position: -456px -72px;
+ background-position: -456px -72px;
}
.icon-plus-sign {
- background-position: 0 -96px;
+ background-position: 0 -96px;
}
.icon-minus-sign {
- background-position: -24px -96px;
+ background-position: -24px -96px;
}
.icon-remove-sign {
- background-position: -48px -96px;
+ background-position: -48px -96px;
}
.icon-ok-sign {
- background-position: -72px -96px;
+ background-position: -72px -96px;
}
.icon-question-sign {
- background-position: -96px -96px;
+ background-position: -96px -96px;
}
.icon-info-sign {
- background-position: -120px -96px;
+ background-position: -120px -96px;
}
.icon-screenshot {
- background-position: -144px -96px;
+ background-position: -144px -96px;
}
.icon-remove-circle {
- background-position: -168px -96px;
+ background-position: -168px -96px;
}
.icon-ok-circle {
- background-position: -192px -96px;
+ background-position: -192px -96px;
}
.icon-ban-circle {
- background-position: -216px -96px;
+ background-position: -216px -96px;
}
.icon-arrow-left {
- background-position: -240px -96px;
+ background-position: -240px -96px;
}
.icon-arrow-right {
- background-position: -264px -96px;
+ background-position: -264px -96px;
}
.icon-arrow-up {
- background-position: -289px -96px;
+ background-position: -289px -96px;
}
.icon-arrow-down {
- background-position: -312px -96px;
+ background-position: -312px -96px;
}
.icon-share-alt {
- background-position: -336px -96px;
+ background-position: -336px -96px;
}
.icon-resize-full {
- background-position: -360px -96px;
+ background-position: -360px -96px;
}
.icon-resize-small {
- background-position: -384px -96px;
+ background-position: -384px -96px;
}
.icon-plus {
- background-position: -408px -96px;
+ background-position: -408px -96px;
}
.icon-minus {
- background-position: -433px -96px;
+ background-position: -433px -96px;
}
.icon-asterisk {
- background-position: -456px -96px;
+ background-position: -456px -96px;
}
.icon-exclamation-sign {
- background-position: 0 -120px;
+ background-position: 0 -120px;
}
.icon-gift {
- background-position: -24px -120px;
+ background-position: -24px -120px;
}
.icon-leaf {
- background-position: -48px -120px;
+ background-position: -48px -120px;
}
.icon-fire {
- background-position: -72px -120px;
+ background-position: -72px -120px;
}
.icon-eye-open {
- background-position: -96px -120px;
+ background-position: -96px -120px;
}
.icon-eye-close {
- background-position: -120px -120px;
+ background-position: -120px -120px;
}
.icon-warning-sign {
- background-position: -144px -120px;
+ background-position: -144px -120px;
}
.icon-plane {
- background-position: -168px -120px;
+ background-position: -168px -120px;
}
.icon-calendar {
- background-position: -192px -120px;
+ background-position: -192px -120px;
}
.icon-random {
- background-position: -216px -120px;
- width: 16px;
+ background-position: -216px -120px;
+ width: 16px;
}
.icon-comment {
- background-position: -240px -120px;
+ background-position: -240px -120px;
}
.icon-magnet {
- background-position: -264px -120px;
+ background-position: -264px -120px;
}
.icon-chevron-up {
- background-position: -288px -120px;
+ background-position: -288px -120px;
}
.icon-chevron-down {
- background-position: -313px -119px;
+ background-position: -313px -119px;
}
.icon-retweet {
- background-position: -336px -120px;
+ background-position: -336px -120px;
}
.icon-shopping-cart {
- background-position: -360px -120px;
+ background-position: -360px -120px;
}
.icon-folder-close {
- background-position: -384px -120px;
+ background-position: -384px -120px;
}
.icon-folder-open {
- background-position: -408px -120px;
- width: 16px;
+ background-position: -408px -120px;
+ width: 16px;
}
.icon-resize-vertical {
- background-position: -432px -119px;
+ background-position: -432px -119px;
}
.icon-resize-horizontal {
- background-position: -456px -118px;
+ background-position: -456px -118px;
}
.icon-hdd {
- background-position: 0 -144px;
+ background-position: 0 -144px;
}
.icon-bullhorn {
- background-position: -24px -144px;
+ background-position: -24px -144px;
}
.icon-bell {
- background-position: -48px -144px;
+ background-position: -48px -144px;
}
.icon-certificate {
- background-position: -72px -144px;
+ background-position: -72px -144px;
}
.icon-thumbs-up {
- background-position: -96px -144px;
+ background-position: -96px -144px;
}
.icon-thumbs-down {
- background-position: -120px -144px;
+ background-position: -120px -144px;
}
.icon-hand-right {
- background-position: -144px -144px;
+ background-position: -144px -144px;
}
.icon-hand-left {
- background-position: -168px -144px;
+ background-position: -168px -144px;
}
.icon-hand-up {
- background-position: -192px -144px;
+ background-position: -192px -144px;
}
.icon-hand-down {
- background-position: -216px -144px;
+ background-position: -216px -144px;
}
.icon-circle-arrow-right {
- background-position: -240px -144px;
+ background-position: -240px -144px;
}
.icon-circle-arrow-left {
- background-position: -264px -144px;
+ background-position: -264px -144px;
}
.icon-circle-arrow-up {
- background-position: -288px -144px;
+ background-position: -288px -144px;
}
.icon-circle-arrow-down {
- background-position: -312px -144px;
+ background-position: -312px -144px;
}
.icon-globe {
- background-position: -336px -144px;
+ background-position: -336px -144px;
}
.icon-wrench {
- background-position: -360px -144px;
+ background-position: -360px -144px;
}
.icon-tasks {
- background-position: -384px -144px;
+ background-position: -384px -144px;
}
.icon-filter {
- background-position: -408px -144px;
+ background-position: -408px -144px;
}
.icon-briefcase {
- background-position: -432px -144px;
+ background-position: -432px -144px;
}
.icon-fullscreen {
- background-position: -456px -144px;
+ background-position: -456px -144px;
}
.btn-group {
- position: relative;
- font-size: 0;
- vertical-align: middle;
- white-space: nowrap;
- *margin-left: .3em;
+ position: relative;
+ font-size: 0;
+ vertical-align: middle;
+ white-space: nowrap;
+ *margin-left: .3em;
}
.btn-group:first-child {
- *margin-left: 0;
+ *margin-left: 0;
}
.btn-group + .btn-group {
- margin-left: 5px;
+ margin-left: 5px;
}
.btn-toolbar {
- font-size: 0;
- margin-top: 10px;
- margin-bottom: 10px;
+ font-size: 0;
+ margin-top: 10px;
+ margin-bottom: 10px;
}
.btn-toolbar .btn-group {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
+ *zoom: 1;
}
.btn-toolbar .btn + .btn,
.btn-toolbar .btn-group + .btn,
.btn-toolbar .btn + .btn-group {
- margin-left: 5px;
+ margin-left: 5px;
}
.btn-group > .btn {
- position: relative;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ position: relative;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.btn-group > .btn + .btn {
- margin-left: -1px;
+ margin-left: -1px;
}
.btn-group > .btn,
.btn-group > .dropdown-menu {
- font-size: 14px;
+ font-size: 14px;
}
.btn-group > .btn-mini {
- font-size: 11px;
+ font-size: 11px;
}
.btn-group > .btn-small {
- font-size: 12px;
+ font-size: 12px;
}
.btn-group > .btn-large {
- font-size: 16px;
+ font-size: 16px;
}
.btn-group > .btn:first-child {
- margin-left: 0;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-left-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-left-radius: 4px;
+ margin-left: 0;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
}
.btn-group > .btn:last-child,
.btn-group > .dropdown-toggle {
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
- border-top-right-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
- border-bottom-right-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
}
.btn-group > .btn.large:first-child {
- margin-left: 0;
- -webkit-border-top-left-radius: 6px;
- -moz-border-radius-topleft: 6px;
- border-top-left-radius: 6px;
- -webkit-border-bottom-left-radius: 6px;
- -moz-border-radius-bottomleft: 6px;
- border-bottom-left-radius: 6px;
+ margin-left: 0;
+ -webkit-border-top-left-radius: 6px;
+ -moz-border-radius-topleft: 6px;
+ border-top-left-radius: 6px;
+ -webkit-border-bottom-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ border-bottom-left-radius: 6px;
}
.btn-group > .btn.large:last-child,
.btn-group > .large.dropdown-toggle {
- -webkit-border-top-right-radius: 6px;
- -moz-border-radius-topright: 6px;
- border-top-right-radius: 6px;
- -webkit-border-bottom-right-radius: 6px;
- -moz-border-radius-bottomright: 6px;
- border-bottom-right-radius: 6px;
+ -webkit-border-top-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ -moz-border-radius-bottomright: 6px;
+ border-bottom-right-radius: 6px;
}
.btn-group > .btn:hover,
.btn-group > .btn:focus,
.btn-group > .btn:active,
.btn-group > .btn.active {
- z-index: 2;
+ z-index: 2;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
- outline: 0;
+ outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
- padding-left: 8px;
- padding-right: 8px;
- -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- *padding-top: 5px;
- *padding-bottom: 5px;
+ padding-left: 8px;
+ padding-right: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ *padding-top: 5px;
+ *padding-bottom: 5px;
}
.btn-group > .btn-mini + .dropdown-toggle {
- padding-left: 5px;
- padding-right: 5px;
- *padding-top: 2px;
- *padding-bottom: 2px;
+ padding-left: 5px;
+ padding-right: 5px;
+ *padding-top: 2px;
+ *padding-bottom: 2px;
}
.btn-group > .btn-small + .dropdown-toggle {
- *padding-top: 5px;
- *padding-bottom: 4px;
+ *padding-top: 5px;
+ *padding-bottom: 4px;
}
.btn-group > .btn-large + .dropdown-toggle {
- padding-left: 12px;
- padding-right: 12px;
- *padding-top: 7px;
- *padding-bottom: 7px;
+ padding-left: 12px;
+ padding-right: 12px;
+ *padding-top: 7px;
+ *padding-bottom: 7px;
}
.btn-group.open .dropdown-toggle {
- background-image: none;
- -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
}
.btn-group.open .btn.dropdown-toggle {
- background-color: #e6e6e6;
+ background-color: #e6e6e6;
}
.btn-group.open .btn-primary.dropdown-toggle {
- background-color: #0044cc;
+ background-color: #0044cc;
}
.btn-group.open .btn-warning.dropdown-toggle {
- background-color: #f89406;
+ background-color: #f89406;
}
.btn-group.open .btn-danger.dropdown-toggle {
- background-color: #bd362f;
+ background-color: #bd362f;
}
.btn-group.open .btn-success.dropdown-toggle {
- background-color: #51a351;
+ background-color: #51a351;
}
.btn-group.open .btn-info.dropdown-toggle {
- background-color: #2f96b4;
+ background-color: #2f96b4;
}
.btn-group.open .btn-inverse.dropdown-toggle {
- background-color: #222222;
+ background-color: #222222;
}
.btn .caret {
- margin-top: 8px;
- margin-left: 0;
+ margin-top: 8px;
+ margin-left: 0;
}
.btn-mini .caret,
.btn-small .caret,
.btn-large .caret {
- margin-top: 6px;
+ margin-top: 6px;
}
.btn-large .caret {
- border-left-width: 5px;
- border-right-width: 5px;
- border-top-width: 5px;
+ border-left-width: 5px;
+ border-right-width: 5px;
+ border-top-width: 5px;
}
.dropup .btn-large .caret {
- border-bottom: 5px solid #000000;
- border-top: 0;
+ border-bottom: 5px solid #000000;
+ border-top: 0;
}
.btn-primary .caret,
.btn-warning .caret,
@@ -2882,2956 +2999,2956 @@ input[type="submit"].btn.btn-mini {
.btn-info .caret,
.btn-success .caret,
.btn-inverse .caret {
- border-top-color: #ffffff;
- border-bottom-color: #ffffff;
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
}
.btn-group-vertical {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
+ *zoom: 1;
}
.btn-group-vertical .btn {
- display: block;
- float: none;
- width: 100%;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ display: block;
+ float: none;
+ width: 100%;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.btn-group-vertical .btn + .btn {
- margin-left: 0;
- margin-top: -1px;
+ margin-left: 0;
+ margin-top: -1px;
}
.btn-group-vertical .btn:first-child {
- -webkit-border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
- border-radius: 4px 4px 0 0;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
}
.btn-group-vertical .btn:last-child {
- -webkit-border-radius: 0 0 4px 4px;
- -moz-border-radius: 0 0 4px 4px;
- border-radius: 0 0 4px 4px;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
}
.btn-group-vertical .btn-large:first-child {
- -webkit-border-radius: 6px 6px 0 0;
- -moz-border-radius: 6px 6px 0 0;
- border-radius: 6px 6px 0 0;
+ -webkit-border-radius: 6px 6px 0 0;
+ -moz-border-radius: 6px 6px 0 0;
+ border-radius: 6px 6px 0 0;
}
.btn-group-vertical .btn-large:last-child {
- -webkit-border-radius: 0 0 6px 6px;
- -moz-border-radius: 0 0 6px 6px;
- border-radius: 0 0 6px 6px;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
}
.nav {
- margin-left: 0;
- margin-bottom: 20px;
- list-style: none;
+ margin-left: 0;
+ margin-bottom: 20px;
+ list-style: none;
}
.nav > li > a {
- display: block;
+ display: block;
}
.nav > li > a:hover {
- text-decoration: none;
- background-color: #eeeeee;
+ text-decoration: none;
+ background-color: #eeeeee;
}
.nav > .pull-right {
- float: right;
+ float: right;
}
.nav-header {
- display: block;
- padding: 3px 15px;
- font-size: 11px;
- font-weight: bold;
- line-height: 20px;
- color: #999999;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
- text-transform: uppercase;
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
}
.nav li + .nav-header {
- margin-top: 9px;
+ margin-top: 9px;
}
.nav-list {
- padding-left: 15px;
- padding-right: 15px;
- margin-bottom: 0;
+ padding-left: 15px;
+ padding-right: 15px;
+ margin-bottom: 0;
}
.nav-list > li > a,
.nav-list .nav-header {
- margin-left: -15px;
- margin-right: -15px;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ margin-left: -15px;
+ margin-right: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
}
.nav-list > li > a {
- padding: 3px 15px;
+ padding: 3px 15px;
}
.nav-list > .active > a,
.nav-list > .active > a:hover {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
- background-color: #0088cc;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
}
.nav-list [class^="icon-"] {
- margin-right: 2px;
+ margin-right: 2px;
}
.nav-list .divider {
- *width: 100%;
- height: 1px;
- margin: 9px 1px;
- *margin: -5px 0 5px;
- overflow: hidden;
- background-color: #e5e5e5;
- border-bottom: 1px solid #ffffff;
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
}
.nav-tabs,
.nav-pills {
- *zoom: 1;
+ *zoom: 1;
}
.nav-tabs:before,
.nav-pills:before,
.nav-tabs:after,
.nav-pills:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.nav-tabs:after,
.nav-pills:after {
- clear: both;
+ clear: both;
}
.nav-tabs > li,
.nav-pills > li {
- float: left;
+ float: left;
}
.nav-tabs > li > a,
.nav-pills > li > a {
- padding-right: 12px;
- padding-left: 12px;
- margin-right: 2px;
- line-height: 14px;
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
}
.nav-tabs {
- border-bottom: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
- margin-bottom: -1px;
+ margin-bottom: -1px;
}
.nav-tabs > li > a {
- padding-top: 8px;
- padding-bottom: 8px;
- line-height: 20px;
- border: 1px solid transparent;
- -webkit-border-radius: 4px 4px 0 0;
- -moz-border-radius: 4px 4px 0 0;
- border-radius: 4px 4px 0 0;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 20px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
}
.nav-tabs > li > a:hover {
- border-color: #eeeeee #eeeeee #dddddd;
+ border-color: #eeeeee #eeeeee #dddddd;
}
.nav-tabs > .active > a,
.nav-tabs > .active > a:hover {
- color: #555555;
- background-color: #ffffff;
- border: 1px solid #ddd;
- border-bottom-color: transparent;
- cursor: default;
+ color: #555555;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+ cursor: default;
}
.nav-pills > li > a {
- padding-top: 8px;
- padding-bottom: 8px;
- margin-top: 2px;
- margin-bottom: 2px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
}
.nav-pills > .active > a,
.nav-pills > .active > a:hover {
- color: #ffffff;
- background-color: #0088cc;
+ color: #ffffff;
+ background-color: #0088cc;
}
.nav-stacked > li {
- float: none;
+ float: none;
}
.nav-stacked > li > a {
- margin-right: 0;
+ margin-right: 0;
}
.nav-tabs.nav-stacked {
- border-bottom: 0;
+ border-bottom: 0;
}
.nav-tabs.nav-stacked > li > a {
- border: 1px solid #ddd;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.nav-tabs.nav-stacked > li:first-child > a {
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
- border-top-right-radius: 4px;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-left-radius: 4px;
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
}
.nav-tabs.nav-stacked > li:last-child > a {
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
- border-bottom-right-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-left-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
}
.nav-tabs.nav-stacked > li > a:hover {
- border-color: #ddd;
- z-index: 2;
+ border-color: #ddd;
+ z-index: 2;
}
.nav-pills.nav-stacked > li > a {
- margin-bottom: 3px;
+ margin-bottom: 3px;
}
.nav-pills.nav-stacked > li:last-child > a {
- margin-bottom: 1px;
+ margin-bottom: 1px;
}
.nav-tabs .dropdown-menu {
- -webkit-border-radius: 0 0 6px 6px;
- -moz-border-radius: 0 0 6px 6px;
- border-radius: 0 0 6px 6px;
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
}
.nav-pills .dropdown-menu {
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
.nav .dropdown-toggle .caret {
- border-top-color: #0088cc;
- border-bottom-color: #0088cc;
- margin-top: 6px;
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+ margin-top: 6px;
}
.nav .dropdown-toggle:hover .caret {
- border-top-color: #005580;
- border-bottom-color: #005580;
+ border-top-color: #005580;
+ border-bottom-color: #005580;
}
/* move down carets for tabs */
.nav-tabs .dropdown-toggle .caret {
- margin-top: 8px;
+ margin-top: 8px;
}
.nav .active .dropdown-toggle .caret {
- border-top-color: #fff;
- border-bottom-color: #fff;
+ border-top-color: #fff;
+ border-bottom-color: #fff;
}
.nav-tabs .active .dropdown-toggle .caret {
- border-top-color: #555555;
- border-bottom-color: #555555;
+ border-top-color: #555555;
+ border-bottom-color: #555555;
}
.nav > .dropdown.active > a:hover {
- cursor: pointer;
+ cursor: pointer;
}
.nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle,
.nav > li.dropdown.open.active > a:hover {
- color: #ffffff;
- background-color: #999999;
- border-color: #999999;
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #999999;
}
.nav li.dropdown.open .caret,
.nav li.dropdown.open.active .caret,
.nav li.dropdown.open a:hover .caret {
- border-top-color: #ffffff;
- border-bottom-color: #ffffff;
- opacity: 1;
- filter: alpha(opacity=100);
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 1;
+ filter: alpha(opacity=100);
}
.tabs-stacked .open > a:hover {
- border-color: #999999;
+ border-color: #999999;
}
.tabbable {
- *zoom: 1;
+ *zoom: 1;
}
.tabbable:before,
.tabbable:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.tabbable:after {
- clear: both;
+ clear: both;
}
.tab-content {
- overflow: auto;
+ overflow: auto;
}
.tabs-below > .nav-tabs,
.tabs-right > .nav-tabs,
.tabs-left > .nav-tabs {
- border-bottom: 0;
+ border-bottom: 0;
}
.tab-content > .tab-pane,
.pill-content > .pill-pane {
- display: none;
+ display: none;
}
.tab-content > .active,
.pill-content > .active {
- display: block;
+ display: block;
}
.tabs-below > .nav-tabs {
- border-top: 1px solid #ddd;
+ border-top: 1px solid #ddd;
}
.tabs-below > .nav-tabs > li {
- margin-top: -1px;
- margin-bottom: 0;
+ margin-top: -1px;
+ margin-bottom: 0;
}
.tabs-below > .nav-tabs > li > a {
- -webkit-border-radius: 0 0 4px 4px;
- -moz-border-radius: 0 0 4px 4px;
- border-radius: 0 0 4px 4px;
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
}
.tabs-below > .nav-tabs > li > a:hover {
- border-bottom-color: transparent;
- border-top-color: #ddd;
+ border-bottom-color: transparent;
+ border-top-color: #ddd;
}
.tabs-below > .nav-tabs > .active > a,
.tabs-below > .nav-tabs > .active > a:hover {
- border-color: transparent #ddd #ddd #ddd;
+ border-color: transparent #ddd #ddd #ddd;
}
.tabs-left > .nav-tabs > li,
.tabs-right > .nav-tabs > li {
- float: none;
+ float: none;
}
.tabs-left > .nav-tabs > li > a,
.tabs-right > .nav-tabs > li > a {
- min-width: 74px;
- margin-right: 0;
- margin-bottom: 3px;
+ min-width: 74px;
+ margin-right: 0;
+ margin-bottom: 3px;
}
.tabs-left > .nav-tabs {
- float: left;
- margin-right: 19px;
- border-right: 1px solid #ddd;
+ float: left;
+ margin-right: 19px;
+ border-right: 1px solid #ddd;
}
.tabs-left > .nav-tabs > li > a {
- margin-right: -1px;
- -webkit-border-radius: 4px 0 0 4px;
- -moz-border-radius: 4px 0 0 4px;
- border-radius: 4px 0 0 4px;
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
}
.tabs-left > .nav-tabs > li > a:hover {
- border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
}
.tabs-left > .nav-tabs .active > a,
.tabs-left > .nav-tabs .active > a:hover {
- border-color: #ddd transparent #ddd #ddd;
- *border-right-color: #ffffff;
+ border-color: #ddd transparent #ddd #ddd;
+ *border-right-color: #ffffff;
}
.tabs-right > .nav-tabs {
- float: right;
- margin-left: 19px;
- border-left: 1px solid #ddd;
+ float: right;
+ margin-left: 19px;
+ border-left: 1px solid #ddd;
}
.tabs-right > .nav-tabs > li > a {
- margin-left: -1px;
- -webkit-border-radius: 0 4px 4px 0;
- -moz-border-radius: 0 4px 4px 0;
- border-radius: 0 4px 4px 0;
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
}
.tabs-right > .nav-tabs > li > a:hover {
- border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
}
.tabs-right > .nav-tabs .active > a,
.tabs-right > .nav-tabs .active > a:hover {
- border-color: #ddd #ddd #ddd transparent;
- *border-left-color: #ffffff;
+ border-color: #ddd #ddd #ddd transparent;
+ *border-left-color: #ffffff;
}
.nav > .disabled > a {
- color: #999999;
+ color: #999999;
}
.nav > .disabled > a:hover {
- text-decoration: none;
- background-color: transparent;
- cursor: default;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: default;
}
.navbar {
- overflow: visible;
- margin-bottom: 20px;
- color: #777777;
- *position: relative;
- *z-index: 2;
+ overflow: visible;
+ margin-bottom: 20px;
+ color: #777777;
+ *position: relative;
+ *z-index: 2;
}
.navbar-inner {
- min-height: 40px;
- padding-left: 20px;
- padding-right: 20px;
- background-color: #fafafa;
- background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
- background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
- background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
- background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
- border: 1px solid #d4d4d4;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
- -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
- *zoom: 1;
+ min-height: 40px;
+ padding-left: 20px;
+ padding-right: 20px;
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+ border: 1px solid #d4d4d4;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ *zoom: 1;
}
.navbar-inner:before,
.navbar-inner:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.navbar-inner:after {
- clear: both;
+ clear: both;
}
.navbar .container {
- width: auto;
+ width: auto;
}
.nav-collapse.collapse {
- height: auto;
+ height: auto;
}
.navbar .brand {
- float: left;
- display: block;
- padding: 10px 20px 10px;
- margin-left: -20px;
- font-size: 20px;
- font-weight: 200;
- color: #777777;
- text-shadow: 0 1px 0 #ffffff;
+ float: left;
+ display: block;
+ padding: 10px 20px 10px;
+ margin-left: -20px;
+ font-size: 20px;
+ font-weight: 200;
+ color: #777777;
+ text-shadow: 0 1px 0 #ffffff;
}
.navbar .brand:hover {
- text-decoration: none;
+ text-decoration: none;
}
.navbar-text {
- margin-bottom: 0;
- line-height: 40px;
+ margin-bottom: 0;
+ line-height: 40px;
}
.navbar-link {
- color: #777777;
+ color: #777777;
}
.navbar-link:hover {
- color: #333333;
+ color: #333333;
}
.navbar .divider-vertical {
- height: 40px;
- margin: 0 9px;
- border-left: 1px solid #f2f2f2;
- border-right: 1px solid #ffffff;
+ height: 40px;
+ margin: 0 9px;
+ border-left: 1px solid #f2f2f2;
+ border-right: 1px solid #ffffff;
}
.navbar .btn,
.navbar .btn-group {
- margin-top: 5px;
+ margin-top: 5px;
}
.navbar .btn-group .btn,
.navbar .input-prepend .btn,
.navbar .input-append .btn {
- margin-top: 0;
+ margin-top: 0;
}
.navbar-form {
- margin-bottom: 0;
- *zoom: 1;
+ margin-bottom: 0;
+ *zoom: 1;
}
.navbar-form:before,
.navbar-form:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.navbar-form:after {
- clear: both;
+ clear: both;
}
.navbar-form input,
.navbar-form select,
.navbar-form .radio,
.navbar-form .checkbox {
- margin-top: 5px;
+ margin-top: 5px;
}
.navbar-form input,
.navbar-form select,
.navbar-form .btn {
- display: inline-block;
- margin-bottom: 0;
+ display: inline-block;
+ margin-bottom: 0;
}
.navbar-form input[type="image"],
.navbar-form input[type="checkbox"],
.navbar-form input[type="radio"] {
- margin-top: 3px;
+ margin-top: 3px;
}
.navbar-form .input-append,
.navbar-form .input-prepend {
- margin-top: 6px;
- white-space: nowrap;
+ margin-top: 6px;
+ white-space: nowrap;
}
.navbar-form .input-append input,
.navbar-form .input-prepend input {
- margin-top: 0;
+ margin-top: 0;
}
.navbar-search {
- position: relative;
- float: left;
- margin-top: 5px;
- margin-bottom: 0;
+ position: relative;
+ float: left;
+ margin-top: 5px;
+ margin-bottom: 0;
}
.navbar-search .search-query {
- margin-bottom: 0;
- padding: 4px 14px;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-size: 13px;
- font-weight: normal;
- line-height: 1;
- -webkit-border-radius: 15px;
- -moz-border-radius: 15px;
- border-radius: 15px;
+ margin-bottom: 0;
+ padding: 4px 14px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
}
.navbar-static-top {
- position: static;
- width: 100%;
- margin-bottom: 0;
+ position: static;
+ width: 100%;
+ margin-bottom: 0;
}
.navbar-static-top .navbar-inner {
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.navbar-fixed-top,
.navbar-fixed-bottom {
- position: fixed;
- right: 0;
- left: 0;
- z-index: 1030;
- margin-bottom: 0;
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+ margin-bottom: 0;
}
.navbar-fixed-top .navbar-inner,
.navbar-static-top .navbar-inner {
- border-width: 0 0 1px;
+ border-width: 0 0 1px;
}
.navbar-fixed-bottom .navbar-inner {
- border-width: 1px 0 0;
+ border-width: 1px 0 0;
}
.navbar-fixed-top .navbar-inner,
.navbar-fixed-bottom .navbar-inner {
- padding-left: 0;
- padding-right: 0;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
+ padding-left: 0;
+ padding-right: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
}
.navbar-static-top .container,
.navbar-fixed-top .container,
.navbar-fixed-bottom .container {
- width: 940px;
+ width: 940px;
}
.navbar-fixed-top {
- top: 0;
+ top: 0;
}
.navbar-fixed-top .navbar-inner,
.navbar-static-top .navbar-inner {
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
- -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
}
.navbar-fixed-bottom {
- bottom: 0;
+ bottom: 0;
}
.navbar-fixed-bottom .navbar-inner {
- -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
- -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
- box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
}
.navbar .nav {
- position: relative;
- left: 0;
- display: block;
- float: left;
- margin: 0 10px 0 0;
+ position: relative;
+ left: 0;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
}
.navbar .nav.pull-right {
- float: right;
- margin-right: 0;
+ float: right;
+ margin-right: 0;
}
.navbar .nav > li {
- float: left;
+ float: left;
}
.navbar .nav > li > a {
- float: none;
- padding: 10px 15px 10px;
- color: #777777;
- text-decoration: none;
- text-shadow: 0 1px 0 #ffffff;
+ float: none;
+ padding: 10px 15px 10px;
+ color: #777777;
+ text-decoration: none;
+ text-shadow: 0 1px 0 #ffffff;
}
.navbar .nav .dropdown-toggle .caret {
- margin-top: 8px;
+ margin-top: 8px;
}
.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
- background-color: transparent;
- color: #333333;
- text-decoration: none;
+ background-color: transparent;
+ color: #333333;
+ text-decoration: none;
}
.navbar .nav > .active > a,
.navbar .nav > .active > a:hover,
.navbar .nav > .active > a:focus {
- color: #555555;
- text-decoration: none;
- background-color: #e5e5e5;
- -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
- -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
- box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ color: #555555;
+ text-decoration: none;
+ background-color: #e5e5e5;
+ -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
}
.navbar .btn-navbar {
- display: none;
- float: right;
- padding: 7px 10px;
- margin-left: 5px;
- margin-right: 5px;
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #ededed;
- background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
- background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
- background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
- background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
- border-color: #e5e5e5 #e5e5e5 #bfbfbf;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #e5e5e5;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ display: none;
+ float: right;
+ padding: 7px 10px;
+ margin-left: 5px;
+ margin-right: 5px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #ededed;
+ background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+ background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+ border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #e5e5e5;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
- -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
}
.navbar .btn-navbar:hover,
.navbar .btn-navbar:active,
.navbar .btn-navbar.active,
.navbar .btn-navbar.disabled,
.navbar .btn-navbar[disabled] {
- color: #ffffff;
- background-color: #e5e5e5;
- *background-color: #d9d9d9;
+ color: #ffffff;
+ background-color: #e5e5e5;
+ *background-color: #d9d9d9;
}
.navbar .btn-navbar:active,
.navbar .btn-navbar.active {
- background-color: #cccccc \9;
+ background-color: #cccccc \9;
}
.navbar .btn-navbar .icon-bar {
- display: block;
- width: 18px;
- height: 2px;
- background-color: #f5f5f5;
- -webkit-border-radius: 1px;
- -moz-border-radius: 1px;
- border-radius: 1px;
- -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
- -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
- box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ display: block;
+ width: 18px;
+ height: 2px;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
}
.btn-navbar .icon-bar + .icon-bar {
- margin-top: 3px;
+ margin-top: 3px;
}
.navbar .nav > li > .dropdown-menu:before {
- content: '';
- display: inline-block;
- border-left: 7px solid transparent;
- border-right: 7px solid transparent;
- border-bottom: 7px solid #ccc;
- border-bottom-color: rgba(0, 0, 0, 0.2);
- position: absolute;
- top: -7px;
- left: 9px;
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+ top: -7px;
+ left: 9px;
}
.navbar .nav > li > .dropdown-menu:after {
- content: '';
- display: inline-block;
- border-left: 6px solid transparent;
- border-right: 6px solid transparent;
- border-bottom: 6px solid #ffffff;
- position: absolute;
- top: -6px;
- left: 10px;
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ position: absolute;
+ top: -6px;
+ left: 10px;
}
.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
- border-top: 7px solid #ccc;
- border-top-color: rgba(0, 0, 0, 0.2);
- border-bottom: 0;
- bottom: -7px;
- top: auto;
+ border-top: 7px solid #ccc;
+ border-top-color: rgba(0, 0, 0, 0.2);
+ border-bottom: 0;
+ bottom: -7px;
+ top: auto;
}
.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
- border-top: 6px solid #ffffff;
- border-bottom: 0;
- bottom: -6px;
- top: auto;
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+ bottom: -6px;
+ top: auto;
}
.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
- background-color: #e5e5e5;
- color: #555555;
+ background-color: #e5e5e5;
+ color: #555555;
}
.navbar .nav li.dropdown > .dropdown-toggle .caret {
- border-top-color: #777777;
- border-bottom-color: #777777;
+ border-top-color: #777777;
+ border-bottom-color: #777777;
}
.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
- border-top-color: #555555;
- border-bottom-color: #555555;
+ border-top-color: #555555;
+ border-bottom-color: #555555;
}
.navbar .pull-right > li > .dropdown-menu,
.navbar .nav > li > .dropdown-menu.pull-right {
- left: auto;
- right: 0;
+ left: auto;
+ right: 0;
}
.navbar .pull-right > li > .dropdown-menu:before,
.navbar .nav > li > .dropdown-menu.pull-right:before {
- left: auto;
- right: 12px;
+ left: auto;
+ right: 12px;
}
.navbar .pull-right > li > .dropdown-menu:after,
.navbar .nav > li > .dropdown-menu.pull-right:after {
- left: auto;
- right: 13px;
+ left: auto;
+ right: 13px;
}
.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
- left: auto;
- right: 100%;
- margin-left: 0;
- margin-right: -1px;
- -webkit-border-radius: 6px 0 6px 6px;
- -moz-border-radius: 6px 0 6px 6px;
- border-radius: 6px 0 6px 6px;
+ left: auto;
+ right: 100%;
+ margin-left: 0;
+ margin-right: -1px;
+ -webkit-border-radius: 6px 0 6px 6px;
+ -moz-border-radius: 6px 0 6px 6px;
+ border-radius: 6px 0 6px 6px;
}
.navbar-inverse {
- color: #999999;
+ color: #999999;
}
.navbar-inverse .navbar-inner {
- background-color: #1b1b1b;
- background-image: -moz-linear-gradient(top, #222222, #111111);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
- background-image: -webkit-linear-gradient(top, #222222, #111111);
- background-image: -o-linear-gradient(top, #222222, #111111);
- background-image: linear-gradient(to bottom, #222222, #111111);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
- border-color: #252525;
+ background-color: #1b1b1b;
+ background-image: -moz-linear-gradient(top, #222222, #111111);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+ background-image: -webkit-linear-gradient(top, #222222, #111111);
+ background-image: -o-linear-gradient(top, #222222, #111111);
+ background-image: linear-gradient(to bottom, #222222, #111111);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+ border-color: #252525;
}
.navbar-inverse .brand,
.navbar-inverse .nav > li > a {
- color: #999999;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ color: #999999;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.navbar-inverse .brand:hover,
.navbar-inverse .nav > li > a:hover {
- color: #ffffff;
+ color: #ffffff;
}
.navbar-inverse .nav > li > a:focus,
.navbar-inverse .nav > li > a:hover {
- background-color: transparent;
- color: #ffffff;
+ background-color: transparent;
+ color: #ffffff;
}
.navbar-inverse .nav .active > a,
.navbar-inverse .nav .active > a:hover,
.navbar-inverse .nav .active > a:focus {
- color: #ffffff;
- background-color: #111111;
+ color: #ffffff;
+ background-color: #111111;
}
.navbar-inverse .navbar-link {
- color: #999999;
+ color: #999999;
}
.navbar-inverse .navbar-link:hover {
- color: #ffffff;
+ color: #ffffff;
}
.navbar-inverse .divider-vertical {
- border-left-color: #111111;
- border-right-color: #222222;
+ border-left-color: #111111;
+ border-right-color: #222222;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
- background-color: #111111;
- color: #ffffff;
+ background-color: #111111;
+ color: #ffffff;
}
.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
- border-top-color: #999999;
- border-bottom-color: #999999;
+ border-top-color: #999999;
+ border-bottom-color: #999999;
}
.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
- border-top-color: #ffffff;
- border-bottom-color: #ffffff;
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
}
.navbar-inverse .navbar-search .search-query {
- color: #ffffff;
- background-color: #515151;
- border-color: #111111;
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
- -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
- -webkit-transition: none;
- -moz-transition: none;
- -o-transition: none;
- transition: none;
+ color: #ffffff;
+ background-color: #515151;
+ border-color: #111111;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -webkit-transition: none;
+ -moz-transition: none;
+ -o-transition: none;
+ transition: none;
}
.navbar-inverse .navbar-search .search-query:-moz-placeholder {
- color: #cccccc;
+ color: #cccccc;
}
.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
- color: #cccccc;
+ color: #cccccc;
}
.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
- color: #cccccc;
+ color: #cccccc;
}
.navbar-inverse .navbar-search .search-query:focus,
.navbar-inverse .navbar-search .search-query.focused {
- padding: 5px 15px;
- color: #333333;
- text-shadow: 0 1px 0 #ffffff;
- background-color: #ffffff;
- border: 0;
- -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);
- outline: 0;
+ padding: 5px 15px;
+ color: #333333;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #ffffff;
+ border: 0;
+ -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);
+ outline: 0;
}
.navbar-inverse .btn-navbar {
- color: #ffffff;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #0e0e0e;
- background-image: -moz-linear-gradient(top, #151515, #040404);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
- background-image: -webkit-linear-gradient(top, #151515, #040404);
- background-image: -o-linear-gradient(top, #151515, #040404);
- background-image: linear-gradient(to bottom, #151515, #040404);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
- border-color: #040404 #040404 #000000;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
- *background-color: #040404;
- /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e0e0e;
+ background-image: -moz-linear-gradient(top, #151515, #040404);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+ background-image: -webkit-linear-gradient(top, #151515, #040404);
+ background-image: -o-linear-gradient(top, #151515, #040404);
+ background-image: linear-gradient(to bottom, #151515, #040404);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+ border-color: #040404 #040404 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #040404;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
- filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
}
.navbar-inverse .btn-navbar:hover,
.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active,
.navbar-inverse .btn-navbar.disabled,
.navbar-inverse .btn-navbar[disabled] {
- color: #ffffff;
- background-color: #040404;
- *background-color: #000000;
+ color: #ffffff;
+ background-color: #040404;
+ *background-color: #000000;
}
.navbar-inverse .btn-navbar:active,
.navbar-inverse .btn-navbar.active {
- background-color: #000000 \9;
+ background-color: #000000 \9;
}
.breadcrumb {
- padding: 8px 15px;
- margin: 0 0 20px;
- list-style: none;
- background-color: #f5f5f5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ padding: 8px 15px;
+ margin: 0 0 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.breadcrumb li {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- text-shadow: 0 1px 0 #ffffff;
+ *zoom: 1;
+ text-shadow: 0 1px 0 #ffffff;
}
.breadcrumb .divider {
- padding: 0 5px;
- color: #ccc;
+ padding: 0 5px;
+ color: #ccc;
}
.breadcrumb .active {
- color: #999999;
+ color: #999999;
}
.pagination {
- height: 40px;
- margin: 20px 0;
+ height: 40px;
+ margin: 20px 0;
}
.pagination ul {
- display: inline-block;
- *display: inline;
- /* IE7 inline-block hack */
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
- *zoom: 1;
- margin-left: 0;
- margin-bottom: 0;
- -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);
+ *zoom: 1;
+ margin-left: 0;
+ margin-bottom: 0;
+ -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 ul > li {
- display: inline;
+ display: inline;
}
.pagination ul > li > a,
.pagination ul > li > span {
- float: left;
- padding: 0 14px;
- line-height: 38px;
- text-decoration: none;
- background-color: #ffffff;
- border: 1px solid #dddddd;
- border-left-width: 0;
+ float: left;
+ padding: 0 14px;
+ line-height: 38px;
+ text-decoration: none;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-left-width: 0;
}
.pagination ul > li > a:hover,
.pagination ul > .active > a,
.pagination ul > .active > span {
- background-color: #f5f5f5;
+ background-color: #f5f5f5;
}
.pagination ul > .active > a,
.pagination ul > .active > span {
- color: #999999;
- cursor: default;
+ color: #999999;
+ cursor: default;
}
.pagination ul > .disabled > span,
.pagination ul > .disabled > a,
.pagination ul > .disabled > a:hover {
- color: #999999;
- background-color: transparent;
- cursor: default;
+ color: #999999;
+ background-color: transparent;
+ cursor: default;
}
.pagination ul > li:first-child > a,
.pagination ul > li:first-child > span {
- border-left-width: 1px;
- -webkit-border-radius: 3px 0 0 3px;
- -moz-border-radius: 3px 0 0 3px;
- border-radius: 3px 0 0 3px;
+ border-left-width: 1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
}
.pagination ul > li:last-child > a,
.pagination ul > li:last-child > span {
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
}
.pagination-centered {
- text-align: center;
+ text-align: center;
}
.pagination-right {
- text-align: right;
+ text-align: right;
}
.pager {
- margin: 20px 0;
- list-style: none;
- text-align: center;
- *zoom: 1;
+ margin: 20px 0;
+ list-style: none;
+ text-align: center;
+ *zoom: 1;
}
.pager:before,
.pager:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.pager:after {
- clear: both;
+ clear: both;
}
.pager li {
- display: inline;
+ display: inline;
}
.pager a,
.pager span {
- display: inline-block;
- padding: 5px 14px;
- background-color: #fff;
- border: 1px solid #ddd;
- -webkit-border-radius: 15px;
- -moz-border-radius: 15px;
- border-radius: 15px;
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
}
.pager a:hover {
- text-decoration: none;
- background-color: #f5f5f5;
+ text-decoration: none;
+ background-color: #f5f5f5;
}
.pager .next a,
.pager .next span {
- float: right;
+ float: right;
}
.pager .previous a {
- float: left;
+ float: left;
}
.pager .disabled a,
.pager .disabled a:hover,
.pager .disabled span {
- color: #999999;
- background-color: #fff;
- cursor: default;
+ color: #999999;
+ background-color: #fff;
+ cursor: default;
}
.thumbnails {
- margin-left: -20px;
- list-style: none;
- *zoom: 1;
+ margin-left: -20px;
+ list-style: none;
+ *zoom: 1;
}
.thumbnails:before,
.thumbnails:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.thumbnails:after {
- clear: both;
+ clear: both;
}
.row-fluid .thumbnails {
- margin-left: 0;
+ margin-left: 0;
}
.thumbnails > li {
- float: left;
- margin-bottom: 20px;
- margin-left: 20px;
+ float: left;
+ margin-bottom: 20px;
+ margin-left: 20px;
}
.thumbnail {
- display: block;
- padding: 4px;
- line-height: 20px;
- border: 1px solid #ddd;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
- -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
- -webkit-transition: all 0.2s ease-in-out;
- -moz-transition: all 0.2s ease-in-out;
- -o-transition: all 0.2s ease-in-out;
- transition: all 0.2s ease-in-out;
+ display: block;
+ padding: 4px;
+ line-height: 20px;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
}
a.thumbnail:hover {
- border-color: #0088cc;
- -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);
+ border-color: #0088cc;
+ -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);
}
.thumbnail > img {
- display: block;
- max-width: 100%;
- margin-left: auto;
- margin-right: auto;
+ display: block;
+ max-width: 100%;
+ margin-left: auto;
+ margin-right: auto;
}
.thumbnail .caption {
- padding: 9px;
- color: #555555;
+ padding: 9px;
+ color: #555555;
}
.alert {
- padding: 8px 35px 8px 14px;
- margin-bottom: 20px;
- text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
- background-color: #fcf8e3;
- border: 1px solid #fbeed5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- color: #c09853;
+ padding: 8px 35px 8px 14px;
+ margin-bottom: 20px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ background-color: #fcf8e3;
+ border: 1px solid #fbeed5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ color: #c09853;
}
.alert h4 {
- margin: 0;
+ margin: 0;
}
.alert .close {
- position: relative;
- top: -2px;
- right: -21px;
- line-height: 20px;
+ position: relative;
+ top: -2px;
+ right: -21px;
+ line-height: 20px;
}
.alert-success {
- background-color: #dff0d8;
- border-color: #d6e9c6;
- color: #468847;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #468847;
}
.alert-danger,
.alert-error {
- background-color: #f2dede;
- border-color: #eed3d7;
- color: #b94a48;
+ background-color: #f2dede;
+ border-color: #eed3d7;
+ color: #b94a48;
}
.alert-info {
- background-color: #d9edf7;
- border-color: #bce8f1;
- color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #3a87ad;
}
.alert-block {
- padding-top: 14px;
- padding-bottom: 14px;
+ padding-top: 14px;
+ padding-bottom: 14px;
}
.alert-block > p,
.alert-block > ul {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.alert-block p + p {
- margin-top: 5px;
+ margin-top: 5px;
}
@-webkit-keyframes progress-bar-stripes {
- from {
+ from {
background-position: 40px 0;
- }
- to {
+}
+to {
background-position: 0 0;
- }
+}
}
@-moz-keyframes progress-bar-stripes {
- from {
+ from {
background-position: 40px 0;
- }
- to {
+}
+to {
background-position: 0 0;
- }
+}
}
@-ms-keyframes progress-bar-stripes {
- from {
+ from {
background-position: 40px 0;
- }
- to {
+}
+to {
background-position: 0 0;
- }
+}
}
@-o-keyframes progress-bar-stripes {
- from {
+ from {
background-position: 0 0;
- }
- to {
+}
+to {
background-position: 40px 0;
- }
+}
}
@keyframes progress-bar-stripes {
- from {
+ from {
background-position: 40px 0;
- }
- to {
+}
+to {
background-position: 0 0;
- }
+}
}
.progress {
- overflow: hidden;
- height: 20px;
- margin-bottom: 20px;
- background-color: #f7f7f7;
- background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
- background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
- background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
- background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
- -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ overflow: hidden;
+ height: 20px;
+ margin-bottom: 20px;
+ background-color: #f7f7f7;
+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.progress .bar {
- width: 0%;
- height: 100%;
- color: #ffffff;
- float: left;
- font-size: 12px;
- text-align: center;
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- background-color: #0e90d2;
- background-image: -moz-linear-gradient(top, #149bdf, #0480be);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
- background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
- background-image: -o-linear-gradient(top, #149bdf, #0480be);
- background-image: linear-gradient(to bottom, #149bdf, #0480be);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
- -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- -webkit-transition: width 0.6s ease;
- -moz-transition: width 0.6s ease;
- -o-transition: width 0.6s ease;
- transition: width 0.6s ease;
+ width: 0%;
+ height: 100%;
+ color: #ffffff;
+ float: left;
+ font-size: 12px;
+ text-align: center;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e90d2;
+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
+ background-image: linear-gradient(to bottom, #149bdf, #0480be);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: width 0.6s ease;
+ -moz-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
}
.progress .bar + .bar {
- -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
- box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
}
.progress-striped .bar {
- background-color: #149bdf;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- -webkit-background-size: 40px 40px;
- -moz-background-size: 40px 40px;
- -o-background-size: 40px 40px;
- background-size: 40px 40px;
+ background-color: #149bdf;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
}
.progress.active .bar {
- -webkit-animation: progress-bar-stripes 2s linear infinite;
- -moz-animation: progress-bar-stripes 2s linear infinite;
- -ms-animation: progress-bar-stripes 2s linear infinite;
- -o-animation: progress-bar-stripes 2s linear infinite;
- animation: progress-bar-stripes 2s linear infinite;
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
}
.progress-danger .bar,
.progress .bar-danger {
- background-color: #dd514c;
- background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
- background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
- background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
- background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
+ background-color: #dd514c;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
}
.progress-danger.progress-striped .bar,
.progress-striped .bar-danger {
- background-color: #ee5f5b;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-color: #ee5f5b;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-success .bar,
.progress .bar-success {
- background-color: #5eb95e;
- background-image: -moz-linear-gradient(top, #62c462, #57a957);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
- background-image: -webkit-linear-gradient(top, #62c462, #57a957);
- background-image: -o-linear-gradient(top, #62c462, #57a957);
- background-image: linear-gradient(to bottom, #62c462, #57a957);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
+ background-color: #5eb95e;
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
+ background-image: linear-gradient(to bottom, #62c462, #57a957);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
}
.progress-success.progress-striped .bar,
.progress-striped .bar-success {
- background-color: #62c462;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-color: #62c462;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-info .bar,
.progress .bar-info {
- background-color: #4bb1cf;
- background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
- background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
- background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
- background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
+ background-color: #4bb1cf;
+ background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
}
.progress-info.progress-striped .bar,
.progress-striped .bar-info {
- background-color: #5bc0de;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-color: #5bc0de;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-warning .bar,
.progress .bar-warning {
- background-color: #faa732;
- background-image: -moz-linear-gradient(top, #fbb450, #f89406);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
- background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
- background-image: -o-linear-gradient(top, #fbb450, #f89406);
- background-image: linear-gradient(to bottom, #fbb450, #f89406);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
}
.progress-warning.progress-striped .bar,
.progress-striped .bar-warning {
- background-color: #fbb450;
- background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
- background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
- background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-color: #fbb450;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.hero-unit {
- padding: 60px;
- margin-bottom: 30px;
- background-color: #eeeeee;
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+ padding: 60px;
+ margin-bottom: 30px;
+ background-color: #eeeeee;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
.hero-unit h1 {
- margin-bottom: 0;
- font-size: 60px;
- line-height: 1;
- color: inherit;
- letter-spacing: -1px;
+ margin-bottom: 0;
+ font-size: 60px;
+ line-height: 1;
+ color: inherit;
+ letter-spacing: -1px;
}
.hero-unit p {
- font-size: 18px;
- font-weight: 200;
- line-height: 30px;
- color: inherit;
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 30px;
+ color: inherit;
}
.tooltip {
- position: absolute;
- z-index: 1030;
- display: block;
- visibility: visible;
- padding: 5px;
- font-size: 11px;
- opacity: 0;
- filter: alpha(opacity=0);
+ position: absolute;
+ z-index: 1030;
+ display: block;
+ visibility: visible;
+ padding: 5px;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
}
.tooltip.in {
- opacity: 0.8;
- filter: alpha(opacity=80);
+ opacity: 0.8;
+ filter: alpha(opacity=80);
}
.tooltip.top {
- margin-top: -3px;
+ margin-top: -3px;
}
.tooltip.right {
- margin-left: 3px;
+ margin-left: 3px;
}
.tooltip.bottom {
- margin-top: 3px;
+ margin-top: 3px;
}
.tooltip.left {
- margin-left: -3px;
+ margin-left: -3px;
}
.tooltip-inner {
- max-width: 200px;
- padding: 3px 8px;
- color: #ffffff;
- text-align: center;
- text-decoration: none;
- background-color: #000000;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.tooltip-arrow {
- position: absolute;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
}
.tooltip.top .tooltip-arrow {
- bottom: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 5px 5px 0;
- border-top-color: #000000;
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
}
.tooltip.right .tooltip-arrow {
- top: 50%;
- left: 0;
- margin-top: -5px;
- border-width: 5px 5px 5px 0;
- border-right-color: #000000;
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000000;
}
.tooltip.left .tooltip-arrow {
- top: 50%;
- right: 0;
- margin-top: -5px;
- border-width: 5px 0 5px 5px;
- border-left-color: #000000;
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000000;
}
.tooltip.bottom .tooltip-arrow {
- top: 0;
- left: 50%;
- margin-left: -5px;
- border-width: 0 5px 5px;
- border-bottom-color: #000000;
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
}
.popover {
- position: absolute;
- top: 0;
- left: 0;
- z-index: 1010;
- display: none;
- width: 236px;
- padding: 1px;
- background-color: #ffffff;
- -webkit-background-clip: padding-box;
- -moz-background-clip: padding;
- background-clip: padding-box;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.2);
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ width: 236px;
+ padding: 1px;
+ background-color: #ffffff;
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
- margin-bottom: 10px;
+ margin-bottom: 10px;
}
.popover.right {
- margin-left: 10px;
+ margin-left: 10px;
}
.popover.bottom {
- margin-top: 10px;
+ margin-top: 10px;
}
.popover.left {
- margin-right: 10px;
+ margin-right: 10px;
}
.popover-title {
- margin: 0;
- padding: 8px 14px;
- font-size: 14px;
- font-weight: normal;
- line-height: 18px;
- background-color: #f7f7f7;
- border-bottom: 1px solid #ebebeb;
- -webkit-border-radius: 5px 5px 0 0;
- -moz-border-radius: 5px 5px 0 0;
- border-radius: 5px 5px 0 0;
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
}
.popover-content {
- padding: 9px 14px;
+ padding: 9px 14px;
}
.popover-content p,
.popover-content ul,
.popover-content ol {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.popover .arrow,
.popover .arrow:after {
- position: absolute;
- display: inline-block;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
+ position: absolute;
+ display: inline-block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
}
.popover .arrow:after {
- content: "";
- z-index: -1;
+ content: "";
+ z-index: -1;
}
.popover.top .arrow {
- bottom: -10px;
- left: 50%;
- margin-left: -10px;
- border-width: 10px 10px 0;
- border-top-color: #ffffff;
+ bottom: -10px;
+ left: 50%;
+ margin-left: -10px;
+ border-width: 10px 10px 0;
+ border-top-color: #ffffff;
}
.popover.top .arrow:after {
- border-width: 11px 11px 0;
- border-top-color: rgba(0, 0, 0, 0.25);
- bottom: -1px;
- left: -11px;
+ border-width: 11px 11px 0;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -1px;
+ left: -11px;
}
.popover.right .arrow {
- top: 50%;
- left: -10px;
- margin-top: -10px;
- border-width: 10px 10px 10px 0;
- border-right-color: #ffffff;
+ top: 50%;
+ left: -10px;
+ margin-top: -10px;
+ border-width: 10px 10px 10px 0;
+ border-right-color: #ffffff;
}
.popover.right .arrow:after {
- border-width: 11px 11px 11px 0;
- border-right-color: rgba(0, 0, 0, 0.25);
- bottom: -11px;
- left: -1px;
+ border-width: 11px 11px 11px 0;
+ border-right-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+ left: -1px;
}
.popover.bottom .arrow {
- top: -10px;
- left: 50%;
- margin-left: -10px;
- border-width: 0 10px 10px;
- border-bottom-color: #ffffff;
+ top: -10px;
+ left: 50%;
+ margin-left: -10px;
+ border-width: 0 10px 10px;
+ border-bottom-color: #ffffff;
}
.popover.bottom .arrow:after {
- border-width: 0 11px 11px;
- border-bottom-color: rgba(0, 0, 0, 0.25);
- top: -1px;
- left: -11px;
+ border-width: 0 11px 11px;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ top: -1px;
+ left: -11px;
}
.popover.left .arrow {
- top: 50%;
- right: -10px;
- margin-top: -10px;
- border-width: 10px 0 10px 10px;
- border-left-color: #ffffff;
+ top: 50%;
+ right: -10px;
+ margin-top: -10px;
+ border-width: 10px 0 10px 10px;
+ border-left-color: #ffffff;
}
.popover.left .arrow:after {
- border-width: 11px 0 11px 11px;
- border-left-color: rgba(0, 0, 0, 0.25);
- bottom: -11px;
- right: -1px;
+ border-width: 11px 0 11px 11px;
+ border-left-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+ right: -1px;
}
.modal-open .modal .dropdown-menu {
- z-index: 2050;
+ z-index: 2050;
}
.modal-open .modal .dropdown.open {
- *z-index: 2050;
+ *z-index: 2050;
}
.modal-open .modal .popover {
- z-index: 2060;
+ z-index: 2060;
}
.modal-open .modal .tooltip {
- z-index: 2080;
+ z-index: 2080;
}
.modal-backdrop {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- z-index: 1040;
- background-color: #000000;
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
}
.modal-backdrop.fade {
- opacity: 0;
+ opacity: 0;
}
.modal-backdrop,
.modal-backdrop.fade.in {
- opacity: 0.8;
- filter: alpha(opacity=80);
+ opacity: 0.8;
+ filter: alpha(opacity=80);
}
.modal {
- position: fixed;
- top: 50%;
- left: 50%;
- z-index: 1050;
- overflow: auto;
- width: 560px;
- margin: -250px 0 0 -280px;
- background-color: #ffffff;
- border: 1px solid #999;
- border: 1px solid rgba(0, 0, 0, 0.3);
- *border: 1px solid #999;
- /* IE6-7 */
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ z-index: 1050;
+ overflow: auto;
+ width: 560px;
+ margin: -250px 0 0 -280px;
+ 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;
+ -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.fade {
- -webkit-transition: opacity .3s linear, top .3s ease-out;
- -moz-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%;
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
+ -moz-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%;
+ top: 50%;
}
.modal-header {
- padding: 9px 15px;
- border-bottom: 1px solid #eee;
+ padding: 9px 15px;
+ border-bottom: 1px solid #eee;
}
.modal-header .close {
- margin-top: 2px;
+ margin-top: 2px;
}
.modal-header h3 {
- margin: 0;
- line-height: 30px;
+ margin: 0;
+ line-height: 30px;
}
.modal-body {
- overflow-y: auto;
- max-height: 400px;
- padding: 15px;
+ overflow-y: auto;
+ max-height: 400px;
+ padding: 15px;
}
.modal-form {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.modal-footer {
- padding: 14px 15px 15px;
- margin-bottom: 0;
- text-align: right;
- background-color: #f5f5f5;
- 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;
+ padding: 14px 15px 15px;
+ margin-bottom: 0;
+ text-align: right;
+ background-color: #f5f5f5;
+ 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;
}
.modal-footer:before,
.modal-footer:after {
- display: table;
- content: "";
- line-height: 0;
+ display: table;
+ content: "";
+ line-height: 0;
}
.modal-footer:after {
- clear: both;
+ clear: both;
}
.modal-footer .btn + .btn {
- margin-left: 5px;
- margin-bottom: 0;
+ margin-left: 5px;
+ margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
- margin-left: -1px;
+ margin-left: -1px;
}
.dropup,
.dropdown {
- position: relative;
+ position: relative;
}
.dropdown-toggle {
- *margin-bottom: -3px;
+ *margin-bottom: -3px;
}
.dropdown-toggle:active,
.open .dropdown-toggle {
- outline: 0;
+ outline: 0;
}
.caret {
- display: inline-block;
- width: 0;
- height: 0;
- vertical-align: top;
- border-top: 4px solid #000000;
- border-right: 4px solid transparent;
- border-left: 4px solid transparent;
- content: "";
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: top;
+ border-top: 4px solid #000000;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+ content: "";
}
.dropdown .caret {
- margin-top: 8px;
- margin-left: 2px;
+ margin-top: 8px;
+ margin-left: 2px;
}
.dropdown-menu {
- position: absolute;
- top: 100%;
- left: 0;
- z-index: 1000;
- display: none;
- float: left;
- min-width: 160px;
- padding: 5px 0;
- margin: 2px 0 0;
- list-style: none;
- background-color: #ffffff;
- border: 1px solid #ccc;
- border: 1px solid rgba(0, 0, 0, 0.2);
- *border-right-width: 2px;
- *border-bottom-width: 2px;
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
- -webkit-background-clip: padding-box;
- -moz-background-clip: padding;
- background-clip: padding-box;
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
}
.dropdown-menu.pull-right {
- right: 0;
- left: auto;
+ right: 0;
+ left: auto;
}
.dropdown-menu .divider {
- *width: 100%;
- height: 1px;
- margin: 9px 1px;
- *margin: -5px 0 5px;
- overflow: hidden;
- background-color: #e5e5e5;
- border-bottom: 1px solid #ffffff;
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
}
.dropdown-menu a {
- display: block;
- padding: 3px 20px;
- clear: both;
- font-weight: normal;
- line-height: 20px;
- color: #333333;
- white-space: nowrap;
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 20px;
+ color: #333333;
+ white-space: nowrap;
}
.dropdown-menu li > a:hover,
.dropdown-menu li > a:focus,
.dropdown-submenu:hover > a {
- text-decoration: none;
- color: #ffffff;
- background-color: #0088cc;
- background-color: #0081c2;
- background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
- background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
- background-image: -o-linear-gradient(top, #0088cc, #0077b3);
- background-image: linear-gradient(to bottom, #0088cc, #0077b3);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+ text-decoration: none;
+ color: #ffffff;
+ background-color: #0088cc;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
}
.dropdown-menu .active > a,
.dropdown-menu .active > a:hover {
- color: #ffffff;
- text-decoration: none;
- outline: 0;
- background-color: #0088cc;
- background-color: #0081c2;
- background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
- background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
- background-image: -o-linear-gradient(top, #0088cc, #0077b3);
- background-image: linear-gradient(to bottom, #0088cc, #0077b3);
- background-repeat: repeat-x;
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #0088cc;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
}
.dropdown-menu .disabled > a,
.dropdown-menu .disabled > a:hover {
- color: #999999;
+ color: #999999;
}
.dropdown-menu .disabled > a:hover {
- text-decoration: none;
- background-color: transparent;
- cursor: default;
+ text-decoration: none;
+ background-color: transparent;
+ cursor: default;
}
.open {
- *z-index: 1000;
+ *z-index: 1000;
}
.open > .dropdown-menu {
- display: block;
+ display: block;
}
.pull-right > .dropdown-menu {
- right: 0;
- left: auto;
+ right: 0;
+ left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
- border-top: 0;
- border-bottom: 4px solid #000000;
- content: "";
+ border-top: 0;
+ border-bottom: 4px solid #000000;
+ content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
- top: auto;
- bottom: 100%;
- margin-bottom: 1px;
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
}
.dropdown-submenu {
- position: relative;
+ position: relative;
}
.dropdown-submenu > .dropdown-menu {
- top: 0;
- left: 100%;
- margin-top: -6px;
- margin-left: -1px;
- -webkit-border-radius: 0 6px 6px 6px;
- -moz-border-radius: 0 6px 6px 6px;
- border-radius: 0 6px 6px 6px;
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ -webkit-border-radius: 0 6px 6px 6px;
+ -moz-border-radius: 0 6px 6px 6px;
+ border-radius: 0 6px 6px 6px;
}
.dropdown-submenu:hover > .dropdown-menu {
- display: block;
+ display: block;
}
.dropdown-submenu > a:after {
- display: block;
- content: " ";
- float: right;
- width: 0;
- height: 0;
- border-color: transparent;
- border-style: solid;
- border-width: 5px 0 5px 5px;
- border-left-color: #cccccc;
- margin-top: 5px;
- margin-right: -10px;
+ display: block;
+ content: " ";
+ float: right;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #cccccc;
+ margin-top: 5px;
+ margin-right: -10px;
}
.dropdown-submenu:hover > a:after {
- border-left-color: #ffffff;
+ border-left-color: #ffffff;
}
.dropdown .dropdown-menu .nav-header {
- padding-left: 20px;
- padding-right: 20px;
+ padding-left: 20px;
+ padding-right: 20px;
}
.typeahead {
- margin-top: 2px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ margin-top: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.accordion {
- margin-bottom: 20px;
+ margin-bottom: 20px;
}
.accordion-group {
- margin-bottom: 2px;
- border: 1px solid #e5e5e5;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
+ margin-bottom: 2px;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
}
.accordion-heading {
- border-bottom: 0;
+ border-bottom: 0;
}
.accordion-heading .accordion-toggle {
- display: block;
- padding: 8px 15px;
+ display: block;
+ padding: 8px 15px;
}
.accordion-toggle {
- cursor: pointer;
+ cursor: pointer;
}
.accordion-inner {
- padding: 9px 15px;
- border-top: 1px solid #e5e5e5;
+ padding: 9px 15px;
+ border-top: 1px solid #e5e5e5;
}
.carousel {
- position: relative;
- margin-bottom: 20px;
- line-height: 1;
+ position: relative;
+ margin-bottom: 20px;
+ line-height: 1;
}
.carousel-inner {
- overflow: hidden;
- width: 100%;
- position: relative;
+ overflow: hidden;
+ width: 100%;
+ position: relative;
}
.carousel .item {
- display: none;
- position: relative;
- -webkit-transition: 0.6s ease-in-out left;
- -moz-transition: 0.6s ease-in-out left;
- -o-transition: 0.6s ease-in-out left;
- transition: 0.6s ease-in-out left;
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -moz-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
}
.carousel .item > img {
- display: block;
- line-height: 1;
+ display: block;
+ line-height: 1;
}
.carousel .active,
.carousel .next,
.carousel .prev {
- display: block;
+ display: block;
}
.carousel .active {
- left: 0;
+ left: 0;
}
.carousel .next,
.carousel .prev {
- position: absolute;
- top: 0;
- width: 100%;
+ position: absolute;
+ top: 0;
+ width: 100%;
}
.carousel .next {
- left: 100%;
+ left: 100%;
}
.carousel .prev {
- left: -100%;
+ left: -100%;
}
.carousel .next.left,
.carousel .prev.right {
- left: 0;
+ left: 0;
}
.carousel .active.left {
- left: -100%;
+ left: -100%;
}
.carousel .active.right {
- left: 100%;
+ left: 100%;
}
.carousel-control {
- position: absolute;
- top: 40%;
- left: 15px;
- width: 40px;
- height: 40px;
- margin-top: -20px;
- font-size: 60px;
- font-weight: 100;
- line-height: 30px;
- color: #ffffff;
- text-align: center;
- background: #222222;
- border: 3px solid #ffffff;
- -webkit-border-radius: 23px;
- -moz-border-radius: 23px;
- border-radius: 23px;
- opacity: 0.5;
- filter: alpha(opacity=50);
+ position: absolute;
+ top: 40%;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ font-size: 60px;
+ font-weight: 100;
+ line-height: 30px;
+ color: #ffffff;
+ text-align: center;
+ background: #222222;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 23px;
+ -moz-border-radius: 23px;
+ border-radius: 23px;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
}
.carousel-control.right {
- left: auto;
- right: 15px;
+ left: auto;
+ right: 15px;
}
.carousel-control:hover {
- color: #ffffff;
- text-decoration: none;
- opacity: 0.9;
- filter: alpha(opacity=90);
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
}
.carousel-caption {
- position: absolute;
- left: 0;
- right: 0;
- bottom: 0;
- padding: 15px;
- background: #333333;
- background: rgba(0, 0, 0, 0.75);
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 15px;
+ background: #333333;
+ background: rgba(0, 0, 0, 0.75);
}
.carousel-caption h4,
.carousel-caption p {
- color: #ffffff;
- line-height: 20px;
+ color: #ffffff;
+ line-height: 20px;
}
.carousel-caption h4 {
- margin: 0 0 5px;
+ margin: 0 0 5px;
}
.carousel-caption p {
- margin-bottom: 0;
+ margin-bottom: 0;
}
.well {
- min-height: 20px;
- padding: 19px;
- margin-bottom: 20px;
- background-color: #f5f5f5;
- border: 1px solid #e3e3e3;
- -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);
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ -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);
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, 0.15);
}
.well-large {
- padding: 24px;
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+ padding: 24px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
}
.well-small {
- padding: 9px;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
+ padding: 9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
}
.close {
- float: right;
- font-size: 20px;
- font-weight: bold;
- line-height: 20px;
- color: #000000;
- text-shadow: 0 1px 0 #ffffff;
- opacity: 0.2;
- filter: alpha(opacity=20);
+ float: right;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
}
.close:hover {
- color: #000000;
- text-decoration: none;
- cursor: pointer;
- opacity: 0.4;
- filter: alpha(opacity=40);
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.4;
+ filter: alpha(opacity=40);
}
button.close {
- padding: 0;
- cursor: pointer;
- background: transparent;
- border: 0;
- -webkit-appearance: none;
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
}
.pull-right {
- float: right;
+ float: right;
}
.pull-left {
- float: left;
+ float: left;
}
.hide {
- display: none;
+ display: none;
}
.show {
- display: block;
+ display: block;
}
.invisible {
- visibility: hidden;
+ visibility: hidden;
}
.affix {
- position: fixed;
+ position: fixed;
}
.fade {
- opacity: 0;
- -webkit-transition: opacity 0.15s linear;
- -moz-transition: opacity 0.15s linear;
- -o-transition: opacity 0.15s linear;
- transition: opacity 0.15s linear;
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -moz-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
}
.fade.in {
- opacity: 1;
+ opacity: 1;
}
.collapse {
- position: relative;
- height: 0;
- overflow: hidden;
- -webkit-transition: height 0.35s ease;
- -moz-transition: height 0.35s ease;
- -o-transition: height 0.35s ease;
- transition: height 0.35s ease;
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ -moz-transition: height 0.35s ease;
+ -o-transition: height 0.35s ease;
+ transition: height 0.35s ease;
}
.collapse.in {
- height: auto;
+ height: auto;
}
.hidden {
- display: none;
- visibility: hidden;
+ display: none;
+ visibility: hidden;
}
.visible-phone {
- display: none !important;
+ display: none !important;
}
.visible-tablet {
- display: none !important;
+ display: none !important;
}
.hidden-desktop {
- display: none !important;
+ display: none !important;
}
.visible-desktop {
- display: inherit !important;
+ display: inherit !important;
}
@media (min-width: 768px) and (max-width: 979px) {
- .hidden-desktop {
- display: inherit !important;
- }
- .visible-desktop {
- display: none !important ;
- }
- .visible-tablet {
- display: inherit !important;
- }
- .hidden-tablet {
- display: none !important;
- }
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important ;
+ }
+ .visible-tablet {
+ display: inherit !important;
+ }
+ .hidden-tablet {
+ display: none !important;
+ }
}
@media (max-width: 767px) {
- .hidden-desktop {
- display: inherit !important;
- }
- .visible-desktop {
- display: none !important;
- }
- .visible-phone {
- display: inherit !important;
- }
- .hidden-phone {
- display: none !important;
- }
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important;
+ }
+ .visible-phone {
+ display: inherit !important;
+ }
+ .hidden-phone {
+ display: none !important;
+ }
}
@media (max-width: 767px) {
- body {
- padding-left: 20px;
- padding-right: 20px;
- }
- .navbar-fixed-top,
- .navbar-fixed-bottom,
- .navbar-static-top {
- margin-left: -20px;
- margin-right: -20px;
- }
- .container-fluid {
- padding: 0;
- }
- .dl-horizontal dt {
- float: none;
- clear: none;
- width: auto;
- text-align: left;
- }
- .dl-horizontal dd {
- margin-left: 0;
- }
- .container {
- width: auto;
- }
- .row-fluid {
- width: 100%;
- }
- .row,
- .thumbnails {
- margin-left: 0;
- }
- .thumbnails > li {
- float: none;
- margin-left: 0;
- }
- [class*="span"],
- .row-fluid [class*="span"] {
- float: none;
- display: block;
- width: 100%;
- margin-left: 0;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- }
- .span12,
- .row-fluid .span12 {
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- }
- .input-large,
- .input-xlarge,
- .input-xxlarge,
- input[class*="span"],
- select[class*="span"],
- textarea[class*="span"],
- .uneditable-input {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- }
- .input-prepend input,
- .input-append input,
- .input-prepend input[class*="span"],
- .input-append input[class*="span"] {
- display: inline-block;
- width: auto;
- }
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: 0;
- }
- .modal {
- position: fixed;
- top: 20px;
- left: 20px;
- right: 20px;
- width: auto;
- margin: 0;
- }
- .modal.fade.in {
- top: auto;
- }
+ body {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+ .navbar-fixed-top,
+ .navbar-fixed-bottom,
+ .navbar-static-top {
+ margin-left: -20px;
+ margin-right: -20px;
+ }
+ .container-fluid {
+ padding: 0;
+ }
+ .dl-horizontal dt {
+ float: none;
+ clear: none;
+ width: auto;
+ text-align: left;
+ }
+ .dl-horizontal dd {
+ margin-left: 0;
+ }
+ .container {
+ width: auto;
+ }
+ .row-fluid {
+ width: 100%;
+ }
+ .row,
+ .thumbnails {
+ margin-left: 0;
+ }
+ .thumbnails > li {
+ float: none;
+ margin-left: 0;
+ }
+ [class*="span"],
+ .row-fluid [class*="span"] {
+ float: none;
+ display: block;
+ width: 100%;
+ margin-left: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .span12,
+ .row-fluid .span12 {
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .input-large,
+ .input-xlarge,
+ .input-xxlarge,
+ input[class*="span"],
+ select[class*="span"],
+ textarea[class*="span"],
+ .uneditable-input {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .input-prepend input,
+ .input-append input,
+ .input-prepend input[class*="span"],
+ .input-append input[class*="span"] {
+ display: inline-block;
+ width: auto;
+ }
+ .controls-row [class*="span"] + [class*="span"] {
+ margin-left: 0;
+ }
+ .modal {
+ position: fixed;
+ top: 20px;
+ left: 20px;
+ right: 20px;
+ width: auto;
+ margin: 0;
+ }
+ .modal.fade.in {
+ top: auto;
+ }
}
@media (max-width: 480px) {
- .nav-collapse {
- -webkit-transform: translate3d(0, 0, 0);
- }
- .page-header h1 small {
- display: block;
- line-height: 20px;
- }
- input[type="checkbox"],
- input[type="radio"] {
- border: 1px solid #ccc;
- }
- .form-horizontal .control-label {
- float: none;
- width: auto;
- padding-top: 0;
- text-align: left;
- }
- .form-horizontal .controls {
- margin-left: 0;
- }
- .form-horizontal .control-list {
- padding-top: 0;
- }
- .form-horizontal .form-actions {
- padding-left: 10px;
- padding-right: 10px;
- }
- .modal {
- top: 10px;
- left: 10px;
- right: 10px;
- }
- .modal-header .close {
- padding: 10px;
- margin: -10px;
- }
- .carousel-caption {
- position: static;
- }
+ .nav-collapse {
+ -webkit-transform: translate3d(0, 0, 0);
+ }
+ .page-header h1 small {
+ display: block;
+ line-height: 20px;
+ }
+ input[type="checkbox"],
+ input[type="radio"] {
+ border: 1px solid #ccc;
+ }
+ .form-horizontal .control-label {
+ float: none;
+ width: auto;
+ padding-top: 0;
+ text-align: left;
+ }
+ .form-horizontal .controls {
+ margin-left: 0;
+ }
+ .form-horizontal .control-list {
+ padding-top: 0;
+ }
+ .form-horizontal .form-actions {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+ .modal {
+ top: 10px;
+ left: 10px;
+ right: 10px;
+ }
+ .modal-header .close {
+ padding: 10px;
+ margin: -10px;
+ }
+ .carousel-caption {
+ position: static;
+ }
}
@media (min-width: 768px) and (max-width: 979px) {
- .row {
- margin-left: -20px;
- *zoom: 1;
- }
- .row:before,
- .row:after {
- display: table;
- content: "";
- line-height: 0;
- }
- .row:after {
- clear: both;
- }
- [class*="span"] {
- float: left;
- min-height: 1px;
- margin-left: 20px;
- }
- .container,
- .navbar-static-top .container,
- .navbar-fixed-top .container,
- .navbar-fixed-bottom .container {
- width: 724px;
- }
- .span12 {
- width: 724px;
- }
- .span11 {
- width: 662px;
- }
- .span10 {
- width: 600px;
- }
- .span9 {
- width: 538px;
- }
- .span8 {
- width: 476px;
- }
- .span7 {
- width: 414px;
- }
- .span6 {
- width: 352px;
- }
- .span5 {
- width: 290px;
- }
- .span4 {
- width: 228px;
- }
- .span3 {
- width: 166px;
- }
- .span2 {
- width: 104px;
- }
- .span1 {
- width: 42px;
- }
- .offset12 {
- margin-left: 764px;
- }
- .offset11 {
- margin-left: 702px;
- }
- .offset10 {
- margin-left: 640px;
- }
- .offset9 {
- margin-left: 578px;
- }
- .offset8 {
- margin-left: 516px;
- }
- .offset7 {
- margin-left: 454px;
- }
- .offset6 {
- margin-left: 392px;
- }
- .offset5 {
- margin-left: 330px;
- }
- .offset4 {
- margin-left: 268px;
- }
- .offset3 {
- margin-left: 206px;
- }
- .offset2 {
- margin-left: 144px;
- }
- .offset1 {
- margin-left: 82px;
- }
- .row-fluid {
- width: 100%;
- *zoom: 1;
- }
- .row-fluid:before,
- .row-fluid:after {
- display: table;
- content: "";
- line-height: 0;
- }
- .row-fluid:after {
- clear: both;
- }
- .row-fluid [class*="span"] {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- float: left;
- margin-left: 2.7624309392265194%;
- *margin-left: 2.709239449864817%;
- }
- .row-fluid [class*="span"]:first-child {
- margin-left: 0;
- }
- .row-fluid .span12 {
- width: 100%;
- *width: 99.94680851063829%;
- }
- .row-fluid .span11 {
- width: 91.43646408839778%;
- *width: 91.38327259903608%;
- }
- .row-fluid .span10 {
- width: 82.87292817679558%;
- *width: 82.81973668743387%;
- }
- .row-fluid .span9 {
- width: 74.30939226519337%;
- *width: 74.25620077583166%;
- }
- .row-fluid .span8 {
- width: 65.74585635359117%;
- *width: 65.69266486422946%;
- }
- .row-fluid .span7 {
- width: 57.18232044198895%;
- *width: 57.12912895262725%;
- }
- .row-fluid .span6 {
- width: 48.61878453038674%;
- *width: 48.56559304102504%;
- }
- .row-fluid .span5 {
- width: 40.05524861878453%;
- *width: 40.00205712942283%;
- }
- .row-fluid .span4 {
- width: 31.491712707182323%;
- *width: 31.43852121782062%;
- }
- .row-fluid .span3 {
- width: 22.92817679558011%;
- *width: 22.87498530621841%;
- }
- .row-fluid .span2 {
- width: 14.3646408839779%;
- *width: 14.311449394616199%;
- }
- .row-fluid .span1 {
- width: 5.801104972375691%;
- *width: 5.747913483013988%;
- }
- .row-fluid .offset12 {
- margin-left: 105.52486187845304%;
- *margin-left: 105.41847889972962%;
- }
- .row-fluid .offset12:first-child {
- margin-left: 102.76243093922652%;
- *margin-left: 102.6560479605031%;
- }
- .row-fluid .offset11 {
- margin-left: 96.96132596685082%;
- *margin-left: 96.8549429881274%;
- }
- .row-fluid .offset11:first-child {
- margin-left: 94.1988950276243%;
- *margin-left: 94.09251204890089%;
- }
- .row-fluid .offset10 {
- margin-left: 88.39779005524862%;
- *margin-left: 88.2914070765252%;
- }
- .row-fluid .offset10:first-child {
- margin-left: 85.6353591160221%;
- *margin-left: 85.52897613729868%;
- }
- .row-fluid .offset9 {
- margin-left: 79.8342541436464%;
- *margin-left: 79.72787116492299%;
- }
- .row-fluid .offset9:first-child {
- margin-left: 77.07182320441989%;
- *margin-left: 76.96544022569647%;
- }
- .row-fluid .offset8 {
- margin-left: 71.2707182320442%;
- *margin-left: 71.16433525332079%;
- }
- .row-fluid .offset8:first-child {
- margin-left: 68.50828729281768%;
- *margin-left: 68.40190431409427%;
- }
- .row-fluid .offset7 {
- margin-left: 62.70718232044199%;
- *margin-left: 62.600799341718584%;
- }
- .row-fluid .offset7:first-child {
- margin-left: 59.94475138121547%;
- *margin-left: 59.838368402492065%;
- }
- .row-fluid .offset6 {
- margin-left: 54.14364640883978%;
- *margin-left: 54.037263430116376%;
- }
- .row-fluid .offset6:first-child {
- margin-left: 51.38121546961326%;
- *margin-left: 51.27483249088986%;
- }
- .row-fluid .offset5 {
- margin-left: 45.58011049723757%;
- *margin-left: 45.47372751851417%;
- }
- .row-fluid .offset5:first-child {
- margin-left: 42.81767955801105%;
- *margin-left: 42.71129657928765%;
- }
- .row-fluid .offset4 {
- margin-left: 37.01657458563536%;
- *margin-left: 36.91019160691196%;
- }
- .row-fluid .offset4:first-child {
- margin-left: 34.25414364640884%;
- *margin-left: 34.14776066768544%;
- }
- .row-fluid .offset3 {
- margin-left: 28.45303867403315%;
- *margin-left: 28.346655695309746%;
- }
- .row-fluid .offset3:first-child {
- margin-left: 25.69060773480663%;
- *margin-left: 25.584224756083227%;
- }
- .row-fluid .offset2 {
- margin-left: 19.88950276243094%;
- *margin-left: 19.783119783707537%;
- }
- .row-fluid .offset2:first-child {
- margin-left: 17.12707182320442%;
- *margin-left: 17.02068884448102%;
- }
- .row-fluid .offset1 {
- margin-left: 11.32596685082873%;
- *margin-left: 11.219583872105325%;
- }
- .row-fluid .offset1:first-child {
- margin-left: 8.56353591160221%;
- *margin-left: 8.457152932878806%;
- }
- input,
- textarea,
- .uneditable-input {
- margin-left: 0;
- }
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: 20px;
- }
- input.span12, textarea.span12, .uneditable-input.span12 {
- width: 710px;
- }
- input.span11, textarea.span11, .uneditable-input.span11 {
- width: 648px;
- }
- input.span10, textarea.span10, .uneditable-input.span10 {
- width: 586px;
- }
- input.span9, textarea.span9, .uneditable-input.span9 {
- width: 524px;
- }
- input.span8, textarea.span8, .uneditable-input.span8 {
- width: 462px;
- }
- input.span7, textarea.span7, .uneditable-input.span7 {
- width: 400px;
- }
- input.span6, textarea.span6, .uneditable-input.span6 {
- width: 338px;
- }
- input.span5, textarea.span5, .uneditable-input.span5 {
- width: 276px;
- }
- input.span4, textarea.span4, .uneditable-input.span4 {
- width: 214px;
- }
- input.span3, textarea.span3, .uneditable-input.span3 {
- width: 152px;
- }
- input.span2, textarea.span2, .uneditable-input.span2 {
- width: 90px;
- }
- input.span1, textarea.span1, .uneditable-input.span1 {
- width: 28px;
- }
+ .row {
+ margin-left: -20px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ content: "";
+ line-height: 0;
+ }
+ .row:after {
+ clear: both;
+ }
+ [class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
+ }
+ .container,
+ .navbar-static-top .container,
+ .navbar-fixed-top .container,
+ .navbar-fixed-bottom .container {
+ width: 724px;
+ }
+ .span12 {
+ width: 724px;
+ }
+ .span11 {
+ width: 662px;
+ }
+ .span10 {
+ width: 600px;
+ }
+ .span9 {
+ width: 538px;
+ }
+ .span8 {
+ width: 476px;
+ }
+ .span7 {
+ width: 414px;
+ }
+ .span6 {
+ width: 352px;
+ }
+ .span5 {
+ width: 290px;
+ }
+ .span4 {
+ width: 228px;
+ }
+ .span3 {
+ width: 166px;
+ }
+ .span2 {
+ width: 104px;
+ }
+ .span1 {
+ width: 42px;
+ }
+ .offset12 {
+ margin-left: 764px;
+ }
+ .offset11 {
+ margin-left: 702px;
+ }
+ .offset10 {
+ margin-left: 640px;
+ }
+ .offset9 {
+ margin-left: 578px;
+ }
+ .offset8 {
+ margin-left: 516px;
+ }
+ .offset7 {
+ margin-left: 454px;
+ }
+ .offset6 {
+ margin-left: 392px;
+ }
+ .offset5 {
+ margin-left: 330px;
+ }
+ .offset4 {
+ margin-left: 268px;
+ }
+ .offset3 {
+ margin-left: 206px;
+ }
+ .offset2 {
+ margin-left: 144px;
+ }
+ .offset1 {
+ margin-left: 82px;
+ }
+ .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .row-fluid:before,
+ .row-fluid:after {
+ display: table;
+ content: "";
+ line-height: 0;
+ }
+ .row-fluid:after {
+ clear: both;
+ }
+ .row-fluid [class*="span"] {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: left;
+ margin-left: 2.7624309392265194%;
+ *margin-left: 2.709239449864817%;
+ }
+ .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+ }
+ .row-fluid .span11 {
+ width: 91.43646408839778%;
+ *width: 91.38327259903608%;
+ }
+ .row-fluid .span10 {
+ width: 82.87292817679558%;
+ *width: 82.81973668743387%;
+ }
+ .row-fluid .span9 {
+ width: 74.30939226519337%;
+ *width: 74.25620077583166%;
+ }
+ .row-fluid .span8 {
+ width: 65.74585635359117%;
+ *width: 65.69266486422946%;
+ }
+ .row-fluid .span7 {
+ width: 57.18232044198895%;
+ *width: 57.12912895262725%;
+ }
+ .row-fluid .span6 {
+ width: 48.61878453038674%;
+ *width: 48.56559304102504%;
+ }
+ .row-fluid .span5 {
+ width: 40.05524861878453%;
+ *width: 40.00205712942283%;
+ }
+ .row-fluid .span4 {
+ width: 31.491712707182323%;
+ *width: 31.43852121782062%;
+ }
+ .row-fluid .span3 {
+ width: 22.92817679558011%;
+ *width: 22.87498530621841%;
+ }
+ .row-fluid .span2 {
+ width: 14.3646408839779%;
+ *width: 14.311449394616199%;
+ }
+ .row-fluid .span1 {
+ width: 5.801104972375691%;
+ *width: 5.747913483013988%;
+ }
+ .row-fluid .offset12 {
+ margin-left: 105.52486187845304%;
+ *margin-left: 105.41847889972962%;
+ }
+ .row-fluid .offset12:first-child {
+ margin-left: 102.76243093922652%;
+ *margin-left: 102.6560479605031%;
+ }
+ .row-fluid .offset11 {
+ margin-left: 96.96132596685082%;
+ *margin-left: 96.8549429881274%;
+ }
+ .row-fluid .offset11:first-child {
+ margin-left: 94.1988950276243%;
+ *margin-left: 94.09251204890089%;
+ }
+ .row-fluid .offset10 {
+ margin-left: 88.39779005524862%;
+ *margin-left: 88.2914070765252%;
+ }
+ .row-fluid .offset10:first-child {
+ margin-left: 85.6353591160221%;
+ *margin-left: 85.52897613729868%;
+ }
+ .row-fluid .offset9 {
+ margin-left: 79.8342541436464%;
+ *margin-left: 79.72787116492299%;
+ }
+ .row-fluid .offset9:first-child {
+ margin-left: 77.07182320441989%;
+ *margin-left: 76.96544022569647%;
+ }
+ .row-fluid .offset8 {
+ margin-left: 71.2707182320442%;
+ *margin-left: 71.16433525332079%;
+ }
+ .row-fluid .offset8:first-child {
+ margin-left: 68.50828729281768%;
+ *margin-left: 68.40190431409427%;
+ }
+ .row-fluid .offset7 {
+ margin-left: 62.70718232044199%;
+ *margin-left: 62.600799341718584%;
+ }
+ .row-fluid .offset7:first-child {
+ margin-left: 59.94475138121547%;
+ *margin-left: 59.838368402492065%;
+ }
+ .row-fluid .offset6 {
+ margin-left: 54.14364640883978%;
+ *margin-left: 54.037263430116376%;
+ }
+ .row-fluid .offset6:first-child {
+ margin-left: 51.38121546961326%;
+ *margin-left: 51.27483249088986%;
+ }
+ .row-fluid .offset5 {
+ margin-left: 45.58011049723757%;
+ *margin-left: 45.47372751851417%;
+ }
+ .row-fluid .offset5:first-child {
+ margin-left: 42.81767955801105%;
+ *margin-left: 42.71129657928765%;
+ }
+ .row-fluid .offset4 {
+ margin-left: 37.01657458563536%;
+ *margin-left: 36.91019160691196%;
+ }
+ .row-fluid .offset4:first-child {
+ margin-left: 34.25414364640884%;
+ *margin-left: 34.14776066768544%;
+ }
+ .row-fluid .offset3 {
+ margin-left: 28.45303867403315%;
+ *margin-left: 28.346655695309746%;
+ }
+ .row-fluid .offset3:first-child {
+ margin-left: 25.69060773480663%;
+ *margin-left: 25.584224756083227%;
+ }
+ .row-fluid .offset2 {
+ margin-left: 19.88950276243094%;
+ *margin-left: 19.783119783707537%;
+ }
+ .row-fluid .offset2:first-child {
+ margin-left: 17.12707182320442%;
+ *margin-left: 17.02068884448102%;
+ }
+ .row-fluid .offset1 {
+ margin-left: 11.32596685082873%;
+ *margin-left: 11.219583872105325%;
+ }
+ .row-fluid .offset1:first-child {
+ margin-left: 8.56353591160221%;
+ *margin-left: 8.457152932878806%;
+ }
+ input,
+ textarea,
+ .uneditable-input {
+ margin-left: 0;
+ }
+ .controls-row [class*="span"] + [class*="span"] {
+ margin-left: 20px;
+ }
+ input.span12, textarea.span12, .uneditable-input.span12 {
+ width: 710px;
+ }
+ input.span11, textarea.span11, .uneditable-input.span11 {
+ width: 648px;
+ }
+ input.span10, textarea.span10, .uneditable-input.span10 {
+ width: 586px;
+ }
+ input.span9, textarea.span9, .uneditable-input.span9 {
+ width: 524px;
+ }
+ input.span8, textarea.span8, .uneditable-input.span8 {
+ width: 462px;
+ }
+ input.span7, textarea.span7, .uneditable-input.span7 {
+ width: 400px;
+ }
+ input.span6, textarea.span6, .uneditable-input.span6 {
+ width: 338px;
+ }
+ input.span5, textarea.span5, .uneditable-input.span5 {
+ width: 276px;
+ }
+ input.span4, textarea.span4, .uneditable-input.span4 {
+ width: 214px;
+ }
+ input.span3, textarea.span3, .uneditable-input.span3 {
+ width: 152px;
+ }
+ input.span2, textarea.span2, .uneditable-input.span2 {
+ width: 90px;
+ }
+ input.span1, textarea.span1, .uneditable-input.span1 {
+ width: 28px;
+ }
}
@media (min-width: 1200px) {
- .row {
- margin-left: -30px;
- *zoom: 1;
- }
- .row:before,
- .row:after {
- display: table;
- content: "";
- line-height: 0;
- }
- .row:after {
- clear: both;
- }
- [class*="span"] {
- float: left;
- min-height: 1px;
- margin-left: 30px;
- }
- .container,
- .navbar-static-top .container,
- .navbar-fixed-top .container,
- .navbar-fixed-bottom .container {
- width: 1170px;
- }
- .span12 {
- width: 1170px;
- }
- .span11 {
- width: 1070px;
- }
- .span10 {
- width: 970px;
- }
- .span9 {
- width: 870px;
- }
- .span8 {
- width: 770px;
- }
- .span7 {
- width: 670px;
- }
- .span6 {
- width: 570px;
- }
- .span5 {
- width: 470px;
- }
- .span4 {
- width: 370px;
- }
- .span3 {
- width: 270px;
- }
- .span2 {
- width: 170px;
- }
- .span1 {
- width: 70px;
- }
- .offset12 {
- margin-left: 1230px;
- }
- .offset11 {
- margin-left: 1130px;
- }
- .offset10 {
- margin-left: 1030px;
- }
- .offset9 {
- margin-left: 930px;
- }
- .offset8 {
- margin-left: 830px;
- }
- .offset7 {
- margin-left: 730px;
- }
- .offset6 {
- margin-left: 630px;
- }
- .offset5 {
- margin-left: 530px;
- }
- .offset4 {
- margin-left: 430px;
- }
- .offset3 {
- margin-left: 330px;
- }
- .offset2 {
- margin-left: 230px;
- }
- .offset1 {
- margin-left: 130px;
- }
- .row-fluid {
- width: 100%;
- *zoom: 1;
- }
- .row-fluid:before,
- .row-fluid:after {
- display: table;
- content: "";
- line-height: 0;
- }
- .row-fluid:after {
- clear: both;
- }
- .row-fluid [class*="span"] {
- display: block;
- width: 100%;
- min-height: 30px;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
- float: left;
- margin-left: 2.564102564102564%;
- *margin-left: 2.5109110747408616%;
- }
- .row-fluid [class*="span"]:first-child {
- margin-left: 0;
- }
- .row-fluid .span12 {
- width: 100%;
- *width: 99.94680851063829%;
- }
- .row-fluid .span11 {
- width: 91.45299145299145%;
- *width: 91.39979996362975%;
- }
- .row-fluid .span10 {
- width: 82.90598290598291%;
- *width: 82.8527914166212%;
- }
- .row-fluid .span9 {
- width: 74.35897435897436%;
- *width: 74.30578286961266%;
- }
- .row-fluid .span8 {
- width: 65.81196581196582%;
- *width: 65.75877432260411%;
- }
- .row-fluid .span7 {
- width: 57.26495726495726%;
- *width: 57.21176577559556%;
- }
- .row-fluid .span6 {
- width: 48.717948717948715%;
- *width: 48.664757228587014%;
- }
- .row-fluid .span5 {
- width: 40.17094017094017%;
- *width: 40.11774868157847%;
- }
- .row-fluid .span4 {
- width: 31.623931623931625%;
- *width: 31.570740134569924%;
- }
- .row-fluid .span3 {
- width: 23.076923076923077%;
- *width: 23.023731587561375%;
- }
- .row-fluid .span2 {
- width: 14.52991452991453%;
- *width: 14.476723040552828%;
- }
- .row-fluid .span1 {
- width: 5.982905982905983%;
- *width: 5.929714493544281%;
- }
- .row-fluid .offset12 {
- margin-left: 105.12820512820512%;
- *margin-left: 105.02182214948171%;
- }
- .row-fluid .offset12:first-child {
- margin-left: 102.56410256410257%;
- *margin-left: 102.45771958537915%;
- }
- .row-fluid .offset11 {
- margin-left: 96.58119658119658%;
- *margin-left: 96.47481360247316%;
- }
- .row-fluid .offset11:first-child {
- margin-left: 94.01709401709402%;
- *margin-left: 93.91071103837061%;
- }
- .row-fluid .offset10 {
- margin-left: 88.03418803418803%;
- *margin-left: 87.92780505546462%;
- }
- .row-fluid .offset10:first-child {
- margin-left: 85.47008547008548%;
- *margin-left: 85.36370249136206%;
- }
- .row-fluid .offset9 {
- margin-left: 79.48717948717949%;
- *margin-left: 79.38079650845607%;
- }
- .row-fluid .offset9:first-child {
- margin-left: 76.92307692307693%;
- *margin-left: 76.81669394435352%;
- }
- .row-fluid .offset8 {
- margin-left: 70.94017094017094%;
- *margin-left: 70.83378796144753%;
- }
- .row-fluid .offset8:first-child {
- margin-left: 68.37606837606839%;
- *margin-left: 68.26968539734497%;
- }
- .row-fluid .offset7 {
- margin-left: 62.393162393162385%;
- *margin-left: 62.28677941443899%;
- }
- .row-fluid .offset7:first-child {
- margin-left: 59.82905982905982%;
- *margin-left: 59.72267685033642%;
- }
- .row-fluid .offset6 {
- margin-left: 53.84615384615384%;
- *margin-left: 53.739770867430444%;
- }
- .row-fluid .offset6:first-child {
- margin-left: 51.28205128205128%;
- *margin-left: 51.175668303327875%;
- }
- .row-fluid .offset5 {
- margin-left: 45.299145299145295%;
- *margin-left: 45.1927623204219%;
- }
- .row-fluid .offset5:first-child {
- margin-left: 42.73504273504273%;
- *margin-left: 42.62865975631933%;
- }
- .row-fluid .offset4 {
- margin-left: 36.75213675213675%;
- *margin-left: 36.645753773413354%;
- }
- .row-fluid .offset4:first-child {
- margin-left: 34.18803418803419%;
- *margin-left: 34.081651209310785%;
- }
- .row-fluid .offset3 {
- margin-left: 28.205128205128204%;
- *margin-left: 28.0987452264048%;
- }
- .row-fluid .offset3:first-child {
- margin-left: 25.641025641025642%;
- *margin-left: 25.53464266230224%;
- }
- .row-fluid .offset2 {
- margin-left: 19.65811965811966%;
- *margin-left: 19.551736679396257%;
- }
- .row-fluid .offset2:first-child {
- margin-left: 17.094017094017094%;
- *margin-left: 16.98763411529369%;
- }
- .row-fluid .offset1 {
- margin-left: 11.11111111111111%;
- *margin-left: 11.004728132387708%;
- }
- .row-fluid .offset1:first-child {
- margin-left: 8.547008547008547%;
- *margin-left: 8.440625568285142%;
- }
- input,
- textarea,
- .uneditable-input {
- margin-left: 0;
- }
- .controls-row [class*="span"] + [class*="span"] {
- margin-left: 30px;
- }
- input.span12, textarea.span12, .uneditable-input.span12 {
- width: 1156px;
- }
- input.span11, textarea.span11, .uneditable-input.span11 {
- width: 1056px;
- }
- input.span10, textarea.span10, .uneditable-input.span10 {
- width: 956px;
- }
- input.span9, textarea.span9, .uneditable-input.span9 {
- width: 856px;
- }
- input.span8, textarea.span8, .uneditable-input.span8 {
- width: 756px;
- }
- input.span7, textarea.span7, .uneditable-input.span7 {
- width: 656px;
- }
- input.span6, textarea.span6, .uneditable-input.span6 {
- width: 556px;
- }
- input.span5, textarea.span5, .uneditable-input.span5 {
- width: 456px;
- }
- input.span4, textarea.span4, .uneditable-input.span4 {
- width: 356px;
- }
- input.span3, textarea.span3, .uneditable-input.span3 {
- width: 256px;
- }
- input.span2, textarea.span2, .uneditable-input.span2 {
- width: 156px;
- }
- input.span1, textarea.span1, .uneditable-input.span1 {
- width: 56px;
- }
- .thumbnails {
- margin-left: -30px;
- }
- .thumbnails > li {
- margin-left: 30px;
- }
- .row-fluid .thumbnails {
- margin-left: 0;
- }
+ .row {
+ margin-left: -30px;
+ *zoom: 1;
+ }
+ .row:before,
+ .row:after {
+ display: table;
+ content: "";
+ line-height: 0;
+ }
+ .row:after {
+ clear: both;
+ }
+ [class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 30px;
+ }
+ .container,
+ .navbar-static-top .container,
+ .navbar-fixed-top .container,
+ .navbar-fixed-bottom .container {
+ width: 1170px;
+ }
+ .span12 {
+ width: 1170px;
+ }
+ .span11 {
+ width: 1070px;
+ }
+ .span10 {
+ width: 970px;
+ }
+ .span9 {
+ width: 870px;
+ }
+ .span8 {
+ width: 770px;
+ }
+ .span7 {
+ width: 670px;
+ }
+ .span6 {
+ width: 570px;
+ }
+ .span5 {
+ width: 470px;
+ }
+ .span4 {
+ width: 370px;
+ }
+ .span3 {
+ width: 270px;
+ }
+ .span2 {
+ width: 170px;t
+ }
+ .span1 {
+ width: 70px;
+ }
+ .offset12 {
+ margin-left: 1230px;
+ }
+ .offset11 {
+ margin-left: 1130px;
+ }
+ .offset10 {
+ margin-left: 1030px;
+ }
+ .offset9 {
+ margin-left: 930px;
+ }
+ .offset8 {
+ margin-left: 830px;
+ }
+ .offset7 {
+ margin-left: 730px;
+ }
+ .offset6 {
+ margin-left: 630px;
+ }
+ .offset5 {
+ margin-left: 530px;
+ }
+ .offset4 {
+ margin-left: 430px;
+ }
+ .offset3 {
+ margin-left: 330px;
+ }
+ .offset2 {
+ margin-left: 230px;
+ }
+ .offset1 {
+ margin-left: 130px;
+ }
+ .row-fluid {
+ width: 100%;
+ *zoom: 1;
+ }
+ .row-fluid:before,
+ .row-fluid:after {
+ display: table;
+ content: "";
+ line-height: 0;
+ }
+ .row-fluid:after {
+ clear: both;
+ }
+ .row-fluid [class*="span"] {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: left;
+ margin-left: 2.564102564102564%;
+ *margin-left: 2.5109110747408616%;
+ }
+ .row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+ }
+ .row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+ }
+ .row-fluid .span11 {
+ width: 91.45299145299145%;
+ *width: 91.39979996362975%;
+ }
+ .row-fluid .span10 {
+ width: 82.90598290598291%;
+ *width: 82.8527914166212%;
+ }
+ .row-fluid .span9 {
+ width: 74.35897435897436%;
+ *width: 74.30578286961266%;
+ }
+ .row-fluid .span8 {
+ width: 65.81196581196582%;
+ *width: 65.75877432260411%;
+ }
+ .row-fluid .span7 {
+ width: 57.26495726495726%;
+ *width: 57.21176577559556%;
+ }
+ .row-fluid .span6 {
+ width: 48.717948717948715%;
+ *width: 48.664757228587014%;
+ }
+ .row-fluid .span5 {
+ width: 40.17094017094017%;
+ *width: 40.11774868157847%;
+ }
+ .row-fluid .span4 {
+ width: 31.623931623931625%;
+ *width: 31.570740134569924%;
+ }
+ .row-fluid .span3 {
+ width: 23.076923076923077%;
+ *width: 23.023731587561375%;
+ }
+ .row-fluid .span2 {
+ width: 14.52991452991453%;
+ *width: 14.476723040552828%;
+ }
+ .row-fluid .span1 {
+ width: 5.982905982905983%;
+ *width: 5.929714493544281%;
+ }
+ .row-fluid .offset12 {
+ margin-left: 105.12820512820512%;
+ *margin-left: 105.02182214948171%;
+ }
+ .row-fluid .offset12:first-child {
+ margin-left: 102.56410256410257%;
+ *margin-left: 102.45771958537915%;
+ }
+ .row-fluid .offset11 {
+ margin-left: 96.58119658119658%;
+ *margin-left: 96.47481360247316%;
+ }
+ .row-fluid .offset11:first-child {
+ margin-left: 94.01709401709402%;
+ *margin-left: 93.91071103837061%;
+ }
+ .row-fluid .offset10 {
+ margin-left: 88.03418803418803%;
+ *margin-left: 87.92780505546462%;
+ }
+ .row-fluid .offset10:first-child {
+ margin-left: 85.47008547008548%;
+ *margin-left: 85.36370249136206%;
+ }
+ .row-fluid .offset9 {
+ margin-left: 79.48717948717949%;
+ *margin-left: 79.38079650845607%;
+ }
+ .row-fluid .offset9:first-child {
+ margin-left: 76.92307692307693%;
+ *margin-left: 76.81669394435352%;
+ }
+ .row-fluid .offset8 {
+ margin-left: 70.94017094017094%;
+ *margin-left: 70.83378796144753%;
+ }
+ .row-fluid .offset8:first-child {
+ margin-left: 68.37606837606839%;
+ *margin-left: 68.26968539734497%;
+ }
+ .row-fluid .offset7 {
+ margin-left: 62.393162393162385%;
+ *margin-left: 62.28677941443899%;
+ }
+ .row-fluid .offset7:first-child {
+ margin-left: 59.82905982905982%;
+ *margin-left: 59.72267685033642%;
+ }
+ .row-fluid .offset6 {
+ margin-left: 53.84615384615384%;
+ *margin-left: 53.739770867430444%;
+ }
+ .row-fluid .offset6:first-child {
+ margin-left: 51.28205128205128%;
+ *margin-left: 51.175668303327875%;
+ }
+ .row-fluid .offset5 {
+ margin-left: 45.299145299145295%;
+ *margin-left: 45.1927623204219%;
+ }
+ .row-fluid .offset5:first-child {
+ margin-left: 42.73504273504273%;
+ *margin-left: 42.62865975631933%;
+ }
+ .row-fluid .offset4 {
+ margin-left: 36.75213675213675%;
+ *margin-left: 36.645753773413354%;
+ }
+ .row-fluid .offset4:first-child {
+ margin-left: 34.18803418803419%;
+ *margin-left: 34.081651209310785%;
+ }
+ .row-fluid .offset3 {
+ margin-left: 28.205128205128204%;
+ *margin-left: 28.0987452264048%;
+ }
+ .row-fluid .offset3:first-child {
+ margin-left: 25.641025641025642%;
+ *margin-left: 25.53464266230224%;
+ }
+ .row-fluid .offset2 {
+ margin-left: 19.65811965811966%;
+ *margin-left: 19.551736679396257%;
+ }
+ .row-fluid .offset2:first-child {
+ margin-left: 17.094017094017094%;
+ *margin-left: 16.98763411529369%;
+ }
+ .row-fluid .offset1 {
+ margin-left: 11.11111111111111%;
+ *margin-left: 11.004728132387708%;
+ }
+ .row-fluid .offset1:first-child {
+ margin-left: 8.547008547008547%;
+ *margin-left: 8.440625568285142%;
+ }
+ input,
+ textarea,
+ .uneditable-input {
+ margin-left: 0;
+ }
+ .controls-row [class*="span"] + [class*="span"] {
+ margin-left: 30px;
+ }
+ input.span12, textarea.span12, .uneditable-input.span12 {
+ width: 1156px;
+ }
+ input.span11, textarea.span11, .uneditable-input.span11 {
+ width: 1056px;
+ }
+ input.span10, textarea.span10, .uneditable-input.span10 {
+ width: 956px;
+ }
+ input.span9, textarea.span9, .uneditable-input.span9 {
+ width: 856px;
+ }
+ input.span8, textarea.span8, .uneditable-input.span8 {
+ width: 756px;
+ }
+ input.span7, textarea.span7, .uneditable-input.span7 {
+ width: 656px;
+ }
+ input.span6, textarea.span6, .uneditable-input.span6 {
+ width: 556px;
+ }
+ input.span5, textarea.span5, .uneditable-input.span5 {
+ width: 456px;
+ }
+ input.span4, textarea.span4, .uneditable-input.span4 {
+ width: 356px;
+ }
+ input.span3, textarea.span3, .uneditable-input.span3 {
+ width: 256px;
+ }
+ input.span2, textarea.span2, .uneditable-input.span2 {
+ width: 156px;
+ }
+ input.span1, textarea.span1, .uneditable-input.span1 {
+ width: 56px;
+ }
+ .thumbnails {
+ margin-left: -30px;
+ }
+ .thumbnails > li {
+ margin-left: 30px;
+ }
+ .row-fluid .thumbnails {
+ margin-left: 0;
+ }
}
@media (max-width: 979px) {
- body {
- padding-top: 0;
- }
- .navbar-fixed-top,
- .navbar-fixed-bottom {
- position: static;
- }
- .navbar-fixed-top {
- margin-bottom: 20px;
- }
- .navbar-fixed-bottom {
- margin-top: 20px;
- }
- .navbar-fixed-top .navbar-inner,
- .navbar-fixed-bottom .navbar-inner {
- padding: 5px;
- }
- .navbar .container {
- width: auto;
- padding: 0;
- }
- .navbar .brand {
- padding-left: 10px;
- padding-right: 10px;
- margin: 0 0 0 -5px;
- }
- .nav-collapse {
- clear: both;
- }
- .nav-collapse .nav {
- float: none;
- margin: 0 0 10px;
- }
- .nav-collapse .nav > li {
- float: none;
- }
- .nav-collapse .nav > li > a {
- margin-bottom: 2px;
- }
- .nav-collapse .nav > .divider-vertical {
- display: none;
- }
- .nav-collapse .nav .nav-header {
- color: #777777;
- text-shadow: none;
- }
- .nav-collapse .nav > li > a,
- .nav-collapse .dropdown-menu a {
- padding: 9px 15px;
- font-weight: bold;
- color: #777777;
- -webkit-border-radius: 3px;
- -moz-border-radius: 3px;
- border-radius: 3px;
- }
- .nav-collapse .btn {
- padding: 4px 10px 4px;
- font-weight: normal;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- }
- .nav-collapse .dropdown-menu li + li a {
- margin-bottom: 2px;
- }
- .nav-collapse .nav > li > a:hover,
- .nav-collapse .dropdown-menu a:hover {
- background-color: #f2f2f2;
- }
- .navbar-inverse .nav-collapse .nav > li > a:hover,
- .navbar-inverse .nav-collapse .dropdown-menu a:hover {
- background-color: #111111;
- }
- .nav-collapse.in .btn-group {
- margin-top: 5px;
- padding: 0;
- }
- .nav-collapse .dropdown-menu {
- position: static;
- top: auto;
- left: auto;
- float: none;
- display: block;
- max-width: none;
- margin: 0 15px;
- padding: 0;
- background-color: transparent;
- border: none;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
- }
- .nav-collapse .dropdown-menu:before,
- .nav-collapse .dropdown-menu:after {
- display: none;
- }
- .nav-collapse .dropdown-menu .divider {
- display: none;
- }
- .nav-collapse .nav > li > .dropdown-menu:before,
- .nav-collapse .nav > li > .dropdown-menu:after {
- display: none;
- }
- .nav-collapse .navbar-form,
- .nav-collapse .navbar-search {
- float: none;
- padding: 10px 15px;
- margin: 10px 0;
- border-top: 1px solid #f2f2f2;
- border-bottom: 1px solid #f2f2f2;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
- }
- .navbar-inverse .nav-collapse .navbar-form,
- .navbar-inverse .nav-collapse .navbar-search {
- border-top-color: #111111;
- border-bottom-color: #111111;
- }
- .navbar .nav-collapse .nav.pull-right {
- float: none;
- margin-left: 0;
- }
- .nav-collapse,
- .nav-collapse.collapse {
- overflow: hidden;
- height: 0;
- }
- .navbar .btn-navbar {
- display: block;
- }
- .navbar-static .navbar-inner {
- padding-left: 10px;
- padding-right: 10px;
- }
+ body {
+ padding-top: 0;
+ }
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ position: static;
+ }
+ .navbar-fixed-top {
+ margin-bottom: 20px;
+ }
+ .navbar-fixed-bottom {
+ margin-top: 20px;
+ }
+ .navbar-fixed-top .navbar-inner,
+ .navbar-fixed-bottom .navbar-inner {
+ padding: 5px;
+ }
+ .navbar .container {
+ width: auto;
+ padding: 0;
+ }
+ .navbar .brand {
+ padding-left: 10px;
+ padding-right: 10px;
+ margin: 0 0 0 -5px;
+ }
+ .nav-collapse {
+ clear: both;
+ }
+ .nav-collapse .nav {
+ float: none;
+ margin: 0 0 10px;
+ }
+ .nav-collapse .nav > li {
+ float: none;
+ }
+ .nav-collapse .nav > li > a {
+ margin-bottom: 2px;
+ }
+ .nav-collapse .nav > .divider-vertical {
+ display: none;
+ }
+ .nav-collapse .nav .nav-header {
+ color: #777777;
+ text-shadow: none;
+ }
+ .nav-collapse .nav > li > a,
+ .nav-collapse .dropdown-menu a {
+ padding: 9px 15px;
+ font-weight: bold;
+ color: #777777;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+ }
+ .nav-collapse .btn {
+ padding: 4px 10px 4px;
+ font-weight: normal;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ }
+ .nav-collapse .dropdown-menu li + li a {
+ margin-bottom: 2px;
+ }
+ .nav-collapse .nav > li > a:hover,
+ .nav-collapse .dropdown-menu a:hover {
+ background-color: #f2f2f2;
+ }
+ .navbar-inverse .nav-collapse .nav > li > a:hover,
+ .navbar-inverse .nav-collapse .dropdown-menu a:hover {
+ background-color: #111111;
+ }
+ .nav-collapse.in .btn-group {
+ margin-top: 5px;
+ padding: 0;
+ }
+ .nav-collapse .dropdown-menu {
+ position: static;
+ top: auto;
+ left: auto;
+ float: none;
+ display: block;
+ max-width: none;
+ margin: 0 15px;
+ padding: 0;
+ background-color: transparent;
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ }
+ .nav-collapse .dropdown-menu:before,
+ .nav-collapse .dropdown-menu:after {
+ display: none;
+ }
+ .nav-collapse .dropdown-menu .divider {
+ display: none;
+ }
+ .nav-collapse .nav > li > .dropdown-menu:before,
+ .nav-collapse .nav > li > .dropdown-menu:after {
+ display: none;
+ }
+ .nav-collapse .navbar-form,
+ .nav-collapse .navbar-search {
+ float: none;
+ padding: 10px 15px;
+ margin: 10px 0;
+ border-top: 1px solid #f2f2f2;
+ border-bottom: 1px solid #f2f2f2;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
+ }
+ .navbar-inverse .nav-collapse .navbar-form,
+ .navbar-inverse .nav-collapse .navbar-search {
+ border-top-color: #111111;
+ border-bottom-color: #111111;
+ }
+ .navbar .nav-collapse .nav.pull-right {
+ float: none;
+ margin-left: 0;
+ }
+ .nav-collapse,
+ .nav-collapse.collapse {
+ overflow: hidden;
+ height: 0;
+ }
+ .navbar .btn-navbar {
+ display: block;
+ }
+ .navbar-static .navbar-inner {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
}
@media (min-width: 980px) {
- .nav-collapse.collapse {
- height: auto !important;
- overflow: visible !important;
- }
+ .nav-collapse.collapse {
+ height: auto !important;
+ overflow: visible !important;
+ }
}
diff --git a/idrop-web/web-app/css/bootstrap.css~ b/idrop-web/web-app/css/bootstrap.css~
new file mode 100755
index 0000000..e80a582
--- /dev/null
+++ b/idrop-web/web-app/css/bootstrap.css~
@@ -0,0 +1,5952 @@
+/*!
+ * Bootstrap v2.1.1
+ *
+ * Copyright 2012 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.
+ */
+.clearfix {
+ *zoom: 1;
+}
+.clearfix:before,
+.clearfix:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.clearfix:afterP {
+ clear: both;
+}
+.hide-text {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.input-block-level {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+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;
+}
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%;
+}
+a:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+a:hover,
+a:active {
+ outline: 0;
+}
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+sup {
+ top: -0.5em;
+}
+sub {
+ bottom: -0.25em;
+}
+img {
+ /* Responsive images (ensure images don't scale beyond their parents) */
+
+ max-width: 100%;
+ /* Part 1: Set a maxium relative to the parent */
+
+ width: auto\9;
+ /* IE7-8 need help adjusting responsive images */
+
+ height: auto;
+ /* Part 2: Scale the height according to the width, otherwise you get stretching */
+
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic;
+}
+#map_canvas img {
+ max-width: none;
+}
+button,
+input,
+select,
+textarea {
+ margin: 0;
+ font-size: 100%;
+ vertical-align: middle;
+}
+button,
+input {
+ *overflow: visible;
+ line-height: normal;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+button,
+input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ cursor: pointer;
+ -webkit-appearance: button;
+}
+input[type="search"] {
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none;
+}
+textarea {
+ overflow: auto;
+ vertical-align: top;
+}
+body {
+ margin: 0;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #333333;
+ background-color: #ffffff;
+}
+a {
+ color: #0088cc;
+ text-decoration: none;
+}
+a:hover {
+ color: #005580;
+ text-decoration: underline;
+}
+
+/*Paulina's changes start*/
+
+.delConditionBtn{
+ padding: 5px 20px;
+ background-color: transparent;
+ font-size: 14px;
+ color: #B80000;
+ text-shadow: 0 1px 0 #B80000;
+ opacity: 0.75;
+ border-color: #B80000;
+ border-style: solid;
+ border-width: 2px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+
+}
+
+.addConditionBtn{
+ padding: 5px;
+ margin-right: 70%;
+ background-color: transparent;
+ font-size: 14px;
+ font-weight: bold;
+ color: #336699;
+ text-shadow: 0 1px 0 #336699;
+ opacity: 0.75;
+ border-color: #336699;
+ border-style: solid;
+ border-width: 2px;
+ -webkit-border-radius: 10px;
+ -moz-border-radius: 10px;
+ border-radius: 10px;
+}
+
+.deleteNodeBtn{
+ margin-left: 85%;
+ font-size: 15px;
+ font-weight: bold;
+ color: #336699;
+ opacity: 0.75;
+ border-color: transparent;
+
+}
+.span2 > .metaHelp{
+ display: block;
+ background-color: #d5d5d5;
+ width: 100%;
+ font-size: 13px;
+ text-align: justify;
+ -webkit-border-radius: 8px;
+ -moz-border-radius: 8px;
+ border-radius: 8px;
+}
+
+.filterMetaTable {
+ min-width: 95%;
+ border-bottom: medium inset silver;
+ border-top: medium ridge silver;
+}
+
+.filterMetaTable th {
+ padding: 8px;
+ vertical-align: middle;
+}
+
+.filterMetaTable > tbody > tr {
+ vertical-align: middle;
+ border-top: thin solid silver;
+ padding: 10px;
+}
+.filterMetaTable >tbody > tr > td {
+
+ padding: 8px;
+ width:25%;
+}
+
+
+
+.labelRadio {
+ font-size: 13px;
+ display: inline;
+ color: #336699;
+ text-shadow: 0 1px 0 #336699;
+}
+
+
+
+.meta-header { /*header for input in filter form */
+
+ display: block;
+ padding: 3px;
+ width: 180px;
+ font-size: 12px;
+ font-weight: bold;
+ color: #336699;
+ background-color: #d5d5d5;
+ text-shadow: 0 1px 0 #336699;
+ text-transform: uppercase;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+
+.metaOperator {
+ width: 80px;
+}
+
+
+/*Paulina's changes end*/
+.img-rounded {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.img-polaroid {
+ padding: 4px;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
+}
+.img-circle {
+ -webkit-border-radius: 500px;
+ -moz-border-radius: 500px;
+ border-radius: 500px;
+}
+.row {
+ margin-left: -20px;
+ *zoom: 1;
+}
+.row:before,
+.row:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.row:after {
+ clear: both;
+}
+[class*="span"] {
+ float: left;
+ min-height: 1px;
+ margin-left: 20px;
+}
+.container,
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+.span12 {
+ width: 940px;
+}
+.span11 {
+ width: 860px;
+}
+.span10 {
+ width: 780px;
+}
+.span9 {
+ width: 700px;
+}
+.span8 {
+ width: 620px;
+}
+.span7 {
+ width: 540px;
+}
+.span6 {
+ width: 460px;
+}
+.span5 {
+ width: 380px;
+}
+.span4 {
+ width: 300px;
+}
+.span3 {
+ width: 220px;
+}
+.span2 {
+ width: 140px;
+}
+.span1 {
+ width: 60px;
+}
+.offset12 {
+ margin-left: 980px;
+}
+.offset11 {
+ margin-left: 900px;
+}
+.offset10 {
+ margin-left: 820px;
+}
+.offset9 {
+ margin-left: 740px;
+}
+.offset8 {
+ margin-left: 660px;
+}
+.offset7 {
+ margin-left: 580px;
+}
+.offset6 {
+ margin-left: 500px;
+}
+.offset5 {
+ margin-left: 420px;
+}
+.offset4 {
+ margin-left: 340px;
+}
+.offset3 {
+ margin-left: 260px;
+}
+.offset2 {
+ margin-left: 180px;
+}
+.offset1 {
+ margin-left: 100px;
+}
+.row-fluid {
+ width: 100%;
+ *zoom: 1;
+}
+.row-fluid:before,
+.row-fluid:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.row-fluid:after {
+ clear: both;
+}
+.row-fluid [class*="span"] {
+ display: block;
+ width: 100%;
+ min-height: 30px;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ float: left;
+ margin-left: 2.127659574468085%;
+ *margin-left: 2.074468085106383%;
+}
+.row-fluid [class*="span"]:first-child {
+ margin-left: 0;
+}
+.row-fluid .span12 {
+ width: 100%;
+ *width: 99.94680851063829%;
+}
+.row-fluid .span11 {
+ width: 91.48936170212765%;
+ *width: 91.43617021276594%;
+}
+.row-fluid .span10 {
+ width: 82.97872340425532%;
+ *width: 82.92553191489361%;
+}
+.row-fluid .span9 {
+ width: 74.46808510638297%;
+ *width: 74.41489361702126%;
+}
+.row-fluid .span8 {
+ width: 65.95744680851064%;
+ *width: 65.90425531914893%;
+}
+.row-fluid .span7 {
+ width: 57.44680851063829%;
+ *width: 57.39361702127659%;
+}
+.row-fluid .span6 {
+ width: 48.93617021276595%;
+ *width: 48.88297872340425%;
+}
+.row-fluid .span5 {
+ width: 40.42553191489362%;
+ *width: 40.37234042553192%;
+}
+.row-fluid .span4 {
+ width: 31.914893617021278%;
+ *width: 31.861702127659576%;
+}
+.row-fluid .span3 {
+ width: 23.404255319148934%;
+ *width: 23.351063829787233%;
+}
+.row-fluid .span2 {
+ width: 14.893617021276595%;
+ *width: 14.840425531914894%;
+}
+.row-fluid .span1 {
+ width: 6.382978723404255%;
+ *width: 6.329787234042553%;
+}
+.row-fluid .offset12 {
+ margin-left: 104.25531914893617%;
+ *margin-left: 104.14893617021275%;
+}
+.row-fluid .offset12:first-child {
+ margin-left: 102.12765957446808%;
+ *margin-left: 102.02127659574467%;
+}
+.row-fluid .offset11 {
+ margin-left: 95.74468085106382%;
+ *margin-left: 95.6382978723404%;
+}
+.row-fluid .offset11:first-child {
+ margin-left: 93.61702127659574%;
+ *margin-left: 93.51063829787232%;
+}
+.row-fluid .offset10 {
+ margin-left: 87.23404255319149%;
+ *margin-left: 87.12765957446807%;
+}
+.row-fluid .offset10:first-child {
+ margin-left: 85.1063829787234%;
+ *margin-left: 84.99999999999999%;
+}
+.row-fluid .offset9 {
+ margin-left: 78.72340425531914%;
+ *margin-left: 78.61702127659572%;
+}
+.row-fluid .offset9:first-child {
+ margin-left: 76.59574468085106%;
+ *margin-left: 76.48936170212764%;
+}
+.row-fluid .offset8 {
+ margin-left: 70.2127659574468%;
+ *margin-left: 70.10638297872339%;
+}
+.row-fluid .offset8:first-child {
+ margin-left: 68.08510638297872%;
+ *margin-left: 67.9787234042553%;
+}
+.row-fluid .offset7 {
+ margin-left: 61.70212765957446%;
+ *margin-left: 61.59574468085106%;
+}
+.row-fluid .offset7:first-child {
+ margin-left: 59.574468085106375%;
+ *margin-left: 59.46808510638297%;
+}
+.row-fluid .offset6 {
+ margin-left: 53.191489361702125%;
+ *margin-left: 53.085106382978715%;
+}
+.row-fluid .offset6:first-child {
+ margin-left: 51.063829787234035%;
+ *margin-left: 50.95744680851063%;
+}
+.row-fluid .offset5 {
+ margin-left: 44.68085106382979%;
+ *margin-left: 44.57446808510638%;
+}
+.row-fluid .offset5:first-child {
+ margin-left: 42.5531914893617%;
+ *margin-left: 42.4468085106383%;
+}
+.row-fluid .offset4 {
+ margin-left: 36.170212765957444%;
+ *margin-left: 36.06382978723405%;
+}
+.row-fluid .offset4:first-child {
+ margin-left: 34.04255319148936%;
+ *margin-left: 33.93617021276596%;
+}
+.row-fluid .offset3 {
+ margin-left: 27.659574468085104%;
+ *margin-left: 27.5531914893617%;
+}
+.row-fluid .offset3:first-child {
+ margin-left: 25.53191489361702%;
+ *margin-left: 25.425531914893618%;
+}
+.row-fluid .offset2 {
+ margin-left: 19.148936170212764%;
+ *margin-left: 19.04255319148936%;
+}
+.row-fluid .offset2:first-child {
+ margin-left: 17.02127659574468%;
+ *margin-left: 16.914893617021278%;
+}
+.row-fluid .offset1 {
+ margin-left: 10.638297872340425%;
+ *margin-left: 10.53191489361702%;
+}
+.row-fluid .offset1:first-child {
+ margin-left: 8.51063829787234%;
+ *margin-left: 8.404255319148938%;
+}
+[class*="span"].hide,
+.row-fluid [class*="span"].hide {
+ display: none;
+}
+[class*="span"].pull-right,
+.row-fluid [class*="span"].pull-right {
+ float: right;
+}
+.container {
+ margin-right: auto;
+ margin-left: auto;
+ *zoom: 1;
+}
+.container:before,
+.container:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.container:after {
+ clear: both;
+}
+.container-fluid {
+ padding-right: 20px;
+ padding-left: 20px;
+ *zoom: 1;
+}
+.container-fluid:before,
+.container-fluid:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.container-fluid:after {
+ clear: both;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 21px;
+ font-weight: 200;
+ line-height: 30px;
+}
+small {
+ font-size: 85%;
+}
+strong {
+ font-weight: bold;
+}
+em {
+ font-style: italic;
+}
+cite {
+ font-style: normal;
+}
+.muted {
+ color: #999999;
+}
+.text-warning {
+ color: #c09853;
+}
+.text-error {
+ color: #b94a48;
+}
+.text-info {
+ color: #3a87ad;
+}
+.text-success {
+ color: #468847;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 10px 0;
+ font-family: inherit;
+ font-weight: bold;
+ line-height: 1;
+ color: inherit;
+ text-rendering: optimizelegibility;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+ font-weight: normal;
+ line-height: 1;
+ color: #999999;
+}
+h1 {
+ font-size: 36px;
+ line-height: 40px;
+}
+h2 {
+ font-size: 30px;
+ line-height: 40px;
+}
+h3 {
+ font-size: 24px;
+ line-height: 40px;
+}
+h4 {
+ font-size: 18px;
+ line-height: 20px;
+}
+h5 {
+ font-size: 14px;
+ line-height: 20px;
+}
+h6 {
+ font-size: 12px;
+ line-height: 20px;
+}
+h1 small {
+ font-size: 24px;
+}
+h2 small {
+ font-size: 18px;
+}
+h3 small {
+ font-size: 14px;
+}
+h4 small {
+ font-size: 14px;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 20px 0 30px;
+ border-bottom: 1px solid #eeeeee;
+}
+ul,
+ol {
+ padding: 0;
+ margin: 0 0 10px 25px;
+}
+ul ul,
+ul ol,
+ol ol,
+ol ul {
+ margin-bottom: 0;
+}
+li {
+ line-height: 20px;
+}
+ul.unstyled,
+ol.unstyled {
+ margin-left: 0;
+ list-style: none;
+}
+dl {
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 20px;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 10px;
+}
+.dl-horizontal {
+ *zoom: 1;
+}
+.dl-horizontal:before,
+.dl-horizontal:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.dl-horizontal:after {
+ clear: both;
+}
+.dl-horizontal dt {
+ float: left;
+ width: 160px;
+ clear: left;
+ text-align: right;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+.dl-horizontal dd {
+ margin-left: 180px;
+}
+hr {
+ margin: 20px 0;
+ border: 0;
+ border-top: 1px solid #eeeeee;
+ border-bottom: 1px solid #ffffff;
+}
+abbr[title] {
+ cursor: help;
+ border-bottom: 1px dotted #999999;
+}
+abbr.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 0 0 0 15px;
+ margin: 0 0 20px;
+ border-left: 5px solid #eeeeee;tab
+}
+blockquote p {
+ margin-bottom: 0;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 25px;
+}
+blockquote small {
+ display: block;
+ line-height: 20px;
+ color: #999999;
+}
+blockquote small:before {
+ content: '\2014 \00A0';
+}
+blockquote.pull-right {
+ float: right;
+ padding-right: 15px;
+ padding-left: 0;
+ border-right: 5px solid #eeeeee;
+ border-left: 0;
+}
+blockquote.pull-right p,
+blockquote.pull-right small {
+ text-align: right;
+}
+blockquote.pull-right small:before {
+ content: '';
+}
+blockquote.pull-right small:after {
+ content: '\00A0 \2014';
+}
+q:before,
+q:after,
+blockquote:before,
+blockquote:after {
+ content: "";
+}
+address {
+ display: block;
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 20px;
+}
+code,
+pre {
+ padding: 0 3px 2px;
+ font-family: Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-size: 12px;
+ color: #333333;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+code {
+ padding: 2px 4px;
+ color: #d14;
+ background-color: #f7f7f9;
+ border: 1px solid #e1e1e8;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 20px;
+ word-break: break-all;
+ word-wrap: break-word;
+ white-space: pre;
+ white-space: pre-wrap;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.15);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+pre.prettyprint {
+ margin-bottom: 20px;
+}
+pre code {
+ padding: 0;
+ color: inherit;
+ background-color: transparent;
+ border: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.label,
+.badge {
+ font-size: 11.844px;
+ font-weight: bold;
+ line-height: 14px;
+ color: #ffffff;
+ vertical-align: baseline;
+ white-space: nowrap;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #999999;
+}
+.label {
+ padding: 1px 4px 2px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.badge {
+ padding: 1px 9px 2px;
+ -webkit-border-radius: 9px;
+ -moz-border-radius: 9px;
+ border-radius: 9px;
+}
+a.label:hover,
+a.badge:hover {
+ color: #ffffff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label-important,
+.badge-important {
+ background-color: #b94a48;
+}
+.label-important[href],
+.badge-important[href] {
+ background-color: #953b39;
+}
+.label-warning,
+.badge-warning {
+ background-color: #f89406;
+}
+.label-warning[href],
+.badge-warning[href] {
+ background-color: #c67605;
+}
+.label-success,
+.badge-success {
+ background-color: #468847;
+}
+.label-success[href],
+.badge-success[href] {
+ background-color: #356635;
+}
+.label-info,
+.badge-info {
+ background-color: #3a87ad;
+}
+.label-info[href],
+.badge-info[href] {
+ background-color: #2d6987;
+}
+.label-inverse,
+.badge-inverse {
+ background-color: #333333;
+}
+.label-inverse[href],
+.badge-inverse[href] {
+ background-color: #1a1a1a;
+}
+.btn .label,
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-mini .label,
+.btn-mini .badge {
+ top: 0;
+}
+table {
+ max-width: 100%;
+ background-color: transparent;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+
+.table {
+ width: 100%;
+ margin-bottom: 20px;
+}
+.table th,
+.table td {
+ padding: 8px;
+ line-height: 20px;
+ text-align: left;
+ vertical-align: top;
+ border-top: 1px solid #dddddd;
+}
+
+.table th {
+ font-weight: bold;
+}
+.table thead th {
+ vertical-align: bottom;
+}
+.table caption + thead tr:first-child th,
+.table caption + thead tr:first-child td,
+.table colgroup + thead tr:first-child th,
+.table colgroup + thead tr:first-child td,
+.table thead:first-child tr:first-child th,
+.table thead:first-child tr:first-child td {
+ border-top: 0;
+}
+.table tbody + tbody {
+ border-top: 2px solid #dddddd;
+}
+.table-condensed th,
+.table-condensed td {
+ padding: 4px 5px;
+}
+.table-bordered {
+ border: 1px solid #dddddd;
+ border-collapse: separate;
+ *border-collapse: collapse;
+ border-left: 0;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.table-bordered th,
+.table-bordered td {
+ border-left: 1px solid #dddddd;
+}
+.table-bordered caption + thead tr:first-child th,
+.table-bordered caption + tbody tr:first-child th,
+.table-bordered caption + tbody tr:first-child td,
+.table-bordered colgroup + thead tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child th,
+.table-bordered colgroup + tbody tr:first-child td,
+.table-bordered thead:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child th,
+.table-bordered tbody:first-child tr:first-child td {
+ border-top: 0;
+}
+.table-bordered thead:first-child tr:first-child th:first-child,
+.table-bordered tbody:first-child tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+.table-bordered thead:first-child tr:first-child th:last-child,
+.table-bordered tbody:first-child tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+}
+.table-bordered thead:last-child tr:last-child th:first-child,
+.table-bordered tbody:last-child tr:last-child td:first-child,
+.table-bordered tfoot:last-child 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;
+ -webkit-border-bottom-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+}
+.table-bordered thead:last-child tr:last-child th:last-child,
+.table-bordered tbody:last-child tr:last-child td:last-child,
+.table-bordered tfoot:last-child tr:last-child td:last-child {
+ -webkit-border-bottom-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+}
+.table-bordered caption + thead tr:first-child th:first-child,
+.table-bordered caption + tbody tr:first-child td:first-child,
+.table-bordered colgroup + thead tr:first-child th:first-child,
+.table-bordered colgroup + tbody tr:first-child td:first-child {
+ -webkit-border-top-left-radius: 4px;
+ border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+.table-bordered caption + thead tr:first-child th:last-child,
+.table-bordered caption + tbody tr:first-child td:last-child,
+.table-bordered colgroup + thead tr:first-child th:last-child,
+.table-bordered colgroup + tbody tr:first-child td:last-child {
+ -webkit-border-top-right-radius: 4px;
+ border-top-right-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+}
+.table-striped tbody tr:nth-child(odd) td,
+.table-striped tbody tr:nth-child(odd) th {
+ background-color: #f9f9f9;
+}
+.table-hover tbody tr:hover td,
+.table-hover tbody tr:hover th {
+ background-color: #f5f5f5;
+}
+table [class*=span],
+.row-fluid table [class*=span] {
+ display: table-cell;
+ float: none;
+ margin-left: 0;
+}
+.table .span1 {
+ float: none;
+ width: 44px;
+ margin-left: 0;
+}
+.table .span2 {
+ float: none;
+ width: 124px;
+ margin-left: 0;
+}
+.table .span3 {
+ float: none;
+ width: 204px;
+ margin-left: 0;
+}
+.table .span4 {
+ float: none;
+ width: 284px;
+ margin-left: 0;
+}
+.table .span5 {
+ float: none;
+ width: 364px;
+ margin-left: 0;
+}
+.table .span6 {
+ float: none;
+ width: 444px;
+ margin-left: 0;
+}
+.table .span7 {
+ float: none;
+ width: 524px;
+ margin-left: 0;
+}
+.table .span8 {
+ float: none;
+ width: 604px;
+ margin-left: 0;
+}
+.table .span9 {
+ float: none;
+ width: 684px;
+ margin-left: 0;
+}
+.table .span10 {
+ float: none;
+ width: 764px;
+ margin-left: 0;
+}
+.table .span11 {
+ float: none;
+ width: 844px;
+ margin-left: 0;
+}
+.table .span12 {
+ float: none;
+ width: 924px;
+ margin-left: 0;
+}
+.table .span13 {
+ float: none;
+ width: 1004px;
+ margin-left: 0;
+}
+.table .span14 {
+ float: none;
+ width: 1084px;
+ margin-left: 0;
+}
+.table .span15 {
+ float: none;
+ width: 1164px;
+ margin-left: 0;
+}
+.table .span16 {
+ float: none;
+ width: 1244px;
+ margin-left: 0;
+}
+.table .span17 {
+ float: none;
+ width: 1324px;
+ margin-left: 0;
+}
+.table .span18 {
+ float: none;
+ width: 1404px;
+ margin-left: 0;
+}
+.table .span19 {
+ float: none;
+ width: 1484px;
+ margin-left: 0;
+}
+.table .span20 {
+ float: none;
+ width: 1564px;
+ margin-left: 0;
+}
+.table .span21 {
+ float: none;
+ width: 1644px;
+ margin-left: 0;
+}
+.table .span22 {
+ float: none;
+ width: 1724px;
+ margin-left: 0;
+}
+.table .span23 {
+ float: none;
+ width: 1804px;
+ margin-left: 0;
+}
+.table .span24 {
+ float: none;
+ width: 1884px;
+ margin-left: 0;
+}
+.table tbody tr.success td {
+ background-color: #dff0d8;
+}
+.table tbody tr.error td {
+ background-color: #f2dede;
+}
+.table tbody tr.warning td {
+ background-color: #fcf8e3;
+}
+.table tbody tr.info td {
+ background-color: #d9edf7;
+}
+.table-hover tbody tr.success:hover td {
+ background-color: #d0e9c6;
+}
+.table-hover tbody tr.error:hover td {
+ background-color: #ebcccc;
+}
+.table-hover tbody tr.warning:hover td {
+ background-color: #faf2cc;
+}
+.table-hover tbody tr.info:hover td {
+ background-color: #c4e3f3;
+}
+form {
+ margin: 0 0 20px;
+}
+fieldset {
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: 40px;
+ color: #333333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+legend small {
+ font-size: 15px;
+ color: #999999;
+}
+label,
+input,
+button,
+select,
+textarea {
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+}
+input,
+button,
+select,
+textarea {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+}
+label {
+ display: block;
+ margin-bottom: 5px;
+}
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ display: inline-block;
+ height: 20px;
+ padding: 4px 6px;
+ margin-bottom: 9px;
+ font-size: 14px;
+ line-height: 20px;
+ color: #555555;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+input,
+textarea,
+.uneditable-input {
+ /*width: 206px;*/
+}
+textarea {
+ height: auto;
+}
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ background-color: #ffffff;
+ border: 1px solid #cccccc;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -webkit-transition: border linear .2s, box-shadow linear .2s;
+ -moz-transition: border linear .2s, box-shadow linear .2s;
+ -o-transition: border linear .2s, box-shadow linear .2s;
+ transition: border linear .2s, box-shadow linear .2s;
+}
+textarea:focus,
+input[type="text"]:focus,
+input[type="password"]:focus,
+input[type="datetime"]:focus,
+input[type="datetime-local"]:focus,
+input[type="date"]:focus,
+input[type="month"]:focus,
+input[type="time"]:focus,
+input[type="week"]:focus,
+input[type="number"]:focus,
+input[type="email"]:focus,
+input[type="url"]:focus,
+input[type="search"]:focus,
+input[type="tel"]:focus,
+input[type="color"]:focus,
+.uneditable-input:focus {
+ border-color: rgba(82, 168, 236, 0.8);
+ outline: 0;
+ outline: thin dotted \9;
+ /* IE6-9 */
+
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6);
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ *margin-top: 0;
+ /* IE7 */
+
+ margin-top: 1px \9;
+ /* IE8-9 */
+
+ line-height: normal;
+ cursor: pointer;
+}
+input[type="file"],
+input[type="image"],
+input[type="submit"],
+input[type="reset"],
+input[type="button"],
+input[type="radio"],
+input[type="checkbox"] {
+ width: auto;
+}
+select,
+input[type="file"] {
+ height: 30px;
+ /* In IE7, the height of the select element cannot be changed by height, only font-size */
+
+ *margin-top: 4px;
+ /* For IE7, add top margin to align select with labels */
+
+ line-height: 30px;
+}
+select {
+ width: 220px;
+ border: 1px solid #cccccc;
+ background-color: #ffffff;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+select:focus,
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.uneditable-input,
+.uneditable-textarea {
+ color: #999999;
+ background-color: #fcfcfc;
+ border-color: #cccccc;
+ -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;
+}
+.uneditable-input {
+ overflow: hidden;
+ white-space: nowrap;
+}
+.uneditable-textarea {
+ width: auto;
+ height: auto;
+}
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+ color: #999999;
+}
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+ color: #999999;
+}
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+ color: #999999;
+}
+.radio,
+.checkbox {
+ min-height: 18px;
+ padding-left: 18px;
+}
+.radio input[type="radio"],
+.checkbox input[type="checkbox"] {
+ float: left;
+ margin-left: -18px;
+}
+.controls > .radio:first-child,
+.controls > .checkbox:first-child {
+ padding-top: 5px;
+}
+.radio.inline,
+.checkbox.inline {
+ display: inline-block;
+ padding-top: 5px;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.radio.inline + .radio.inline,
+.checkbox.inline + .checkbox.inline {
+ margin-left: 10px;
+}
+.input-mini {
+ width: 60px;
+}
+.input-small {
+ width: 90px;
+}
+.input-medium {
+ width: 150px;
+}
+.input-large {
+ width: 210px;
+}
+.input-xlarge {
+ width: 270px;
+}
+.input-xxlarge {
+ width: 530px;
+}
+input[class*="span"],
+select[class*="span"],
+textarea[class*="span"],
+.uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"] {
+ float: none;
+ margin-left: 0;
+}
+.input-append input[class*="span"],
+.input-append .uneditable-input[class*="span"],
+.input-prepend input[class*="span"],
+.input-prepend .uneditable-input[class*="span"],
+.row-fluid input[class*="span"],
+.row-fluid select[class*="span"],
+.row-fluid textarea[class*="span"],
+.row-fluid .uneditable-input[class*="span"],
+.row-fluid .input-prepend [class*="span"],
+.row-fluid .input-append [class*="span"] {
+ display: inline-block;
+}
+input,
+textarea,
+.uneditable-input {
+ margin-left: 0;
+}
+.controls-row [class*="span"] + [class*="span"] {
+ margin-left: 20px;
+}
+input.span12, textarea.span12, .uneditable-input.span12 {
+ width: 926px;
+}
+input.span11, textarea.span11, .uneditable-input.span11 {
+ width: 846px;
+}
+input.span10, textarea.span10, .uneditable-input.span10 {
+ width: 766px;
+}
+input.span9, textarea.span9, .uneditable-input.span9 {
+ width: 686px;
+}
+input.span8, textarea.span8, .uneditable-input.span8 {
+ width: 606px;
+}
+input.span7, textarea.span7, .uneditable-input.span7 {
+ width: 526px;
+}
+input.span6, textarea.span6, .uneditable-input.span6 {
+ width: 446px;
+}
+input.span5, textarea.span5, .uneditable-input.span5 {
+ width: 366px;
+}
+input.span4, textarea.span4, .uneditable-input.span4 {
+ width: 286px;
+}
+input.span3, textarea.span3, .uneditable-input.span3 {
+ width: 206px;
+}
+input.span2, textarea.span2, .uneditable-input.span2 {
+ width: 126px;
+}
+input.span1, textarea.span1, .uneditable-input.span1 {
+ width: 46px;
+}
+.controls-row {
+ *zoom: 1;
+}
+.controls-row:before,
+.controls-row:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.controls-row:after {
+ clear: both;
+}
+.controls-row [class*="span"] {
+ float: left;
+}
+input[disabled],
+select[disabled],
+textarea[disabled],
+input[readonly],
+select[readonly],
+textarea[readonly] {
+ cursor: not-allowed;
+ background-color: #eeeeee;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"][readonly],
+input[type="checkbox"][readonly] {
+ background-color: transparent;
+}
+.control-group.warning > label,
+.control-group.warning .help-block,
+.control-group.warning .help-inline {
+ color: #c09853;
+}
+.control-group.warning .checkbox,
+.control-group.warning .radio,
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ color: #c09853;
+}
+.control-group.warning input,
+.control-group.warning select,
+.control-group.warning textarea {
+ border-color: #c09853;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.warning input:focus,
+.control-group.warning select:focus,
+.control-group.warning textarea:focus {
+ border-color: #a47e3c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e;
+}
+.control-group.warning .input-prepend .add-on,
+.control-group.warning .input-append .add-on {
+ color: #c09853;
+ background-color: #fcf8e3;
+ border-color: #c09853;
+}
+.control-group.error > label,
+.control-group.error .help-block,
+.control-group.error .help-inline {
+ color: #b94a48;
+}
+.control-group.error .checkbox,
+.control-group.error .radio,
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ color: #b94a48;
+}
+.control-group.error input,
+.control-group.error select,
+.control-group.error textarea {
+ border-color: #b94a48;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.error input:focus,
+.control-group.error select:focus,
+.control-group.error textarea:focus {
+ border-color: #953b39;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392;
+}
+.control-group.error .input-prepend .add-on,
+.control-group.error .input-append .add-on {
+ color: #b94a48;
+ background-color: #f2dede;
+ border-color: #b94a48;
+}
+.control-group.success > label,
+.control-group.success .help-block,
+.control-group.success .help-inline {
+ color: #468847;
+}
+.control-group.success .checkbox,
+.control-group.success .radio,
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ color: #468847;
+}
+.control-group.success input,
+.control-group.success select,
+.control-group.success textarea {
+ border-color: #468847;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.success input:focus,
+.control-group.success select:focus,
+.control-group.success textarea:focus {
+ border-color: #356635;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b;
+}
+.control-group.success .input-prepend .add-on,
+.control-group.success .input-append .add-on {
+ color: #468847;
+ background-color: #dff0d8;
+ border-color: #468847;
+}
+.control-group.info > label,
+.control-group.info .help-block,
+.control-group.info .help-inline {
+ color: #3a87ad;
+}
+.control-group.info .checkbox,
+.control-group.info .radio,
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+ color: #3a87ad;
+}
+.control-group.info input,
+.control-group.info select,
+.control-group.info textarea {
+ border-color: #3a87ad;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
+}
+.control-group.info input:focus,
+.control-group.info select:focus,
+.control-group.info textarea:focus {
+ border-color: #2d6987;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3;
+}
+.control-group.info .input-prepend .add-on,
+.control-group.info .input-append .add-on {
+ color: #3a87ad;
+ background-color: #d9edf7;
+ border-color: #3a87ad;
+}
+input:focus:required:invalid,
+textarea:focus:required:invalid,
+select:focus:required:invalid {
+ color: #b94a48;
+ border-color: #ee5f5b;
+}
+input:focus:required:invalid:focus,
+textarea:focus:required:invalid:focus,
+select:focus:required:invalid:focus {
+ border-color: #e9322d;
+ -webkit-box-shadow: 0 0 6px #f8b9b7;
+ -moz-box-shadow: 0 0 6px #f8b9b7;
+ box-shadow: 0 0 6px #f8b9b7;
+}
+.form-actions {
+ padding: 19px 20px 20px;
+ margin-top: 20px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #e5e5e5;
+ *zoom: 1;
+}
+.form-actions:before,
+.form-actions:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.form-actions:after {
+ clear: both;
+}
+.help-block,
+.help-inline {
+ color: #595959;
+}
+.help-block {
+ display: block;
+ margin-bottom: 10px;
+}
+.help-inline {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ vertical-align: middle;
+ padding-left: 5px;
+}
+.input-append,
+.input-prepend {
+ margin-bottom: 5px;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-append input,
+.input-prepend input,
+.input-append select,
+.input-prepend select,
+.input-append .uneditable-input,
+.input-prepend .uneditable-input {
+ position: relative;
+ margin-bottom: 0;
+ *margin-left: 0;
+ font-size: 14px;
+ vertical-align: top;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.input-append input:focus,
+.input-prepend input:focus,
+.input-append select:focus,
+.input-prepend select:focus,
+.input-append .uneditable-input:focus,
+.input-prepend .uneditable-input:focus {
+ z-index: 2;
+}
+.input-append .add-on,
+.input-prepend .add-on {
+ display: inline-block;
+ width: auto;
+ height: 20px;
+ min-width: 16px;
+ padding: 4px 5px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 20px;
+ text-align: center;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #eeeeee;
+ border: 1px solid #ccc;
+}
+.input-append .add-on,
+.input-prepend .add-on,
+.input-append .btn,
+.input-prepend .btn {
+ vertical-align: top;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.input-append .active,
+.input-prepend .active {
+ background-color: #a9dba9;
+ border-color: #46a546;
+}
+.input-prepend .add-on,
+.input-prepend .btn {
+ margin-right: -1px;
+}
+.input-prepend .add-on:first-child,
+.input-prepend .btn:first-child {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-append input,
+.input-append select,
+.input-append .uneditable-input {
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-append .add-on,
+.input-append .btn {
+ margin-left: -1px;
+}
+.input-append .add-on:last-child,
+.input-append .btn:last-child {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.input-prepend.input-append input,
+.input-prepend.input-append select,
+.input-prepend.input-append .uneditable-input {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.input-prepend.input-append .add-on:first-child,
+.input-prepend.input-append .btn:first-child {
+ margin-right: -1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.input-prepend.input-append .add-on:last-child,
+.input-prepend.input-append .btn:last-child {
+ margin-left: -1px;
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+input.search-query {
+ padding-right: 14px;
+ padding-right: 4px \9;
+ padding-left: 14px;
+ padding-left: 4px \9;
+ /* IE7-8 doesn't have border-radius, so don't indent the padding */
+
+ margin-bottom: 0;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+/* Allow for input prepend/append in search forms */
+.form-search .input-append .search-query,
+.form-search .input-prepend .search-query {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.form-search .input-append .search-query {
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
+}
+.form-search .input-append .btn {
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .search-query {
+ -webkit-border-radius: 0 14px 14px 0;
+ -moz-border-radius: 0 14px 14px 0;
+ border-radius: 0 14px 14px 0;
+}
+.form-search .input-prepend .btn {
+ -webkit-border-radius: 14px 0 0 14px;
+ -moz-border-radius: 14px 0 0 14px;
+ border-radius: 14px 0 0 14px;
+}
+.form-search input,
+.form-inline input,
+.form-horizontal input,
+.form-search textarea,
+.form-inline textarea,
+.form-horizontal textarea,
+.form-search select,
+.form-inline select,
+.form-horizontal select,
+.form-search .help-inline,
+.form-inline .help-inline,
+.form-horizontal .help-inline,
+.form-search .uneditable-input,
+.form-inline .uneditable-input,
+.form-horizontal .uneditable-input,
+.form-search .input-prepend,
+.form-inline .input-prepend,
+.form-horizontal .input-prepend,
+.form-search .input-append,
+.form-inline .input-append,
+.form-horizontal .input-append {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.form-search .hide,
+.form-inline .hide,
+.form-horizontal .hide {
+ display: none;
+}
+.form-search label,
+.form-inline label,
+.form-search .btn-group,
+.form-inline .btn-group {
+ display: inline-block;
+}
+.form-search .input-append,
+.form-inline .input-append,
+.form-search .input-prepend,
+.form-inline .input-prepend {
+ margin-bottom: 0;
+}
+.form-search .radio,
+.form-search .checkbox,
+.form-inline .radio,
+.form-inline .checkbox {
+ padding-left: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+}
+.form-search .radio input[type="radio"],
+.form-search .checkbox input[type="checkbox"],
+.form-inline .radio input[type="radio"],
+.form-inline .checkbox input[type="checkbox"] {
+ float: left;
+ margin-right: 3px;
+ margin-left: 0;
+}
+.control-group {
+ margin-bottom: 10px;
+}
+legend + .control-group {
+ margin-top: 20px;
+ -webkit-margin-top-collapse: separate;
+}
+.form-horizontal .control-group {
+ margin-bottom: 20px;
+ *zoom: 1;
+}
+.form-horizontal .control-group:before,
+.form-horizontal .control-group:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.form-horizontal .control-group:after {
+ clear: both;
+}
+.form-horizontal .control-label {
+ float: left;
+ width: 160px;
+ padding-top: 5px;
+ text-align: right;
+}
+.form-horizontal .controls {
+ *display: inline-block;
+ *padding-left: 20px;
+ margin-left: 180px;
+ *margin-left: 0;
+}
+.form-horizontal .controls:first-child {
+ *padding-left: 180px;
+}
+.form-horizontal .help-block {
+ margin-bottom: 0;
+}
+.form-horizontal input + .help-block,
+.form-horizontal select + .help-block,
+.form-horizontal textarea + .help-block {
+ margin-top: 10px;
+}
+.form-horizontal .form-actions {
+ padding-left: 180px;
+}
+.btn {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ padding: 4px 14px;
+ margin-bottom: 0;
+ font-size: 14px;
+ line-height: 20px;
+ *line-height: 20px;
+ text-align: center;
+ vertical-align: middle;
+ cursor: pointer;
+ color: #333333;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ background-color: #f5f5f5;
+ background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
+ background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
+ border-color: #e6e6e6 #e6e6e6 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #e6e6e6;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ border: 1px solid #bbbbbb;
+ *border: 0;
+ border-bottom-color: #a2a2a2;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ *margin-left: .3em;
+ -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);
+}
+.btn:hover,
+.btn:active,
+.btn.active,
+.btn.disabled,
+.btn[disabled] {
+ color: #333333;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+}
+.btn:active,
+.btn.active {
+ background-color: #cccccc \9;
+}
+.btn:first-child {
+ *margin-left: 0;
+}
+.btn:hover {
+ color: #333333;
+ text-decoration: none;
+ background-color: #e6e6e6;
+ *background-color: #d9d9d9;
+ /* Buttons in IE7 don't get borders, so darken on hover */
+
+ background-position: 0 -15px;
+ -webkit-transition: background-position 0.1s linear;
+ -moz-transition: background-position 0.1s linear;
+ -o-transition: background-position 0.1s linear;
+ transition: background-position 0.1s linear;
+}
+.btn:focus {
+ outline: thin dotted #333;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn.active,
+.btn:active {
+ background-color: #e6e6e6;
+ background-color: #d9d9d9 \9;
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.btn.disabled,
+.btn[disabled] {
+ cursor: default;
+ background-color: #e6e6e6;
+ background-image: none;
+ opacity: 0.65;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.btn-large {
+ padding: 9px 14px;
+ font-size: 16px;
+ line-height: normal;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.btn-large [class^="icon-"] {
+ margin-top: 2px;
+}
+.btn-small {
+ padding: 3px 9px;
+ font-size: 12px;
+ line-height: 18px;
+}
+.btn-small [class^="icon-"] {
+ margin-top: 0;
+}
+.btn-mini {
+ padding: 2px 6px;
+ font-size: 11px;
+ line-height: 17px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+ padding-left: 0;
+ padding-right: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.btn-primary.active,
+.btn-warning.active,
+.btn-danger.active,
+.btn-success.active,
+.btn-info.active,
+.btn-inverse.active {
+ color: rgba(255, 255, 255, 0.75);
+}
+.btn {
+ border-color: #c5c5c5;
+ border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
+}
+.btn-primary {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #006dcc;
+ background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+ background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+ background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
+ border-color: #0044cc #0044cc #002a80;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #0044cc;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-primary:hover,
+.btn-primary:active,
+.btn-primary.active,
+.btn-primary.disabled,
+.btn-primary[disabled] {
+ color: #ffffff;
+ background-color: #0044cc;
+ *background-color: #003bb3;
+}
+.btn-primary:active,
+.btn-primary.active {
+ background-color: #003399 \9;
+}
+.btn-warning {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+ border-color: #f89406 #f89406 #ad6704;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #f89406;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-warning:hover,
+.btn-warning:active,
+.btn-warning.active,
+.btn-warning.disabled,
+.btn-warning[disabled] {
+ color: #ffffff;
+ background-color: #f89406;
+ *background-color: #df8505;
+}
+.btn-warning:active,
+.btn-warning.active {
+ background-color: #c67605 \9;
+}
+.btn-danger {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #da4f49;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+ background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
+ border-color: #bd362f #bd362f #802420;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #bd362f;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-danger:hover,
+.btn-danger:active,
+.btn-danger.active,
+.btn-danger.disabled,
+.btn-danger[disabled] {
+ color: #ffffff;
+ background-color: #bd362f;
+ *background-color: #a9302a;
+}
+.btn-danger:active,
+.btn-danger.active {
+ background-color: #942a25 \9;
+}
+.btn-success {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #5bb75b;
+ background-image: -moz-linear-gradient(top, #62c462, #51a351);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+ background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+ background-image: -o-linear-gradient(top, #62c462, #51a351);
+ background-image: linear-gradient(to bottom, #62c462, #51a351);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
+ border-color: #51a351 #51a351 #387038;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #51a351;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-success:hover,
+.btn-success:active,
+.btn-success.active,
+.btn-success.disabled,
+.btn-success[disabled] {
+ color: #ffffff;
+ background-color: #51a351;
+ *background-color: #499249;
+}
+.btn-success:active,
+.btn-success.active {
+ background-color: #408140 \9;
+}
+.btn-info {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #49afcd;
+ background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
+ background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
+ border-color: #2f96b4 #2f96b4 #1f6377;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #2f96b4;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-info:hover,
+.btn-info:active,
+.btn-info.active,
+.btn-info.disabled,
+.btn-info[disabled] {
+ color: #ffffff;
+ background-color: #2f96b4;
+ *background-color: #2a85a0;
+}
+.btn-info:active,
+.btn-info.active {
+ background-color: #24748c \9;
+}
+.btn-inverse {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #363636;
+ background-image: -moz-linear-gradient(top, #444444, #222222);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
+ background-image: -webkit-linear-gradient(top, #444444, #222222);
+ background-image: -o-linear-gradient(top, #444444, #222222);
+ background-image: linear-gradient(to bottom, #444444, #222222);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
+ border-color: #222222 #222222 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #222222;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.btn-inverse:hover,
+.btn-inverse:active,
+.btn-inverse.active,
+.btn-inverse.disabled,
+.btn-inverse[disabled] {
+ color: #ffffff;
+ background-color: #222222;
+ *background-color: #151515;
+}
+.btn-inverse:active,
+.btn-inverse.active {
+ background-color: #080808 \9;
+}
+button.btn,
+input[type="submit"].btn {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+button.btn::-moz-focus-inner,
+input[type="submit"].btn::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+button.btn.btn-large,
+input[type="submit"].btn.btn-large {
+ *padding-top: 7px;
+ *padding-bottom: 7px;
+}
+button.btn.btn-small,
+input[type="submit"].btn.btn-small {
+ *padding-top: 3px;
+ *padding-bottom: 3px;
+}
+button.btn.btn-mini,
+input[type="submit"].btn.btn-mini {
+ *padding-top: 1px;
+ *padding-bottom: 1px;
+}
+.btn-link,
+.btn-link:active,
+.btn-link[disabled] {
+ background-color: transparent;
+ background-image: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link {
+ border-color: transparent;
+ cursor: pointer;
+ color: #0088cc;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.btn-link:hover {
+ color: #005580;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover {
+ color: #333333;
+ text-decoration: none;
+}
+[class^="icon-"],
+[class*=" icon-"] {
+ display: inline-block;
+ width: 14px;
+ height: 14px;
+ *margin-right: .3em;
+ line-height: 14px;
+ vertical-align: text-top;
+ background-image: url("../img/glyphicons-halflings.png");
+ background-position: 14px 14px;
+ background-repeat: no-repeat;
+ margin-top: 1px;
+}
+/* White icons with optional class, or on hover/active states of certain elements */
+.icon-white,
+.nav-tabs > .active > a > [class^="icon-"],
+.nav-tabs > .active > a > [class*=" icon-"],
+.nav-pills > .active > a > [class^="icon-"],
+.nav-pills > .active > a > [class*=" icon-"],
+.nav-list > .active > a > [class^="icon-"],
+.nav-list > .active > a > [class*=" icon-"],
+.navbar-inverse .nav > .active > a > [class^="icon-"],
+.navbar-inverse .nav > .active > a > [class*=" icon-"],
+.dropdown-menu > li > a:hover > [class^="icon-"],
+.dropdown-menu > li > a:hover > [class*=" icon-"],
+.dropdown-menu > .active > a > [class^="icon-"],
+.dropdown-menu > .active > a > [class*=" icon-"] {
+ background-image: url("../img/glyphicons-halflings-white.png");
+}
+.icon-glass {
+ background-position: 0 0;
+}
+.icon-music {
+ background-position: -24px 0;
+}
+.icon-search {
+ background-position: -48px 0;
+}
+.icon-envelope {
+ background-position: -72px 0;
+}
+.icon-heart {
+ background-position: -96px 0;
+}
+.icon-star {
+ background-position: -120px 0;
+}
+.icon-star-empty {
+ background-position: -144px 0;
+}
+.icon-user {
+ background-position: -168px 0;
+}
+.icon-film {
+ background-position: -192px 0;
+}
+.icon-th-large {
+ background-position: -216px 0;
+}
+.icon-th {
+ background-position: -240px 0;
+}
+.icon-th-list {
+ background-position: -264px 0;
+}
+.icon-ok {
+ background-position: -288px 0;
+}
+.icon-remove {
+ background-position: -312px 0;
+}
+.icon-zoom-in {
+ background-position: -336px 0;
+}
+.icon-zoom-out {
+ background-position: -360px 0;
+}
+.icon-off {
+ background-position: -384px 0;
+}
+.icon-signal {
+ background-position: -408px 0;
+}
+.icon-cog {
+ background-position: -432px 0;
+}
+.icon-trash {
+ background-position: -456px 0;
+}
+.icon-home {
+ background-position: 0 -24px;
+}
+.icon-file {
+ background-position: -24px -24px;
+}
+.icon-time {
+ background-position: -48px -24px;
+}
+.icon-road {
+ background-position: -72px -24px;
+}
+.icon-download-alt {
+ background-position: -96px -24px;
+}
+.icon-download {
+ background-position: -120px -24px;
+}
+.icon-upload {
+ background-position: -144px -24px;
+}
+.icon-inbox {
+ background-position: -168px -24px;
+}
+.icon-play-circle {
+ background-position: -192px -24px;
+}
+.icon-repeat {
+ background-position: -216px -24px;
+}
+.icon-refresh {
+ background-position: -240px -24px;
+}
+.icon-list-alt {
+ background-position: -264px -24px;
+}
+.icon-lock {
+ background-position: -287px -24px;
+}
+.icon-flag {
+ background-position: -312px -24px;
+}
+.icon-headphones {
+ background-position: -336px -24px;
+}
+.icon-volume-off {
+ background-position: -360px -24px;
+}
+.icon-volume-down {
+ background-position: -384px -24px;
+}
+.icon-volume-up {
+ background-position: -408px -24px;
+}
+.icon-qrcode {
+ background-position: -432px -24px;
+}
+.icon-barcode {
+ background-position: -456px -24px;
+}
+.icon-tag {
+ background-position: 0 -48px;
+}
+.icon-tags {
+ background-position: -25px -48px;
+}
+.icon-book {
+ background-position: -48px -48px;
+}
+.icon-bookmark {
+ background-position: -72px -48px;
+}
+.icon-print {
+ background-position: -96px -48px;
+}
+.icon-camera {
+ background-position: -120px -48px;
+}
+.icon-font {
+ background-position: -144px -48px;
+}
+.icon-bold {
+ background-position: -167px -48px;
+}
+.icon-italic {
+ background-position: -192px -48px;
+}
+.icon-text-height {
+ background-position: -216px -48px;
+}
+.icon-text-width {
+ background-position: -240px -48px;
+}
+.icon-align-left {
+ background-position: -264px -48px;
+}
+.icon-align-center {
+ background-position: -288px -48px;
+}
+.icon-align-right {
+ background-position: -312px -48px;
+}
+.icon-align-justify {
+ background-position: -336px -48px;
+}
+.icon-list {
+ background-position: -360px -48px;
+}
+.icon-indent-left {
+ background-position: -384px -48px;
+}
+.icon-indent-right {
+ background-position: -408px -48px;
+}
+.icon-facetime-video {
+ background-position: -432px -48px;
+}
+.icon-picture {
+ background-position: -456px -48px;
+}
+.icon-pencil {
+ background-position: 0 -72px;
+}
+.icon-map-marker {
+ background-position: -24px -72px;
+}
+.icon-adjust {
+ background-position: -48px -72px;
+}
+.icon-tint {
+ background-position: -72px -72px;
+}
+.icon-edit {
+ background-position: -96px -72px;
+}
+.icon-share {
+ background-position: -120px -72px;
+}
+.icon-check {
+ background-position: -144px -72px;
+}
+.icon-move {
+ background-position: -168px -72px;
+}
+.icon-step-backward {
+ background-position: -192px -72px;
+}
+.icon-fast-backward {
+ background-position: -216px -72px;
+}
+.icon-backward {
+ background-position: -240px -72px;
+}
+.icon-play {
+ background-position: -264px -72px;
+}
+.icon-pause {
+ background-position: -288px -72px;
+}
+.icon-stop {
+ background-position: -312px -72px;
+}
+.icon-forward {
+ background-position: -336px -72px;
+}
+.icon-fast-forward {
+ background-position: -360px -72px;
+}
+.icon-step-forward {
+ background-position: -384px -72px;
+}
+.icon-eject {
+ background-position: -408px -72px;
+}
+.icon-chevron-left {
+ background-position: -432px -72px;
+}
+.icon-chevron-right {
+ background-position: -456px -72px;
+}
+.icon-plus-sign {
+ background-position: 0 -96px;
+}
+.icon-minus-sign {
+ background-position: -24px -96px;
+}
+.icon-remove-sign {
+ background-position: -48px -96px;
+}
+.icon-ok-sign {
+ background-position: -72px -96px;
+}
+.icon-question-sign {
+ background-position: -96px -96px;
+}
+.icon-info-sign {
+ background-position: -120px -96px;
+}
+.icon-screenshot {
+ background-position: -144px -96px;
+}
+.icon-remove-circle {
+ background-position: -168px -96px;
+}
+.icon-ok-circle {
+ background-position: -192px -96px;
+}
+.icon-ban-circle {
+ background-position: -216px -96px;
+}
+.icon-arrow-left {
+ background-position: -240px -96px;
+}
+.icon-arrow-right {
+ background-position: -264px -96px;
+}
+.icon-arrow-up {
+ background-position: -289px -96px;
+}
+.icon-arrow-down {
+ background-position: -312px -96px;
+}
+.icon-share-alt {
+ background-position: -336px -96px;
+}
+.icon-resize-full {
+ background-position: -360px -96px;
+}
+.icon-resize-small {
+ background-position: -384px -96px;
+}
+.icon-plus {
+ background-position: -408px -96px;
+}
+.icon-minus {
+ background-position: -433px -96px;
+}
+.icon-asterisk {
+ background-position: -456px -96px;
+}
+.icon-exclamation-sign {
+ background-position: 0 -120px;
+}
+.icon-gift {
+ background-position: -24px -120px;
+}
+.icon-leaf {
+ background-position: -48px -120px;
+}
+.icon-fire {
+ background-position: -72px -120px;
+}
+.icon-eye-open {
+ background-position: -96px -120px;
+}
+.icon-eye-close {
+ background-position: -120px -120px;
+}
+.icon-warning-sign {
+ background-position: -144px -120px;
+}
+.icon-plane {
+ background-position: -168px -120px;
+}
+.icon-calendar {
+ background-position: -192px -120px;
+}
+.icon-random {
+ background-position: -216px -120px;
+ width: 16px;
+}
+.icon-comment {
+ background-position: -240px -120px;
+}
+.icon-magnet {
+ background-position: -264px -120px;
+}
+.icon-chevron-up {
+ background-position: -288px -120px;
+}
+.icon-chevron-down {
+ background-position: -313px -119px;
+}
+.icon-retweet {
+ background-position: -336px -120px;
+}
+.icon-shopping-cart {
+ background-position: -360px -120px;
+}
+.icon-folder-close {
+ background-position: -384px -120px;
+}
+.icon-folder-open {
+ background-position: -408px -120px;
+ width: 16px;
+}
+.icon-resize-vertical {
+ background-position: -432px -119px;
+}
+.icon-resize-horizontal {
+ background-position: -456px -118px;
+}
+.icon-hdd {
+ background-position: 0 -144px;
+}
+.icon-bullhorn {
+ background-position: -24px -144px;
+}
+.icon-bell {
+ background-position: -48px -144px;
+}
+.icon-certificate {
+ background-position: -72px -144px;
+}
+.icon-thumbs-up {
+ background-position: -96px -144px;
+}
+.icon-thumbs-down {
+ background-position: -120px -144px;
+}
+.icon-hand-right {
+ background-position: -144px -144px;
+}
+.icon-hand-left {
+ background-position: -168px -144px;
+}
+.icon-hand-up {
+ background-position: -192px -144px;
+}
+.icon-hand-down {
+ background-position: -216px -144px;
+}
+.icon-circle-arrow-right {
+ background-position: -240px -144px;
+}
+.icon-circle-arrow-left {
+ background-position: -264px -144px;
+}
+.icon-circle-arrow-up {
+ background-position: -288px -144px;
+}
+.icon-circle-arrow-down {
+ background-position: -312px -144px;
+}
+.icon-globe {
+ background-position: -336px -144px;
+}
+.icon-wrench {
+ background-position: -360px -144px;
+}
+.icon-tasks {
+ background-position: -384px -144px;
+}
+.icon-filter {
+ background-position: -408px -144px;
+}
+.icon-briefcase {
+ background-position: -432px -144px;
+}
+.icon-fullscreen {
+ background-position: -456px -144px;
+}
+.btn-group {
+ position: relative;
+ font-size: 0;
+ vertical-align: middle;
+ white-space: nowrap;
+ *margin-left: .3em;
+}
+.btn-group:first-child {
+ *margin-left: 0;
+}
+.btn-group + .btn-group {
+ margin-left: 5px;
+}
+.btn-toolbar {
+ font-size: 0;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.btn-toolbar .btn-group {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+.btn-toolbar .btn + .btn,
+.btn-toolbar .btn-group + .btn,
+.btn-toolbar .btn + .btn-group {
+ margin-left: 5px;
+}
+.btn-group > .btn {
+ position: relative;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.btn-group > .btn + .btn {
+ margin-left: -1px;
+}
+.btn-group > .btn,
+.btn-group > .dropdown-menu {
+ font-size: 14px;
+}
+.btn-group > .btn-mini {
+ font-size: 11px;
+}
+.btn-group > .btn-small {
+ font-size: 12px;
+}
+.btn-group > .btn-large {
+ font-size: 16px;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
+}
+.btn-group > .btn:last-child,
+.btn-group > .dropdown-toggle {
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
+}
+.btn-group > .btn.large:first-child {
+ margin-left: 0;
+ -webkit-border-top-left-radius: 6px;
+ -moz-border-radius-topleft: 6px;
+ border-top-left-radius: 6px;
+ -webkit-border-bottom-left-radius: 6px;
+ -moz-border-radius-bottomleft: 6px;
+ border-bottom-left-radius: 6px;
+}
+.btn-group > .btn.large:last-child,
+.btn-group > .large.dropdown-toggle {
+ -webkit-border-top-right-radius: 6px;
+ -moz-border-radius-topright: 6px;
+ border-top-right-radius: 6px;
+ -webkit-border-bottom-right-radius: 6px;
+ -moz-border-radius-bottomright: 6px;
+ border-bottom-right-radius: 6px;
+}
+.btn-group > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group > .btn:active,
+.btn-group > .btn.active {
+ z-index: 2;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-left: 8px;
+ padding-right: 8px;
+ -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ *padding-top: 5px;
+ *padding-bottom: 5px;
+}
+.btn-group > .btn-mini + .dropdown-toggle {
+ padding-left: 5px;
+ padding-right: 5px;
+ *padding-top: 2px;
+ *padding-bottom: 2px;
+}
+.btn-group > .btn-small + .dropdown-toggle {
+ *padding-top: 5px;
+ *padding-bottom: 4px;
+}
+.btn-group > .btn-large + .dropdown-toggle {
+ padding-left: 12px;
+ padding-right: 12px;
+ *padding-top: 7px;
+ *padding-bottom: 7px;
+}
+.btn-group.open .dropdown-toggle {
+ background-image: none;
+ -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+.btn-group.open .btn.dropdown-toggle {
+ background-color: #e6e6e6;
+}
+.btn-group.open .btn-primary.dropdown-toggle {
+ background-color: #0044cc;
+}
+.btn-group.open .btn-warning.dropdown-toggle {
+ background-color: #f89406;
+}
+.btn-group.open .btn-danger.dropdown-toggle {
+ background-color: #bd362f;
+}
+.btn-group.open .btn-success.dropdown-toggle {
+ background-color: #51a351;
+}
+.btn-group.open .btn-info.dropdown-toggle {
+ background-color: #2f96b4;
+}
+.btn-group.open .btn-inverse.dropdown-toggle {
+ background-color: #222222;
+}
+.btn .caret {
+ margin-top: 8px;
+ margin-left: 0;
+}
+.btn-mini .caret,
+.btn-small .caret,
+.btn-large .caret {
+ margin-top: 6px;
+}
+.btn-large .caret {
+ border-left-width: 5px;
+ border-right-width: 5px;
+ border-top-width: 5px;
+}
+.dropup .btn-large .caret {
+ border-bottom: 5px solid #000000;
+ border-top: 0;
+}
+.btn-primary .caret,
+.btn-warning .caret,
+.btn-danger .caret,
+.btn-info .caret,
+.btn-success .caret,
+.btn-inverse .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+.btn-group-vertical {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+}
+.btn-group-vertical .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.btn-group-vertical .btn + .btn {
+ margin-left: 0;
+ margin-top: -1px;
+}
+.btn-group-vertical .btn:first-child {
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+.btn-group-vertical .btn:last-child {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.btn-group-vertical .btn-large:first-child {
+ -webkit-border-radius: 6px 6px 0 0;
+ -moz-border-radius: 6px 6px 0 0;
+ border-radius: 6px 6px 0 0;
+}
+.btn-group-vertical .btn-large:last-child {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+.nav {
+ margin-left: 0;
+ margin-bottom: 20px;
+ list-style: none;
+}
+.nav > li > a {
+ display: block;
+}
+.nav > li > a:hover {
+ text-decoration: none;
+ background-color: #eeeeee;
+}
+.nav > .pull-right {
+ float: right;
+}
+.nav-header {
+ display: block;
+ padding: 3px 15px;
+ font-size: 11px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #999999;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ text-transform: uppercase;
+}
+.nav li + .nav-header {
+ margin-top: 9px;
+}
+.nav-list {
+ padding-left: 15px;
+ padding-right: 15px;
+ margin-bottom: 0;
+}
+.nav-list > li > a,
+.nav-list .nav-header {
+ margin-left: -15px;
+ margin-right: -15px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+}
+.nav-list > li > a {
+ padding: 3px 15px;
+}
+.nav-list > .active > a,
+.nav-list > .active > a:hover {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);
+ background-color: #0088cc;
+}
+.nav-list [class^="icon-"] {
+ margin-right: 2px;
+}
+.nav-list .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+.nav-tabs,
+.nav-pills {
+ *zoom: 1;
+}
+.nav-tabs:before,
+.nav-pills:before,
+.nav-tabs:after,
+.nav-pills:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.nav-tabs:after,
+.nav-pills:after {
+ clear: both;
+}
+.nav-tabs > li,
+.nav-pills > li {
+ float: left;
+}
+.nav-tabs > li > a,
+.nav-pills > li > a {
+ padding-right: 12px;
+ padding-left: 12px;
+ margin-right: 2px;
+ line-height: 14px;
+}
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ line-height: 20px;
+ border: 1px solid transparent;
+ -webkit-border-radius: 4px 4px 0 0;
+ -moz-border-radius: 4px 4px 0 0;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #dddddd;
+}
+.nav-tabs > .active > a,
+.nav-tabs > .active > a:hover {
+ color: #555555;
+ background-color: #ffffff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+ cursor: default;
+}
+.nav-pills > li > a {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ margin-top: 2px;
+ margin-bottom: 2px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border-radius: 5px;
+}
+.nav-pills > .active > a,
+.nav-pills > .active > a:hover {
+ color: #ffffff;
+ background-color: #0088cc;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li > a {
+ margin-right: 0;
+}
+.nav-tabs.nav-stacked {
+ border-bottom: 0;
+}
+.nav-tabs.nav-stacked > li > a {
+ border: 1px solid #ddd;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.nav-tabs.nav-stacked > li:first-child > a {
+ -webkit-border-top-right-radius: 4px;
+ -moz-border-radius-topright: 4px;
+ border-top-right-radius: 4px;
+ -webkit-border-top-left-radius: 4px;
+ -moz-border-radius-topleft: 4px;
+ border-top-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li:last-child > a {
+ -webkit-border-bottom-right-radius: 4px;
+ -moz-border-radius-bottomright: 4px;
+ border-bottom-right-radius: 4px;
+ -webkit-border-bottom-left-radius: 4px;
+ -moz-border-radius-bottomleft: 4px;
+ border-bottom-left-radius: 4px;
+}
+.nav-tabs.nav-stacked > li > a:hover {
+ border-color: #ddd;
+ z-index: 2;
+}
+.nav-pills.nav-stacked > li > a {
+ margin-bottom: 3px;
+}
+.nav-pills.nav-stacked > li:last-child > a {
+ margin-bottom: 1px;
+}
+.nav-tabs .dropdown-menu {
+ -webkit-border-radius: 0 0 6px 6px;
+ -moz-border-radius: 0 0 6px 6px;
+ border-radius: 0 0 6px 6px;
+}
+.nav-pills .dropdown-menu {
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.nav .dropdown-toggle .caret {
+ border-top-color: #0088cc;
+ border-bottom-color: #0088cc;
+ margin-top: 6px;
+}
+.nav .dropdown-toggle:hover .caret {
+ border-top-color: #005580;
+ border-bottom-color: #005580;
+}
+/* move down carets for tabs */
+.nav-tabs .dropdown-toggle .caret {
+ margin-top: 8px;
+}
+.nav .active .dropdown-toggle .caret {
+ border-top-color: #fff;
+ border-bottom-color: #fff;
+}
+.nav-tabs .active .dropdown-toggle .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+.nav > .dropdown.active > a:hover {
+ cursor: pointer;
+}
+.nav-tabs .open .dropdown-toggle,
+.nav-pills .open .dropdown-toggle,
+.nav > li.dropdown.open.active > a:hover {
+ color: #ffffff;
+ background-color: #999999;
+ border-color: #999999;
+}
+.nav li.dropdown.open .caret,
+.nav li.dropdown.open.active .caret,
+.nav li.dropdown.open a:hover .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.tabs-stacked .open > a:hover {
+ border-color: #999999;
+}
+.tabbable {
+ *zoom: 1;
+}
+.tabbable:before,
+.tabbable:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.tabbable:after {
+ clear: both;
+}
+.tab-content {
+ overflow: auto;
+}
+.tabs-below > .nav-tabs,
+.tabs-right > .nav-tabs,
+.tabs-left > .nav-tabs {
+ border-bottom: 0;
+}
+.tab-content > .tab-pane,
+.pill-content > .pill-pane {
+ display: none;
+}
+.tab-content > .active,
+.pill-content > .active {
+ display: block;
+}
+.tabs-below > .nav-tabs {
+ border-top: 1px solid #ddd;
+}
+.tabs-below > .nav-tabs > li {
+ margin-top: -1px;
+ margin-bottom: 0;
+}
+.tabs-below > .nav-tabs > li > a {
+ -webkit-border-radius: 0 0 4px 4px;
+ -moz-border-radius: 0 0 4px 4px;
+ border-radius: 0 0 4px 4px;
+}
+.tabs-below > .nav-tabs > li > a:hover {
+ border-bottom-color: transparent;
+ border-top-color: #ddd;
+}
+.tabs-below > .nav-tabs > .active > a,
+.tabs-below > .nav-tabs > .active > a:hover {
+ border-color: transparent #ddd #ddd #ddd;
+}
+.tabs-left > .nav-tabs > li,
+.tabs-right > .nav-tabs > li {
+ float: none;
+}
+.tabs-left > .nav-tabs > li > a,
+.tabs-right > .nav-tabs > li > a {
+ min-width: 74px;
+ margin-right: 0;
+ margin-bottom: 3px;
+}
+.tabs-left > .nav-tabs {
+ float: left;
+ margin-right: 19px;
+ border-right: 1px solid #ddd;
+}
+.tabs-left > .nav-tabs > li > a {
+ margin-right: -1px;
+ -webkit-border-radius: 4px 0 0 4px;
+ -moz-border-radius: 4px 0 0 4px;
+ border-radius: 4px 0 0 4px;
+}
+.tabs-left > .nav-tabs > li > a:hover {
+ border-color: #eeeeee #dddddd #eeeeee #eeeeee;
+}
+.tabs-left > .nav-tabs .active > a,
+.tabs-left > .nav-tabs .active > a:hover {
+ border-color: #ddd transparent #ddd #ddd;
+ *border-right-color: #ffffff;
+}
+.tabs-right > .nav-tabs {
+ float: right;
+ margin-left: 19px;
+ border-left: 1px solid #ddd;
+}
+.tabs-right > .nav-tabs > li > a {
+ margin-left: -1px;
+ -webkit-border-radius: 0 4px 4px 0;
+ -moz-border-radius: 0 4px 4px 0;
+ border-radius: 0 4px 4px 0;
+}
+.tabs-right > .nav-tabs > li > a:hover {
+ border-color: #eeeeee #eeeeee #eeeeee #dddddd;
+}
+.tabs-right > .nav-tabs .active > a,
+.tabs-right > .nav-tabs .active > a:hover {
+ border-color: #ddd #ddd #ddd transparent;
+ *border-left-color: #ffffff;
+}
+.nav > .disabled > a {
+ color: #999999;
+}
+.nav > .disabled > a:hover {
+ text-decoration: none;
+ background-color: transparent;
+ cursor: default;
+}
+.navbar {
+ overflow: visible;
+ margin-bottom: 20px;
+ color: #777777;
+ *position: relative;
+ *z-index: 2;
+}
+.navbar-inner {
+ min-height: 40px;
+ padding-left: 20px;
+ padding-right: 20px;
+ background-color: #fafafa;
+ background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2));
+ background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: -o-linear-gradient(top, #ffffff, #f2f2f2);
+ background-image: linear-gradient(to bottom, #ffffff, #f2f2f2);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
+ border: 1px solid #d4d4d4;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065);
+ *zoom: 1;
+}
+.navbar-inner:before,
+.navbar-inner:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.navbar-inner:after {
+ clear: both;
+}
+.navbar .container {
+ width: auto;
+}
+.nav-collapse.collapse {
+ height: auto;
+}
+.navbar .brand {
+ float: left;
+ display: block;
+ padding: 10px 20px 10px;
+ margin-left: -20px;
+ font-size: 20px;
+ font-weight: 200;
+ color: #777777;
+ text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .brand:hover {
+ text-decoration: none;
+}
+.navbar-text {
+ margin-bottom: 0;
+ line-height: 40px;
+}
+.navbar-link {
+ color: #777777;
+}
+.navbar-link:hover {
+ color: #333333;
+}
+.navbar .divider-vertical {
+ height: 40px;
+ margin: 0 9px;
+ border-left: 1px solid #f2f2f2;
+ border-right: 1px solid #ffffff;
+}
+.navbar .btn,
+.navbar .btn-group {
+ margin-top: 5px;
+}
+.navbar .btn-group .btn,
+.navbar .input-prepend .btn,
+.navbar .input-append .btn {
+ margin-top: 0;
+}
+.navbar-form {
+ margin-bottom: 0;
+ *zoom: 1;
+}
+.navbar-form:before,
+.navbar-form:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.navbar-form:after {
+ clear: both;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .radio,
+.navbar-form .checkbox {
+ margin-top: 5px;
+}
+.navbar-form input,
+.navbar-form select,
+.navbar-form .btn {
+ display: inline-block;
+ margin-bottom: 0;
+}
+.navbar-form input[type="image"],
+.navbar-form input[type="checkbox"],
+.navbar-form input[type="radio"] {
+ margin-top: 3px;
+}
+.navbar-form .input-append,
+.navbar-form .input-prepend {
+ margin-top: 6px;
+ white-space: nowrap;
+}
+.navbar-form .input-append input,
+.navbar-form .input-prepend input {
+ margin-top: 0;
+}
+.navbar-search {
+ position: relative;
+ float: left;
+ margin-top: 5px;
+ margin-bottom: 0;
+}
+.navbar-search .search-query {
+ margin-bottom: 0;
+ padding: 4px 14px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 13px;
+ font-weight: normal;
+ line-height: 1;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+.navbar-static-top {
+ position: static;
+ width: 100%;
+ margin-bottom: 0;
+}
+.navbar-static-top .navbar-inner {
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+ margin-bottom: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom .navbar-inner {
+ border-width: 1px 0 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-fixed-bottom .navbar-inner {
+ padding-left: 0;
+ padding-right: 0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+}
+.navbar-static-top .container,
+.navbar-fixed-top .container,
+.navbar-fixed-bottom .container {
+ width: 940px;
+}
+.navbar-fixed-top {
+ top: 0;
+}
+.navbar-fixed-top .navbar-inner,
+.navbar-static-top .navbar-inner {
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+}
+.navbar-fixed-bottom .navbar-inner {
+ -webkit-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 0 rgba(0, 0, 0, 0.1), 0 -1px 10px rgba(0, 0, 0, 0.1);
+}
+.navbar .nav {
+ position: relative;
+ left: 0;
+ display: block;
+ float: left;
+ margin: 0 10px 0 0;
+}
+.navbar .nav.pull-right {
+ float: right;
+ margin-right: 0;
+}
+.navbar .nav > li {
+ float: left;
+}
+.navbar .nav > li > a {
+ float: none;
+ padding: 10px 15px 10px;
+ color: #777777;
+ text-decoration: none;
+ text-shadow: 0 1px 0 #ffffff;
+}
+.navbar .nav .dropdown-toggle .caret {
+ margin-top: 8px;
+}
+.navbar .nav > li > a:focus,
+.navbar .nav > li > a:hover {
+ background-color: transparent;
+ color: #333333;
+ text-decoration: none;
+}
+.navbar .nav > .active > a,
+.navbar .nav > .active > a:hover,
+.navbar .nav > .active > a:focus {
+ color: #555555;
+ text-decoration: none;
+ background-color: #e5e5e5;
+ -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+ box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125);
+}
+.navbar .btn-navbar {
+ display: none;
+ float: right;
+ padding: 7px 10px;
+ margin-left: 5px;
+ margin-right: 5px;
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #ededed;
+ background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+ background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+ background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
+ border-color: #e5e5e5 #e5e5e5 #bfbfbf;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #e5e5e5;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
+}
+.navbar .btn-navbar:hover,
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active,
+.navbar .btn-navbar.disabled,
+.navbar .btn-navbar[disabled] {
+ color: #ffffff;
+ background-color: #e5e5e5;
+ *background-color: #d9d9d9;
+}
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+ background-color: #cccccc \9;
+}
+.navbar .btn-navbar .icon-bar {
+ display: block;
+ width: 18px;
+ height: 2px;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 1px;
+ -moz-border-radius: 1px;
+ border-radius: 1px;
+ -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25);
+}
+.btn-navbar .icon-bar + .icon-bar {
+ margin-top: 3px;
+}
+.navbar .nav > li > .dropdown-menu:before {
+ content: '';
+ display: inline-block;
+ border-left: 7px solid transparent;
+ border-right: 7px solid transparent;
+ border-bottom: 7px solid #ccc;
+ border-bottom-color: rgba(0, 0, 0, 0.2);
+ position: absolute;
+ top: -7px;
+ left: 9px;
+}
+.navbar .nav > li > .dropdown-menu:after {
+ content: '';
+ display: inline-block;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #ffffff;
+ position: absolute;
+ top: -6px;
+ left: 10px;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:before {
+ border-top: 7px solid #ccc;
+ border-top-color: rgba(0, 0, 0, 0.2);
+ border-bottom: 0;
+ bottom: -7px;
+ top: auto;
+}
+.navbar-fixed-bottom .nav > li > .dropdown-menu:after {
+ border-top: 6px solid #ffffff;
+ border-bottom: 0;
+ bottom: -6px;
+ top: auto;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle,
+.navbar .nav li.dropdown.active > .dropdown-toggle,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle {
+ background-color: #e5e5e5;
+ color: #555555;
+}
+.navbar .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: #777777;
+ border-bottom-color: #777777;
+}
+.navbar .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: #555555;
+ border-bottom-color: #555555;
+}
+.navbar .pull-right > li > .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right {
+ left: auto;
+ right: 0;
+}
+.navbar .pull-right > li > .dropdown-menu:before,
+.navbar .nav > li > .dropdown-menu.pull-right:before {
+ left: auto;
+ right: 12px;
+}
+.navbar .pull-right > li > .dropdown-menu:after,
+.navbar .nav > li > .dropdown-menu.pull-right:after {
+ left: auto;
+ right: 13px;
+}
+.navbar .pull-right > li > .dropdown-menu .dropdown-menu,
+.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
+ left: auto;
+ right: 100%;
+ margin-left: 0;
+ margin-right: -1px;
+ -webkit-border-radius: 6px 0 6px 6px;
+ -moz-border-radius: 6px 0 6px 6px;
+ border-radius: 6px 0 6px 6px;
+}
+.navbar-inverse {
+ color: #999999;
+}
+.navbar-inverse .navbar-inner {
+ background-color: #1b1b1b;
+ background-image: -moz-linear-gradient(top, #222222, #111111);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
+ background-image: -webkit-linear-gradient(top, #222222, #111111);
+ background-image: -o-linear-gradient(top, #222222, #111111);
+ background-image: linear-gradient(to bottom, #222222, #111111);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
+ border-color: #252525;
+}
+.navbar-inverse .brand,
+.navbar-inverse .nav > li > a {
+ color: #999999;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+}
+.navbar-inverse .brand:hover,
+.navbar-inverse .nav > li > a:hover {
+ color: #ffffff;
+}
+.navbar-inverse .nav > li > a:focus,
+.navbar-inverse .nav > li > a:hover {
+ background-color: transparent;
+ color: #ffffff;
+}
+.navbar-inverse .nav .active > a,
+.navbar-inverse .nav .active > a:hover,
+.navbar-inverse .nav .active > a:focus {
+ color: #ffffff;
+ background-color: #111111;
+}
+.navbar-inverse .navbar-link {
+ color: #999999;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #ffffff;
+}
+.navbar-inverse .divider-vertical {
+ border-left-color: #111111;
+ border-right-color: #222222;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle {
+ background-color: #111111;
+ color: #ffffff;
+}
+.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret {
+ border-top-color: #999999;
+ border-bottom-color: #999999;
+}
+.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret,
+.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret {
+ border-top-color: #ffffff;
+ border-bottom-color: #ffffff;
+}
+.navbar-inverse .navbar-search .search-query {
+ color: #ffffff;
+ background-color: #515151;
+ border-color: #111111;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15);
+ -webkit-transition: none;
+ -moz-transition: none;
+ -o-transition: none;
+ transition: none;
+}
+.navbar-inverse .navbar-search .search-query:-moz-placeholder {
+ color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:-ms-input-placeholder {
+ color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder {
+ color: #cccccc;
+}
+.navbar-inverse .navbar-search .search-query:focus,
+.navbar-inverse .navbar-search .search-query.focused {
+ padding: 5px 15px;
+ color: #333333;
+ text-shadow: 0 1px 0 #ffffff;
+ background-color: #ffffff;
+ border: 0;
+ -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);
+ outline: 0;
+}
+.navbar-inverse .btn-navbar {
+ color: #ffffff;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e0e0e;
+ background-image: -moz-linear-gradient(top, #151515, #040404);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+ background-image: -webkit-linear-gradient(top, #151515, #040404);
+ background-image: -o-linear-gradient(top, #151515, #040404);
+ background-image: linear-gradient(to bottom, #151515, #040404);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
+ border-color: #040404 #040404 #000000;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+ *background-color: #040404;
+ /* Darken IE7 buttons by default so they stand out more given they won't have borders */
+
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.navbar-inverse .btn-navbar:hover,
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active,
+.navbar-inverse .btn-navbar.disabled,
+.navbar-inverse .btn-navbar[disabled] {
+ color: #ffffff;
+ background-color: #040404;
+ *background-color: #000000;
+}
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+ background-color: #000000 \9;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin: 0 0 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.breadcrumb li {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ text-shadow: 0 1px 0 #ffffff;
+}
+.breadcrumb .divider {
+ padding: 0 5px;
+ color: #ccc;
+}
+.breadcrumb .active {
+ color: #999999;
+}
+.pagination {
+ height: 40px;
+ margin: 20px 0;
+}
+.pagination ul {
+ display: inline-block;
+ *display: inline;
+ /* IE7 inline-block hack */
+
+ *zoom: 1;
+ margin-left: 0;
+ margin-bottom: 0;
+ -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 ul > li {
+ display: inline;
+}
+.pagination ul > li > a,
+.pagination ul > li > span {
+ float: left;
+ padding: 0 14px;
+ line-height: 38px;
+ text-decoration: none;
+ background-color: #ffffff;
+ border: 1px solid #dddddd;
+ border-left-width: 0;
+}
+.pagination ul > li > a:hover,
+.pagination ul > .active > a,
+.pagination ul > .active > span {
+ background-color: #f5f5f5;
+}
+.pagination ul > .active > a,
+.pagination ul > .active > span {
+ color: #999999;
+ cursor: default;
+}
+.pagination ul > .disabled > span,
+.pagination ul > .disabled > a,
+.pagination ul > .disabled > a:hover {
+ color: #999999;
+ background-color: transparent;
+ cursor: default;
+}
+.pagination ul > li:first-child > a,
+.pagination ul > li:first-child > span {
+ border-left-width: 1px;
+ -webkit-border-radius: 3px 0 0 3px;
+ -moz-border-radius: 3px 0 0 3px;
+ border-radius: 3px 0 0 3px;
+}
+.pagination ul > li:last-child > a,
+.pagination ul > li:last-child > span {
+ -webkit-border-radius: 0 3px 3px 0;
+ -moz-border-radius: 0 3px 3px 0;
+ border-radius: 0 3px 3px 0;
+}
+.pagination-centered {
+ text-align: center;
+}
+.pagination-right {
+ text-align: right;
+}
+.pager {
+ margin: 20px 0;
+ list-style: none;
+ text-align: center;
+ *zoom: 1;
+}
+.pager:before,
+.pager:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.pager:after {
+ clear: both;
+}
+.pager li {
+ display: inline;
+}
+.pager a,
+.pager span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+}
+.pager a:hover {
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+.pager .next a,
+.pager .next span {
+ float: right;
+}
+.pager .previous a {
+ float: left;
+}
+.pager .disabled a,
+.pager .disabled a:hover,
+.pager .disabled span {
+ color: #999999;
+ background-color: #fff;
+ cursor: default;
+}
+.thumbnails {
+ margin-left: -20px;
+ list-style: none;
+ *zoom: 1;
+}
+.thumbnails:before,
+.thumbnails:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.thumbnails:after {
+ clear: both;
+}
+.row-fluid .thumbnails {
+ margin-left: 0;
+}
+.thumbnails > li {
+ float: left;
+ margin-bottom: 20px;
+ margin-left: 20px;
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ line-height: 20px;
+ border: 1px solid #ddd;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055);
+ -webkit-transition: all 0.2s ease-in-out;
+ -moz-transition: all 0.2s ease-in-out;
+ -o-transition: all 0.2s ease-in-out;
+ transition: all 0.2s ease-in-out;
+}
+a.thumbnail:hover {
+ border-color: #0088cc;
+ -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);
+}
+.thumbnail > img {
+ display: block;
+ max-width: 100%;
+ margin-left: auto;
+ margin-right: auto;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #555555;
+}
+.alert {
+ padding: 8px 35px 8px 14px;
+ margin-bottom: 20px;
+ text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5);
+ background-color: #fcf8e3;
+ border: 1px solid #fbeed5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ color: #c09853;
+}
+.alert h4 {
+ margin: 0;
+}
+.alert .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ line-height: 20px;
+}
+.alert-success {
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+ color: #468847;
+}
+.alert-danger,
+.alert-error {
+ background-color: #f2dede;
+ border-color: #eed3d7;
+ color: #b94a48;
+}
+.alert-info {
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+ color: #3a87ad;
+}
+.alert-block {
+ padding-top: 14px;
+ padding-bottom: 14px;
+}
+.alert-block > p,
+.alert-block > ul {
+ margin-bottom: 0;
+}
+.alert-block p + p {
+ margin-top: 5px;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+}
+to {
+ background-position: 0 0;
+}
+}
+@-moz-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+}
+to {
+ background-position: 0 0;
+}
+}
+@-ms-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+}
+to {
+ background-position: 0 0;
+}
+}
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 0 0;
+}
+to {
+ background-position: 40px 0;
+}
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+}
+to {
+ background-position: 0 0;
+}
+}
+.progress {
+ overflow: hidden;
+ height: 20px;
+ margin-bottom: 20px;
+ background-color: #f7f7f7;
+ background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));
+ background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
+ background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0);
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.progress .bar {
+ width: 0%;
+ height: 100%;
+ color: #ffffff;
+ float: left;
+ font-size: 12px;
+ text-align: center;
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ background-color: #0e90d2;
+ background-image: -moz-linear-gradient(top, #149bdf, #0480be);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));
+ background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
+ background-image: -o-linear-gradient(top, #149bdf, #0480be);
+ background-image: linear-gradient(to bottom, #149bdf, #0480be);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0);
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-transition: width 0.6s ease;
+ -moz-transition: width 0.6s ease;
+ -o-transition: width 0.6s ease;
+ transition: width 0.6s ease;
+}
+.progress .bar + .bar {
+ -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+ box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15);
+}
+.progress-striped .bar {
+ background-color: #149bdf;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ -moz-background-size: 40px 40px;
+ -o-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+.progress.active .bar {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -moz-animation: progress-bar-stripes 2s linear infinite;
+ -ms-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-danger .bar,
+.progress .bar-danger {
+ background-color: #dd514c;
+ background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));
+ background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: -o-linear-gradient(top, #ee5f5b, #c43c35);
+ background-image: linear-gradient(to bottom, #ee5f5b, #c43c35);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0);
+}
+.progress-danger.progress-striped .bar,
+.progress-striped .bar-danger {
+ background-color: #ee5f5b;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-success .bar,
+.progress .bar-success {
+ background-color: #5eb95e;
+ background-image: -moz-linear-gradient(top, #62c462, #57a957);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));
+ background-image: -webkit-linear-gradient(top, #62c462, #57a957);
+ background-image: -o-linear-gradient(top, #62c462, #57a957);
+ background-image: linear-gradient(to bottom, #62c462, #57a957);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0);
+}
+.progress-success.progress-striped .bar,
+.progress-striped .bar-success {
+ background-color: #62c462;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-info .bar,
+.progress .bar-info {
+ background-color: #4bb1cf;
+ background-image: -moz-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));
+ background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: -o-linear-gradient(top, #5bc0de, #339bb9);
+ background-image: linear-gradient(to bottom, #5bc0de, #339bb9);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0);
+}
+.progress-info.progress-striped .bar,
+.progress-striped .bar-info {
+ background-color: #5bc0de;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.progress-warning .bar,
+.progress .bar-warning {
+ background-color: #faa732;
+ background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+ background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+ background-image: -o-linear-gradient(top, #fbb450, #f89406);
+ background-image: linear-gradient(to bottom, #fbb450, #f89406);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
+}
+.progress-warning.progress-striped .bar,
+.progress-striped .bar-warning {
+ background-color: #fbb450;
+ background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
+}
+.hero-unit {
+ padding: 60px;
+ margin-bottom: 30px;
+ background-color: #eeeeee;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.hero-unit h1 {
+ margin-bottom: 0;
+ font-size: 60px;
+ line-height: 1;
+ color: inherit;
+ letter-spacing: -1px;
+}
+.hero-unit p {
+ font-size: 18px;
+ font-weight: 200;
+ line-height: 30px;
+ color: inherit;
+}
+.tooltip {
+ position: absolute;
+ z-index: 1030;
+ display: block;
+ visibility: visible;
+ padding: 5px;
+ font-size: 11px;
+ opacity: 0;
+ filter: alpha(opacity=0);
+}
+.tooltip.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.tooltip.top {
+ margin-top: -3px;
+}
+.tooltip.right {
+ margin-left: 3px;
+}
+.tooltip.bottom {
+ margin-top: 3px;
+}
+.tooltip.left {
+ margin-left: -3px;
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #ffffff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000000;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000000;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000000;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000000;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000000;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1010;
+ display: none;
+ width: 236px;
+ padding: 1px;
+ background-color: #ffffff;
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+}
+.popover.top {
+ margin-bottom: 10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-right: 10px;
+}
+.popover-title {
+ margin: 0;
+ padding: 8px 14px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 18px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ -webkit-border-radius: 5px 5px 0 0;
+ -moz-border-radius: 5px 5px 0 0;
+ border-radius: 5px 5px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover-content p,
+.popover-content ul,
+.popover-content ol {
+ margin-bottom: 0;
+}
+.popover .arrow,
+.popover .arrow:after {
+ position: absolute;
+ display: inline-block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover .arrow:after {
+ content: "";
+ z-index: -1;
+}
+.popover.top .arrow {
+ bottom: -10px;
+ left: 50%;
+ margin-left: -10px;
+ border-width: 10px 10px 0;
+ border-top-color: #ffffff;
+}
+.popover.top .arrow:after {
+ border-width: 11px 11px 0;
+ border-top-color: rgba(0, 0, 0, 0.25);
+ bottom: -1px;
+ left: -11px;
+}
+.popover.right .arrow {
+ top: 50%;
+ left: -10px;
+ margin-top: -10px;
+ border-width: 10px 10px 10px 0;
+ border-right-color: #ffffff;
+}
+.popover.right .arrow:after {
+ border-width: 11px 11px 11px 0;
+ border-right-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+ left: -1px;
+}
+.popover.bottom .arrow {
+ top: -10px;
+ left: 50%;
+ margin-left: -10px;
+ border-width: 0 10px 10px;
+ border-bottom-color: #ffffff;
+}
+.popover.bottom .arrow:after {
+ border-width: 0 11px 11px;
+ border-bottom-color: rgba(0, 0, 0, 0.25);
+ top: -1px;
+ left: -11px;
+}
+.popover.left .arrow {
+ top: 50%;
+ right: -10px;
+ margin-top: -10px;
+ border-width: 10px 0 10px 10px;
+ border-left-color: #ffffff;
+}
+.popover.left .arrow:after {
+ border-width: 11px 0 11px 11px;
+ border-left-color: rgba(0, 0, 0, 0.25);
+ bottom: -11px;
+ right: -1px;
+}
+.modal-open .modal .dropdown-menu {
+ z-index: 2050;
+}
+.modal-open .modal .dropdown.open {
+ *z-index: 2050;
+}
+.modal-open .modal .popover {
+ z-index: 2060;
+}
+.modal-open .modal .tooltip {
+ z-index: 2080;
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000000;
+}
+.modal-backdrop.fade {
+ opacity: 0;
+}
+.modal-backdrop,
+.modal-backdrop.fade.in {
+ opacity: 0.8;
+ filter: alpha(opacity=80);
+}
+.modal {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ z-index: 1050;
+ overflow: auto;
+ width: 560px;
+ margin: -250px 0 0 -280px;
+ 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.fade {
+ -webkit-transition: opacity .3s linear, top .3s ease-out;
+ -moz-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 {
+ padding: 9px 15px;
+ border-bottom: 1px solid #eee;
+}
+.modal-header .close {
+ margin-top: 2px;
+}
+.modal-header h3 {
+ margin: 0;
+ line-height: 30px;
+}
+.modal-body {
+ overflow-y: auto;
+ max-height: 400px;
+ padding: 15px;
+}
+.modal-form {
+ margin-bottom: 0;
+}
+.modal-footer {
+ padding: 14px 15px 15px;
+ margin-bottom: 0;
+ text-align: right;
+ background-color: #f5f5f5;
+ 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;
+}
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: "";
+ line-height: 0;
+}
+.modal-footer:after {
+ clear: both;
+}
+.modal-footer .btn + .btn {
+ margin-left: 5px;
+ margin-bottom: 0;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle {
+ *margin-bottom: -3px;
+}
+.dropdown-toggle:active,
+.open .dropdown-toggle {
+ outline: 0;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ vertical-align: top;
+ border-top: 4px solid #000000;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+ content: "";
+}
+.dropdown .caret {
+ margin-top: 8px;
+ margin-left: 2px;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ background-color: #ffffff;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+ *border-right-width: 2px;
+ *border-bottom-width: 2px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
+ -webkit-background-clip: padding-box;
+ -moz-background-clip: padding;
+ background-clip: padding-box;
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ *width: 100%;
+ height: 1px;
+ margin: 9px 1px;
+ *margin: -5px 0 5px;
+ overflow: hidden;
+ background-color: #e5e5e5;
+ border-bottom: 1px solid #ffffff;
+}
+.dropdown-menu a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 20px;
+ color: #333333;
+ white-space: nowrap;
+}
+.dropdown-menu li > a:hover,
+.dropdown-menu li > a:focus,
+.dropdown-submenu:hover > a {
+ text-decoration: none;
+ color: #ffffff;
+ background-color: #0088cc;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu .active > a,
+.dropdown-menu .active > a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ outline: 0;
+ background-color: #0088cc;
+ background-color: #0081c2;
+ background-image: -moz-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3));
+ background-image: -webkit-linear-gradient(top, #0088cc, #0077b3);
+ background-image: -o-linear-gradient(top, #0088cc, #0077b3);
+ background-image: linear-gradient(to bottom, #0088cc, #0077b3);
+ background-repeat: repeat-x;
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0);
+}
+.dropdown-menu .disabled > a,
+.dropdown-menu .disabled > a:hover {
+ color: #999999;
+}
+.dropdown-menu .disabled > a:hover {
+ text-decoration: none;
+ background-color: transparent;
+ cursor: default;
+}
+.open {
+ *z-index: 1000;
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ border-top: 0;
+ border-bottom: 4px solid #000000;
+ content: "";
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 1px;
+}
+.dropdown-submenu {
+ position: relative;
+}
+.dropdown-submenu > .dropdown-menu {
+ top: 0;
+ left: 100%;
+ margin-top: -6px;
+ margin-left: -1px;
+ -webkit-border-radius: 0 6px 6px 6px;
+ -moz-border-radius: 0 6px 6px 6px;
+ border-radius: 0 6px 6px 6px;
+}
+.dropdown-submenu:hover > .dropdown-menu {
+ display: block;
+}
+.dropdown-submenu > a:after {
+ display: block;
+ content: " ";
+ float: right;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #cccccc;
+ margin-top: 5px;
+ margin-right: -10px;
+}
+.dropdown-submenu:hover > a:after {
+ border-left-color: #ffffff;
+}
+.dropdown .dropdown-menu .nav-header {
+ padding-left: 20px;
+ padding-right: 20px;
+}
+.typeahead {
+ margin-top: 2px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.accordion {
+ margin-bottom: 20px;
+}
+.accordion-group {
+ margin-bottom: 2px;
+ border: 1px solid #e5e5e5;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+.accordion-heading {
+ border-bottom: 0;
+}
+.accordion-heading .accordion-toggle {
+ display: block;
+ padding: 8px 15px;
+}
+.accordion-toggle {
+ cursor: pointer;
+}
+.accordion-inner {
+ padding: 9px 15px;
+ border-top: 1px solid #e5e5e5;
+}
+.carousel {
+ position: relative;
+ margin-bottom: 20px;
+ line-height: 1;
+}
+.carousel-inner {
+ overflow: hidden;
+ width: 100%;
+ position: relative;
+}
+.carousel .item {
+ display: none;
+ position: relative;
+ -webkit-transition: 0.6s ease-in-out left;
+ -moz-transition: 0.6s ease-in-out left;
+ -o-transition: 0.6s ease-in-out left;
+ transition: 0.6s ease-in-out left;
+}
+.carousel .item > img {
+ display: block;
+ line-height: 1;
+}
+.carousel .active,
+.carousel .next,
+.carousel .prev {
+ display: block;
+}
+.carousel .active {
+ left: 0;
+}
+.carousel .next,
+.carousel .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel .next {
+ left: 100%;
+}
+.carousel .prev {
+ left: -100%;
+}
+.carousel .next.left,
+.carousel .prev.right {
+ left: 0;
+}
+.carousel .active.left {
+ left: -100%;
+}
+.carousel .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 40%;
+ left: 15px;
+ width: 40px;
+ height: 40px;
+ margin-top: -20px;
+ font-size: 60px;
+ font-weight: 100;
+ line-height: 30px;
+ color: #ffffff;
+ text-align: center;
+ background: #222222;
+ border: 3px solid #ffffff;
+ -webkit-border-radius: 23px;
+ -moz-border-radius: 23px;
+ border-radius: 23px;
+ opacity: 0.5;
+ filter: alpha(opacity=50);
+}
+.carousel-control.right {
+ left: auto;
+ right: 15px;
+}
+.carousel-control:hover {
+ color: #ffffff;
+ text-decoration: none;
+ opacity: 0.9;
+ filter: alpha(opacity=90);
+}
+.carousel-caption {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ padding: 15px;
+ background: #333333;
+ background: rgba(0, 0, 0, 0.75);
+}
+.carousel-caption h4,
+.carousel-caption p {
+ color: #ffffff;
+ line-height: 20px;
+}
+.carousel-caption h4 {
+ margin: 0 0 5px;
+}
+.carousel-caption p {
+ margin-bottom: 0;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ -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);
+}
+.well-large {
+ padding: 24px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.well-small {
+ padding: 9px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+.close {
+ float: right;
+ font-size: 20px;
+ font-weight: bold;
+ line-height: 20px;
+ color: #000000;
+ text-shadow: 0 1px 0 #ffffff;
+ opacity: 0.2;
+ filter: alpha(opacity=20);
+}
+.close:hover {
+ color: #000000;
+ text-decoration: none;
+ cursor: pointer;
+ opacity: 0.4;
+ filter: alpha(opacity=40);
+}
+button.close {
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+ -webkit-appearance: none;
+}
+.pull-right {
+ float: right;
+}
+.pull-left {
+ float: left;
+}
+.hide {
+ display: none;
+}
+.show {
+ display: block;
+}
+.invisible {
+ visibility: hidden;
+}
+.affix {
+ position: fixed;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity 0.15s linear;
+ -moz-transition: opacity 0.15s linear;
+ -o-transition: opacity 0.15s linear;
+ transition: opacity 0.15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition: height 0.35s ease;
+ -moz-transition: height 0.35s ease;
+ -o-transition: height 0.35s ease;
+ transition: height 0.35s ease;
+}
+.collapse.in {
+ height: auto;
+}
+.hidden {
+ display: none;
+ visibility: hidden;
+}
+.visible-phone {
+ display: none !important;
+}
+.visible-tablet {
+ display: none !important;
+}
+.hidden-desktop {
+ display: none !important;
+}
+.visible-desktop {
+ display: inherit !important;
+}
+@media (min-width: 768px) and (max-width: 979px) {
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important ;
+ }
+ .visible-tablet {
+ display: inherit !important;
+ }
+ .hidden-tablet {
+ display: none !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-desktop {
+ display: inherit !important;
+ }
+ .visible-desktop {
+ display: none !important;
+ }
+ .visible-phone {
+ display: inherit !important;
+ }
+ .hidden-phone {
+ display: none !important;
+ }
+}
+@media (max-width: 767px) {
+ body {
+ padding-left: 20px;
+ padding-right: 20px;
+ }
+ .navbar-fixed-top,
+ .navbar-fixed-bottom,
+ .navbar-static-top {
+ margin-left: -20px;
+ margin-right: -20px;
+ }
+ .container-fluid {
+ padding: 0;
+ }
+ .dl-horizontal dt {
+ float: none;
+ clear: none;
+ width: auto;
+ text-align: left;
+ }
+ .dl-horizontal dd {
+ margin-left: 0;
+ }
+ .container {
+ width: auto;
+ }
+ .row-fluid {
+ width: 100%;
+ }
+ .row,
+ .thumbnails {
+ margin-left: 0;
+ }
+ .thumbnails > li {
+ float: none;
+ margin-left: 0;
+ }
+ [class*="span"],
+ .row-fluid [class*="span"] {
+ float: none;
+ display: block;
+ width: 100%;
+ margin-left: 0;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .span12,
+ .row-fluid .span12 {
+ width: 100%;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ }
+ .input-large,
+ .input-xlarge,
+ .input-xxlarge,
+ input[class*="span"],