Descriptive title tags
Descriptive title tags

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.lambdacomplex.contractdashboard</groupId> <groupId>org.lambdacomplex.contractdashboard</groupId>
<artifactId>neo4jimporter</artifactId> <artifactId>neo4jimporter</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.neo4j</groupId> <groupId>org.neo4j</groupId>
<artifactId>neo4j</artifactId> <artifactId>neo4j</artifactId>
<version>1.6.1</version> <version>1.8.RC1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>postgresql</groupId> <groupId>postgresql</groupId>
<artifactId>postgresql</artifactId> <artifactId>postgresql</artifactId>
<version>9.0-801.jdbc4</version> <version>9.0-801.jdbc4</version>
</dependency> </dependency>
</dependencies> </dependencies>
</project> </project>
   
import java.io.ObjectInputStream.GetField;  
import java.math.BigInteger;  
import java.security.MessageDigest;  
import java.security.NoSuchAlgorithmException;  
import java.sql.Connection; import java.sql.Connection;
import java.sql.DriverManager; import java.sql.DriverManager;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.SQLWarning; import java.sql.SQLWarning;
import java.sql.Statement; import java.sql.Statement;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;  
   
import org.neo4j.graphdb.DynamicRelationshipType; import org.neo4j.graphdb.DynamicRelationshipType;
import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.index.BatchInserterIndex; import org.neo4j.graphdb.index.BatchInserterIndex;
import org.neo4j.graphdb.index.BatchInserterIndexProvider; import org.neo4j.graphdb.index.BatchInserterIndexProvider;
import org.neo4j.helpers.collection.MapUtil; import org.neo4j.helpers.collection.MapUtil;
  import org.neo4j.index.impl.lucene.LuceneBatchInserterIndexProvider;
import org.neo4j.kernel.impl.batchinsert.BatchInserter; import org.neo4j.kernel.impl.batchinsert.BatchInserter;
import org.neo4j.kernel.impl.batchinsert.BatchInserterImpl; import org.neo4j.kernel.impl.batchinsert.BatchInserterImpl;
import org.neo4j.index.impl.lucene.*;  
   
public class Importer { public class Importer {
   
public static void main(String[] argv) { public static void main(String[] argv) {
BatchInserter inserter = new BatchInserterImpl("target/neo4jdb-batchinsert"); BatchInserter inserter = new BatchInserterImpl("target/neo4jdb-batchinsert");
BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider(inserter); BatchInserterIndexProvider indexProvider = new LuceneBatchInserterIndexProvider(inserter);
BatchInserterIndex labels = indexProvider.nodeIndex("labels", MapUtil.stringMap("type", "exact")); BatchInserterIndex labels = indexProvider.nodeIndex("labels", MapUtil.stringMap("type", "exact"));
labels.setCacheCapacity("Label", 100000); labels.setCacheCapacity("Label", 100000);
   
   
   
System.out.println("-------- PostgreSQL " System.out.println("-------- PostgreSQL "
+ "JDBC Connection Testing ------------"); + "JDBC Connection Testing ------------");
   
try { try {
   
Class.forName("org.postgresql.Driver"); Class.forName("org.postgresql.Driver");
   
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
   
System.out.println("Where is your PostgreSQL JDBC Driver? " System.out.println("Where is your PostgreSQL JDBC Driver? "
+ "Include in your library path!"); + "Include in your library path!");
e.printStackTrace(); e.printStackTrace();
   
} }
   
System.out.println("PostgreSQL JDBC Driver Registered!"); System.out.println("PostgreSQL JDBC Driver Registered!");
   
Connection conn = null; Connection conn = null;
   
try { try {
   
conn = DriverManager.getConnection( conn = DriverManager.getConnection(
"jdbc:postgresql://127.0.0.1:5432/contractDashboard", "jdbc:postgresql://127.0.0.1:5432/contractDashboard",
"postgres", "snmc"); "postgres", "snmc");
   
} catch (SQLException e) { } catch (SQLException e) {
   
System.out.println("Connection Failed! Check output console"); System.out.println("Connection Failed! Check output console");
e.printStackTrace(); e.printStackTrace();
   
} }
   
if (conn != null) { if (conn != null) {
System.out.println("You made it, take control your database now!"); System.out.println("You made it, take control your database now!");
} else { } else {
System.out.println("Failed to make connection!"); System.out.println("Failed to make connection!");
} }
try { try {
// Print all warnings // Print all warnings
for (SQLWarning warn = conn.getWarnings(); warn != null; warn = warn.getNextWarning()) { for (SQLWarning warn = conn.getWarnings(); warn != null; warn = warn.getNextWarning()) {
System.out.println("SQL Warning:"); System.out.println("SQL Warning:");
System.out.println("State : " + warn.getSQLState()); System.out.println("State : " + warn.getSQLState());
System.out.println("Message: " + warn.getMessage()); System.out.println("Message: " + warn.getMessage());
System.out.println("Error : " + warn.getErrorCode()); System.out.println("Error : " + warn.getErrorCode());
} }
   
// Get a statement from the connection // Get a statement from the connection
Statement stmt = conn.createStatement(); Statement stmt = conn.createStatement();
   
// Execute the query // Execute the query
ResultSet rs = stmt.executeQuery("SELECT contractnotice.\"agencyName\", " ResultSet rs = stmt.executeQuery("SELECT contractnotice.\"agencyName\", "
+ " contractnotice.\"supplierABN\",contractnotice.\"supplierName\",sum(value) as sum " + " contractnotice.\"supplierABN\",contractnotice.\"supplierName\",sum(value) as sum "
+ "FROM public.contractnotice where contractnotice.\"agencyName\" != 'Department of Defence'" + "FROM public.contractnotice where contractnotice.\"agencyName\" != 'Department of Defence'"
+ " AND contractnotice.\"agencyName\" != 'Defence Materiel Organisation' GROUP BY contractnotice.\"agencyName\", " + " AND contractnotice.\"agencyName\" != 'Defence Materiel Organisation' GROUP BY contractnotice.\"agencyName\", "
+ " contractnotice.\"supplierABN\",contractnotice.\"supplierName\""); + " contractnotice.\"supplierABN\",contractnotice.\"supplierName\"");
String previousAgency = ""; String previousAgency = "";
GraphDatabaseService gds = inserter.getGraphDbService(); GraphDatabaseService gds = inserter.getGraphDbService();
HashMap<String, Long> supplierIDs = new HashMap<String, Long>(); HashMap<String, Long> supplierIDs = new HashMap<String, Long>();
HashMap<String, Long> agencyIDs = new HashMap<String, Long>(); HashMap<String, Long> agencyIDs = new HashMap<String, Long>();
   
// Loop through the result set // Loop through the result set
while (rs.next()) { while (rs.next()) {
long supplierID, agencyID; long supplierID, agencyID;
String supplierKey; String supplierKey;
if (agencyIDs.get(rs.getString("agencyName")) == null) { if (agencyIDs.get(rs.getString("agencyName")) == null) {
Node myNode = gds.createNode(); Node myNode = gds.createNode();
myNode.setProperty("Label", rs.getString("agencyName")); myNode.setProperty("Label", rs.getString("agencyName"));
myNode.setProperty("type", "agency"); myNode.setProperty("type", "agency");
agencyIDs.put(rs.getString("agencyName"), myNode.getId()); agencyIDs.put(rs.getString("agencyName"), myNode.getId());
if (myNode.getId() % 100 == 0) { if (myNode.getId() % 100 == 0) {
System.out.println("Agency " + myNode.getId()); System.out.println("Agency " + myNode.getId());
} }
} }
agencyID = agencyIDs.get(rs.getString("agencyName")); agencyID = agencyIDs.get(rs.getString("agencyName"));
   
   
if (rs.getString("supplierABN") != "0" && rs.getString("supplierABN") != "") { if (rs.getString("supplierABN") != "0" && rs.getString("supplierABN") != "") {
supplierKey = rs.getString("supplierABN"); supplierKey = rs.getString("supplierABN");
} else { } else {
supplierKey = rs.getString("supplierName"); supplierKey = rs.getString("supplierName");
} }
// inject some data // inject some data
if (supplierIDs.get(supplierKey) == null) { if (supplierIDs.get(supplierKey) == null) {
Node myNode = gds.createNode(); Node myNode = gds.createNode();
myNode.setProperty("Label", rs.getString("supplierName")); myNode.setProperty("Label", rs.getString("supplierName"));
myNode.setProperty("type", "supplier"); myNode.setProperty("type", "supplier");
supplierIDs.put(supplierKey, myNode.getId()); supplierIDs.put(supplierKey, myNode.getId());
if (myNode.getId() % 1000 == 0) { if (myNode.getId() % 1000 == 0) {
System.out.println("Supplier " + myNode.getId()); System.out.println("Supplier " + myNode.getId());
} }
} }
supplierID = supplierIDs.get(supplierKey); supplierID = supplierIDs.get(supplierKey);
   
   
long rel = inserter.createRelationship(agencyID, supplierID, long rel = inserter.createRelationship(agencyID, supplierID,
DynamicRelationshipType.withName("KNOWS"), null); DynamicRelationshipType.withName("KNOWS"), null);
inserter.setRelationshipProperty(rel, "Weight", rs.getDouble("sum")); inserter.setRelationshipProperty(rel, "Weight", rs.getDouble("sum"));
   
} }
// Close the result set, statement and the connection // Close the result set, statement and the connection
rs.close(); rs.close();
stmt.close(); stmt.close();
conn.close(); conn.close();
} catch (SQLException se) { } catch (SQLException se) {
System.out.println("SQL Exception:"); System.out.println("SQL Exception:");
   
// Loop through the SQL Exceptions // Loop through the SQL Exceptions
while (se != null) { while (se != null) {
System.out.println("State : " + se.getSQLState()); System.out.println("State : " + se.getSQLState());
System.out.println("Message: " + se.getMessage()); System.out.println("Message: " + se.getMessage());
System.out.println("Error : " + se.getErrorCode()); System.out.println("Error : " + se.getErrorCode());
   
se = se.getNextException(); se = se.getNextException();
} }
} }
//make the changes visible for reading, use this sparsely, requires IO! //make the changes visible for reading, use this sparsely, requires IO!
labels.flush(); labels.flush();
   
// Make sure to shut down the index provider // Make sure to shut down the index provider
indexProvider.shutdown(); indexProvider.shutdown();
inserter.shutdown(); inserter.shutdown();
} }
} }
  /*!
  * Bootstrap Responsive v2.1.0
  *
  * 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;
  line-height: 0;
  content: "";
  }
 
  .clearfix:after {
  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;
  }
 
  .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 (min-width: 1200px) {
  .row {
  margin-left: -30px;
  *zoom: 1;
  }
  .row:before,
  .row:after {
  display: table;
  line-height: 0;
  content: "";
  }
  .row:after {
  clear: both;
  }
  [class*="span"] {
  float: left;
  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;
  line-height: 0;
  content: "";
  }
  .row-fluid:after {
  clear: both;
  }
  .row-fluid [class*="span"] {
  display: block;
  float: left;
  width: 100%;
  min-height: 30px;
  margin-left: 2.564102564102564%;
  *margin-left: 2.5109110747408616%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  }
  .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 (min-width: 768px) and (max-width: 979px) {
  .row {
  margin-left: -20px;
  *zoom: 1;
  }
  .row:before,
  .row:after {
  display: table;
  line-height: 0;
  content: "";
  }
  .row:after {
  clear: both;
  }
  [class*="span"] {
  float: left;
  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;
  line-height: 0;
  content: "";
  }
  .row-fluid:after {
  clear: both;
  }
  .row-fluid [class*="span"] {
  display: block;
  float: left;
  width: 100%;
  min-height: 30px;
  margin-left: 2.7624309392265194%;
  *margin-left: 2.709239449864817%;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  }
  .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 (max-width: 767px) {
  body {
  padding-right: 20px;
  padding-left: 20px;
  }
  .navbar-fixed-top,
  .navbar-fixed-bottom {
  margin-right: -20px;
  margin-left: -20px;
  }
  .container-fluid {
  padding: 0;
  }
  .dl-horizontal dt {
  float: none;
  width: auto;
  clear: none;
  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"] {
  display: block;
  float: none;
  width: auto;
  margin-left: 0;
  }
  .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;
  }
  .modal {
  position: fixed;
  top: 20px;
  right: 20px;
  left: 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-group > 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-right: 10px;
  padding-left: 10px;
  }
  .modal {
  top: 10px;
  right: 10px;
  left: 10px;
  }
  .modal-header .close {
  padding: 10px;
  margin: -10px;
  }
  .carousel-caption {
  position: static;
  }
  }
 
  @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-right: 10px;
  padding-left: 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: #555555;
  text-shadow: none;
  }
  .nav-collapse .nav > li > a,
  .nav-collapse .dropdown-menu a {
  padding: 9px 15px;
  font-weight: bold;
  color: #555555;
  -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 {
  padding: 0;
  margin-top: 5px;
  }
  .nav-collapse .dropdown-menu {
  position: static;
  top: auto;
  left: auto;
  display: block;
  float: none;
  max-width: none;
  padding: 0;
  margin: 0 15px;
  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 .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 .nav-collapse .nav.pull-right {
  float: none;
  margin-left: 0;
  }
  .nav-collapse,
  .nav-collapse.collapse {
  height: 0;
  overflow: hidden;
  }
  .navbar .btn-navbar {
  display: block;
  }
  .navbar-static .navbar-inner {
  padding-right: 10px;
  padding-left: 10px;
  }
  }
 
  @media (min-width: 980px) {
  .nav-collapse.collapse {
  height: auto !important;
  overflow: visible !important;
  }
  }
 
html,body{margin:0;padding:0;} /*!
h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,cite,code,del,dfn,em,img,q,s,samp,small,strike,strong,sub,sup,tt,var,dd,dl,dt,li,ol,ul,fieldset,form,label,legend,button,table,caption,tbody,tfoot,thead,tr,th,td{margin:0;padding:0;border:0;font-weight:normal;font-style:normal;font-size:100%;line-height:1;font-family:inherit;} * Bootstrap v2.1.0
table{border-collapse:collapse;border-spacing:0;} *
ol,ul{list-style:none;} * Copyright 2012 Twitter, Inc
q:before,q:after,blockquote:before,blockquote:after{content:"";} * Licensed under the Apache License v2.0
html{overflow-y:scroll;font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;} * http://www.apache.org/licenses/LICENSE-2.0
a:focus{outline:thin dotted;} *
a:hover,a:active{outline:0;} * Designed and built with all the love in the world @twitter by @mdo and @fat.
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;} article,
sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;} aside,
sup{top:-0.5em;} details,
sub{bottom:-0.25em;} figcaption,
img{border:0;-ms-interpolation-mode:bicubic;} figure,
button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle;} footer,
button,input{line-height:normal;*overflow:visible;} header,
button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;} hgroup,
button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;} nav,
input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;} section {
input[type="search"]::-webkit-search-decoration{-webkit-appearance:none;} display: block;
textarea{overflow:auto;vertical-align:top;} }
body{background-color:#ffffff;margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;color:#404040;}  
.container{width:940px;margin-left:auto;margin-right:auto;zoom:1;}.container:before,.container:after{display:table;content:"";zoom:1;} audio,
.container:after{clear:both;} canvas,
.container-fluid{position:relative;min-width:940px;padding-left:20px;padding-right:20px;zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";zoom:1;} video {
.container-fluid:after{clear:both;} display: inline-block;
.container-fluid>.sidebar{position:absolute;top:0;left:20px;width:220px;} *display: inline;
.container-fluid>.content{margin-left:240px;} *zoom: 1;
a{color:#0069d6;text-decoration:none;line-height:inherit;font-weight:inherit;}a:hover{color:#00438a;text-decoration:underline;} }
.pull-right{float:right;}  
.pull-left{float:left;} audio:not([controls]) {
.hide{display:none;} display: none;
.show{display:block;} }
.row{zoom:1;margin-left:-20px;}.row:before,.row:after{display:table;content:"";zoom:1;}  
.row:after{clear:both;} html {
.row>[class*="span"]{display:inline;float:left;margin-left:20px;} font-size: 100%;
.span1{width:40px;} -webkit-text-size-adjust: 100%;
.span2{width:100px;} -ms-text-size-adjust: 100%;
.span3{width:160px;} }
.span4{width:220px;}  
.span5{width:280px;} a:focus {
.span6{width:340px;} outline: thin dotted #333;
.span7{width:400px;} outline: 5px auto -webkit-focus-ring-color;
.span8{width:460px;} outline-offset: -2px;
.span9{width:520px;} }
.span10{width:580px;}  
.span11{width:640px;} a:hover,
.span12{width:700px;} a:active {
.span13{width:760px;} outline: 0;
.span14{width:820px;} }
.span15{width:880px;}  
.span16{width:940px;} sub,
.span17{width:1000px;} sup {
.span18{width:1060px;} position: relative;
.span19{width:1120px;} font-size: 75%;
.span20{width:1180px;} line-height: 0;
.span21{width:1240px;} vertical-align: baseline;
.span22{width:1300px;} }
.span23{width:1360px;}  
.span24{width:1420px;} sup {
.row>.offset1{margin-left:80px;} top: -0.5em;
.row>.offset2{margin-left:140px;} }
.row>.offset3{margin-left:200px;}  
.row>.offset4{margin-left:260px;} sub {
.row>.offset5{margin-left:320px;} bottom: -0.25em;
.row>.offset6{margin-left:380px;} }
.row>.offset7{margin-left:440px;}  
.row>.offset8{margin-left:500px;} img {
.row>.offset9{margin-left:560px;} height: auto;
.row>.offset10{margin-left:620px;} max-width: 100%;
.row>.offset11{margin-left:680px;} vertical-align: middle;
.row>.offset12{margin-left:740px;} border: 0;
.span-one-third{width:300px;} -ms-interpolation-mode: bicubic;
.span-two-thirds{width:620px;} }
.row>.offset-one-third{margin-left:340px;}  
.row>.offset-two-thirds{margin-left:660px;} #map_canvas img {
p{font-size:13px;font-weight:normal;line-height:18px;margin-bottom:9px;}p small{font-size:11px;color:#bfbfbf;} max-width: none;
h1,h2,h3,h4,h5,h6{font-weight:bold;color:#404040;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{color:#bfbfbf;} }
h1{margin-bottom:18px;font-size:30px;line-height:36px;}h1 small{font-size:18px;}  
h2{font-size:24px;line-height:36px;}h2 small{font-size:14px;} button,
h3,h4,h5,h6{line-height:36px;} input,
h3{font-size:18px;}h3 small{font-size:14px;} select,
h4{font-size:16px;}h4 small{font-size:12px;} textarea {
h5{font-size:14px;} margin: 0;
h6{font-size:13px;color:#bfbfbf;text-transform:uppercase;} font-size: 100%;
ul,ol{margin:0 0 18px 25px;} vertical-align: middle;
ul ul,ul ol,ol ol,ol ul{margin-bottom:0;} }
ul{list-style:disc;}  
ol{list-style:decimal;} button,
li{line-height:18px;color:#808080;} input {
ul.unstyled{list-style:none;margin-left:0;} *overflow: visible;
dl{margin-bottom:18px;}dl dt,dl dd{line-height:18px;} line-height: normal;
dl dt{font-weight:bold;} }
dl dd{margin-left:9px;}  
hr{margin:20px 0 19px;border:0;border-bottom:1px solid #eee;} button::-moz-focus-inner,
strong{font-style:inherit;font-weight:bold;} input::-moz-focus-inner {
em{font-style:italic;font-weight:inherit;line-height:inherit;} padding: 0;
.muted{color:#bfbfbf;} border: 0;
blockquote{margin-bottom:18px;border-left:5px solid #eee;padding-left:15px;}blockquote p{font-size:14px;font-weight:300;line-height:18px;margin-bottom:0;} }
blockquote small{display:block;font-size:12px;font-weight:300;line-height:18px;color:#bfbfbf;}blockquote small:before{content:'\2014 \00A0';}  
address{display:block;line-height:18px;margin-bottom:18px;} button,
code,pre{padding:0 3px 2px;font-family:Monaco, Andale Mono, Courier New, monospace;font-size:12px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} input[type="button"],
code{background-color:#fee9cc;color:rgba(0, 0, 0, 0.75);padding:1px 3px;} input[type="reset"],
pre{background-color:#f5f5f5;display:block;padding:8.5px;margin:0 0 18px;line-height:18px;font-size:12px;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;white-space:pre;white-space:pre-wrap;word-wrap:break-word;} input[type="submit"] {
form{margin-bottom:18px;} cursor: pointer;
fieldset{margin-bottom:18px;padding-top:18px;}fieldset legend{display:block;padding-left:150px;font-size:19.5px;line-height:1;color:#404040;*padding:0 0 5px 145px;*line-height:1.5;} -webkit-appearance: button;
form .clearfix{margin-bottom:18px;zoom:1;}form .clearfix:before,form .clearfix:after{display:table;content:"";zoom:1;} }
form .clearfix:after{clear:both;}  
label,input,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:normal;} input[type="search"] {
label{padding-top:6px;font-size:13px;line-height:18px;float:left;width:130px;text-align:right;color:#404040;} -webkit-box-sizing: content-box;
form .input{margin-left:150px;} -moz-box-sizing: content-box;
input[type=checkbox],input[type=radio]{cursor:pointer;} box-sizing: content-box;
input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;font-size:13px;line-height:18px;color:#808080;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} -webkit-appearance: textfield;
select{padding:initial;} }
input[type=checkbox],input[type=radio]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:none;}  
input[type=file]{background-color:#ffffff;padding:initial;border:initial;line-height:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} input[type="search"]::-webkit-search-decoration,
input[type=button],input[type=reset],input[type=submit]{width:auto;height:auto;} input[type="search"]::-webkit-search-cancel-button {
select,input[type=file]{height:27px;*height:auto;line-height:27px;*margin-top:4px;} -webkit-appearance: none;
select[multiple]{height:inherit;background-color:#ffffff;} }
textarea{height:auto;}  
.uneditable-input{background-color:#ffffff;display:block;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;} textarea {
:-moz-placeholder{color:#bfbfbf;} overflow: auto;
::-webkit-input-placeholder{color:#bfbfbf;} vertical-align: top;
input,textarea{-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1);} }
input:focus,textarea:focus{outline:0;border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 3px rgba(0, 0, 0, 0.1),0 0 8px rgba(82, 168, 236, 0.6);}  
input[type=file]:focus,input[type=checkbox]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:1px dotted #666;} .clearfix {
form .clearfix.error>label,form .clearfix.error .help-block,form .clearfix.error .help-inline{color:#b94a48;} *zoom: 1;
form .clearfix.error input,form .clearfix.error textarea{color:#b94a48;border-color:#ee5f5b;}form .clearfix.error input:focus,form .clearfix.error textarea: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 .clearfix.error .input-prepend .add-on,form .clearfix.error .input-append .add-on{color:#b94a48;background-color:#fce6e6;border-color:#b94a48;}  
form .clearfix.warning>label,form .clearfix.warning .help-block,form .clearfix.warning .help-inline{color:#c09853;} .clearfix:before,
form .clearfix.warning input,form .clearfix.warning textarea{color:#c09853;border-color:#ccae64;}form .clearfix.warning input:focus,form .clearfix.warning textarea:focus{border-color:#be9a3f;-webkit-box-shadow:0 0 6px #e5d6b1;-moz-box-shadow:0 0 6px #e5d6b1;box-shadow:0 0 6px #e5d6b1;} .clearfix:after {
form .clearfix.warning .input-prepend .add-on,form .clearfix.warning .input-append .add-on{color:#c09853;background-color:#d2b877;border-color:#c09853;} display: table;
form .clearfix.success>label,form .clearfix.success .help-block,form .clearfix.success .help-inline{color:#468847;} line-height: 0;
form .clearfix.success input,form .clearfix.success textarea{color:#468847;border-color:#57a957;}form .clearfix.success input:focus,form .clearfix.success textarea:focus{border-color:#458845;-webkit-box-shadow:0 0 6px #9acc9a;-moz-box-shadow:0 0 6px #9acc9a;box-shadow:0 0 6px #9acc9a;} content: "";
form .clearfix.success .input-prepend .add-on,form .clearfix.success .input-append .add-on{color:#468847;background-color:#bcddbc;border-color:#468847;} }
.input-mini,input.mini,textarea.mini,select.mini{width:60px;}  
.input-small,input.small,textarea.small,select.small{width:90px;} .clearfix:after {
.input-medium,input.medium,textarea.medium,select.medium{width:150px;} clear: both;
.input-large,input.large,textarea.large,select.large{width:210px;} }
.input-xlarge,input.xlarge,textarea.xlarge,select.xlarge{width:270px;}  
.input-xxlarge,input.xxlarge,textarea.xxlarge,select.xxlarge{width:530px;} .hide-text {
textarea.xxlarge{overflow-y:auto;} font: 0/0 a;
input.span1,textarea.span1{display:inline-block;float:none;width:30px;margin-left:0;} color: transparent;
input.span2,textarea.span2{display:inline-block;float:none;width:90px;margin-left:0;} text-shadow: none;
input.span3,textarea.span3{display:inline-block;float:none;width:150px;margin-left:0;} background-color: transparent;
input.span4,textarea.span4{display:inline-block;float:none;width:210px;margin-left:0;} border: 0;
input.span5,textarea.span5{display:inline-block;float:none;width:270px;margin-left:0;} }
input.span6,textarea.span6{display:inline-block;float:none;width:330px;margin-left:0;}  
input.span7,textarea.span7{display:inline-block;float:none;width:390px;margin-left:0;} .input-block-level {
input.span8,textarea.span8{display:inline-block;float:none;width:450px;margin-left:0;} display: block;
input.span9,textarea.span9{display:inline-block;float:none;width:510px;margin-left:0;} width: 100%;
input.span10,textarea.span10{display:inline-block;float:none;width:570px;margin-left:0;} min-height: 30px;
input.span11,textarea.span11{display:inline-block;float:none;width:630px;margin-left:0;} -webkit-box-sizing: border-box;
input.span12,textarea.span12{display:inline-block;float:none;width:690px;margin-left:0;} -moz-box-sizing: border-box;
input.span13,textarea.span13{display:inline-block;float:none;width:750px;margin-left:0;} box-sizing: border-box;
input.span14,textarea.span14{display:inline-block;float:none;width:810px;margin-left:0;} }
input.span15,textarea.span15{display:inline-block;float:none;width:870px;margin-left:0;}  
input.span16,textarea.span16{display:inline-block;float:none;width:930px;margin-left:0;} body {
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;} margin: 0;
.actions{background:#f5f5f5;margin-top:18px;margin-bottom:18px;padding:17px 20px 18px 150px;border-top:1px solid #ddd;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;}.actions .secondary-action{float:right;}.actions .secondary-action a{line-height:30px;}.actions .secondary-action a:hover{text-decoration:underline;} font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
.help-inline,.help-block{font-size:13px;line-height:18px;color:#bfbfbf;} font-size: 14px;
.help-inline{padding-left:5px;*position:relative;*top:-5px;} line-height: 20px;
.help-block{display:block;max-width:600px;} color: #333333;
.inline-inputs{color:#808080;}.inline-inputs span{padding:0 2px 0 1px;} background-color: #ffffff;
.input-prepend input,.input-append input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;} }
.input-prepend .add-on,.input-append .add-on{position:relative;background:#f5f5f5;border:1px solid #ccc;z-index:2;float:left;display:block;width:auto;min-width:16px;height:18px;padding:4px 4px 4px 5px;margin-right:-1px;font-weight:normal;line-height:18px;color:#bfbfbf;text-align:center;text-shadow:0 1px 0 #ffffff;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}  
.input-prepend .active,.input-append .active{background:#a9dba9;border-color:#46a546;} a {
.input-prepend .add-on{*margin-top:1px;} color: #0088cc;
.input-append input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;} text-decoration: none;
.input-append .add-on{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;margin-right:0;margin-left:-1px;} }
.inputs-list{margin:0 0 5px;width:100%;}.inputs-list li{display:block;padding:0;width:100%;}  
.inputs-list label{display:block;float:none;width:auto;padding:0;margin-left:20px;line-height:18px;text-align:left;white-space:normal;}.inputs-list label strong{color:#808080;} a:hover {
.inputs-list label small{font-size:11px;font-weight:normal;} color: #005580;
.inputs-list .inputs-list{margin-left:25px;margin-bottom:10px;padding-top:0;} text-decoration: underline;
.inputs-list:first-child{padding-top:6px;} }
.inputs-list li+li{padding-top:2px;}  
.inputs-list input[type=radio],.inputs-list input[type=checkbox]{margin-bottom:0;margin-left:-20px;float:left;} .img-rounded {
.form-stacked{padding-left:20px;}.form-stacked fieldset{padding-top:9px;} -webkit-border-radius: 6px;
.form-stacked legend{padding-left:0;} -moz-border-radius: 6px;
.form-stacked label{display:block;float:none;width:auto;font-weight:bold;text-align:left;line-height:20px;padding-top:0;} border-radius: 6px;
.form-stacked .clearfix{margin-bottom:9px;}.form-stacked .clearfix div.input{margin-left:0;} }
.form-stacked .inputs-list{margin-bottom:0;}.form-stacked .inputs-list li{padding-top:0;}.form-stacked .inputs-list li label{font-weight:normal;padding-top:0;}  
.form-stacked div.clearfix.error{padding-top:10px;padding-bottom:10px;padding-left:10px;margin-top:0;margin-left:-10px;} .img-polaroid {
.form-stacked .actions{margin-left:-20px;padding-left:20px;} padding: 4px;
table{width:100%;margin-bottom:18px;padding:0;font-size:13px;border-collapse:collapse;}table th,table td{padding:10px 10px 9px;line-height:18px;text-align:left;} background-color: #fff;
table th{padding-top:9px;font-weight:bold;vertical-align:middle;} border: 1px solid #ccc;
table td{vertical-align:top;border-top:1px solid #ddd;} border: 1px solid rgba(0, 0, 0, 0.2);
table tbody th{border-top:1px solid #ddd;vertical-align:top;} -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
.condensed-table th,.condensed-table td{padding:5px 5px 4px;} -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
.bordered-table{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.bordered-table th+th,.bordered-table td+td,.bordered-table th+td{border-left:1px solid #ddd;} box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
.bordered-table thead tr:first-child th:first-child,.bordered-table tbody tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;} }
.bordered-table thead tr:first-child th:last-child,.bordered-table tbody tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}  
.bordered-table tbody tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;} .img-circle {
.bordered-table tbody tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;} -webkit-border-radius: 500px;
table .span1{width:20px;} -moz-border-radius: 500px;
table .span2{width:60px;} border-radius: 500px;
table .span3{width:100px;} }
table .span4{width:140px;}  
table .span5{width:180px;} .row {
table .span6{width:220px;} margin-left: -20px;
table .span7{width:260px;} *zoom: 1;
table .span8{width:300px;} }
table .span9{width:340px;}  
table .span10{width:380px;} .row:before,
table .span11{width:420px;} .row:after {
table .span12{width:460px;} display: table;
table .span13{width:500px;} line-height: 0;
table .span14{width:540px;} content: "";
table .span15{width:580px;} }
table .span16{width:620px;}  
.zebra-striped tbody tr:nth-child(odd) td,.zebra-striped tbody tr:nth-child(odd) th{background-color:#f9f9f9;} .row:after {
.zebra-striped tbody tr:hover td,.zebra-striped tbody tr:hover th{background-color:#f5f5f5;} clear: both;
table .header{cursor:pointer;}table .header:after{content:"";float:right;margin-top:7px;border-width:0 4px 4px;border-style:solid;border-color:#000 transparent;visibility:hidden;} }
table .headerSortUp,table .headerSortDown{background-color:rgba(141, 192, 219, 0.25);text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);}  
table .header:hover:after{visibility:visible;} [class*="span"] {
table .headerSortDown:after,table .headerSortDown:hover:after{visibility:visible;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;} float: left;
table .headerSortUp:after{border-bottom:none;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000;visibility:visible;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;filter:alpha(opacity=60);-khtml-opacity:0.6;-moz-opacity:0.6;opacity:0.6;} margin-left: 20px;
table .blue{color:#049cdb;border-bottom-color:#049cdb;} }
table .headerSortUp.blue,table .headerSortDown.blue{background-color:#ade6fe;}  
table .green{color:#46a546;border-bottom-color:#46a546;} .container,
table .headerSortUp.green,table .headerSortDown.green{background-color:#cdeacd;} .navbar-static-top .container,
table .red{color:#9d261d;border-bottom-color:#9d261d;} .navbar-fixed-top .container,
table .headerSortUp.red,table .headerSortDown.red{background-color:#f4c8c5;} .navbar-fixed-bottom .container {
table .yellow{color:#ffc40d;border-bottom-color:#ffc40d;} width: 940px;
table .headerSortUp.yellow,table .headerSortDown.yellow{background-color:#fff6d9;} }
table .orange{color:#f89406;border-bottom-color:#f89406;}  
table .headerSortUp.orange,table .headerSortDown.orange{background-color:#fee9cc;} .span12 {
table .purple{color:#7a43b6;border-bottom-color:#7a43b6;} width: 940px;
table .headerSortUp.purple,table .headerSortDown.purple{background-color:#e2d5f0;} }
.topbar{height:40px;position:fixed;top:0;left:0;right:0;z-index:10000;overflow:visible;}.topbar a{color:#bfbfbf;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}  
.topbar h3 a:hover,.topbar .brand:hover,.topbar ul .active>a{background-color:#333;background-color:rgba(255, 255, 255, 0.05);color:#ffffff;text-decoration:none;} .span11 {
.topbar h3{position:relative;} width: 860px;
.topbar h3 a,.topbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;color:#ffffff;font-size:20px;font-weight:200;line-height:1;} }
.topbar p{margin:0;line-height:40px;}.topbar p a:hover{background-color:transparent;color:#ffffff;}  
.topbar form{float:left;margin:5px 0 0 0;position:relative;filter:alpha(opacity=100);-khtml-opacity:1;-moz-opacity:1;opacity:1;} .span10 {
.topbar form.pull-right{float:right;} width: 780px;
.topbar input{background-color:#444;background-color:rgba(255, 255, 255, 0.3);font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:normal;font-weight:13px;line-height:1;padding:4px 9px;color:#ffffff;color:rgba(255, 255, 255, 0.75);border:1px solid #111;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.25);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.topbar input:-moz-placeholder{color:#e6e6e6;} }
.topbar input::-webkit-input-placeholder{color:#e6e6e6;}  
.topbar input:hover{background-color:#bfbfbf;background-color:rgba(255, 255, 255, 0.5);color:#ffffff;} .span9 {
.topbar input:focus,.topbar input.focused{outline:0;background-color:#ffffff;color:#404040;text-shadow:0 1px 0 #ffffff;border:0;padding:5px 10px;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);} width: 700px;
.topbar-inner,.topbar .fill{background-color:#222;background-color:#222222;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#333333), to(#222222));background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #333333), color-stop(100%, #222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);} }
.topbar div>ul,.nav{display:block;float:left;margin:0 10px 0 0;position:relative;left:0;}.topbar div>ul>li,.nav>li{display:block;float:left;}  
.topbar div>ul a,.nav a{display:block;float:none;padding:10px 10px 11px;line-height:19px;text-decoration:none;}.topbar div>ul a:hover,.nav a:hover{color:#ffffff;text-decoration:none;} .span8 {
.topbar div>ul .active>a,.nav .active>a{background-color:#222;background-color:rgba(0, 0, 0, 0.5);} width: 620px;
.topbar div>ul.secondary-nav,.nav.secondary-nav{float:right;margin-left:10px;margin-right:0;}.topbar div>ul.secondary-nav .menu-dropdown,.nav.secondary-nav .menu-dropdown,.topbar div>ul.secondary-nav .dropdown-menu,.nav.secondary-nav .dropdown-menu{right:0;border:0;} }
.topbar div>ul a.menu:hover,.nav a.menu:hover,.topbar div>ul li.open .menu,.nav li.open .menu,.topbar div>ul .dropdown-toggle:hover,.nav .dropdown-toggle:hover,.topbar div>ul .dropdown.open .dropdown-toggle,.nav .dropdown.open .dropdown-toggle{background:#444;background:rgba(255, 255, 255, 0.05);}  
.topbar div>ul .menu-dropdown,.nav .menu-dropdown,.topbar div>ul .dropdown-menu,.nav .dropdown-menu{background-color:#333;}.topbar div>ul .menu-dropdown a.menu,.nav .menu-dropdown a.menu,.topbar div>ul .dropdown-menu a.menu,.nav .dropdown-menu a.menu,.topbar div>ul .menu-dropdown .dropdown-toggle,.nav .menu-dropdown .dropdown-toggle,.topbar div>ul .dropdown-menu .dropdown-toggle,.nav .dropdown-menu .dropdown-toggle{color:#ffffff;}.topbar div>ul .menu-dropdown a.menu.open,.nav .menu-dropdown a.menu.open,.topbar div>ul .dropdown-menu a.menu.open,.nav .dropdown-menu a.menu.open,.topbar div>ul .menu-dropdown .dropdown-toggle.open,.nav .menu-dropdown .dropdown-toggle.open,.topbar div>ul .dropdown-menu .dropdown-toggle.open,.nav .dropdown-menu .dropdown-toggle.open{background:#444;background:rgba(255, 255, 255, 0.05);} .span7 {
.topbar div>ul .menu-dropdown li a,.nav .menu-dropdown li a,.topbar div>ul .dropdown-menu li a,.nav .dropdown-menu li a{color:#999;text-shadow:0 1px 0 rgba(0, 0, 0, 0.5);}.topbar div>ul .menu-dropdown li a:hover,.nav .menu-dropdown li a:hover,.topbar div>ul .dropdown-menu li a:hover,.nav .dropdown-menu li a:hover{background-color:#191919;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#292929), to(#191919));background-image:-moz-linear-gradient(top, #292929, #191919);background-image:-ms-linear-gradient(top, #292929, #191919);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #292929), color-stop(100%, #191919));background-image:-webkit-linear-gradient(top, #292929, #191919);background-image:-o-linear-gradient(top, #292929, #191919);background-image:linear-gradient(top, #292929, #191919);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#292929', endColorstr='#191919', GradientType=0);color:#ffffff;} width: 540px;
.topbar div>ul .menu-dropdown .active a,.nav .menu-dropdown .active a,.topbar div>ul .dropdown-menu .active a,.nav .dropdown-menu .active a{color:#ffffff;} }
.topbar div>ul .menu-dropdown .divider,.nav .menu-dropdown .divider,.topbar div>ul .dropdown-menu .divider,.nav .dropdown-menu .divider{background-color:#222;border-color:#444;}  
.topbar ul .menu-dropdown li a,.topbar ul .dropdown-menu li a{padding:4px 15px;} .span6 {
li.menu,.dropdown{position:relative;} width: 460px;
a.menu:after,.dropdown-toggle:after{width:0;height:0;display:inline-block;content:"&darr;";text-indent:-99999px;vertical-align:top;margin-top:8px;margin-left:4px;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #ffffff;filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} }
.menu-dropdown,.dropdown-menu{background-color:#ffffff;float:left;display:none;position:absolute;top:40px;z-index:900;min-width:160px;max-width:220px;_width:160px;margin-left:0;margin-right:0;padding:6px 0;zoom:1;border-color:#999;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:0 1px 1px;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);box-shadow:0 2px 4px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.menu-dropdown li,.dropdown-menu li{float:none;display:block;background-color:none;}  
.menu-dropdown .divider,.dropdown-menu .divider{height:1px;margin:5px 0;overflow:hidden;background-color:#eee;border-bottom:1px solid #ffffff;} .span5 {
.topbar .dropdown-menu a,.dropdown-menu a{display:block;padding:4px 15px;clear:both;font-weight:normal;line-height:18px;color:#808080;text-shadow:0 1px 0 #ffffff;}.topbar .dropdown-menu a:hover,.dropdown-menu a:hover,.topbar .dropdown-menu a.hover,.dropdown-menu a.hover{background-color:#dddddd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#eeeeee), to(#dddddd));background-image:-moz-linear-gradient(top, #eeeeee, #dddddd);background-image:-ms-linear-gradient(top, #eeeeee, #dddddd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #eeeeee), color-stop(100%, #dddddd));background-image:-webkit-linear-gradient(top, #eeeeee, #dddddd);background-image:-o-linear-gradient(top, #eeeeee, #dddddd);background-image:linear-gradient(top, #eeeeee, #dddddd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#dddddd', GradientType=0);color:#404040;text-decoration:none;-webkit-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 0 rgba(0, 0, 0, 0.025),inset 0 -1px rgba(0, 0, 0, 0.025);} width: 380px;
.open .menu,.dropdown.open .menu,.open .dropdown-toggle,.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);} }
.open .menu-dropdown,.dropdown.open .menu-dropdown,.open .dropdown-menu,.dropdown.open .dropdown-menu{display:block;}  
.tabs,.pills{margin:0 0 18px;padding:0;list-style:none;zoom:1;}.tabs:before,.pills:before,.tabs:after,.pills:after{display:table;content:"";zoom:1;} .span4 {
.tabs:after,.pills:after{clear:both;} width: 300px;
.tabs>li,.pills>li{float:left;}.tabs>li>a,.pills>li>a{display:block;} }
.tabs{border-color:#ddd;border-style:solid;border-width:0 0 1px;}.tabs>li{position:relative;margin-bottom:-1px;}.tabs>li>a{padding:0 15px;margin-right:2px;line-height:34px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.tabs>li>a:hover{text-decoration:none;background-color:#eee;border-color:#eee #eee #ddd;}  
.tabs .active>a,.tabs .active>a:hover{color:#808080;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;} .span3 {
.tabs .menu-dropdown,.tabs .dropdown-menu{top:35px;border-width:1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px;} width: 220px;
.tabs a.menu:after,.tabs .dropdown-toggle:after{border-top-color:#999;margin-top:15px;margin-left:5px;} }
.tabs li.open.menu .menu,.tabs .open.dropdown .dropdown-toggle{border-color:#999;}  
.tabs li.open a.menu:after,.tabs .dropdown.open .dropdown-toggle:after{border-top-color:#555;} .span2 {
.pills a{margin:5px 3px 5px 0;padding:0 15px;line-height:30px;text-shadow:0 1px 1px #ffffff;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}.pills a:hover{color:#ffffff;text-decoration:none;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#00438a;} width: 140px;
.pills .active a{color:#ffffff;text-shadow:0 1px 1px rgba(0, 0, 0, 0.25);background-color:#0069d6;} }
.pills-vertical>li{float:none;}  
.tab-content>.tab-pane,.pill-content>.pill-pane,.tab-content>div,.pill-content>div{display:none;} .span1 {
.tab-content>.active,.pill-content>.active{display:block;} width: 60px;
.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#f5f5f5;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ffffff), to(#f5f5f5));background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;} }
.breadcrumb .divider{padding:0 5px;color:#bfbfbf;}  
.breadcrumb .active a{color:#404040;} .offset12 {
.hero-unit{background-color:#f5f5f5;margin-bottom:30px;padding:60px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;} margin-left: 980px;
.hero-unit p{font-size:18px;font-weight:200;line-height:27px;} }
footer{margin-top:17px;padding-top:17px;border-top:1px solid #eee;}  
.page-header{margin-bottom:17px;border-bottom:1px solid #ddd;-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);box-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}.page-header h1{margin-bottom:8px;} .offset11 {
.btn.danger,.alert-message.danger,.btn.danger:hover,.alert-message.danger:hover,.btn.error,.alert-message.error,.btn.error:hover,.alert-message.error:hover,.btn.success,.alert-message.success,.btn.success:hover,.alert-message.success:hover,.btn.info,.alert-message.info,.btn.info:hover,.alert-message.info:hover{color:#ffffff;} margin-left: 900px;
.btn .close,.alert-message .close{font-family:Arial,sans-serif;line-height:18px;} }
.btn.danger,.alert-message.danger,.btn.error,.alert-message.error{background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35));background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);}  
.btn.success,.alert-message.success{background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957));background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} .offset10 {
.btn.info,.alert-message.info{background-color:#339bb9;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#5bc0de), to(#339bb9));background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #5bc0de), color-stop(100%, #339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#339bb9 #339bb9 #22697d;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} margin-left: 820px;
.btn{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-webkit-transition:0.1s linear all;-moz-transition:0.1s linear all;-ms-transition:0.1s linear all;-o-transition:0.1s linear all;transition:0.1s linear all;}.btn:hover{background-position:0 -15px;color:#333;text-decoration:none;} }
.btn:focus{outline:1px dotted #666;}  
.btn.primary{color:#ffffff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));background-image:-moz-linear-gradient(top, #049cdb, #0064cd);background-image:-ms-linear-gradient(top, #049cdb, #0064cd);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));background-image:-webkit-linear-gradient(top, #049cdb, #0064cd);background-image:-o-linear-gradient(top, #049cdb, #0064cd);background-image:linear-gradient(top, #049cdb, #0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);} .offset9 {
.btn.active,.btn:active{-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.25),0 1px 2px rgba(0, 0, 0, 0.05);} margin-left: 740px;
.btn.disabled{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} }
.btn[disabled]{cursor:default;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);filter:alpha(opacity=65);-khtml-opacity:0.65;-moz-opacity:0.65;opacity:0.65;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}  
.btn.large{font-size:15px;line-height:normal;padding:9px 14px 9px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;} .offset8 {
.btn.small{padding:7px 9px 7px;font-size:11px;} margin-left: 660px;
:root .alert-message,:root .btn{border-radius:0 \0;} }
button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0;}  
.close{float:right;color:#000000;font-size:20px;font-weight:bold;line-height:13.5px;text-shadow:0 1px 0 #ffffff;filter:alpha(opacity=25);-khtml-opacity:0.25;-moz-opacity:0.25;opacity:0.25;}.close:hover{color:#000000;text-decoration:none;filter:alpha(opacity=40);-khtml-opacity:0.4;-moz-opacity:0.4;opacity:0.4;} .offset7 {
.alert-message{position:relative;padding:7px 15px;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94));background-image:-moz-linear-gradient(top, #fceec1, #eedc94);background-image:-ms-linear-gradient(top, #fceec1, #eedc94);background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94));background-image:-webkit-linear-gradient(top, #fceec1, #eedc94);background-image:-o-linear-gradient(top, #fceec1, #eedc94);background-image:linear-gradient(top, #fceec1, #eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.25);}.alert-message .close{margin-top:1px;*margin-top:0;} margin-left: 580px;
.alert-message a{font-weight:bold;color:#404040;} }
.alert-message.danger p a,.alert-message.error p a,.alert-message.success p a,.alert-message.info p a{color:#ffffff;}  
.alert-message h5{line-height:18px;} .offset6 {
.alert-message p{margin-bottom:0;} margin-left: 500px;
.alert-message div{margin-top:5px;margin-bottom:2px;line-height:28px;} }
.alert-message .btn{-webkit-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);-moz-box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);box-shadow:0 1px 0 rgba(255, 255, 255, 0.25);}  
.alert-message.block-message{background-image:none;background-color:#fdf5d9;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);padding:14px;border-color:#fceec1;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}.alert-message.block-message ul,.alert-message.block-message p{margin-right:30px;} .offset5 {
.alert-message.block-message ul{margin-bottom:0;} margin-left: 420px;
.alert-message.block-message li{color:#404040;} }
.alert-message.block-message .alert-actions{margin-top:5px;}  
.alert-message.block-message.error,.alert-message.block-message.success,.alert-message.block-message.info{color:#404040;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);} .offset4 {
.alert-message.block-message.error{background-color:#fddfde;border-color:#fbc7c6;} margin-left: 340px;
.alert-message.block-message.success{background-color:#d1eed1;border-color:#bfe7bf;} }
.alert-message.block-message.info{background-color:#ddf4fb;border-color:#c6edf9;}  
.alert-message.block-message.danger p a,.alert-message.block-message.error p a,.alert-message.block-message.success p a,.alert-message.block-message.info p a{color:#404040;} .offset3 {
.pagination{height:36px;margin:18px 0;}.pagination ul{float:left;margin:0;border:1px solid #ddd;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);} margin-left: 260px;
.pagination li{display:inline;} }
.pagination a{float:left;padding:0 14px;line-height:34px;border-right:1px solid;border-right-color:#ddd;border-right-color:rgba(0, 0, 0, 0.15);*border-right-color:#ddd;text-decoration:none;}  
.pagination a:hover,.pagination .active a{background-color:#c7eefe;} .offset2 {
.pagination .disabled a,.pagination .disabled a:hover{background-color:transparent;color:#bfbfbf;} margin-left: 180px;
.pagination .next a{border:0;} }
.well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}  
.modal-backdrop{background-color:#000000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10000;}.modal-backdrop.fade{opacity:0;} .offset1 {
.modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;} margin-left: 100px;
.modal{position:fixed;top:50%;left:50%;z-index:11000;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;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;} }
.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}  
.modal.fade.in{top:50%;} .row-fluid {
.modal-header{border-bottom:1px solid #eee;padding:5px 15px;} width: 100%;
.modal-body{padding:15px;} *zoom: 1;
.modal-body form{margin-bottom:0;} }
.modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;}  
.modal-footer:after{clear:both;} .row-fluid:before,
.modal-footer .btn{float:right;margin-left:5px;} .row-fluid:after {
.modal .popover,.modal .twipsy{z-index:12000;} display: table;
.twipsy{display:block;position:absolute;visibility:visible;padding:5px;font-size:11px;z-index:1000;filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;}.twipsy.fade.in{filter:alpha(opacity=80);-khtml-opacity:0.8;-moz-opacity:0.8;opacity:0.8;} line-height: 0;
.twipsy.above .twipsy-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;} content: "";
.twipsy.left .twipsy-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} }
.twipsy.below .twipsy-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}  
.twipsy.right .twipsy-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} .row-fluid:after {
.twipsy-inner{padding:3px 8px;background-color:#000000;color:white;text-align:center;max-width:200px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} clear: both;
.twipsy-arrow{position:absolute;width:0;height:0;} }
.popover{position:absolute;top:0;left:0;z-index:1000;padding:5px;display:none;}.popover.above .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}  
.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;} .row-fluid [class*="span"] {
.popover.below .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;} display: block;
.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;} float: left;
.popover .arrow{position:absolute;width:0;height:0;} width: 100%;
.popover .inner{background:#000000;background:rgba(0, 0, 0, 0.8);padding:3px;overflow:hidden;width:280px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);} min-height: 30px;
.popover .title{background-color:#f5f5f5;padding:9px 15px;line-height:1;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;border-bottom:1px solid #eee;} margin-left: 2.127659574468085%;
.popover .content{background-color:#ffffff;padding:14px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover .content p,.popover .content ul,.popover .content ol{margin-bottom:0;} *margin-left: 2.074468085106383%;
.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;} -webkit-box-sizing: border-box;
.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;white-space:nowrap;background-color:#bfbfbf;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}.label.important{background-color:#c43c35;} -moz-box-sizing: border-box;
.label.warning{background-color:#f89406;} box-sizing: border-box;
.label.success{background-color:#46a546;} }
.label.notice{background-color:#62cffc;}  
.media-grid{margin-left:-20px;margin-bottom:0;zoom:1;}.media-grid:before,.media-grid:after{display:table;content:"";zoom:1;} .row-fluid [class*="span"]:first-child {
.media-grid:after{clear:both;} margin-left: 0;
.media-grid li{display:inline;} }
.media-grid a{float:left;padding:4px;margin:0 0 18px 20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}.media-grid a img{display:block;}  
.media-grid a:hover{border-color:#0069d6;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);} .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;
  line-height: 0;
  content: "";
  }
   
  .container:after {
  clear: both;
  }
   
  .container-fluid {
  padding-right: 20px;
  padding-left: 20px;
  *zoom: 1;
  }
   
  .container-fluid:before,
  .container-fluid:after {
  display: table;
  line-height: 0;
  content: "";
  }
   
  .container-fluid:after {
  clear: both;
  }
   
  p {
  margin: 0 0 10px;
  }
   
  .lead {
  margin-bottom: 20px;
  font-size: 20px;
  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;
  }
   
  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 dt {
  float: left;
  width: 120px;
  overflow: hidden;
  clear: left;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
  }
   
  .dl-horizontal dd {
  margin-left: 130px;
  }
   
  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;
  }
   
  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;
  }
   
  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 {
  width: 210px;
  }
   
  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 0.2s, box-shadow linear 0.2s;
  -moz-transition: border linear 0.2s, box-shadow linear 0.2s;
  -o-transition: border linear 0.2s, box-shadow linear 0.2s;
  transition: border linear 0.2s, box-shadow linear 0.2s;
  }
   
  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: 1px \9;
  *margin-top: 0;
  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;
  background-color: #ffffff;
  border: 1px solid #bbb;
  }
   
  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;
  cursor: not-allowed;
  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);
  }
   
  .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;
  line-height: 0;
  content: "";
  }
   
  .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;
  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 .checkbox:focus,
  .control-group.warning .radio:focus,
  .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;
  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 .checkbox:focus,
  .control-group.error .radio:focus,
  .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;
  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 .checkbox:focus,
  .control-group.success .radio:focus,
  .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;
  }
   
  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;
  line-height: 0;
  content: "";
  }
   
  .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;
  padding-left: 5px;
  vertical-align: middle;
  *zoom: 1;
  }
   
  .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 {
  margin-left: -1px;
  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: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;
  margin-bottom: 0;
  vertical-align: middle;
  *zoom: 1;
  }
   
  .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;
  line-height: 0;
  content: "";
  }
   
  .form-horizontal .control-group:after {
  clear: both;
  }
   
  .form-horizontal .control-label {
  float: left;
  width: 140px;
  padding-top: 5px;
  text-align: right;
  }
   
  .form-horizontal .controls {
  *display: inline-block;
  *padding-left: 20px;
  margin-left: 160px;
  *margin-left: 0;
  }
   
  .form-horizontal .controls:first-child {
  *padding-left: 160px;
  }
   
  .form-horizontal .help-block {
  margin-top: 10px;
  margin-bottom: 0;
  }
   
  .form-horizontal .form-actions {
  padding-left: 160px;
  }
   
  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-right-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.info td {
  background-color: #d9edf7;
  }
   
  [class^="icon-"],
  [class*=" icon-"] {
  display: inline-block;
  width: 14px;
  height: 14px;
  margin-top: 1px;
  *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;
  }
   
  /* White icons with optional class, or on hover/active states of certain elements */
   
  .icon-white,
  .nav > .active > a > [class^="icon-"],
  .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 {
  width: 16px;
  background-position: -216px -120px;
  }
   
  .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 {
  width: 16px;
  background-position: -408px -120px;
  }
   
  .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;
  }
   
  .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 {
  color: #ffffff;
  text-decoration: none;
  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;
  background-color: #0088cc;
  background-color: #0081c2;
  background-image: linear-gradient(to bottom, #0088cc, #0077b3);
  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-repeat: repeat-x;
  outline: 0;
  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;
  cursor: default;
  background-color: transparent;
  }
   
  .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: "\2191";
  }
   
  .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;
  float: right;
  width: 0;
  height: 0;
  margin-top: 5px;
  margin-right: -10px;
  border-color: transparent;
  border-left-color: #cccccc;
  border-style: solid;
  border-width: 5px 0 5px 5px;
  content: " ";
  }
   
  .dropdown-submenu:hover > a:after {
  border-left-color: #ffffff;
  }
   
  .dropdown .dropdown-menu .nav-header {
  padding-right: 20px;
  padding-left: 20px;
  }
   
  .typeahead {
  margin-top: 2px;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  }
   
  .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;
  }
   
  .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;
  overflow: visible \9;
  -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;
  }
   
  .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;
  }
   
  .btn {
  display: inline-block;
  *display: inline;
  padding: 4px 14px;
  margin-bottom: 0;
  *margin-left: .3em;
  font-size: 14px;
  line-height: 20px;
  *line-height: 20px;
  color: #333333;
  text-align: center;
  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
  vertical-align: middle;
  cursor: pointer;
  background-color: #f5f5f5;
  *background-color: #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-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
  background-repeat: repeat-x;
  border: 1px solid #bbbbbb;
  *border: 0;
  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
  border-bottom-color: #a2a2a2;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
  *zoom: 1;
  -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: 16px;
  }
   
  .btn-block {
  display: block;
  width: 100%;
  padding-right: 0;
  padding-left: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  }
   
  .btn-block + .btn-block {
  margin-top: 5px;
  }
   
  .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-color: #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-image: -moz-linear-gradient(top, #0088cc, #0044cc);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
  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-color: #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-image: -moz-linear-gradient(top, #fbb450, #f89406);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
  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-color: #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-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
  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-color: #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-image: -moz-linear-gradient(top, #62c462, #51a351);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
  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-color: #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-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
  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-color: #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-image: -moz-linear-gradient(top, #444444, #222222);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
  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 {
  background-color: transparent;
  background-image: none;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  box-shadow: none;
  }
   
  .btn-link {
  color: #0088cc;
  cursor: pointer;
  border-color: transparent;
  -webkit-border-radius: 0;
  -moz-border-radius: 0;
  border-radius: 0;
  }
   
  .btn-link:hover {
  color: #005580;
  text-decoration: underline;
  background-color: transparent;
  }
   
  .btn-group {
  position: relative;
  *margin-left: .3em;
  font-size: 0;
  white-space: nowrap;
  }
   
  .btn-group:first-child {
  *margin-left: 0;
  }
   
  .btn-group + .btn-group {
  margin-left: 5px;
  }
   
  .btn-toolbar {
  margin-top: 10px;
  margin-bottom: 10px;
  font-size: 0;
  }
   
  .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-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -webkit-border-top-left-radius: 4px;
  border-top-left-radius: 4px;
  -moz-border-radius-bottomleft: 4px;
  -moz-border-radius-topleft: 4px;
  }
   
  .btn-group > .btn:last-child,
  .btn-group > .dropdown-toggle {
  -webkit-border-top-right-radius: 4px;
  border-top-right-radius: 4px;
  -webkit-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
  -moz-border-radius-topright: 4px;
  -moz-border-radius-bottomright: 4px;
  }
   
  .btn-group > .btn.large:first-child {
  margin-left: 0;
  -webkit-border-bottom-left-radius: 6px;
  border-bottom-left-radius: 6px;
  -webkit-border-top-left-radius: 6px;
  border-top-left-radius: 6px;
  -moz-border-radius-bottomleft: 6px;
  -moz-border-radius-topleft: 6px;
  }
   
  .btn-group > .btn.large:last-child,
  .btn-group > .large.dropdown-toggle {
  -webkit-border-top-right-radius: 6px;
  border-top-right-radius: 6px;
  -webkit-border-bottom-right-radius: 6px;
  border-bottom-right-radius: 6px;
  -moz-border-radius-topright: 6px;
  -moz-border-radius-bottomright: 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-top: 5px;
  padding-right: 8px;
  *padding-bottom: 5px;
  padding-left: 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);
  }
   
  .btn-group > .btn-mini + .dropdown-toggle {
  *padding-top: 2px;
  padding-right: 5px;
  *padding-bottom: 2px;
  padding-left: 5px;
  }
   
  .btn-group > .btn-small + .dropdown-toggle {
  *padding-top: 5px;
  *padding-bottom: 4px;
  }
   
  .btn-group > .btn-large + .dropdown-toggle {
  *padding-top: 7px;
  padding-right: 12px;
  *padding-bottom: 7px;
  padding-left: 12px;
  }
   
  .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-top-width: 5px;
  border-right-width: 5px;
  border-left-width: 5px;
  }
   
  .dropup .btn-large .caret {
  border-top: 0;
  border-bottom: 5px solid #000000;
  }
   
  .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-top: -1px;
  margin-left: 0;
  }
   
  .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;
  }
   
  .alert {
  padding: 8px 35px 8px 14px;
  margin-bottom: 20px;
  color: #c09853;
  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;
  }
   
  .alert h4 {
  margin: 0;
  }
   
  .alert .close {
  position: relative;
  top: -2px;
  right: -21px;
  line-height: 20px;
  }
   
  .alert-success {
  color: #468847;
  background-color: #dff0d8;
  border-color: #d6e9c6;
  }
   
  .alert-danger,
  .alert-error {
  color: #b94a48;
  background-color: #f2dede;
  border-color: #eed3d7;
  }
   
  .alert-info {
  color: #3a87ad;
  background-color: #d9edf7;
  border-color: #bce8f1;
  }
   
  .alert-block {
  padding-top: 14px;
  padding-bottom: 14px;
  }
   
  .alert-block > p,
  .alert-block > ul {
  margin-bottom: 0;
  }
   
  .alert-block p + p {
  margin-top: 5px;
  }
   
  .nav {
  margin-bottom: 20px;
  margin-left: 0;
  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-right: 15px;
  padding-left: 15px;
  margin-bottom: 0;
  }
   
  .nav-list > li > a,
  .nav-list .nav-header {
  margin-right: -15px;
  margin-left: -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;
  line-height: 0;
  content: "";
  }
   
  .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;
  cursor: default;
  background-color: #ffffff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  }
   
  .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;
  border-top-right-radius: 4px;
  -webkit-border-top-left-radius: 4px;
  border-top-left-radius: 4px;
  -moz-border-radius-topright: 4px;
  -moz-border-radius-topleft: 4px;
  }
   
  .nav-tabs.nav-stacked > li:last-child > a {
  -webkit-border-bottom-right-radius: 4px;
  border-bottom-right-radius: 4px;
  -webkit-border-bottom-left-radius: 4px;
  border-bottom-left-radius: 4px;
  -moz-border-radius-bottomright: 4px;
  -moz-border-radius-bottomleft: 4px;
  }
   
  .nav-tabs.nav-stacked > li > a:hover {
  z-index: 2;
  border-color: #ddd;
  }
   
  .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 {
  margin-top: 6px;
  border-top-color: #0088cc;
  border-bottom-color: #0088cc;
  }
   
  .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;
  line-height: 0;
  content: "";
  }
   
  .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-top-color: #ddd;
  border-bottom-color: transparent;
  }
   
  .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;
  cursor: default;
  background-color: transparent;
  }
   
  .navbar {
  *position: relative;
  *z-index: 2;
  margin-bottom: 20px;
  overflow: visible;
  color: #555555;
  }
   
  .navbar-inner {
  min-height: 40px;
  padding-right: 20px;
  padding-left: 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;
  border: 1px solid #d4d4d4;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0);
  -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);
  }
   
  .navbar .container {
  width: auto;
  }
   
  .nav-collapse.collapse {
  height: auto;
  }
   
  .navbar .brand {
  display: block;
  float: left;
  padding: 10px 20px 10px;
  margin-left: -20px;
  font-size: 20px;
  font-weight: 200;
  color: #555555;
  text-shadow: 0 1px 0 #ffffff;
  }
   
  .navbar .brand:hover {
  text-decoration: none;
  }
   
  .navbar-text {
  margin-bottom: 0;
  line-height: 40px;
  }
   
  .navbar-link {
  color: #555555;
  }
   
  .navbar-link:hover {
  color: #333333;
  }
   
  .navbar .divider-vertical {
  height: 40px;
  margin: 0 9px;
  border-right: 1px solid #ffffff;
  border-left: 1px solid #f2f2f2;
  }
   
  .navbar .btn,
  .navbar .btn-group {
  margin-top: 6px;
  }
   
  .navbar .btn-group .btn {
  margin: 0;
  }
   
  .navbar-form {
  margin-bottom: 0;
  *zoom: 1;
  }
   
  .navbar-form:before,
  .navbar-form:after {
  display: table;
  line-height: 0;
  content: "";
  }
   
  .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 {
  padding: 4px 14px;
  margin-bottom: 0;
  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-fixed-bottom .navbar-inner,
  .navbar-static-top .navbar-inner {
  border: 0;
  }
   
  .navbar-fixed-top .navbar-inner,
  .navbar-fixed-bottom .navbar-inner {
  padding-right: 0;
  padding-left: 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;
  }
   
  .navbar .nav > li {
  float: left;
  }
   
  .navbar .nav > li > a {
  float: none;
  padding: 10px 15px 10px;
  color: #555555;
  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 {
  color: #333333;
  text-decoration: none;
  background-color: transparent;
  }
   
  .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-right: 5px;
  margin-left: 5px;
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #ededed;
  *background-color: #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-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
  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 {
  position: absolute;
  top: -7px;
  left: 9px;
  display: inline-block;
  border-right: 7px solid transparent;
  border-bottom: 7px solid #ccc;
  border-left: 7px solid transparent;
  border-bottom-color: rgba(0, 0, 0, 0.2);
  content: '';
  }
   
  .navbar .nav > li > .dropdown-menu:after {
  position: absolute;
  top: -6px;
  left: 10px;
  display: inline-block;
  border-right: 6px solid transparent;
  border-bottom: 6px solid #ffffff;
  border-left: 6px solid transparent;
  content: '';
  }
   
  .navbar-fixed-bottom .nav > li > .dropdown-menu:before {
  top: auto;
  bottom: -7px;
  border-top: 7px solid #ccc;
  border-bottom: 0;
  border-top-color: rgba(0, 0, 0, 0.2);
  }
   
  .navbar-fixed-bottom .nav > li > .dropdown-menu:after {
  top: auto;
  bottom: -6px;
  border-top: 6px solid #ffffff;
  border-bottom: 0;
  }
   
  .navbar .nav li.dropdown.open > .dropdown-toggle,
  .navbar .nav li.dropdown.active > .dropdown-toggle,
  .navbar .nav li.dropdown.open.active > .dropdown-toggle {
  color: #555555;
  background-color: #e5e5e5;
  }
   
  .navbar .nav li.dropdown > .dropdown-toggle .caret {
  border-top-color: #555555;
  border-bottom-color: #555555;
  }
   
  .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 {
  right: 0;
  left: auto;
  }
   
  .navbar .pull-right > li > .dropdown-menu:before,
  .navbar .nav > li > .dropdown-menu.pull-right:before {
  right: 12px;
  left: auto;
  }
   
  .navbar .pull-right > li > .dropdown-menu:after,
  .navbar .nav > li > .dropdown-menu.pull-right:after {
  right: 13px;
  left: auto;
  }
   
  .navbar .pull-right > li > .dropdown-menu .dropdown-menu,
  .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu {
  right: 100%;
  left: auto;
  margin-right: -1px;
  margin-left: 0;
  -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;
  border-color: #252525;
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
  }
   
  .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 {
  color: #ffffff;
  background-color: transparent;
  }
   
  .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-right-color: #222222;
  border-left-color: #111111;
  }
   
  .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 {
  color: #ffffff;
  background-color: #111111;
  }
   
  .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;
  outline: 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);
  }
   
  .navbar-inverse .btn-navbar {
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  background-color: #0e0e0e;
  *background-color: #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-image: -moz-linear-gradient(top, #151515, #040404);
  background-repeat: repeat-x;
  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);
  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
  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;
  text-shadow: 0 1px 0 #ffffff;
  *zoom: 1;
  }
   
  .breadcrumb .divider {
  padding: 0 5px;
  color: #ccc;
  }
   
  .breadcrumb .active {
  color: #999999;
  }
   
  .pagination {
  height: 40px;
  margin: 20px 0;
  }
   
  .pagination ul {
  display: inline-block;
  *display: inline;
  margin-bottom: 0;
  margin-left: 0;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  border-radius: 3px;
  *zoom: 1;
  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
  }
   
  .pagination li {
  display: inline;
  }
   
  .pagination a,
  .pagination span {
  float: left;
  padding: 0 14px;
  line-height: 38px;
  text-decoration: none;
  background-color: #ffffff;
  border: 1px solid #dddddd;
  border-left-width: 0;
  }
   
  .pagination a:hover,
  .pagination .active a,
  .pagination .active span {
  background-color: #f5f5f5;
  }
   
  .pagination .active a,
  .pagination .active span {
  color: #999999;
  cursor: default;
  }
   
  .pagination .disabled span,
  .pagination .disabled a,
  .pagination .disabled a:hover {
  color: #999999;
  cursor: default;
  background-color: transparent;
  }
   
  .pagination li:first-child a,
  .pagination 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 li:last-child a,
  .pagination 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;
  text-align: center;
  list-style: none;
  *zoom: 1;
  }
   
  .pager:before,
  .pager:after {
  display: table;
  line-height: 0;
  content: "";
  }
   
  .pager:after {
  clear: both;
  }
   
  .pager li {
  display: inline;
  }
   
  .pager a {
  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 {
  float: right;
  }
   
  .pager .previous a {
  float: left;
  }
   
  .pager .disabled a,
  .pager .disabled a:hover {
  color: #999999;
  cursor: default;
  background-color: #fff;
  }
   
  .modal-open .dropdown-menu {
  z-index: 2050;
  }
   
  .modal-open .dropdown.open {
  *z-index: 2050;
  }
   
  .modal-open .popover {
  z-index: 2060;
  }
   
  .modal-open .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;
  width: 560px;
  margin: -250px 0 0 -280px;
  overflow: auto;
  background-color: #ffffff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.3);
  *border: 1px solid #999;
  -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 {
  top: -25%;
  -webkit-transition: opacity 0.3s linear, top 0.3s ease-out;
  -moz-transition: opacity 0.3s linear, top 0.3s ease-out;
  -o-transition: opacity 0.3s linear, top 0.3s ease-out;
  transition: opacity 0.3s linear, top 0.3s ease-out;
  }
   
  .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 {
  max-height: 400px;
  padding: 15px;
  overflow-y: auto;
  }
   
  .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;
  *zoom: 1;
  -webkit-box-shadow: inset 0 1px 0 #ffffff;
  -moz-box-shadow: inset 0 1px 0 #ffffff;
  box-shadow: inset 0 1px 0 #ffffff;
  }
   
  .modal-footer:before,
  .modal-footer:after {
  display: table;
  line-height: 0;
  content: "";
  }
   
  .modal-footer:after {
  clear: both;
  }
   
  .modal-footer .btn + .btn {
  margin-bottom: 0;
  margin-left: 5px;
  }
   
  .modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
  }
   
  .tooltip {
  position: absolute;
  z-index: 1030;
  display: block;
  padding: 5px;
  font-size: 11px;
  opacity: 0;
  filter: alpha(opacity=0);
  visibility: visible;
  }
   
  .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-top-color: #000000;
  border-width: 5px 5px 0;
  }
   
  .tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-right-color: #000000;
  border-width: 5px 5px 5px 0;
  }
   
  .tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-left-color: #000000;
  border-width: 5px 0 5px 5px;
  }
   
  .tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-bottom-color: #000000;
  border-width: 0 5px 5px;
  }
   
  .popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1010;
  display: none;
  width: 236px;
  padding: 1px;
  background-color: #ffffff;
  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);
  -webkit-background-clip: padding-box;
  -moz-background-clip: padding;
  background-clip: padding-box;
  }
   
  .popover.top {
  margin-bottom: 10px;
  }
   
  .popover.right {
  margin-left: 10px;
  }
   
  .popover.bottom {
  margin-top: 10px;
  }
   
  .popover.left {
  margin-right: 10px;
  }
   
  .popover-title {
  padding: 8px 14px;
  margin: 0;
  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 {
  z-index: -1;
  content: "";
  }
   
  .popover.top .arrow {
  bottom: -10px;
  left: 50%;
  margin-left: -10px;
  border-top-color: #ffffff;
  border-width: 10px 10px 0;
  }
   
  .popover.top .arrow:after {
  bottom: -1px;
  left: -11px;
  border-top-color: rgba(0, 0, 0, 0.25);
  border-width: 11px 11px 0;
  }
   
  .popover.right .arrow {
  top: 50%;
  left: -10px;
  margin-top: -10px;
  border-right-color: #ffffff;
  border-width: 10px 10px 10px 0;
  }
   
  .popover.right .arrow:after {
  bottom: -11px;
  left: -1px;
  border-right-color: rgba(0, 0, 0, 0.25);
  border-width: 11px 11px 11px 0;
  }
   
  .popover.bottom .arrow {
  top: -10px;
  left: 50%;
  margin-left: -10px;
  border-bottom-color: #ffffff;
  border-width: 0 10px 10px;
  }
   
  .popover.bottom .arrow:after {
  top: -1px;
  left: -11px;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  border-width: 0 11px 11px;
  }
   
  .popover.left .arrow {
  top: 50%;
  right: -10px;
  margin-top: -10px;
  border-left-color: #ffffff;
  border-width: 10px 0 10px 10px;
  }
   
  .popover.left .arrow:after {
  right: -1px;
  bottom: -11px;
  border-left-color: rgba(0, 0, 0, 0.25);
  border-width: 11px 0 11px 11px;
  }
   
  .thumbnails {
  margin-left: -20px;
  list-style: none;
  *zoom: 1;
  }
   
  .thumbnails:before,
  .thumbnails:after {
  display: table;
  line-height: 0;
  content: "";
  }
   
  .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-right: auto;
  margin-left: auto;
  }
   
  .thumbnail .caption {
  padding: 9px;
  color: #555555;
  }
   
  .label,
  .badge {
  font-size: 11.844px;
  font-weight: bold;
  line-height: 14px;
  color: #ffffff;
  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
  white-space: nowrap;
  vertical-align: baseline;
  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;
  }
   
  @-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 {
  height: 20px;
  margin-bottom: 20px;
  overflow: hidden;
  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;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  border-radius: 4px;
  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);
  }
   
  .progress .bar {
  float: left;
  width: 0;
  height: 100%;
  font-size: 12px;
  color: #ffffff;
  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);
  }
   
  .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 {
  position: relative;
  width: 100%;
  overflow: hidden;
  }
   
  .carousel .item {
  position: relative;
  display: none;
  -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 {
  right: 15px;
  left: auto;
  }
   
  .carousel-control:hover {
  color: #ffffff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
  }
   
  .carousel-caption {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 15px;
  background: #333333;
  background: rgba(0, 0, 0, 0.75);
  }
   
  .carousel-caption h4,
  .carousel-caption p {
  line-height: 20px;
  color: #ffffff;
  }
   
  .carousel-caption h4 {
  margin: 0 0 5px;
  }
   
  .carousel-caption p {
  margin-bottom: 0;
  }
   
  .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;
  letter-spacing: -1px;
  color: inherit;
  }
   
  .hero-unit p {
  font-size: 18px;
  font-weight: 200;
  line-height: 30px;
  color: inherit;
  }
   
  .pull-right {
  float: right;
  }
   
  .pull-left {
  float: left;
  }
   
  .hide {
  display: none;
  }
   
  .show {
  display: block;
  }
   
  .invisible {
  visibility: hidden;
  }
   
  .affix {
  position: fixed;
  }
   
<?php <?php
include_once ("./lib/common.inc.php"); include_once ("./lib/common.inc.php");
if ($_REQUEST['agency']) { if ($_REQUEST['agency']) {
$agency = htmlentities(strip_tags($_REQUEST['agency'])); $agency = htmlentities(strip_tags($_REQUEST['agency']));
include_header($agency); include_header($agency);
echo '<center><h1>'.$agency.'</h1></center>'; echo '<center><h1>'.$agency.'</h1></center>';
// MethodCountGraph($agency); // MethodCountGraph($agency);
// CnCGraph($agency); // CnCGraph($agency);
// MethodValueGraph($agency); // MethodValueGraph($agency);
/* biggest contracts /* biggest contracts
spending by year spending by year
spending by industry/category spending by industry/category
spending by supplier spending by supplier
spread procurement methods (stacked bar graph) spread procurement methods (stacked bar graph)
+ percent consultancies + percent confidential (bar graph) + percent consultancies + percent confidential (bar graph)
Average value by procurement type Average value by procurement type
--- info --- info
website, procurement plan, annual reports website, procurement plan, annual reports
Breakdown of divisions/branches Breakdown of divisions/branches
Breakdown percentage,number,value by procurement type Breakdown percentage,number,value by procurement type
Histograph, overlaying number value reported per week over X years Histograph, overlaying number value reported per week over X years
Compliance statistics: amendments, delay in reporting average and number completely late */ Compliance statistics: amendments, delay in reporting average and number completely late */
$query = 'SELECT "CNID", "description", "value", "agencyName", "category", $query = 'SELECT "CNID", "description", "value", "agencyName", "category",
"contractStart", "supplierName" "contractStart", "supplierName"
FROM contractnotice FROM contractnotice
WHERE "agencyName" = :agency WHERE "agencyName" like :agency
ORDER BY "value" DESC limit 100'; ORDER BY "value" DESC limit 100';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":agency", $agency); $query->bindParam(":agency", $agency);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
echo "<table> <thead> echo "<table> <thead>
<tr> <tr>
<th>Contract Notice Number</th> <th>Contract Notice Number</th>
<th>Contract Description</th> <th>Contract Description</th>
<th>Total Contract Value</th> <th>Total Contract Value</th>
<th>Agency</th> <th>Agency</th>
<th>Contract Start Date</th> <th>Contract Start Date</th>
<th>Supplier</th> <th>Supplier</th>
</tr> </tr>
</thead>"; </thead>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row['value']), 2); $value = number_format(doubleval($row['value']), 2);
echo ("<tr> echo ("<tr>
<td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td> <td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td>
<td><b>{$row['description']}</b></a></td> <td><b>{$row['description']}</b></a></td>
<td>\$$value</td><td>{$row['agencyName']}</td> <td>\$$value</td><td>{$row['agencyName']}</td>
<td>{$row['contractStart']}</td> <td>{$row['contractStart']}</td>
<td>{$row['supplierName']}</td> <td>{$row['supplierName']}</td>
</tr>"); </tr>");
} }
echo "</table>"; echo "</table>";
} else { } else {
/* /*
split by portfolio split by portfolio
*/ */
include_header("Agencies"); include_header("Agencies");
agenciesGraph(); agenciesGraph();
$query = 'SELECT SUM("value"), "agencyName" $query = 'SELECT SUM("value"), "agencyName"
FROM contractnotice FROM contractnotice
WHERE "childCN" is null WHERE "childCN" is null
GROUP BY "agencyName" '; GROUP BY "agencyName" ';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
echo "<table> <thead> echo "<table> <thead>
<tr> <tr>
<th>Agency</th> <th>Agency</th>
<th>Total Contracts Value</th> <th>Total Contracts Value</th>
</tr> </tr>
</thead>"; </thead>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row[0]), 2); $value = number_format(doubleval($row[0]), 2);
$agency = stripslashes($row[1]); $agency = stripslashes($row[1]);
echo ("<tr><td><b><a href=\"displayAgency.php?agency={$agency}\">{$agency}</a></b></td><td>\$$value</td></tr>\n"); echo ("<tr><td><b><a href=\"displayAgency.php?agency={$agency}\">{$agency}</a></b></td><td>\$$value</td></tr>\n");
} }
echo "</table>"; echo "</table>";
} }
include_footer(); include_footer();
?> ?>
   
<?php <?php
include_once("./lib/common.inc.php"); include_once("./lib/common.inc.php");
include_header("Months and Years");  
if ($_REQUEST['month']) { if ($_REQUEST['month']) {
echo "<center><h1>" . $_REQUEST['month'] . "</h1></center>";  
$monthParts = explode("-", $_REQUEST['month']); $monthParts = explode("-", $_REQUEST['month']);
  $year = $monthParts[1];
  $month = $monthParts[0];
  $monthName = date("F Y", mktime(0,0,0,$month,1,$year));
   
  include_header($monthName);
  echo "<center><h1>" . $monthName . "</h1></center>";
   
$query = 'SELECT "CNID", "description", "value", "agencyName", "category", "contractStart", "supplierName" $query = 'SELECT "CNID", "description", "value", "agencyName", "category", "contractStart", "supplierName"
FROM contractnotice FROM contractnotice
WHERE "childCN" is null WHERE "childCN" is null
AND extract(year from "contractStart") = :year AND extract(year from "contractStart") = :year
AND extract(month from "contractStart") = :month AND extract(month from "contractStart") = :month
ORDER BY value DESC'; ORDER BY value DESC';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":month", $monthParts[0]); $query->bindParam(":month", $monthParts[0]);
$query->bindParam(":year", $monthParts[1]); $query->bindParam(":year", $monthParts[1]);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
//MethodCountGraph($supplier); //MethodCountGraph($supplier);
//CnCGraph($supplier); //CnCGraph($supplier);
echo "<table> <thead> echo "<table> <thead>
<tr> <tr>
<th>Contract Notice Number</th> <th>Contract Notice Number</th>
<th>Contract Description</th> <th>Contract Description</th>
<th>Total Contract Value</th> <th>Total Contract Value</th>
<th>Agency</th> <th>Agency</th>
<th>Contract Start Date</th> <th>Contract Start Date</th>
<th>Supplier</th> <th>Supplier</th>
</tr> </tr>
</thead>"; </thead>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row['value']), 2); $value = number_format(doubleval($row['value']), 2);
echo ("<tr> echo ("<tr>
<td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td> <td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td>
<td><b>{$row['description']}</b></a></td> <td><b>{$row['description']}</b></a></td>
<td>\$$value</td><td>{$row['agencyName']}</td> <td>\$$value</td><td>{$row['agencyName']}</td>
<td>{$row['contractStart']}</td> <td>{$row['contractStart']}</td>
<td>{$row['supplierName']}</td> <td>{$row['supplierName']}</td>
</tr>"); </tr>");
} }
echo "</table>"; echo "</table>";
} else { } else {
/* /*
split by year split by year
todo: todo:
Year/Month drilldown - largest contracts, agencies, suppliers Year/Month drilldown - largest contracts, agencies, suppliers
count per month count per month
big picture graphs? */ big picture graphs? */
  include_header("Months and Years");
ContractStartingGraph(); ContractStartingGraph();
ContractPublishedGraph(); ContractPublishedGraph();
$query = 'SELECT extract(year from "contractStart"), extract(month from "contractStart"), $query = 'SELECT extract(year from "contractStart"), extract(month from "contractStart"),
SUM(value) as val, count(1) as count FROM contractnotice WHERE "childCN" is null GROUP BY extract(year from "contractStart"), extract(month from "contractStart") ORDER BY extract(year from "contractStart"), extract(month from "contractStart") '; SUM(value) as val, count(1) as count FROM contractnotice WHERE "childCN" is null GROUP BY extract(year from "contractStart"), extract(month from "contractStart") ORDER BY extract(year from "contractStart"), extract(month from "contractStart") ';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
echo "<table> <thead> echo "<table> <thead>
<tr> <tr>
<th>Month/Year</th> <th>Month/Year</th>
<th>Total Contracts Value</th> <th>Total Contracts Value</th>
<th>Number of Contracts</th> <th>Number of Contracts</th>
</tr> </tr>
</thead>"; </thead>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row["val"]), 2); $value = number_format(doubleval($row["val"]), 2);
$month_name = date('F', mktime(0, 0, 0, $row[1])); $month_name = date('F', mktime(0, 0, 0, $row[1]));
echo ("<tr><td><b><a href=\"?month=$row[1]-$row[0]\">$month_name {$row[0]}</a></b></td><td>\$$value</td><td>({$row['count']} contracts)</td></tr>"); echo ("<tr><td><b><a href=\"?month=$row[1]-$row[0]\">$month_name {$row[0]}</a></b></td><td>\$$value</td><td>({$row['count']} contracts)</td></tr>");
} }
echo "</table>"; echo "</table>";
} }
include_footer(); include_footer();
?> ?>
   
<?php <?php
include_once ("./lib/common.inc.php"); include_once ("./lib/common.inc.php");
if ($_REQUEST['category']) { if ($_REQUEST['category']) {
include_header("Category"); include_header($_REQUEST['category']." goods and services");
echo "<center><h1>".$_REQUEST['category']."</h1></center>"; echo "<center><h1>".$_REQUEST['category']."</h1></center>";
$query = 'SELECT "CNID", description, value, "agencyName", category, "contractStart", "supplierName" $query = 'SELECT "CNID", description, value, "agencyName", category, "contractStart", "supplierName"
FROM contractnotice FROM contractnotice
WHERE "childCN" is null WHERE "childCN" is null
AND category = :category AND category = :category
ORDER BY value DESC'; ORDER BY value DESC';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":category", $_REQUEST['category']); $query->bindParam(":category", $_REQUEST['category']);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
echo "<table> <thead> echo "<table> <thead>
<tr> <tr>
<th>Contract Notice Number</th> <th>Contract Notice Number</th>
<th>Contract Description</th> <th>Contract Description</th>
<th>Total Contract Value</th> <th>Total Contract Value</th>
<th>Agency</th> <th>Agency</th>
<th>Contract Start Date</th> <th>Contract Start Date</th>
<th>Supplier</th> <th>Supplier</th>
</tr> </tr>
</thead>"; </thead>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row['value']) , 2); $value = number_format(doubleval($row['value']) , 2);
echo ("<tr> echo ("<tr>
<td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td> <td><a href=\"displayContract.php?CNID={$row['CNID']}\">{$row['CNID']}</a></td>
<td><b>{$row['description']}</b></a></td> <td><b>{$row['description']}</b></a></td>
<td>\$$value</td><td>{$row['agencyName']}</td> <td>\$$value</td><td>{$row['agencyName']}</td>
<td>{$row['contractStart']}</td> <td>{$row['contractStart']}</td>
<td>{$row['supplierName']}</td> <td>{$row['supplierName']}</td>
</tr>"); </tr>");
} }
echo "</table>"; echo "</table>";
} else { } else {
/* /*
split by main categories split by main categories
*/ */
include_header("Categories"); include_header("Categories");
$query = 'SELECT sum(value), category $query = 'SELECT sum(value), category
FROM contractnotice FROM contractnotice
WHERE "childCN" is null WHERE "childCN" is null
GROUP BY category ORDER BY sum(value) DESC '; GROUP BY category ORDER BY sum(value) DESC ';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
echo "<table> <thead> echo "<table> <thead>
<tr> <tr>
<th>Category</th> <th>Category</th>
<th>Total Contracts Value</th> <th>Total Contracts Value</th>
</tr> </tr>
</thead>"; </thead>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row[0]) , 2); $value = number_format(doubleval($row[0]) , 2);
echo ("<tr><td><A href=\"displayCategory.php?category={$row[1]}\"><b>{$row[1]}</b></a></td><td>\$$value</td></tr>"); echo ("<tr><td><A href=\"displayCategory.php?category={$row[1]}\"><b>{$row[1]}</b></a></td><td>\$$value</td></tr>");
} }
echo "</table>"; echo "</table>";
} }
include_footer(); include_footer();
?> ?>
<?php <?php
   
include_once("./lib/common.inc.php"); include_once("./lib/common.inc.php");
/* /*
   
   
agencies that use alot of Confidentialities agencies that use alot of Confidentialities
suppliers that provide alot suppliers that provide alot
how much is spent overall per year how much is spent overall per year
*/ */
   
include_header("Confidentialities"); include_header("Confidentialities");
$query = "SELECT value, procurementMethod $query = 'SELECT SUM(value) as value, "procurementMethod"
FROM `contractnotice` FROM contractnotice
GROUP BY procurementMethod "; GROUP BY "procurementMethod" ';
   
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
echo "<table>"; echo "<table>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row[0]),2); $value = number_format(doubleval($row[0]),2);
echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>");
} }
echo "</table>"; echo "</table>";
include_footer(); include_footer();
?> ?>
   
   
   
<?php <?php
   
include_once("./lib/common.inc.php"); include_once("./lib/common.inc.php");
/* /*
   
   
agencies that use alot of consultacies agencies that use alot of consultacies
suppliers that provide alot suppliers that provide alot
how much is spent overall per year how much is spent overall per year
*/ */
   
include_header("Consultancies"); include_header("Consultancies");
$query = "SELECT value, procurementMethod $query = 'SELECT SUM(value) as value, "procurementMethod"
FROM `contractnotice` FROM contractnotice
GROUP BY procurementMethod "; GROUP BY "procurementMethod" ';
   
   
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
echo "<table>"; echo "<table>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row[0]),2); $value = number_format(doubleval($row[0]),2);
echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>");
} }
echo "</table>"; echo "</table>";
include_footer(); include_footer();
?> ?>
   
   
   
<?php <?php
include_once("./lib/common.inc.php"); include_once("./lib/common.inc.php");
/* /*
biggest suppliers in each method biggest suppliers in each method
biggest agencies in each method (weighted for size? percentage of total expenditure) biggest agencies in each method (weighted for size? percentage of total expenditure)
largest Average value by procurement type? largest Average value by procurement type?
*/ */
include_header("Procurement Methods"); include_header("Procurement Methods");
$query = "SELECT SUM(value) as value, procurementMethod $query = 'SELECT SUM(value) as value, "procurementMethod"
FROM `contractnotice` FROM contractnotice
WHERE childCN is null WHERE "childCN" is null
GROUP BY procurementMethod "; GROUP BY "procurementMethod"';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
echo "<table>"; echo "<table>";
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row[0]),2); $value = number_format(doubleval($row[0]),2);
echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>"); echo ("<tr><td><b>{$row[1]}</b></td><td>\$$value</td></tr>");
} }
echo "</table>"; echo "</table>";
include_footer(); include_footer();
?> ?>
   
  /* ==========================================================
  * bootstrap-affix.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#affix
  * ==========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ========================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* AFFIX CLASS DEFINITION
  * ====================== */
 
  var Affix = function (element, options) {
  this.options = $.extend({}, $.fn.affix.defaults, options)
  this.$window = $(window).on('scroll.affix.data-api', $.proxy(this.checkPosition, this))
  this.$element = $(element)
  this.checkPosition()
  }
 
  Affix.prototype.checkPosition = function () {
  if (!this.$element.is(':visible')) return
 
  var scrollHeight = $(document).height()
  , scrollTop = this.$window.scrollTop()
  , position = this.$element.offset()
  , offset = this.options.offset
  , offsetBottom = offset.bottom
  , offsetTop = offset.top
  , reset = 'affix affix-top affix-bottom'
  , affix
 
  if (typeof offset != 'object') offsetBottom = offsetTop = offset
  if (typeof offsetTop == 'function') offsetTop = offset.top()
  if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()
 
  affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?
  false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?
  'bottom' : offsetTop != null && scrollTop <= offsetTop ?
  'top' : false
 
  if (this.affixed === affix) return
 
  this.affixed = affix
  this.unpin = affix == 'bottom' ? position.top - scrollTop : null
 
  this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))
  }
 
 
  /* AFFIX PLUGIN DEFINITION
  * ======================= */
 
  $.fn.affix = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('affix')
  , options = typeof option == 'object' && option
  if (!data) $this.data('affix', (data = new Affix(this, options)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.affix.Constructor = Affix
 
  $.fn.affix.defaults = {
  offset: 0
  }
 
 
  /* AFFIX DATA-API
  * ============== */
 
  $(window).on('load', function () {
  $('[data-spy="affix"]').each(function () {
  var $spy = $(this)
  , data = $spy.data()
 
  data.offset = data.offset || {}
 
  data.offsetBottom && (data.offset.bottom = data.offsetBottom)
  data.offsetTop && (data.offset.top = data.offsetTop)
 
  $spy.affix(data)
  })
  })
 
 
  }(window.jQuery);
  /* ==========================================================
  * bootstrap-alert.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#alerts
  * ==========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ========================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* ALERT CLASS DEFINITION
  * ====================== */
 
  var dismiss = '[data-dismiss="alert"]'
  , Alert = function (el) {
  $(el).on('click', dismiss, this.close)
  }
 
  Alert.prototype.close = function (e) {
  var $this = $(this)
  , selector = $this.attr('data-target')
  , $parent
 
  if (!selector) {
  selector = $this.attr('href')
  selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
  }
 
  $parent = $(selector)
 
  e && e.preventDefault()
 
  $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
 
  $parent.trigger(e = $.Event('close'))
 
  if (e.isDefaultPrevented()) return
 
  $parent.removeClass('in')
 
  function removeElement() {
  $parent
  .trigger('closed')
  .remove()
  }
 
  $.support.transition && $parent.hasClass('fade') ?
  $parent.on($.support.transition.end, removeElement) :
  removeElement()
  }
 
 
  /* ALERT PLUGIN DEFINITION
  * ======================= */
 
  $.fn.alert = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('alert')
  if (!data) $this.data('alert', (data = new Alert(this)))
  if (typeof option == 'string') data[option].call($this)
  })
  }
 
  $.fn.alert.Constructor = Alert
 
 
  /* ALERT DATA-API
  * ============== */
 
  $(function () {
  $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
  })
 
  }(window.jQuery);
  /* ============================================================
  * bootstrap-button.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#buttons
  * ============================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============================================================ */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* BUTTON PUBLIC CLASS DEFINITION
  * ============================== */
 
  var Button = function (element, options) {
  this.$element = $(element)
  this.options = $.extend({}, $.fn.button.defaults, options)
  }
 
  Button.prototype.setState = function (state) {
  var d = 'disabled'
  , $el = this.$element
  , data = $el.data()
  , val = $el.is('input') ? 'val' : 'html'
 
  state = state + 'Text'
  data.resetText || $el.data('resetText', $el[val]())
 
  $el[val](data[state] || this.options[state])
 
  // push to event loop to allow forms to submit
  setTimeout(function () {
  state == 'loadingText' ?
  $el.addClass(d).attr(d, d) :
  $el.removeClass(d).removeAttr(d)
  }, 0)
  }
 
  Button.prototype.toggle = function () {
  var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
 
  $parent && $parent
  .find('.active')
  .removeClass('active')
 
  this.$element.toggleClass('active')
  }
 
 
  /* BUTTON PLUGIN DEFINITION
  * ======================== */
 
  $.fn.button = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('button')
  , options = typeof option == 'object' && option
  if (!data) $this.data('button', (data = new Button(this, options)))
  if (option == 'toggle') data.toggle()
  else if (option) data.setState(option)
  })
  }
 
  $.fn.button.defaults = {
  loadingText: 'loading...'
  }
 
  $.fn.button.Constructor = Button
 
 
  /* BUTTON DATA-API
  * =============== */
 
  $(function () {
  $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
  var $btn = $(e.target)
  if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
  $btn.button('toggle')
  })
  })
 
  }(window.jQuery);
  /* ==========================================================
  * bootstrap-carousel.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#carousel
  * ==========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ========================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* CAROUSEL CLASS DEFINITION
  * ========================= */
 
  var Carousel = function (element, options) {
  this.$element = $(element)
  this.options = options
  this.options.slide && this.slide(this.options.slide)
  this.options.pause == 'hover' && this.$element
  .on('mouseenter', $.proxy(this.pause, this))
  .on('mouseleave', $.proxy(this.cycle, this))
  }
 
  Carousel.prototype = {
 
  cycle: function (e) {
  if (!e) this.paused = false
  this.options.interval
  && !this.paused
  && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
  return this
  }
 
  , to: function (pos) {
  var $active = this.$element.find('.item.active')
  , children = $active.parent().children()
  , activePos = children.index($active)
  , that = this
 
  if (pos > (children.length - 1) || pos < 0) return
 
  if (this.sliding) {
  return this.$element.one('slid', function () {
  that.to(pos)
  })
  }
 
  if (activePos == pos) {
  return this.pause().cycle()
  }
 
  return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
  }
 
  , pause: function (e) {
  if (!e) this.paused = true
  if (this.$element.find('.next, .prev').length && $.support.transition.end) {
  this.$element.trigger($.support.transition.end)
  this.cycle()
  }
  clearInterval(this.interval)
  this.interval = null
  return this
  }
 
  , next: function () {
  if (this.sliding) return
  return this.slide('next')
  }
 
  , prev: function () {
  if (this.sliding) return
  return this.slide('prev')
  }
 
  , slide: function (type, next) {
  var $active = this.$element.find('.item.active')
  , $next = next || $active[type]()
  , isCycling = this.interval
  , direction = type == 'next' ? 'left' : 'right'
  , fallback = type == 'next' ? 'first' : 'last'
  , that = this
  , e = $.Event('slide', {
  relatedTarget: $next[0]
  })
 
  this.sliding = true
 
  isCycling && this.pause()
 
  $next = $next.length ? $next : this.$element.find('.item')[fallback]()
 
  if ($next.hasClass('active')) return
 
  if ($.support.transition && this.$element.hasClass('slide')) {
  this.$element.trigger(e)
  if (e.isDefaultPrevented()) return
  $next.addClass(type)
  $next[0].offsetWidth // force reflow
  $active.addClass(direction)
  $next.addClass(direction)
  this.$element.one($.support.transition.end, function () {
  $next.removeClass([type, direction].join(' ')).addClass('active')
  $active.removeClass(['active', direction].join(' '))
  that.sliding = false
  setTimeout(function () { that.$element.trigger('slid') }, 0)
  })
  } else {
  this.$element.trigger(e)
  if (e.isDefaultPrevented()) return
  $active.removeClass('active')
  $next.addClass('active')
  this.sliding = false
  this.$element.trigger('slid')
  }
 
  isCycling && this.cycle()
 
  return this
  }
 
  }
 
 
  /* CAROUSEL PLUGIN DEFINITION
  * ========================== */
 
  $.fn.carousel = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('carousel')
  , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option)
  , action = typeof option == 'string' ? option : options.slide
  if (!data) $this.data('carousel', (data = new Carousel(this, options)))
  if (typeof option == 'number') data.to(option)
  else if (action) data[action]()
  else if (options.interval) data.cycle()
  })
  }
 
  $.fn.carousel.defaults = {
  interval: 5000
  , pause: 'hover'
  }
 
  $.fn.carousel.Constructor = Carousel
 
 
  /* CAROUSEL DATA-API
  * ================= */
 
  $(function () {
  $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
  var $this = $(this), href
  , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
  , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
  $target.carousel(options)
  e.preventDefault()
  })
  })
 
  }(window.jQuery);
  /* =============================================================
  * bootstrap-collapse.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#collapse
  * =============================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============================================================ */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* COLLAPSE PUBLIC CLASS DEFINITION
  * ================================ */
 
  var Collapse = function (element, options) {
  this.$element = $(element)
  this.options = $.extend({}, $.fn.collapse.defaults, options)
 
  if (this.options.parent) {
  this.$parent = $(this.options.parent)
  }
 
  this.options.toggle && this.toggle()
  }
 
  Collapse.prototype = {
 
  constructor: Collapse
 
  , dimension: function () {
  var hasWidth = this.$element.hasClass('width')
  return hasWidth ? 'width' : 'height'
  }
 
  , show: function () {
  var dimension
  , scroll
  , actives
  , hasData
 
  if (this.transitioning) return
 
  dimension = this.dimension()
  scroll = $.camelCase(['scroll', dimension].join('-'))
  actives = this.$parent && this.$parent.find('> .accordion-group > .in')
 
  if (actives && actives.length) {
  hasData = actives.data('collapse')
  if (hasData && hasData.transitioning) return
  actives.collapse('hide')
  hasData || actives.data('collapse', null)
  }
 
  this.$element[dimension](0)
  this.transition('addClass', $.Event('show'), 'shown')
  $.support.transition && this.$element[dimension](this.$element[0][scroll])
  }
 
  , hide: function () {
  var dimension
  if (this.transitioning) return
  dimension = this.dimension()
  this.reset(this.$element[dimension]())
  this.transition('removeClass', $.Event('hide'), 'hidden')
  this.$element[dimension](0)
  }
 
  , reset: function (size) {
  var dimension = this.dimension()
 
  this.$element
  .removeClass('collapse')
  [dimension](size || 'auto')
  [0].offsetWidth
 
  this.$element[size !== null ? 'addClass' : 'removeClass']('collapse')
 
  return this
  }
 
  , transition: function (method, startEvent, completeEvent) {
  var that = this
  , complete = function () {
  if (startEvent.type == 'show') that.reset()
  that.transitioning = 0
  that.$element.trigger(completeEvent)
  }
 
  this.$element.trigger(startEvent)
 
  if (startEvent.isDefaultPrevented()) return
 
  this.transitioning = 1
 
  this.$element[method]('in')
 
  $.support.transition && this.$element.hasClass('collapse') ?
  this.$element.one($.support.transition.end, complete) :
  complete()
  }
 
  , toggle: function () {
  this[this.$element.hasClass('in') ? 'hide' : 'show']()
  }
 
  }
 
 
  /* COLLAPSIBLE PLUGIN DEFINITION
  * ============================== */
 
  $.fn.collapse = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('collapse')
  , options = typeof option == 'object' && option
  if (!data) $this.data('collapse', (data = new Collapse(this, options)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.collapse.defaults = {
  toggle: true
  }
 
  $.fn.collapse.Constructor = Collapse
 
 
  /* COLLAPSIBLE DATA-API
  * ==================== */
 
  $(function () {
  $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function (e) {
  var $this = $(this), href
  , target = $this.attr('data-target')
  || e.preventDefault()
  || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
  , option = $(target).data('collapse') ? 'toggle' : $this.data()
  $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed')
  $(target).collapse(option)
  })
  })
 
  }(window.jQuery);
  /* ============================================================
  * bootstrap-dropdown.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#dropdowns
  * ============================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============================================================ */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* DROPDOWN CLASS DEFINITION
  * ========================= */
 
  var toggle = '[data-toggle=dropdown]'
  , Dropdown = function (element) {
  var $el = $(element).on('click.dropdown.data-api', this.toggle)
  $('html').on('click.dropdown.data-api', function () {
  $el.parent().removeClass('open')
  })
  }
 
  Dropdown.prototype = {
 
  constructor: Dropdown
 
  , toggle: function (e) {
  var $this = $(this)
  , $parent
  , isActive
 
  if ($this.is('.disabled, :disabled')) return
 
  $parent = getParent($this)
 
  isActive = $parent.hasClass('open')
 
  clearMenus()
 
  if (!isActive) {
  $parent.toggleClass('open')
  $this.focus()
  }
 
  return false
  }
 
  , keydown: function (e) {
  var $this
  , $items
  , $active
  , $parent
  , isActive
  , index
 
  if (!/(38|40|27)/.test(e.keyCode)) return
 
  $this = $(this)
 
  e.preventDefault()
  e.stopPropagation()
 
  if ($this.is('.disabled, :disabled')) return
 
  $parent = getParent($this)
 
  isActive = $parent.hasClass('open')
 
  if (!isActive || (isActive && e.keyCode == 27)) return $this.click()
 
  $items = $('[role=menu] li:not(.divider) a', $parent)
 
  if (!$items.length) return
 
  index = $items.index($items.filter(':focus'))
 
  if (e.keyCode == 38 && index > 0) index-- // up
  if (e.keyCode == 40 && index < $items.length - 1) index++ // down
  if (!~index) index = 0
 
  $items
  .eq(index)
  .focus()
  }
 
  }
 
  function clearMenus() {
  getParent($(toggle))
  .removeClass('open')
  }
 
  function getParent($this) {
  var selector = $this.attr('data-target')
  , $parent
 
  if (!selector) {
  selector = $this.attr('href')
  selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
  }
 
  $parent = $(selector)
  $parent.length || ($parent = $this.parent())
 
  return $parent
  }
 
 
  /* DROPDOWN PLUGIN DEFINITION
  * ========================== */
 
  $.fn.dropdown = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('dropdown')
  if (!data) $this.data('dropdown', (data = new Dropdown(this)))
  if (typeof option == 'string') data[option].call($this)
  })
  }
 
  $.fn.dropdown.Constructor = Dropdown
 
 
  /* APPLY TO STANDARD DROPDOWN ELEMENTS
  * =================================== */
 
  $(function () {
  $('html')
  .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
  $('body')
  .on('click.dropdown touchstart.dropdown.data-api', '.dropdown', function (e) { e.stopPropagation() })
  .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
  .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
  })
 
  }(window.jQuery);
  /* =========================================================
  * bootstrap-modal.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#modals
  * =========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ========================================================= */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* MODAL CLASS DEFINITION
  * ====================== */
 
  var Modal = function (element, options) {
  this.options = options
  this.$element = $(element)
  .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
  this.options.remote && this.$element.find('.modal-body').load(this.options.remote)
  }
 
  Modal.prototype = {
 
  constructor: Modal
 
  , toggle: function () {
  return this[!this.isShown ? 'show' : 'hide']()
  }
 
  , show: function () {
  var that = this
  , e = $.Event('show')
 
  this.$element.trigger(e)
 
  if (this.isShown || e.isDefaultPrevented()) return
 
  $('body').addClass('modal-open')
 
  this.isShown = true
 
  this.escape()
 
  this.backdrop(function () {
  var transition = $.support.transition && that.$element.hasClass('fade')
 
  if (!that.$element.parent().length) {
  that.$element.appendTo(document.body) //don't move modals dom position
  }
 
  that.$element
  .show()
 
  if (transition) {
  that.$element[0].offsetWidth // force reflow
  }
 
  that.$element
  .addClass('in')
  .attr('aria-hidden', false)
  .focus()
 
  that.enforceFocus()
 
  transition ?
  that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
  that.$element.trigger('shown')
 
  })
  }
 
  , hide: function (e) {
  e && e.preventDefault()
 
  var that = this
 
  e = $.Event('hide')
 
  this.$element.trigger(e)
 
  if (!this.isShown || e.isDefaultPrevented()) return
 
  this.isShown = false
 
  $('body').removeClass('modal-open')
 
  this.escape()
 
  $(document).off('focusin.modal')
 
  this.$element
  .removeClass('in')
  .attr('aria-hidden', true)
 
  $.support.transition && this.$element.hasClass('fade') ?
  this.hideWithTransition() :
  this.hideModal()
  }
 
  , enforceFocus: function () {
  var that = this
  $(document).on('focusin.modal', function (e) {
  if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {
  that.$element.focus()
  }
  })
  }
 
  , escape: function () {
  var that = this
  if (this.isShown && this.options.keyboard) {
  this.$element.on('keyup.dismiss.modal', function ( e ) {
  e.which == 27 && that.hide()
  })
  } else if (!this.isShown) {
  this.$element.off('keyup.dismiss.modal')
  }
  }
 
  , hideWithTransition: function () {
  var that = this
  , timeout = setTimeout(function () {
  that.$element.off($.support.transition.end)
  that.hideModal()
  }, 500)
 
  this.$element.one($.support.transition.end, function () {
  clearTimeout(timeout)
  that.hideModal()
  })
  }
 
  , hideModal: function (that) {
  this.$element
  .hide()
  .trigger('hidden')
 
  this.backdrop()
  }
 
  , removeBackdrop: function () {
  this.$backdrop.remove()
  this.$backdrop = null
  }
 
  , backdrop: function (callback) {
  var that = this
  , animate = this.$element.hasClass('fade') ? 'fade' : ''
 
  if (this.isShown && this.options.backdrop) {
  var doAnimate = $.support.transition && animate
 
  this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
  .appendTo(document.body)
 
  if (this.options.backdrop != 'static') {
  this.$backdrop.click($.proxy(this.hide, this))
  }
 
  if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
 
  this.$backdrop.addClass('in')
 
  doAnimate ?
  this.$backdrop.one($.support.transition.end, callback) :
  callback()
 
  } else if (!this.isShown && this.$backdrop) {
  this.$backdrop.removeClass('in')
 
  $.support.transition && this.$element.hasClass('fade')?
  this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) :
  this.removeBackdrop()
 
  } else if (callback) {
  callback()
  }
  }
  }
 
 
  /* MODAL PLUGIN DEFINITION
  * ======================= */
 
  $.fn.modal = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('modal')
  , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)
  if (!data) $this.data('modal', (data = new Modal(this, options)))
  if (typeof option == 'string') data[option]()
  else if (options.show) data.show()
  })
  }
 
  $.fn.modal.defaults = {
  backdrop: true
  , keyboard: true
  , show: true
  }
 
  $.fn.modal.Constructor = Modal
 
 
  /* MODAL DATA-API
  * ============== */
 
  $(function () {
  $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
  var $this = $(this)
  , href = $this.attr('href')
  , $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
  , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
 
  e.preventDefault()
 
  $target
  .modal(option)
  .one('hide', function () {
  $this.focus()
  })
  })
  })
 
  }(window.jQuery);
  /* ===========================================================
  * bootstrap-popover.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#popovers
  * ===========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * =========================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* POPOVER PUBLIC CLASS DEFINITION
  * =============================== */
 
  var Popover = function (element, options) {
  this.init('popover', element, options)
  }
 
 
  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
  ========================================== */
 
  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
 
  constructor: Popover
 
  , setContent: function () {
  var $tip = this.tip()
  , title = this.getTitle()
  , content = this.getContent()
 
  $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
  $tip.find('.popover-content > *')[this.options.html ? 'html' : 'text'](content)
 
  $tip.removeClass('fade top bottom left right in')
  }
 
  , hasContent: function () {
  return this.getTitle() || this.getContent()
  }
 
  , getContent: function () {
  var content
  , $e = this.$element
  , o = this.options
 
  content = $e.attr('data-content')
  || (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
 
  return content
  }
 
  , tip: function () {
  if (!this.$tip) {
  this.$tip = $(this.options.template)
  }
  return this.$tip
  }
 
  , destroy: function () {
  this.hide().$element.off('.' + this.type).removeData(this.type)
  }
 
  })
 
 
  /* POPOVER PLUGIN DEFINITION
  * ======================= */
 
  $.fn.popover = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('popover')
  , options = typeof option == 'object' && option
  if (!data) $this.data('popover', (data = new Popover(this, options)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.popover.Constructor = Popover
 
  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
  placement: 'right'
  , trigger: 'click'
  , content: ''
  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
  })
 
  }(window.jQuery);
  /* =============================================================
  * bootstrap-scrollspy.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#scrollspy
  * =============================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* SCROLLSPY CLASS DEFINITION
  * ========================== */
 
  function ScrollSpy(element, options) {
  var process = $.proxy(this.process, this)
  , $element = $(element).is('body') ? $(window) : $(element)
  , href
  this.options = $.extend({}, $.fn.scrollspy.defaults, options)
  this.$scrollElement = $element.on('scroll.scroll-spy.data-api', process)
  this.selector = (this.options.target
  || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
  || '') + ' .nav li > a'
  this.$body = $('body')
  this.refresh()
  this.process()
  }
 
  ScrollSpy.prototype = {
 
  constructor: ScrollSpy
 
  , refresh: function () {
  var self = this
  , $targets
 
  this.offsets = $([])
  this.targets = $([])
 
  $targets = this.$body
  .find(this.selector)
  .map(function () {
  var $el = $(this)
  , href = $el.data('target') || $el.attr('href')
  , $href = /^#\w/.test(href) && $(href)
  return ( $href
  && $href.length
  && [[ $href.position().top, href ]] ) || null
  })
  .sort(function (a, b) { return a[0] - b[0] })
  .each(function () {
  self.offsets.push(this[0])
  self.targets.push(this[1])
  })
  }
 
  , process: function () {
  var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
  , scrollHeight = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight
  , maxScroll = scrollHeight - this.$scrollElement.height()
  , offsets = this.offsets
  , targets = this.targets
  , activeTarget = this.activeTarget
  , i
 
  if (scrollTop >= maxScroll) {
  return activeTarget != (i = targets.last()[0])
  && this.activate ( i )
  }
 
  for (i = offsets.length; i--;) {
  activeTarget != targets[i]
  && scrollTop >= offsets[i]
  && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
  && this.activate( targets[i] )
  }
  }
 
  , activate: function (target) {
  var active
  , selector
 
  this.activeTarget = target
 
  $(this.selector)
  .parent('.active')
  .removeClass('active')
 
  selector = this.selector
  + '[data-target="' + target + '"],'
  + this.selector + '[href="' + target + '"]'
 
  active = $(selector)
  .parent('li')
  .addClass('active')
 
  if (active.parent('.dropdown-menu').length) {
  active = active.closest('li.dropdown').addClass('active')
  }
 
  active.trigger('activate')
  }
 
  }
 
 
  /* SCROLLSPY PLUGIN DEFINITION
  * =========================== */
 
  $.fn.scrollspy = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('scrollspy')
  , options = typeof option == 'object' && option
  if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.scrollspy.Constructor = ScrollSpy
 
  $.fn.scrollspy.defaults = {
  offset: 10
  }
 
 
  /* SCROLLSPY DATA-API
  * ================== */
 
  $(window).on('load', function () {
  $('[data-spy="scroll"]').each(function () {
  var $spy = $(this)
  $spy.scrollspy($spy.data())
  })
  })
 
  }(window.jQuery);
  /* ========================================================
  * bootstrap-tab.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#tabs
  * ========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ======================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* TAB CLASS DEFINITION
  * ==================== */
 
  var Tab = function (element) {
  this.element = $(element)
  }
 
  Tab.prototype = {
 
  constructor: Tab
 
  , show: function () {
  var $this = this.element
  , $ul = $this.closest('ul:not(.dropdown-menu)')
  , selector = $this.attr('data-target')
  , previous
  , $target
  , e
 
  if (!selector) {
  selector = $this.attr('href')
  selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
  }
 
  if ( $this.parent('li').hasClass('active') ) return
 
  previous = $ul.find('.active a').last()[0]
 
  e = $.Event('show', {
  relatedTarget: previous
  })
 
  $this.trigger(e)
 
  if (e.isDefaultPrevented()) return
 
  $target = $(selector)
 
  this.activate($this.parent('li'), $ul)
  this.activate($target, $target.parent(), function () {
  $this.trigger({
  type: 'shown'
  , relatedTarget: previous
  })
  })
  }
 
  , activate: function ( element, container, callback) {
  var $active = container.find('> .active')
  , transition = callback
  && $.support.transition
  && $active.hasClass('fade')
 
  function next() {
  $active
  .removeClass('active')
  .find('> .dropdown-menu > .active')
  .removeClass('active')
 
  element.addClass('active')
 
  if (transition) {
  element[0].offsetWidth // reflow for transition
  element.addClass('in')
  } else {
  element.removeClass('fade')
  }
 
  if ( element.parent('.dropdown-menu') ) {
  element.closest('li.dropdown').addClass('active')
  }
 
  callback && callback()
  }
 
  transition ?
  $active.one($.support.transition.end, next) :
  next()
 
  $active.removeClass('in')
  }
  }
 
 
  /* TAB PLUGIN DEFINITION
  * ===================== */
 
  $.fn.tab = function ( option ) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('tab')
  if (!data) $this.data('tab', (data = new Tab(this)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.tab.Constructor = Tab
 
 
  /* TAB DATA-API
  * ============ */
 
  $(function () {
  $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
  e.preventDefault()
  $(this).tab('show')
  })
  })
 
  }(window.jQuery);
  /* ===========================================================
  * bootstrap-tooltip.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#tooltips
  * Inspired by the original jQuery.tipsy by Jason Frame
  * ===========================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ========================================================== */
 
 
  !function ($) {
 
  "use strict"; // jshint ;_;
 
 
  /* TOOLTIP PUBLIC CLASS DEFINITION
  * =============================== */
 
  var Tooltip = function (element, options) {
  this.init('tooltip', element, options)
  }
 
  Tooltip.prototype = {
 
  constructor: Tooltip
 
  , init: function (type, element, options) {
  var eventIn
  , eventOut
 
  this.type = type
  this.$element = $(element)
  this.options = this.getOptions(options)
  this.enabled = true
 
  if (this.options.trigger == 'click') {
  this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
  } else if (this.options.trigger != 'manual') {
  eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
  eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
  this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
  this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
  }
 
  this.options.selector ?
  (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
  this.fixTitle()
  }
 
  , getOptions: function (options) {
  options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
 
  if (options.delay && typeof options.delay == 'number') {
  options.delay = {
  show: options.delay
  , hide: options.delay
  }
  }
 
  return options
  }
 
  , enter: function (e) {
  var self = $(e.currentTarget)[this.type](this._options).data(this.type)
 
  if (!self.options.delay || !self.options.delay.show) return self.show()
 
  clearTimeout(this.timeout)
  self.hoverState = 'in'
  this.timeout = setTimeout(function() {
  if (self.hoverState == 'in') self.show()
  }, self.options.delay.show)
  }
 
  , leave: function (e) {
  var self = $(e.currentTarget)[this.type](this._options).data(this.type)
 
  if (this.timeout) clearTimeout(this.timeout)
  if (!self.options.delay || !self.options.delay.hide) return self.hide()
 
  self.hoverState = 'out'
  this.timeout = setTimeout(function() {
  if (self.hoverState == 'out') self.hide()
  }, self.options.delay.hide)
  }
 
  , show: function () {
  var $tip
  , inside
  , pos
  , actualWidth
  , actualHeight
  , placement
  , tp
 
  if (this.hasContent() && this.enabled) {
  $tip = this.tip()
  this.setContent()
 
  if (this.options.animation) {
  $tip.addClass('fade')
  }
 
  placement = typeof this.options.placement == 'function' ?
  this.options.placement.call(this, $tip[0], this.$element[0]) :
  this.options.placement
 
  inside = /in/.test(placement)
 
  $tip
  .remove()
  .css({ top: 0, left: 0, display: 'block' })
  .appendTo(inside ? this.$element : document.body)
 
  pos = this.getPosition(inside)
 
  actualWidth = $tip[0].offsetWidth
  actualHeight = $tip[0].offsetHeight
 
  switch (inside ? placement.split(' ')[1] : placement) {
  case 'bottom':
  tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
  break
  case 'top':
  tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
  break
  case 'left':
  tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
  break
  case 'right':
  tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
  break
  }
 
  $tip
  .css(tp)
  .addClass(placement)
  .addClass('in')
  }
  }
 
  , setContent: function () {
  var $tip = this.tip()
  , title = this.getTitle()
 
  $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
  $tip.removeClass('fade in top bottom left right')
  }
 
  , hide: function () {
  var that = this
  , $tip = this.tip()
 
  $tip.removeClass('in')
 
  function removeWithAnimation() {
  var timeout = setTimeout(function () {
  $tip.off($.support.transition.end).remove()
  }, 500)
 
  $tip.one($.support.transition.end, function () {
  clearTimeout(timeout)
  $tip.remove()
  })
  }
 
  $.support.transition && this.$tip.hasClass('fade') ?
  removeWithAnimation() :
  $tip.remove()
 
  return this
  }
 
  , fixTitle: function () {
  var $e = this.$element
  if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
  $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
  }
  }
 
  , hasContent: function () {
  return this.getTitle()
  }
 
  , getPosition: function (inside) {
  return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
  width: this.$element[0].offsetWidth
  , height: this.$element[0].offsetHeight
  })
  }
 
  , getTitle: function () {
  var title
  , $e = this.$element
  , o = this.options
 
  title = $e.attr('data-original-title')
  || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
 
  return title
  }
 
  , tip: function () {
  return this.$tip = this.$tip || $(this.options.template)
  }
 
  , validate: function () {
  if (!this.$element[0].parentNode) {
  this.hide()
  this.$element = null
  this.options = null
  }
  }
 
  , enable: function () {
  this.enabled = true
  }
 
  , disable: function () {
  this.enabled = false
  }
 
  , toggleEnabled: function () {
  this.enabled = !this.enabled
  }
 
  , toggle: function () {
  this[this.tip().hasClass('in') ? 'hide' : 'show']()
  }
 
  , destroy: function () {
  this.hide().$element.off('.' + this.type).removeData(this.type)
  }
 
  }
 
 
  /* TOOLTIP PLUGIN DEFINITION
  * ========================= */
 
  $.fn.tooltip = function ( option ) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('tooltip')
  , options = typeof option == 'object' && option
  if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.tooltip.Constructor = Tooltip
 
  $.fn.tooltip.defaults = {
  animation: true
  , placement: 'top'
  , selector: false
  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
  , trigger: 'hover'
  , title: ''
  , delay: 0
  , html: true
  }
 
  }(window.jQuery);
 
  /* ===================================================
  * bootstrap-transition.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#transitions
  * ===================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ========================================================== */
 
 
  !function ($) {
 
  $(function () {
 
  "use strict"; // jshint ;_;
 
 
  /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)
  * ======================================================= */
 
  $.support.transition = (function () {
 
  var transitionEnd = (function () {
 
  var el = document.createElement('bootstrap')
  , transEndEventNames = {
  'WebkitTransition' : 'webkitTransitionEnd'
  , 'MozTransition' : 'transitionend'
  , 'OTransition' : 'oTransitionEnd otransitionend'
  , 'transition' : 'transitionend'
  }
  , name
 
  for (name in transEndEventNames){
  if (el.style[name] !== undefined) {
  return transEndEventNames[name]
  }
  }
 
  }())
 
  return transitionEnd && {
  end: transitionEnd
  }
 
  })()
 
  })
 
  }(window.jQuery);
  /* =============================================================
  * bootstrap-typeahead.js v2.1.0
  * http://twitter.github.com/bootstrap/javascript.html#typeahead
  * =============================================================
  * Copyright 2012 Twitter, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
  *
  * http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  * ============================================================ */
 
 
  !function($){
 
  "use strict"; // jshint ;_;
 
 
  /* TYPEAHEAD PUBLIC CLASS DEFINITION
  * ================================= */
 
  var Typeahead = function (element, options) {
  this.$element = $(element)
  this.options = $.extend({}, $.fn.typeahead.defaults, options)
  this.matcher = this.options.matcher || this.matcher
  this.sorter = this.options.sorter || this.sorter
  this.highlighter = this.options.highlighter || this.highlighter
  this.updater = this.options.updater || this.updater
  this.$menu = $(this.options.menu).appendTo('body')
  this.source = this.options.source
  this.shown = false
  this.listen()
  }
 
  Typeahead.prototype = {
 
  constructor: Typeahead
 
  , select: function () {
  var val = this.$menu.find('.active').attr('data-value')
  this.$element
  .val(this.updater(val))
  .change()
  return this.hide()
  }
 
  , updater: function (item) {
  return item
  }
 
  , show: function () {
  var pos = $.extend({}, this.$element.offset(), {
  height: this.$element[0].offsetHeight
  })
 
  this.$menu.css({
  top: pos.top + pos.height
  , left: pos.left
  })
 
  this.$menu.show()
  this.shown = true
  return this
  }
 
  , hide: function () {
  this.$menu.hide()
  this.shown = false
  return this
  }
 
  , lookup: function (event) {
  var items
 
  this.query = this.$element.val()
 
  if (!this.query || this.query.length < this.options.minLength) {
  return this.shown ? this.hide() : this
  }
 
  items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source
 
  return items ? this.process(items) : this
  }
 
  , process: function (items) {
  var that = this
 
  items = $.grep(items, function (item) {
  return that.matcher(item)
  })
 
  items = this.sorter(items)
 
  if (!items.length) {
  return this.shown ? this.hide() : this
  }
 
  return this.render(items.slice(0, this.options.items)).show()
  }
 
  , matcher: function (item) {
  return ~item.toLowerCase().indexOf(this.query.toLowerCase())
  }
 
  , sorter: function (items) {
  var beginswith = []
  , caseSensitive = []
  , caseInsensitive = []
  , item
 
  while (item = items.shift()) {
  if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
  else if (~item.indexOf(this.query)) caseSensitive.push(item)
  else caseInsensitive.push(item)
  }
 
  return beginswith.concat(caseSensitive, caseInsensitive)
  }
 
  , highlighter: function (item) {
  var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&')
  return item.replace(new RegExp('(' + query + ')', 'ig'), function ($1, match) {
  return '<strong>' + match + '</strong>'
  })
  }
 
  , render: function (items) {
  var that = this
 
  items = $(items).map(function (i, item) {
  i = $(that.options.item).attr('data-value', item)
  i.find('a').html(that.highlighter(item))
  return i[0]
  })
 
  items.first().addClass('active')
  this.$menu.html(items)
  return this
  }
 
  , next: function (event) {
  var active = this.$menu.find('.active').removeClass('active')
  , next = active.next()
 
  if (!next.length) {
  next = $(this.$menu.find('li')[0])
  }
 
  next.addClass('active')
  }
 
  , prev: function (event) {
  var active = this.$menu.find('.active').removeClass('active')
  , prev = active.prev()
 
  if (!prev.length) {
  prev = this.$menu.find('li').last()
  }
 
  prev.addClass('active')
  }
 
  , listen: function () {
  this.$element
  .on('blur', $.proxy(this.blur, this))
  .on('keypress', $.proxy(this.keypress, this))
  .on('keyup', $.proxy(this.keyup, this))
 
  if ($.browser.webkit || $.browser.msie) {
  this.$element.on('keydown', $.proxy(this.keydown, this))
  }
 
  this.$menu
  .on('click', $.proxy(this.click, this))
  .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
  }
 
  , move: function (e) {
  if (!this.shown) return
 
  switch(e.keyCode) {
  case 9: // tab
  case 13: // enter
  case 27: // escape
  e.preventDefault()
  break
 
  case 38: // up arrow
  e.preventDefault()
  this.prev()
  break
 
  case 40: // down arrow
  e.preventDefault()
  this.next()
  break
  }
 
  e.stopPropagation()
  }
 
  , keydown: function (e) {
  this.suppressKeyPressRepeat = !~$.inArray(e.keyCode, [40,38,9,13,27])
  this.move(e)
  }
 
  , keypress: function (e) {
  if (this.suppressKeyPressRepeat) return
  this.move(e)
  }
 
  , keyup: function (e) {
  switch(e.keyCode) {
  case 40: // down arrow
  case 38: // up arrow
  break
 
  case 9: // tab
  case 13: // enter
  if (!this.shown) return
  this.select()
  break
 
  case 27: // escape
  if (!this.shown) return
  this.hide()
  break
 
  default:
  this.lookup()
  }
 
  e.stopPropagation()
  e.preventDefault()
  }
 
  , blur: function (e) {
  var that = this
  setTimeout(function () { that.hide() }, 150)
  }
 
  , click: function (e) {
  e.stopPropagation()
  e.preventDefault()
  this.select()
  }
 
  , mouseenter: function (e) {
  this.$menu.find('.active').removeClass('active')
  $(e.currentTarget).addClass('active')
  }
 
  }
 
 
  /* TYPEAHEAD PLUGIN DEFINITION
  * =========================== */
 
  $.fn.typeahead = function (option) {
  return this.each(function () {
  var $this = $(this)
  , data = $this.data('typeahead')
  , options = typeof option == 'object' && option
  if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
  if (typeof option == 'string') data[option]()
  })
  }
 
  $.fn.typeahead.defaults = {
  source: []
  , items: 8
  , menu: '<ul class="typeahead dropdown-menu"></ul>'
  , item: '<li><a href="#"></a></li>'
  , minLength: 1
  }
 
  $.fn.typeahead.Constructor = Typeahead
 
 
  /* TYPEAHEAD DATA-API
  * ================== */
 
  $(function () {
  $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
  var $this = $(this)
  if ($this.data('typeahead')) return
  e.preventDefault()
  $this.typeahead($this.data())
  })
  })
 
  }(window.jQuery);
 
<?php <?php
date_default_timezone_set("Australia/ACT"); date_default_timezone_set("Australia/ACT");
error_reporting(E_ALL ^ E_NOTICE); error_reporting(E_ALL ^ E_NOTICE);
$conn = new PDO("pgsql:dbname=contractDashboard;user=postgres;password=snmc;host=localhost"); $conn = new PDO("pgsql:dbname=contractDashboard;user=postgres;password=snmc;host=localhost");
if (!$conn) { if (!$conn) {
die("A database error occurred.\n"); die("A database error occurred.\n");
} }
define('ROOT', pathinfo(__FILE__, PATHINFO_DIRNAME)); define('ROOT', pathinfo(__FILE__, PATHINFO_DIRNAME));
if (strstr($_SERVER['PHP_SELF'], "labs/")) { if (strstr($_SERVER['PHP_SELF'], "labs/")) {
$basePath = "../"; $basePath = "../";
} }
require ROOT . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'openid.php'; require ROOT . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'openid.php';
$openid = new LightOpenID($_SERVER['HTTP_HOST']); $openid = new LightOpenID($_SERVER['HTTP_HOST']);
function login() { function login() {
global $openid; global $openid;
if (!$openid->mode) { if (!$openid->mode) {
$openid->required = array('contact/email'); $openid->required = array('contact/email');
$openid->identity = 'https://www.google.com/accounts/o8/id'; $openid->identity = 'https://www.google.com/accounts/o8/id';
header('Location: ' . $openid->authUrl()); header('Location: ' . $openid->authUrl());
} }
} }
function auth() { function auth() {
global $openid; global $openid;
if ($_SESSION['authed'] == true) { if ($_SESSION['authed'] == true) {
return true; return true;
} }
if ($openid->mode) { if ($openid->mode) {
$attr = $openid->getAttributes(); $attr = $openid->getAttributes();
if ($attr['contact/email'] != 'maxious@gmail.com') { if ($attr['contact/email'] != 'maxious@gmail.com') {
die('Access Denied'); die('Access Denied');
} else { } else {
$_SESSION['authed'] = true; $_SESSION['authed'] = true;
} }
} else { } else {
login(); login();
} }
} }
// $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
function databaseError($errMsg) { function databaseError($errMsg) {
if ($errMsg[2] != "") { if ($errMsg[2] != "") {
echo '<div class="alert-message error">'; echo '<div class="alert-message error">';
die(print_r($errMsg, true)); die(print_r($errMsg, true));
echo "</div>"; echo "</div>";
} }
} }
function ucsmart($str) { function ucsmart($str) {
$shortWords = Array("The", "Pty", "Ltd", "Inc", "Red", "Oil", "A", "An", "And", "At", "For", "In" $shortWords = Array("The", "Pty", "Ltd", "Inc", "Red", "Oil", "A", "An", "And", "At", "For", "In"
, "Of", "On", "Or", "The", "To", "With"); , "Of", "On", "Or", "The", "To", "With");
$strArray = explode(" ", preg_replace("/(?<=(?<!:|’s)\W) $strArray = explode(" ", preg_replace("/(?<=(?<!:|’s)\W)
(A|An|And|At|For|In|Of|On|Or|The|To|With) (A|An|And|At|For|In|Of|On|Or|The|To|With)
(?=\W)/e", 'strtolower("$1")', ucwords(strtolower($str)))); (?=\W)/e", 'strtolower("$1")', ucwords(strtolower($str))));
foreach ($strArray as &$word) { foreach ($strArray as &$word) {
if (strlen($word) <= 4 && !in_array($word, $shortWords)) if (strlen($word) <= 4 && !in_array($word, $shortWords))
$word = strtoupper($word); $word = strtoupper($word);
} }
return implode(" ", $strArray); return implode(" ", $strArray);
} }
function percent($num_amount, $num_total) { function percent($num_amount, $num_total) {
$count1 = $num_amount / $num_total; $count1 = $num_amount / $num_total;
$count2 = $count1 * 100; $count2 = $count1 * 100;
$count = number_format($count2, 2); $count = number_format($count2, 2);
return $count; return $count;
} }
function array_sum_all($a) { function array_sum_all($a) {
if (!is_array($a)) if (!is_array($a))
return $a; return $a;
foreach ($a as $key => $value) foreach ($a as $key => $value)
$totale += array_sum_all($value); $totale += array_sum_all($value);
return $totale; return $totale;
} }
// magic query modifiers // magic query modifiers
$agency = filter_var($_REQUEST['agency'], FILTER_SANITIZE_STRING); $agency = filter_var($_REQUEST['agency'], FILTER_SANITIZE_STRING);
if ($agency != "") if ($agency != "")
$agencyQ = "agencyName = '" . $agency . "' AND "; $agencyQ = "agencyName = '" . $agency . "' AND ";
$supplier = filter_var($_REQUEST['supplier'], FILTER_SANITIZE_STRING); $supplier = filter_var($_REQUEST['supplier'], FILTER_SANITIZE_STRING);
if ($supplier != "") { if ($supplier != "") {
$supplierParts = explode("-", $supplier); $supplierParts = explode("-", $supplier);
$supplierName = "%" . $supplierParts[1] . "%"; $supplierName = "%" . $supplierParts[1] . "%";
$supplierABN = $supplierParts[0]; $supplierABN = $supplierParts[0];
if ($supplierParts[0] > 0) if ($supplierParts[0] > 0)
$supplierQ = ' "supplierABN" = :supplierABN AND '; $supplierQ = ' "supplierABN" = :supplierABN AND ';
else else
$supplierQ = ' "supplierName" LIKE :supplierName AND '; $supplierQ = ' "supplierName" LIKE :supplierName AND ';
} }
$startYear = 2007; $startYear = 2007;
$year = filter_var($_REQUEST['year'], FILTER_SANITIZE_NUMBER_INT); $year = filter_var($_REQUEST['year'], FILTER_SANITIZE_NUMBER_INT);
if ($year != "") if ($year != "") {
$yearQ = "YEAR(publishDate) = " . $year . " AND "; $yearQ = "YEAR(publishDate) = " . $year . " AND ";
  }
$standardQ = ' "childCN" is null '; // AND YEAR(contractStart) >= 2007 AND YEAR(contractStart) <= 2010'; $standardQ = ' "childCN" is null '; // AND YEAR(contractStart) >= 2007 AND YEAR(contractStart) <= 2010';
$start = 0.0; $start = 0.0;
function local_url() { function local_url() {
return "http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/"; return "http://" . $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . "/";
} }
function include_header($title) { function include_header($title) {
global $start; global $start;
?> ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"> "http://www.w3.org/TR/html4/strict.dtd">
<html> <html>
<head> <head>
<title>Contract Dashboard - <?php echo $title; ?></title> <title><?php echo $title; ?> - Contract Dashboard</title>
<link rel="stylesheet" type="text/css" href="bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="bootstrap-responsive.css">
<!-- Le HTML5 shim, for IE6-8 support of HTML elements --> <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
<!--[if lt IE 9]> <!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--> <![endif]-->
<script type="text/javascript" src="lib/bsn.AutoSuggest_2.1.3_comp.js" charset="utf-8"></script> <script type="text/javascript" src="lib/bsn.AutoSuggest_2.1.3_comp.js" charset="utf-8"></script>
<link rel="stylesheet" href="autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" /> <link rel="stylesheet" href="autosuggest_inquisitor.css" type="text/css" media="screen" charset="utf-8" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
//hide the all of the element with class msg_body //hide the all of the element with class msg_body
$(".msg_body").hide(); $(".msg_body").hide();
//toggle the componenet with class msg_body //toggle the componenet with class msg_body
$(".msg_head").click(function() $(".msg_head").click(function()
{ {
$(this).next(".msg_body").slideToggle(600); $(this).next(".msg_body").slideToggle(600);
}); });
}); });
</script> </script>
<style type="text/css" title="currentStyle"> <style type="text/css" title="currentStyle">
@import "media/css/demo_table.css"; @import "media/css/demo_table.css";
</style> </style>
<script type="text/javascript" language="javascript" src="media/js/jquery.dataTables.js"></script> <script type="text/javascript" language="javascript" src="media/js/jquery.dataTables.js"></script>
<script type="text/javascript" language="javascript" src="lib/bootstrap-dropdown.js"></script> <script type="text/javascript" language="javascript" src="lib/bootstrap-dropdown.js"></script>
<script type="text/javascript" charset="utf-8"> <script type="text/javascript" charset="utf-8">
jQuery.fn.dataTableExt.aTypes.unshift( jQuery.fn.dataTableExt.aTypes.unshift(
function ( sData ) function ( sData )
{ {
var sValidChars = "0123456789.-,"; var sValidChars = "0123456789.-,";
var Char; var Char;
/* Check the numeric part */ /* Check the numeric part */
for ( i=1 ; i<sData.length ; i++ ) for ( i=1 ; i<sData.length ; i++ )
{ {
Char = sData.charAt(i); Char = sData.charAt(i);
if (sValidChars.indexOf(Char) == -1) if (sValidChars.indexOf(Char) == -1)
{ {
return null; return null;
} }
} }
/* Check prefixed by currency */ /* Check prefixed by currency */
if ( sData.charAt(0) == '$' || sData.charAt(0) == '£' ) if ( sData.charAt(0) == '$' || sData.charAt(0) == '£' )
{ {
return 'currency'; return 'currency';
} }
return null; return null;
} }
); );
jQuery.fn.dataTableExt.oSort['currency-asc'] = function(a,b) { jQuery.fn.dataTableExt.oSort['currency-asc'] = function(a,b) {
/* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */ /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
var x = a == "-" ? 0 : a.replace( /,/g, "" ); var x = a == "-" ? 0 : a.replace( /,/g, "" );
var y = b == "-" ? 0 : b.replace( /,/g, "" ); var y = b == "-" ? 0 : b.replace( /,/g, "" );
/* Remove the currency sign */ /* Remove the currency sign */
x = x.substring( 1 ); x = x.substring( 1 );
y = y.substring( 1 ); y = y.substring( 1 );
/* Parse and return */ /* Parse and return */
x = parseFloat( x ); x = parseFloat( x );
y = parseFloat( y ); y = parseFloat( y );
return x - y; return x - y;
}; };
jQuery.fn.dataTableExt.oSort['currency-desc'] = function(a,b) { jQuery.fn.dataTableExt.oSort['currency-desc'] = function(a,b) {
/* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */ /* Remove any commas (assumes that if present all strings will have a fixed number of d.p) */
var x = a == "-" ? 0 : a.replace( /,/g, "" ); var x = a == "-" ? 0 : a.replace( /,/g, "" );
var y = b == "-" ? 0 : b.replace( /,/g, "" ); var y = b == "-" ? 0 : b.replace( /,/g, "" );
/* Remove the currency sign */ /* Remove the currency sign */
x = x.substring( 1 ); x = x.substring( 1 );
y = y.substring( 1 ); y = y.substring( 1 );
/* Parse and return */ /* Parse and return */
x = parseFloat( x ); x = parseFloat( x );
y = parseFloat( y ); y = parseFloat( y );
return y - x; return y - x;
}; };
$(document).ready(function() { $(document).ready(function() {
$('table').dataTable(); $('table').dataTable();
} ); } );
</script> </script>
<link type="text/css" rel="stylesheet" href="style.css"> <link type="text/css" rel="stylesheet" href="style.css">
</head> </head>
<body> <body>
<div class="topbar"> <div class="navbar">
<div class="topbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
<a class="brand" href="#">contract dashboard</a> <a class="brand" href="#">contract dashboard</a>
<ul class="nav"> <ul class="nav">
<li><a href="displayAgency.php">agencies</a></li> <li><a href="displayAgency.php">agencies</a></li>
<li><a href="displaySupplier.php">suppliers</a></li> <li><a href="displaySupplier.php">suppliers</a></li>
<li><a href="displayCategory.php">categories</a></li> <li><a href="displayCategory.php">categories</a></li>
<li><a href="displayCalendar.php">time periods</a></li> <li><a href="displayCalendar.php">time periods</a></li>
<!-- <li class="dropdown"> <!-- <li class="dropdown">
<a href="#" class="dropdown-toggle">metrics</a> <a href="#" class="dropdown-toggle">metrics</a>
<ul class="dropdown-menu">--> <ul class="dropdown-menu">-->
<li><a href="displayProcurementMethod.php">tenderm</a></li> <li><a href="displayProcurementMethod.php">tenderm</a></li>
<li><a href="displayConfidentialities.php">confidentiality</a></li> <li><a href="displayConfidentialities.php">confidentiality</a></li>
<li><a href="displayConsultancies.php">consultancies</a></li> <li><a href="displayConsultancies.php">consultancies</a></li>
<li><a href="displayAmendments.php">amendments</a></li> <li><a href="displayAmendments.php">amendments</a></li>
<li><a href="displayMap.php">geo</a></li> <li><a href="displayMap.php">geo</a></li>
<!-- </ul>  
</li>-->  
</ul> </ul>
<form method="post" action="search.php" class="pull-right"> <form method="post" action="search.php" class="pull-right">
<input type="text" id="searchKeyword" name="searchKeyword" value="" placeholder="Search" /> <input type="text" id="searchKeyword" name="searchKeyword" value="" placeholder="Search" />
<input type="hidden" id="searchID" name="searchID" value=""/> <input type="hidden" id="searchID" name="searchID" value=""/>
</form> </form>
</div> </div>
</div><!-- /topbar-inner --> </div><!-- /topbar-inner -->
</div><!-- /topbar --> </div><!-- /topbar -->
</div><!-- /topbar-wrapper --> </div><!-- /topbar-wrapper -->
<script type="text/javascript"> <script type="text/javascript">
var options_xml = { var options_xml = {
script: function (input) { return "search_autosuggest.php?input="+input; }, script: function (input) { return "search_autosuggest.php?input="+input; },
varname:"input", varname:"input",
callback: function (obj) { document.getElementById('searchID').value = obj.id; } callback: function (obj) { document.getElementById('searchID').value = obj.id; }
}; };
var as_xml = new bsn.AutoSuggest('searchKeyword', options_xml); var as_xml = new bsn.AutoSuggest('searchKeyword', options_xml);
</script> </script>
<div class="container-fluid"> <div class="container-fluid">
<div class="sidebar"> <div class="row-fluid">
<div class="well"> <div class="span3">
Filter by:<li> <div class="well sidebar-nav">
<li>year <li class="nav-header">Filter by:</li>
<li><li>2008</li> <li>2008</li>
</li> </div>
</li> </div>
</li> <br> <div class="span9">
</div> </div>  
<div class="content">  
<?php <?php
$start = (float) array_sum(explode(' ', microtime())); $start = (float) array_sum(explode(' ', microtime()));
} }
function include_footer() { function include_footer() {
global $start; global $start;
$end = (float) array_sum(explode(' ', microtime())); $end = (float) array_sum(explode(' ', microtime()));
echo ' <footer>' . "Processing time: " . sprintf("%.4f", ($end - $start)) . " seconds" . ' <footer>'; echo '</div> <footer>' . "Processing time: " . sprintf("%.4f", ($end - $start)) . " seconds" . ' <footer>';
if (strpos($_SERVER['SERVER_NAME'], ".gs")) { if (strpos($_SERVER['SERVER_NAME'], ".gs")) {
?> ?>
<script type="text/javascript"> <script type="text/javascript">
var _gaq = _gaq || []; var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-12341040-3']); _gaq.push(['_setAccount', 'UA-12341040-3']);
_gaq.push(['_trackPageview']); _gaq.push(['_trackPageview']);
(function() { (function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})(); })();
</script> </script>
<?php <?php
} }
echo '</div> </div></body> </html>'; echo '</div> </div></body> </html>';
} }
include ("graphs.inc.php"); include ("graphs.inc.php");
   
   
<?php <?php
$includedFlot = false; $includedFlot = false;
   
function includeFlot() { function includeFlot() {
if (!$includedFlot) { if (!$includedFlot) {
echo ' <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="lib/flot/excanvas.min.js"></script><![endif]--> echo ' <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="lib/flot/excanvas.min.js"></script><![endif]-->
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.js"></script> <script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.pie.js"></script> <script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.pie.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.selection.js"></script> <script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.selection.js"></script>
<script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.stack.js"></script> <script language="javascript" type="text/javascript" src="lib/flot/jquery.flot.stack.js"></script>
   
'; ';
$includedFlot = true; $includedFlot = true;
} }
} }
   
function CNDistributionGraph() { function CNDistributionGraph() {
global $conn; global $conn;
includeFlot(); includeFlot();
?> ?>
<center><div id="cndist" style="width:900px;height:550px"></div></center> <center><div id="cndist" style="width:900px;height:550px"></div></center>
<script type="text/javascript"> <script type="text/javascript">
var placeholder = $("#cndist"); var placeholder = $("#cndist");
$(function () { $(function () {
   
var d1 = []; var d1 = [];
var d2 = []; var d2 = [];
<?php <?php
$query = 'select cnid, count(*) from $query = 'select cnid, count(*) from
(select ("CNID"::integer - MOD("CNID"::integer,100)) as cnid (select ("CNID"::integer - MOD("CNID"::integer,100)) as cnid
from contractnotice where "CNID"::integer < 999999 from contractnotice where "CNID"::integer < 999999
and "CNID" not like \'%-A%\' and "CNID" not like \'%-A%\'
and "parentCN" is null) as a group by cnid order by cnid'; and "parentCN" is null) as a group by cnid order by cnid';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
$errors = $conn->errorInfo(); $errors = $conn->errorInfo();
if ($errors[2] != "") { if ($errors[2] != "") {
echo("Export terminated, db error" . print_r($errors, true)); echo("Export terminated, db error" . print_r($errors, true));
return Array(); return Array();
} }
   
foreach ($query->fetchAll() as $delta) { foreach ($query->fetchAll() as $delta) {
   
echo "d1.push([ " . intval($delta['cnid']) . ", " . intval($delta['count']) . "]); \n"; echo "d1.push([ " . intval($delta['cnid']) . ", " . intval($delta['count']) . "]); \n";
}; };
$query = 'select cnid, count(*) from (select ("CNID"::integer - MOD("CNID"::integer,100)) as cnid $query = 'select cnid, count(*) from (select ("CNID"::integer - MOD("CNID"::integer,100)) as cnid
from contractnotice where "CNID" not like \'%-A%\' and "parentCN" is not null) from contractnotice where "CNID" not like \'%-A%\' and "parentCN" is not null)
as a group by cnid order by cnid'; as a group by cnid order by cnid';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
$errors = $conn->errorInfo(); $errors = $conn->errorInfo();
if ($errors[2] != "") { if ($errors[2] != "") {
echo("Export terminated, db error" . print_r($errors, true)); echo("Export terminated, db error" . print_r($errors, true));
return Array(); return Array();
} }
   
foreach ($query->fetchAll() as $delta) { foreach ($query->fetchAll() as $delta) {
   
echo "d2.push([ " . intval($delta['cnid']) . ", " . intval($delta['count']) . "]); \n"; echo "d2.push([ " . intval($delta['cnid']) . ", " . intval($delta['count']) . "]); \n";
}; };
d1d2Graph(); d1d2Graph();
} }
function d1d2Graph($time = false) { function d1d2Graph($time = false) {
?> ?>
   
var data = [ var data = [
{ {
data: d1, data: d1,
series: { series: {
lines: { show: true }, lines: { show: true },
points: { show: true } points: { show: true }
} }
<?php if (!$time){ <?php if (!$time){
echo ',bars: { show: true }'; echo ',bars: { show: true }';
}?> }?>
}, },
{ {
data: d2, data: d2,
series: { series: {
lines: { show: true }, lines: { show: true },
points: { show: true } points: { show: true }
} }
<?php if (!$time){ <?php if (!$time){
echo ',bars: { show: true }'; echo ',bars: { show: true }';
} else { } else {
echo ',yaxis: 2'; echo ',yaxis: 2';
} }
?> ?>
}] }]
; ;
var options = var options =
{ {
grid: { hoverable: true, clickable: true, labelMargin: 17 }, grid: { hoverable: true, clickable: true, labelMargin: 17 },
selection: { mode: "x" }<?php if ($time){ selection: { mode: "x" }<?php if ($time){
echo ', xaxis: { echo ', xaxis: {
mode: "time" mode: "time"
}';} else { }';} else {
echo 'series: { echo 'series: {
stack: true stack: true
},'; },';
} ?> } ?>
}; };
   
placeholder.bind("plotselected", function (event, ranges) { placeholder.bind("plotselected", function (event, ranges) {
plot = $.plot(placeholder, data, plot = $.plot(placeholder, data,
$.extend(true, {}, options, { $.extend(true, {}, options, {
xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to } xaxis: { min: ranges.xaxis.from, max: ranges.xaxis.to }
})); }));
}); });
var previousPoint = null; var previousPoint = null;
placeholder.bind("plothover", function (event, pos, item) { placeholder.bind("plothover", function (event, pos, item) {
$("#x").text(pos.x.toFixed(2)); $("#x").text(pos.x.toFixed(2));
$("#y").text(pos.y.toFixed(2)); $("#y").text(pos.y.toFixed(2));
if (item) { if (item) {
if (previousPoint != item.dataIndex) { if (previousPoint != item.dataIndex) {
previousPoint = item.dataIndex; previousPoint = item.dataIndex;
$("#tooltip").remove(); $("#tooltip").remove();
var x = item.datapoint[0].toFixed(2), var x = item.datapoint[0].toFixed(2),
y = item.datapoint[1].toFixed(2); y = item.datapoint[1].toFixed(2);
showTooltip(item.pageX, item.pageY, showTooltip(item.pageX, item.pageY,
item.series.label + " of " + x + " = " + y); item.series.label + " of " + x + " = " + y);
} }
} }
else { else {
$("#tooltip").remove(); $("#tooltip").remove();
previousPoint = null; previousPoint = null;
} }
}); });
   
var plot = $.plot(placeholder, data, var plot = $.plot(placeholder, data,
options); options);
}); });
   
function showTooltip(x, y, contents) { function showTooltip(x, y, contents) {
$('<div id="tooltip">' + contents + '</div>').css( { $('<div id="tooltip">' + contents + '</div>').css( {
position: 'absolute', position: 'absolute',
display: 'none', display: 'none',
top: y + 5, top: y + 5,
left: x + 5, left: x + 5,
border: '1px solid #fdd', border: '1px solid #fdd',
padding: '2px', padding: '2px',
'background-color': '#fee', 'background-color': '#fee',
opacity: 0.80 opacity: 0.80
}).appendTo("body").fadeIn(200); }).appendTo("body").fadeIn(200);
} }
</script> </script>
<?php <?php
} }
   
function agenciesGraph() { function agenciesGraph() {
   
global $conn; global $conn;
includeFlot(); includeFlot();
$query = 'SELECT SUM("value") as val, MAX(contractnotice."agencyName") as agencyname FROM contractnotice join agency_nametoabn on contractnotice."agencyName"=agency_nametoabn."agencyName" WHERE "childCN" is null $query = 'SELECT SUM("value") as val, MAX(contractnotice."agencyName") as agencyname FROM contractnotice join agency_nametoabn on contractnotice."agencyName"=agency_nametoabn."agencyName" WHERE "childCN" is null
GROUP BY abn ORDER BY SUM("value") DESC'; GROUP BY abn ORDER BY SUM("value") DESC';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
$errors = $conn->errorInfo(); $errors = $conn->errorInfo();
if ($errors[2] != "") { if ($errors[2] != "") {
echo("Export terminated, db error" . print_r($errors, true)); echo("Export terminated, db error" . print_r($errors, true));
return Array(); return Array();
} }
?> ?>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
// data // data
var data = [ var data = [
<?php <?php
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
echo '{ label: "' . $row['agencyname'] . '", data: ' . doubleval($row["val"]) . '},'; echo '{ label: "' . $row['agencyname'] . '", data: ' . doubleval($row["val"]) . '},';
} }
?> ?>
]; ];
// GRAPH 7 // GRAPH 7
$.plot($("#graph7"), data, $.plot($("#graph7"), data,
{ {
series: { series: {
pie: { pie: {
show: true, show: true,
radius: 1, radius: 1,
tilt: 0.75, tilt: 0.75,
label: { label: {
show: true, show: true,
radius: 1, radius: 1,
formatter: function(label, series){ formatter: function(label, series){
return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+label+': '+Math.round(series.percent)+'%</div>'; return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+label+': '+Math.round(series.percent)+'%</div>';
}, },
background: { background: {
opacity: 0.5, opacity: 0.5,
color: '#000' color: '#000'
} }
}, },
combine: { combine: {
color: '#999', color: '#999',
threshold: 0.012 threshold: 0.012
} }
} }
}, },
legend: { legend: {
show: false show: false
} }
}); });
}); });
</script> </script>
<div id="graph7" style="width:900px;height:550px"></div> <div id="graph7" style="width:900px;height:550px"></div>
   
<?php <?php
} }
   
; ;
   
function agencySuppliersGraph($agency) { function agencySuppliersGraph($agency) {
   
global $conn; global $conn;
$agency = "AusAid"; $agency = "AusAid";
$topX = 15; $topX = 15;
$query = 'SELECT SUM(value) as val, "supplierName" FROM contractnotice WHERE (extract ("YEAR" from "contractStart") >= :startYear) AND "childCN" is null AND "agencyName" = :agency $query = 'SELECT SUM(value) as val, "supplierName" FROM contractnotice WHERE extract ("YEAR" from "contractStart") >= :startYear AND "childCN" is null AND "agencyName" like :agency
GROUP BY lower(supplierName) ORDER BY val DESC limit $topX'; GROUP BY lower(supplierName) ORDER BY val DESC limit $topX';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":startYear", $startYear); $query->bindParam(":startYear", $startYear);
$query->bindParam(":agency", $agency); $query->bindParam(":agency", $agency);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
$suppliers = Array(); $suppliers = Array();
$values = Array(); $values = Array();
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
$suppliers[] = ucsmart($row['supplierName']); $suppliers[] = ucsmart($row['supplierName']);
$values[] = doubleval($row["val"]); $values[] = doubleval($row["val"]);
} }
   
   
$query = 'SELECT sum(a.val) as value, count(1) as count from (SELECT SUM(value) as val, "supplierName" FROM contractnotice WHERE (extract ("YEAR" from "contractStart") >= :startYear) AND "childCN" is null and "agencyName" = :agency $query = 'SELECT sum(a.val) as value, count(1) as count from (SELECT SUM(value) as val, "supplierName" FROM contractnotice WHERE (extract ("YEAR" from "contractStart") >= :startYear) AND "childCN" is null and "agencyName" like :agency
GROUP BY lower("supplierName") ORDER BY val DESC LIMIT 18446744073709551610 OFFSET $topX) as a'; GROUP BY lower("supplierName") ORDER BY val DESC LIMIT 18446744073709551610 OFFSET $topX) as a';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->bindParam(":startYear", $startYear); $query->bindParam(":startYear", $startYear);
$query->bindParam(":agency", $agency); $query->bindParam(":agency", $agency);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
if ($row['count'] > 0) { if ($row['count'] > 0) {
$suppliers[] = $row['count'] . " other suppliers"; $suppliers[] = $row['count'] . " other suppliers";
$values[] = doubleval($row[0]); $values[] = doubleval($row[0]);
} }
} }
} }
   
function CnCGraph() { function CnCGraph() {
   
global $conn; global $conn;
$query = 'select procurementMethod, count(1) as count, SUM(value) as val, MONTH(contractStart) as month, YEAR(contractStart) as year from contractnotice $query = 'select procurementMethod, count(1) as count, SUM(value) as val, MONTH(contractStart) as month, YEAR(contractStart) as year from contractnotice
where $agencyQ $supplierQ $standardQ group by procurementMethod,year,month order by procurementMethod,year,month'; where $agencyQ $supplierQ $standardQ group by procurementMethod,year,month order by procurementMethod,year,month';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
$methods = Array("Direct", "Open", "Select"); $methods = Array("Direct", "Open", "Select");
$dates = Array(); $dates = Array();
$methodCountsP = Array(); $methodCountsP = Array();
$methodCounts = Array(); $methodCounts = Array();
$maxValue = 0; $maxValue = 0;
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
if ($row['val'] > $maxValue) if ($row['val'] > $maxValue)
$maxValue = $row['val']; $maxValue = $row['val'];
$date = date('F ', mktime(0, 0, 0, $row["month"])) . $row["year"]; $date = date('F ', mktime(0, 0, 0, $row["month"])) . $row["year"];
if (array_search($date, $dates) === false) { if (array_search($date, $dates) === false) {
$dates[$row["year"] * 100 + $row["month"]] = $date; $dates[$row["year"] * 100 + $row["month"]] = $date;
ksort($dates); ksort($dates);
} }
$methodCountsP[$row["procurementMethod"]][$date] = $row["count"]; $methodCountsP[$row["procurementMethod"]][$date] = $row["count"];
} }
foreach ($methods as $method) { foreach ($methods as $method) {
foreach ($dates as $date) { foreach ($dates as $date) {
if ($methodCountsP[$method][$date] > 0) if ($methodCountsP[$method][$date] > 0)
$methodCounts[$method][] = $methodCountsP[$method][$date]; $methodCounts[$method][] = $methodCountsP[$method][$date];
else else
$methodCounts[$method][] = 0; $methodCounts[$method][] = 0;
} }
} }
$dates = array_values($dates); $dates = array_values($dates);
$totalRecords = array_sum_all($methodCounts); $totalRecords = array_sum_all($methodCounts);
   
function formatCallback($aVal) { function formatCallback($aVal) {
global $totalRecords; global $totalRecords;
return percent($aVal, $totalRecords) . "%"; return percent($aVal, $totalRecords) . "%";
} }
   
$attributes = Array(); $attributes = Array();
$attributeNames = Array( $attributeNames = Array(
"Consultancies", "Consultancies",
"Confidentialities" "Confidentialities"
); );
$query = 'SELECT \'consultancy\', count(1) FROM contractnotice WHERE $agencyQ $supplierQ consultancy=\'Yes\' AND "childCN" is null;'; $query = 'SELECT \'consultancy\', count(1) FROM contractnotice WHERE $agencyQ $supplierQ consultancy=\'Yes\' AND "childCN" is null;';
$result = $conn->query($query); $result = $conn->query($query);
$row = $result->fetch(PDO::FETCH_ASSOC); $row = $result->fetch(PDO::FETCH_ASSOC);
$attributes[0] = $row[1]; $attributes[0] = $row[1];
$query = 'SELECT \'confidentiality\', count(1) FROM contractnotice WHERE $agencyQ $supplierQ (confidentialityContract=\'Yes\' OR confidentialityOutputs=\'Yes\') AND "childCN" is null;'; $query = 'SELECT \'confidentiality\', count(1) FROM contractnotice WHERE $agencyQ $supplierQ (confidentialityContract=\'Yes\' OR confidentialityOutputs=\'Yes\') AND "childCN" is null;';
$result = $conn->query($query); $result = $conn->query($query);
$row = $result->fetch(PDO::FETCH_ASSOC); $row = $result->fetch(PDO::FETCH_ASSOC);
$attributes[1] = $row[1]; $attributes[1] = $row[1];
} }
   
function ContractPublishedGraph() { function ContractPublishedGraph() {
   
global $conn; global $conn;
$query = 'SELECT extract(year from "contractStart"),extract(month from "contractStart"), $query = 'SELECT extract(year from "contractStart"),extract(month from "contractStart"),
SUM(value) as val, count(1) as count FROM contractnotice SUM(value) as val, count(1) as count FROM contractnotice
WHERE (extract(year from "contractStart") >= 2008) WHERE (extract(year from "contractStart") >= 2008)
AND "childCN" is null AND "childCN" is null
GROUP BY extract(month from "contractStart"), extract(year from "contractStart") GROUP BY extract(month from "contractStart"), extract(year from "contractStart")
ORDER BY extract(year from "contractStart"), extract(month from "contractStart")'; ORDER BY extract(year from "contractStart"), extract(month from "contractStart")';
   
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
$dates = Array(); $dates = Array();
$values = Array(); $values = Array();
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row["val"]), 2); $value = number_format(doubleval($row["val"]), 2);
$month_name = date('F', mktime(0, 0, 0, $row[1])); $month_name = date('F', mktime(0, 0, 0, $row[1]));
$dates[] = $month_name . " {$row[0]}"; $dates[] = $month_name . " {$row[0]}";
$counts[] = doubleval($row["count"]); $counts[] = doubleval($row["count"]);
$values[] = doubleval($row["val"]); $values[] = doubleval($row["val"]);
} }
} }
   
function ContractStartingGraph() { function ContractStartingGraph() {
   
global $conn; global $conn;
$query = 'SELECT extract (YEAR from "contractStart") as year, extract (MONTH from "contractStart") as month, $query = 'SELECT extract (YEAR from "contractStart") as year, extract (MONTH from "contractStart") as month,
SUM(value) as val, count(*) as count FROM contractnotice SUM(value) as val, count(*) as count FROM contractnotice
WHERE extract (YEAR from "contractStart") >= 2008 WHERE extract (YEAR from "contractStart") >= 2008
AND "childCN" is null AND "childCN" is null
GROUP BY extract (MONTH from "contractStart"), extract (YEAR from "contractStart") GROUP BY extract (MONTH from "contractStart"), extract (YEAR from "contractStart")
ORDER BY extract (YEAR from "contractStart"), extract (MONTH from"contractStart")'; ORDER BY extract (YEAR from "contractStart"), extract (MONTH from"contractStart")';
   
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
$dates = Array(); $dates = Array();
$counts = Array(); $counts = Array();
$values = Array(); $values = Array();
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
$value = number_format(doubleval($row["val"]), 2); $value = number_format(doubleval($row["val"]), 2);
$date = mktime(0, 0, 0, $row["month"],1,$row["year"])*1000; $date = mktime(0, 0, 0, $row["month"],1,$row["year"])*1000;
if ($row["count"] > 1) { if ($row["count"] > 1) {
$dates[] = $date; $dates[] = $date;
$counts[] = $row["count"]; $counts[] = $row["count"];
$values[] = $row["val"]; $values[] = $row["val"];
} }
} }
includeFlot(); includeFlot();
?> ?>
<center><div id="cstart" style="width:900px;height:550px"></div></center> <center><div id="cstart" style="width:900px;height:550px"></div></center>
<script type="text/javascript"> <script type="text/javascript">
var placeholder = $("#cstart"); var placeholder = $("#cstart");
$(function () { $(function () {
   
var d1 = []; var d1 = [];
var d2 = []; var d2 = [];
<?php <?php
foreach ($counts as $key => $count) { foreach ($counts as $key => $count) {
   
echo "d1.push([ " . $dates[$key] . ", " . $count . "]); \n"; echo "d1.push([ " . $dates[$key] . ", " . $count . "]); \n";
}; };
foreach ($values as $key => $value) { foreach ($values as $key => $value) {
   
echo "d2.push([ " . $dates[$key] . ", " . $value . "]); \n"; echo "d2.push([ " . $dates[$key] . ", " . $value . "]); \n";
}; };
d1d2Graph(true); d1d2Graph(true);
} }
   
function MethodCountGraph() { function MethodCountGraph() {
   
global $conn; global $conn;
$query = 'select procurementMethod, count(1) as count, SUM(value) as value, MONTH(contractStart) as month, YEAR(contractStart) as year from contractnotice $query = 'select procurementMethod, count(1) as count, SUM(value) as value, MONTH(contractStart) as month, YEAR(contractStart) as year from contractnotice
where $agencyQ $supplierQ $standardQ group by procurementMethod,year,month order by procurementMethod,year,month'; where $agencyQ $supplierQ $standardQ group by procurementMethod,year,month order by procurementMethod,year,month';
$methods = Array("Direct", "Open", "Select"); $methods = Array("Direct", "Open", "Select");
$dates = Array(); $dates = Array();
$methodCountsP = Array(); $methodCountsP = Array();
$methodCounts = Array(); $methodCounts = Array();
$maxValue = 0; $maxValue = 0;
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
if ($row['value'] > $maxValue) if ($row['value'] > $maxValue)
$maxValue = $row['value']; $maxValue = $row['value'];
$date = date('F ', mktime(0, 0, 0, $row["month"])) . $row["year"]; $date = date('F ', mktime(0, 0, 0, $row["month"])) . $row["year"];
if (array_search($date, $dates) === false) { if (array_search($date, $dates) === false) {
$dates[$row["year"] * 100 + $row["month"]] = $date; $dates[$row["year"] * 100 + $row["month"]] = $date;
ksort($dates); ksort($dates);
} }
$methodCountsP[$row["procurementMethod"]][$date] = $row["count"]; $methodCountsP[$row["procurementMethod"]][$date] = $row["count"];
} }
foreach ($methods as $method) { foreach ($methods as $method) {
foreach ($dates as $date) { foreach ($dates as $date) {
if ($methodCountsP[$method][$date] > 0) if ($methodCountsP[$method][$date] > 0)
$methodCounts[$method][] = $methodCountsP[$method][$date]; $methodCounts[$method][] = $methodCountsP[$method][$date];
else else
$methodCounts[$method][] = 0; $methodCounts[$method][] = 0;
} }
} }
$dates = array_values($dates); $dates = array_values($dates);
$totalRecords = array_sum_all($methodCounts); $totalRecords = array_sum_all($methodCounts);
} }
   
function MethodValueGraph() { function MethodValueGraph() {
   
global $conn; global $conn;
$query = "select procurementMethod, SUM(value) as value, MONTH(contractStart) as month, YEAR(contractStart) as year from contractnotice $query = "select procurementMethod, SUM(value) as value, MONTH(contractStart) as month, YEAR(contractStart) as year from contractnotice
where $agencyQ $supplierQ $standardQ group by procurementMethod,year,month order by procurementMethod,year,month"; where $agencyQ $supplierQ $standardQ group by procurementMethod,year,month order by procurementMethod,year,month";
$methods = Array("Direct", "Open", "Select"); $methods = Array("Direct", "Open", "Select");
$dates = Array(); $dates = Array();
$methodValuesP = Array(); $methodValuesP = Array();
$methodValues = Array(); $methodValues = Array();
$maxValue = 0; $maxValue = 0;
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
if ($row['value'] > $maxValue) if ($row['value'] > $maxValue)
$maxValue = $row['value']; $maxValue = $row['value'];
$date = date('F ', mktime(0, 0, 0, $row["month"])) . $row["year"]; $date = date('F ', mktime(0, 0, 0, $row["month"])) . $row["year"];
if (array_search($date, $dates) === false) { if (array_search($date, $dates) === false) {
$dates[$row["year"] * 100 + $row["month"]] = $date; $dates[$row["year"] * 100 + $row["month"]] = $date;
ksort($dates); ksort($dates);
} }
$methodValuesP[$row["procurementMethod"]][$date] = $row["value"]; $methodValuesP[$row["procurementMethod"]][$date] = $row["value"];
} }
foreach ($methods as $method) { foreach ($methods as $method) {
foreach ($dates as $date) { foreach ($dates as $date) {
if ($methodValuesP[$method][$date] > 0) if ($methodValuesP[$method][$date] > 0)
$methodValues[$method][] = $methodValuesP[$method][$date]; $methodValues[$method][] = $methodValuesP[$method][$date];
else else
$methodValues[$method][] = 0; $methodValues[$method][] = 0;
} }
} }
$dates = array_values($dates); $dates = array_values($dates);
$totalRecords = array_sum_all($methodValues); $totalRecords = array_sum_all($methodValues);
} }
   
function SuppliersGraph() { function SuppliersGraph() {
   
global $conn; global $conn;
includeFlot(); includeFlot();
$topX = 10; $topX = 10;
$suppliers = Array(); $suppliers = Array();
$values = Array(); $values = Array();
   
   
$query = 'SELECT SUM("value") as value, MAX("supplierName") as supplierName, ( $query = 'SELECT SUM("value") as value, MAX("supplierName") as supplierName, (
case when "supplierABN" != 0 THEN "supplierABN"::text ELSE "supplierName" END) as supplierID case when "supplierABN" != 0 THEN "supplierABN"::text ELSE "supplierName" END) as supplierID
FROM contractnotice FROM contractnotice
WHERE "childCN" is null WHERE "childCN" is null
GROUP BY supplierID GROUP BY supplierID
ORDER BY value DESC ORDER BY value DESC
LIMIT ' . $topX; LIMIT ' . $topX;
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
setlocale(LC_MONETARY, 'en_US'); setlocale(LC_MONETARY, 'en_US');
// $value = number_format(doubleval($row["value"]) , 2); // $value = number_format(doubleval($row["value"]) , 2);
$suppliers[] = ucsmart($row[1]); $suppliers[] = ucsmart($row[1]);
$values[] = doubleval($row["value"]); $values[] = doubleval($row["value"]);
} }
   
$query = 'SELECT sum(a.svalue) as val, suppliercountry from (SELECT sum("value") as svalue, max("supplierCountry") as suppliercountry $query = 'SELECT sum(a.svalue) as val, suppliercountry from (SELECT sum("value") as svalue, max("supplierCountry") as suppliercountry
FROM contractnotice WHERE "childCN" is null and "supplierCountry" NOT ILIKE \'Australia\' FROM contractnotice WHERE "childCN" is null and "supplierCountry" NOT ILIKE \'Australia\'
GROUP BY "supplierName" ORDER BY svalue LIMIT 18446744073 OFFSET 10) as a group by suppliercountry order by val DESC limit 10 '; GROUP BY "supplierName" ORDER BY svalue LIMIT 18446744073 OFFSET 10) as a group by suppliercountry order by val DESC limit 10 ';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
$suppliers[] = "Other suppliers in " . ucsmart($row["suppliercountry"]); $suppliers[] = "Other suppliers in " . ucsmart($row["suppliercountry"]);
$values[] = doubleval($row[0]); $values[] = doubleval($row[0]);
} }
   
   
$query = 'SELECT sum(a.value) as val, substring( $query = 'SELECT sum(a.value) as val, substring(
supplierpostcode from 0 for 2) as postcode from (SELECT sum(value) as value, max("supplierPostcode") as supplierpostcode, max("supplierCountry") as suppliercountry supplierpostcode from 0 for 2) as postcode from (SELECT sum(value) as value, max("supplierPostcode") as supplierpostcode, max("supplierCountry") as suppliercountry
FROM contractnotice WHERE "childCN" is null FROM contractnotice WHERE "childCN" is null
GROUP BY "supplierABN" ORDER BY sum(value) LIMIT 1844674 OFFSET 10) as a GROUP BY "supplierABN" ORDER BY sum(value) LIMIT 1844674 OFFSET 10) as a
WHERE (suppliercountry ILIKE \'Australia\') WHERE (suppliercountry ILIKE \'Australia\')
group by substring( group by substring(
supplierpostcode from 0 for 2) supplierpostcode from 0 for 2)
order by val DESC;'; order by val DESC;';
$query = $conn->prepare($query); $query = $conn->prepare($query);
$query->execute(); $query->execute();
databaseError($conn->errorInfo()); databaseError($conn->errorInfo());
   
foreach ($query->fetchAll() as $row) { foreach ($query->fetchAll() as $row) {
if ($row['postcode'][0] == 2 && $row['postcode'][1] == 6) if ($row['postcode'][0] == 2 && $row['postcode'][1] == 6)
$ACTvalue += $row[0]; $ACTvalue += $row[0];
else if ($row['postcode'][0] == 2 || $row['postcode'][0] == 1) else if ($row['postcode'][0] == 2 || $row['postcode'][0] == 1)
$NSWvalue += $row[0]; $NSWvalue += $row[0];
else if ($row['postcode'][0] == 3 || $row['postcode'][0] == 8) else if ($row['postcode'][0] == 3 || $row['postcode'][0] == 8)
$Vicvalue += $row[0]; $Vicvalue += $row[0];
else if ($row['postcode'][0] == 4 || $row['postcode'][0] == 9) else if ($row['postcode'][0] == 4 || $row['postcode'][0] == 9)
$QLDvalue += $row[0]; $QLDvalue += $row[0];
else if ($row['postcode'][0] == 5) else if ($row['postcode'][0] == 5)
$SAvalue += $row[0]; $SAvalue += $row[0];
else if ($row['postcode'][0] == 6) else if ($row['postcode'][0] == 6)
$WAvalue += $row[0]; $WAvalue += $row[0];
else if ($row['postcode'][0] == 7) else if ($row['postcode'][0] == 7)
$Tasvalue += $row[0]; $Tasvalue += $row[0];
else if ($row['postcode'][0] == 0) else if ($row['postcode'][0] == 0)
$NTvalue += $row[0]; $NTvalue += $row[0];
} }
$suppliers[] = "Other suppliers in Australia - ACT"; $suppliers[] = "Other suppliers in Australia - ACT";
$values[] = doubleval($ACTvalue); $values[] = doubleval($ACTvalue);
$suppliers[] = "Other suppliers in Australia - NSW"; $suppliers[] = "Other suppliers in Australia - NSW";
$values[] = doubleval($NSWvalue); $values[] = doubleval($NSWvalue);
$suppliers[] = "Other suppliers in Australia - Victoria"; $suppliers[] = "Other suppliers in Australia - Victoria";
$values[] = doubleval($Vicvalue); $values[] = doubleval($Vicvalue);
$suppliers[] = "Other suppliers in Australia - Queensland"; $suppliers[] = "Other suppliers in Australia - Queensland";
$values[] = doubleval($QLDvalue); $values[] = doubleval($QLDvalue);
$suppliers[] = "Other suppliers in Australia - NT"; $suppliers[] = "Other suppliers in Australia - NT";
$values[] = doubleval($NTvalue); $values[] = doubleval($NTvalue);
$suppliers[] = "Other suppliers in Australia - West Australia"; $suppliers[] = "Other suppliers in Australia - West Australia";
$values[] = doubleval($WAvalue); $values[] = doubleval($WAvalue);
$suppliers[] = "Other suppliers in Australia - South Australia"; $suppliers[] = "Other suppliers in Australia - South Australia";
$values[] = doubleval($SAvalue); $values[] = doubleval($SAvalue);
$suppliers[] = "Other suppliers in Australia - Tasmania"; $suppliers[] = "Other suppliers in Australia - Tasmania";
$values[] = doubleval($Tasvalue); $values[] = doubleval($Tasvalue);
?> ?>
<script type="text/javascript"> <script type="text/javascript">
$(function () { $(function () {
// data // data
var data = [ var data = [
<?php <?php
foreach ($suppliers as $key => $supplier) { foreach ($suppliers as $key => $supplier) {
echo '{ label: "' . $supplier . '", data: ' . doubleval($values[$key]) . '},'; echo '{ label: "' . $supplier . '", data: ' . doubleval($values[$key]) . '},';
} }
?> ?>
]; ];
// GRAPH 7 // GRAPH 7
$.plot($("#graph7"), data, $.plot($("#graph7"), data,
{ {
series: { series: {
pie: { pie: {
show: true, show: true,
radius: 1, radius: 1,
tilt: 0.75, tilt: 0.75,
label: { label: {
show: true, show: true,
radius: 1, radius: 1,
formatter: function(label, series){ formatter: function(label, series){
return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+label+': '+Math.round(series.percent)+'%</div>'; return '<div style="font-size:8pt;text-align:center;padding:2px;color:white;">'+label+': '+Math.round(series.percent)+'%</div>';
}, },
background: { background: {
opacity: 0.5, opacity: 0.5,
color: '#000' color: '#000'
} }
}, },
combine: { combine: {
color: '#999', color: '#999',
threshold: 0.012 threshold: 0.012
} }
} }
}, },
legend: { legend: {
show: false show: false
} }
}); });
}); });
</script> </script>
<div id="graph7" style="width:900px;height:550px"></div> <div id="graph7" style="width:900px;height:550px"></div>
   
<?php <?php
} }
?> ?>
   
file:a/style.css -> file:b/style.css
body {  
padding-top:60px;  
}  
/* div collapse from http://roshanbh.com.np/2008/03/expandable-collapsible-toggle-pane-jquery.html */ /* div collapse from http://roshanbh.com.np/2008/03/expandable-collapsible-toggle-pane-jquery.html */
p { p {
padding: 0 0 1em; padding: 0 0 1em;
} }
.msg_list { .msg_list {
margin: 0px; margin: 0px;
padding: 0px; padding: 0px;
width: 383px; width: 383px;
} }
.msg_head { .msg_head {
padding: 5px 10px; padding: 5px 10px;
cursor: pointer; cursor: pointer;
position: relative; position: relative;
background-color:#FFCCCC; background-color:#FFCCCC;
margin:1px; margin:1px;
} }
.msg_body { .msg_body {
padding: 5px 10px 15px; padding: 5px 10px 15px;
background-color:#F4F4F8; background-color:#F4F4F8;
} }