Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found

Cible

Sélectionner le projet cible
  • la-quadrature-du-net/memopol/memopol
  • lnclt/political_memory
  • arthur/political_memory
  • agrausem/political_memory
  • periode/memopol
  • Anthony/memopol
  • Porkepix/memopol
  • jaster/memopol
  • luxcem/memopol
  • TAlone/memopol
10 résultats
Afficher les modifications
Affichage de
avec 3881 ajouts et 22 suppressions
reference/design-v3/img/i-bilbaobarandica.jpg

61,4 ko

reference/design-v3/img/jp-albrecht.jpg

58,4 ko

Fichier déplacé
reference/design-v3/img/m-anderson.jpg

61,6 ko

reference/design-v3/img/sg-cofferati.jpg

53,6 ko

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Memopol</title>
<!-- Bootstrap core CSS -->
<link href="./css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="./css/custom.css" rel="stylesheet">
<style>
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container-fluid">
<div class="row">
<!---------------------------------------------------------
VOLET DE NAVIGATION
---------------------------------------------------------->
<div class="col-sm-3 custom-nav">
<!----------------
INTRO
----------------->
<h1 class="text-center"><span class="glyphicon glyphicon-eye-open"></span><br/>Memopol</h1>
<p class="lead text-center">What is Memopol ?</p>
<p class="text-justify">Memopol is a tool designed by La Quadrature du Net to help European citizens to reach members of European Parliament (MEPs) and track their voting records on issues related to fundamental freedoms online. </p>
<div class="container-fluid">
<div class="row">
<div class="pull-right">
<a class="btn btn-default">More on our blog</a>
</div>
</div>
</div>
<hr/>
<!----------------
SEARCH
----------------->
<form class="form-horizontal">
<div class="input-group">
<label class="sr-only" for="rechercher">Search</label>
<input type="text" class="form-control" placeholder="Search" id="rechercher">
<span class="input-group-btn">
<button class="btn btn-primary" type="button">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
</div>
</form>
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#moresearch" aria-expanded="false" aria-controls="moresearch">
More search options
</button>
<div class="collapse" id="moresearch">
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#formMEP" aria-expanded="false" aria-controls="formMEP">
Find a MEP
</button>
<div class="collapse" id="formMEP">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-2" for="name">Name</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="name" placeholder="Leave empty for all">
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="country">Country</label>
<div class="col-sm-9">
<select class="form-control" id="country">
<option>All</option>
<option>AT . Austria </option>
<option>BE . Belgium </option>
<option>BG . Bulgaria </option>
<option>HR . Croatia </option>
<option>CY . Cyprus </option>
<option>CZ . Czech Republic </option>
<option>DK . Denmark </option>
<option>EE . Estonia </option>
<option>FI . Finland </option>
<option>FR . France </option>
<option>DE . Germany </option>
<option>GR . Greece </option>
<option>HU . Hungary </option>
<option>IE . Ireland </option>
<option>IT . Italy </option>
<option>LV . Latvia </option>
<option>LT . Lithuania </option>
<option>LU . Luxembourg </option>
<option>MT . Malta </option>
<option>NL . Netherlands </option>
<option>PL . Poland </option>
<option>PT . Portugal </option>
<option>RO . Romania </option>
<option>SK . Slovakia </option>
<option>SI . Slovenia </option>
<option>ES . Spain </option>
<option>SE . Sweden </option>
<option>GB . United Kingdom </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="party">Party</label>
<div class="col-sm-9">
<select class="form-control" id="party">
<option>All</option>
<option>GUE/NGL . Confederal Group of the European United Left - Nordic Green Left </option>
<option>ECR . European Conservatives and Reformists Group </option>
<option>EFDD . Europe of Freedom and Direct Democracy Group </option>
<option>ALDE . Group of the Alliance of Liberals and Democrats for Europe </option>
<option>EPP . Group of the European People's Party (Christian Democrats) </option>
<option>Greens/EFA . Group of the Greens/European Free Alliance </option>
<option>SD . Group of the Progressive Alliance of Socialists and Democrats in the European Parliament </option>
<option>NI . Non-attached Members </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="delegation">Delegation</label>
<div class="col-sm-9">
<select class="form-control" id="delegation">
<option>All</option>
<option>Delegation for relations with Afghanistan </option>
<option>Delegation for relations with Australia and New Zealand </option>
<option>Delegation for relations with Belarus </option>
<option>Delegation for relations with Bosnia and Herzegovina, and Kosovo </option>
<option>Delegation for relations with Canada </option>
<option>Delegation for relations with India </option>
<option>Delegation for relations with Iran </option>
<option>Delegation for relations with Iraq </option>
<option>Delegation for relations with Israel </option>
<option>Delegation for relations with Japan </option>
<option>Delegation for relations with Mercosur </option>
<option>Delegation for relations with South Africa </option>
<option>Delegation for relations with Switzerland and Norway and to the EU-Iceland Joint Parliamentary Committee and the European Economic Area (EEA) Joint Parliamentary Committee </option>
<option>Delegation for relations with the Arab Peninsula </option>
<option>Delegation for relations with the countries of Central America </option>
<option>Delegation for relations with the countries of South Asia </option>
<option>Delegation for relations with the countries of Southeast Asia and the Association of Southeast Asian Nations (ASEAN) </option>
<option>Delegation for relations with the countries of the Andean Community </option>
<option>Delegation for relations with the Federative Republic of Brazil </option>
<option>Delegation for relations with the Korean Peninsula </option>
<option>Delegation for relations with the Maghreb countries and the Arab Maghreb Union </option>
<option>Delegation for relations with the Mashreq countries </option>
<option>Delegation for relations with the NATO Parliamentary Assembly </option>
<option>Delegation for relations with the Palestinian Legislative Council </option>
<option>Delegation for relations with the Pan-African Parliament </option>
<option>Delegation for relations with the People's Republic of China </option>
<option>Delegation for relations with the United States </option>
<option>Delegation to the ACP-EU Joint Parliamentary Assembly </option>
<option>Delegation to the Cariforum — EU Parliamentary Committee </option>
<option>Delegation to the EU-Albania Stabilisation and Association Parliamentary Committee </option>
<option>Delegation to the EU-Armenia and EU-Azerbaijan Parliamentary Cooperation Committees and the EU-Georgia Parliamentary Association Committee </option>
<option>Delegation to the EU-Chile Joint Parliamentary Committee </option>
<option>Delegation to the EU-Former Yugoslav Republic of Macedonia Joint Parliamentary Committee </option>
<option>Delegation to the EU-Kazakhstan, EU-Kyrgyzstan, EU-Uzbekistan and EU-Tajikistan Parliamentary Cooperation Committees and for relations with Turkmenistan and Mongolia </option>
<option>Delegation to the EU-Mexico Joint Parliamentary Committee </option>
<option>Delegation to the EU-Moldova Parliamentary Association Committee </option>
<option>Delegation to the EU-Montenegro Stabilisation and Association Parliamentary Committee </option>
<option>Delegation to the Euro-Latin American Parliamentary Assembly </option>
<option>Delegation to the Euronest Parliamentary Assembly </option>
<option>Delegation to the EU-Russia Parliamentary Cooperation Committee </option>
<option>Delegation to the EU-Serbia Stabilisation and Association Parliamentary Committee </option>
<option>Delegation to the EU-Turkey Joint Parliamentary Committee </option>
<option>Delegation to the EU-Ukraine Parliamentary Association Committee </option>
<option>Delegation to the Parliamentary Assembly of the Union for the Mediterranean </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="committee">Committee</label>
<div class="col-sm-9">
<select class="form-control" id="committee">
<option>All</option>
<option>AGRI . Committee on Agriculture and Rural Development </option>
<option>CONT . Committee on Budgetary Control </option>
<option>BUDG . Committee on Budgets </option>
<option>LIBE . Committee on Civil Liberties, Justice and Home Affairs </option>
<option>AFCO . Committee on Constitutional Affairs </option>
<option>CULT . Committee on Culture and Education </option>
<option>DEVE . Committee on Development </option>
<option>ECON . Committee on Economic and Monetary Affairs </option>
<option>EMPL . Committee on Employment and Social Affairs </option>
<option>PECH . Committee on Fisheries </option>
<option>AFET . Committee on Foreign Affairs </option>
<option>ITRE . Committee on Industry, Research and Energy </option>
<option>INTA . Committee on International Trade </option>
<option>JURI . Committee on Legal Affairs </option>
<option>PETI . Committee on Petitions </option>
<option>REGI . Committee on Regional Development </option>
<option>ENVI . Committee on the Environment, Public Health and Food Safety </option>
<option>IMCO . Committee on the Internal Market and Consumer Protection </option>
<option>TRAN . Committee on Transport and Tourism </option>
<option>FEMM . Committee on Women's Rights and Gender Equality </option>
<option>DROI . Subcommittee on Human Rights </option>
</select>
</div>
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
</div>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#formDossiers" aria-expanded="false" aria-controls="formDossiers">
Explore the dossiers
</button>
<div class="collapse" id="formDossiers">
<form class="form-horizontal">
<div class="form-group">
<div class="col-sm-12">
<select class="form-control" id="dossiers">
<option>All</option>
<option>Personal data protection: processing of data for the purposes of prevention, investigation, detection or prosecution of criminal offences or execution of criminal penalties, and free movement of data </option>
<option>ACTA </option>
<option>Personal data protection: processing and free movement of data </option>
</select>
</div>
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
</div>
</div>
<hr>
<!----------------
NAV
----------------->
<a href="listMEP.html" class="btn btn-primary btn-block">Check out all MEPs</a>
<a href="listDossiers.html" class="btn btn-primary btn-block">Check out all Dossiers</a>
<br>
<!----------------
ADD POSITION
----------------->
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#addpposition" aria-expanded="false" aria-controls="addpposition">
Add a MEP's public position
</button>
<div class="collapse" id="addpposition">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-3 control-label" for="MEPname">MEP</label>
<div class="col-sm-8">
<select class="form-control" id="MEPname">
<option>Jan Philipp ALBRECHT</option>
<option>Martina ANDERSON</option>
<option>Sergio Gaetano COFFERATI</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="date">Date</label>
<div class="col-sm-8">
<input type="date" class="form-control" id="date" placeholder="Today">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="dossier">Dossier</label>
<div class="col-sm-8">
<select class="form-control" id="dossiers">
<option>Any</option>
<option>Personal data protection: processing of data for the purposes of prevention, investigation, detection or prosecution of criminal offences or execution of criminal penalties, and free movement of data </option>
<option>ACTA </option>
<option>Personal data protection: processing and free movement of data </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="text">Transcript</label>
<div class="col-sm-8">
<textarea class="form-control" id="text" rows="5"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="source">Source link</label>
<div class="col-sm-8">
<input type="url" class="form-control" id="source" placeholder="https://">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="tags">Tags</label>
<div class="col-sm-8">
<input type="url" class="form-control" id="source" placeholder="ACTA, Net neutrality, ...">
</div>
</div>
<p class="text-center"><button type="submit" class="btn btn-primary">Add that public position &raquo;</button></p>
</form>
</div>
</div>
<!---------------------------------------------------------
FIN DU VOLET DE NAVIGATION
---------------------------------------------------------->
<div class="col-sm-9 col-sm-offset-3 custom-feature">
<h2 class="text-center">Il faut remplir cette page</h2>
<h1 class="text-center">Pour l'instant, il n'y a rien !!</h1>
<p class="lead text-justify">Que souhaite-t-on mettre en avant ? Un sujet spécifique qui changerait en fonction des évènements ? Une page statique et explicative que l'on n'aurait jamais à changer ? Des liens vers le blog ou les autres sites de la Quadrature ? Un fil Twitter ? OMG, tellement de possibilités...</p>
<p class="text-justify">Cronut pop-up gluten-free, cliche Carles chillwave salvia roof party Blue Bottle. Craft beer post-ironic photo booth whatever literally DIY lomo, shabby chic fashion axe. Cardigan meh master cleanse, McSweeney's hashtag Etsy Pinterest forage viral XOXO freegan narwhal. Pour-over Brooklyn asymmetrical flannel pork belly four loko. Crucifix tote bag you probably haven't heard of them, organic synth stumptown occupy. Seitan plaid Williamsburg selvage single-origin coffee, tattooed PBR occupy art party whatever Banksy. Tumblr kale chips food truck tofu kitsch, chambray Etsy pork belly.</p>
<p class="text-justify">Polaroid mlkshk heirloom tousled, hashtag Portland 3 wolf moon locavore Banksy VHS lumbersexual. Keffiyeh 3 wolf moon lomo, yr flexitarian irony Shoreditch Pinterest Portland YOLO pop-up meditation literally. Normcore DIY fingerstache Odd Future fashion axe. Austin church-key cardigan gastropub, VHS selvage street art leggings trust fund. Tumblr mustache tousled typewriter literally. Kogi Brooklyn shabby chic Carles, mixtape bespoke occupy slow-carb ennui Austin Marfa Echo Park. Put a bird on it Pinterest iPhone, locavore PBR&B cray Truffaut letterpress.</p>
<p class="text-justify">Fixie American Apparel locavore, listicle lomo polaroid photo booth Intelligentsia readymade fashion axe Carles mixtape Blue Bottle authentic ugh. Quinoa drinking vinegar occupy, food truck banh mi normcore PBR&B viral shabby chic American Apparel pour-over post-ironic. VHS butcher plaid meh, bicycle rights distillery fap disrupt pug mustache cray. 90's banjo slow-carb Pitchfork Etsy ennui disrupt, cornhole asymmetrical. Authentic aesthetic Godard biodiesel twee, tilde wayfarers irony fingerstache PBR&B Bushwick butcher ennui. IPhone +1 readymade, fap gastropub church-key next level Vice forage. Odd Future sriracha American Apparel meh photo booth Thundercats.</p>
<p class="text-right"><a class="btn btn-primary">More info on this subject &raquo;</a></p>
<h3>Index de la maquette</h3>
<ul class="text-justify">
<li><a href="infos.html">Style guide</a></li>
<li>Themes:
<a href="listDossiers.html">liste</a> &bull;
<a href="dossier.html">details</a> &bull;
<a href="dossier-positions.html">positions</a> &bull;
<a href="dossier-votes.html">votes</a> &bull;
<a href="dossier-vide.html">vide</a>
</li>
<li>Representatives:
<a href="listMEP.html">liste</a> &bull;
<a href="MEP.html">details</a> &bull;
<a href="MEP-positions.html">positions</a> &bull;
<a href="MEP-mandates.html">mandats</a> &bull;
<a href="MEP-votes.html">votes</a> &bull;
<a href="MEP-vide.html">vide</a>
</li>
</ul>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/docs.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="./js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="./css/custom.css" rel="stylesheet">
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="jumbotron">
<div class="container">
<h1>Memopol infos and sytle guide</h1>
<p>Everything there is to know about the Memopol front end design.</p>
</div>
</div>
<div class="container-fluid">
<div class="page-header">
<h2>Site map</h2>
</div>
<p>All positions (votes & public positions) belong to two categories: the MEP or group that stand on the position and the Dossier they belong to, depending on the topic. </p>
<p>LQDN's analysis, recommendations or summary can appear at any moment on the site to clarify something or for comparison.</p>
<p>The 2 main categories are as follows:</p>
<dl>
<dt>Members of the European Parliement (MEP)</dt>
<dd>They can be considered either as individuals or as groups (party / country / committee).</dd>
<dd>They have the foolowing attributes:
<dl class="dl-horizontal">
<dt>ID card</dt>
<dd>A list of identifiers (name, groups, social links, &pi;Phone)</dd>
<dd>+ scores & badges</dd>
<dt>Mandates</dt>
<dd>Everything an individual MEP is involved in. (commissions, committees, ...)</dd>
<dd>Emphasis is placed on the mandates relevant for LQDN's activities.</dd>
<dt>Votes</dt>
<dd>Every vote of the MEP or group, compared to other groups votes, final results and LQDN's recommandations.</dd>
<dd>+ details regarding evolution and scores.</dd>
<dt>Public positions</dt>
<dd>All public positions of the MEP or group, in the Parliement or through other medias.</dd>
<dd>+ can include summary, context or short analysis by LQDN.</dd>
</dl>
</dd>
<dt>Dossiers</dt>
<dd>They are thematic gathering of infos regarding a specific topic.</dd>
<dd>They regroup the following elements:</dd>
<dl class="dl-horizontal">
<dt>LQDN's opinion</dt>
<dd>A summary / introduction to the topic</dd>
<dd>+ a link to all LQDN's positions on the matter (press releases / press review)</dd>
<dd>+ (in case of current activity) a list of future milestones and possibilities for volunteers to help.</dd>
<dt>Votes</dt>
<dd>Every vote per group or MEP, final results and LQDN's recommandations.</dd>
<dd>+ details regarding evolution.</dd>
<dt>Public positions</dt>
<dd>All public positions on the topic, in the Parliement or through other medias.</dd>
<dd>+ can include summary, context or short analysis by LQDN.</dd>
</dl>
<div class="page-header">
<h2>Nav section</h2>
</div>
<h3>What's in it</h3>
<dl>
<dt>Access to categories: search bar</dt>
<dd>The nav has to provide for an easy access to both MEP pages and dossiers. To do so, we are using a search bar (useful for broad searches), that can be unfolded ("more search options") to use more precise key words.</dd>
<dt>Access to categories: see all MEPS or dossiers</dt>
<dd>Easy access to all MEP pages and dossiers. When you're not looking for something specific.</dd>
<dt>Adding a position</dt>
<dd>Users have to be able to quickly add a public position when they hear one (for example on the radio). Thus a button allows for a modal to appear for a quick addition.</dd>
</dl>
<h3>Size and position</h3>
<p class="lead">On the left</p>
<p>A left sided nav section allows for a consistency between desktop UX and mobile UX. With the incresed use of mobile phone, people are getting used to this kind of interaction. Moreover, it allows for more space on the screen as the section is foldable, and it is always accessible, and not stuck at the top of the page.</p>
<div class="row">
<div class="col-sm-4">
<p class="lead text-center">Large view</p>
<p>For extra large views, the nav is always visible.</p>
</div>
<!--div class="col-sm-4">
<p class="lead text-center">Medium view</p>
<p>For medium views (computers / tablets) the nav is entirely visible on the first page, and is accessible either by an icon or a left-edge overflowing that unfolds to the right when clicked.</p>
</div-->
<div class="col-sm-4">
<p class="lead text-center">Small view</p>
<p>The nav is accessible either by an icon or a left-edge overflowing that unfolds to the right when clicked or touched.</p>
</div>
</div>
<div class="page-header">
<h2>CSS bases</h2>
</div>
<h3>Colors</h3>
<div class="row">
<div class="col-sm-4 col-md-3">
<div class="thumbnail">
<div style="background-color: #ffffff; width: 100%; height: 100px; border-bottom:solid 1px #dddddd;"></div>
<div class="caption">
<h4 class="text-center">Main color: white</h4>
<p>For backgrounds & default options</p>
</div>
</div>
</div>
<div class="col-sm-4 col-md-3">
<div class="thumbnail">
<div style="background-color: #487ED6; width: 100%; height: 100px; border-bottom:solid 1px #dddddd;"></div>
<div class="caption">
<h4 class="text-center">Primary color: LQDN's blue</h4>
<p>Color consistency with LQDN's main site</p>
</div>
</div>
</div>
<div class="col-sm-4 col-md-3">
<div class="thumbnail">
<div style="background-color: #212121; width: 100%; height: 100px; border-bottom:solid 1px #dddddd;"></div>
<div class="caption">
<h4 class="text-center">Heading color: Dark grey</h4>
<p>Good readability.</p>
</div>
</div>
</div>
<div class="col-sm-4 col-md-3">
<div class="thumbnail">
<div style="background-color: #222; width: 100%; height: 100px; border-bottom:solid 1px #dddddd;"></div>
<div class="caption">
<h4 class="text-center">Text color: Lighter grey</h4>
<p>Good readability, not too much contrast.</p>
</div>
</div>
</div>
</div>
<p class="alert alert-info">Attention les alertes comme celles-ci devraient être bleu-quadrature. </p>
<h3>Typo</h3>
<dl class="dl-horizontal">
<dt style="font-family:propaganda;">Propaganda</dt>
<dd>Title font</dd>
<dt style="font-family: 'Helvetica Neue', Helvetica, Arial">Helvetica Neue</dt>
<dd>Text font</dd>
</dl>
<div class="page-header">
<h2>TO DO</h2>
</div>
<p class="lead">Make it responsive on small screen</p>
<p class="lead">Make it printable</p>
</div>
</div>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>
</html>
\ No newline at end of file
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
if (typeof jQuery === 'undefined') {
throw new Error('Bootstrap\'s JavaScript requires jQuery')
}
+function ($) {
'use strict';
var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
}
}(jQuery);
/* ========================================================================
* Bootstrap: transition.js v3.3.4
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery);
/* ========================================================================
* Bootstrap: alert.js v3.3.4
* http://getbootstrap.com/javascript/#alerts
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// ALERT CLASS DEFINITION
// ======================
var dismiss = '[data-dismiss="alert"]'
var Alert = function (el) {
$(el).on('click', dismiss, this.close)
}
Alert.VERSION = '3.3.4'
Alert.TRANSITION_DURATION = 150
Alert.prototype.close = function (e) {
var $this = $(this)
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = $(selector)
if (e) e.preventDefault()
if (!$parent.length) {
$parent = $this.closest('.alert')
}
$parent.trigger(e = $.Event('close.bs.alert'))
if (e.isDefaultPrevented()) return
$parent.removeClass('in')
function removeElement() {
// detach from parent, fire event then clean up data
$parent.detach().trigger('closed.bs.alert').remove()
}
$.support.transition && $parent.hasClass('fade') ?
$parent
.one('bsTransitionEnd', removeElement)
.emulateTransitionEnd(Alert.TRANSITION_DURATION) :
removeElement()
}
// ALERT PLUGIN DEFINITION
// =======================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.alert')
if (!data) $this.data('bs.alert', (data = new Alert(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.alert
$.fn.alert = Plugin
$.fn.alert.Constructor = Alert
// ALERT NO CONFLICT
// =================
$.fn.alert.noConflict = function () {
$.fn.alert = old
return this
}
// ALERT DATA-API
// ==============
$(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
}(jQuery);
/* ========================================================================
* Bootstrap: button.js v3.3.4
* http://getbootstrap.com/javascript/#buttons
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// BUTTON PUBLIC CLASS DEFINITION
// ==============================
var Button = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Button.DEFAULTS, options)
this.isLoading = false
}
Button.VERSION = '3.3.4'
Button.DEFAULTS = {
loadingText: 'loading...'
}
Button.prototype.setState = function (state) {
var d = 'disabled'
var $el = this.$element
var val = $el.is('input') ? 'val' : 'html'
var data = $el.data()
state = state + 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]())
// push to event loop to allow forms to submit
setTimeout($.proxy(function () {
$el[val](data[state] == null ? this.options[state] : data[state])
if (state == 'loadingText') {
this.isLoading = true
$el.addClass(d).attr(d, d)
} else if (this.isLoading) {
this.isLoading = false
$el.removeClass(d).removeAttr(d)
}
}, this), 0)
}
Button.prototype.toggle = function () {
var changed = true
var $parent = this.$element.closest('[data-toggle="buttons"]')
if ($parent.length) {
var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') {
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
else $parent.find('.active').removeClass('active')
}
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
} else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
}
if (changed) this.$element.toggleClass('active')
}
// BUTTON PLUGIN DEFINITION
// ========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.button')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.button', (data = new Button(this, options)))
if (option == 'toggle') data.toggle()
else if (option) data.setState(option)
})
}
var old = $.fn.button
$.fn.button = Plugin
$.fn.button.Constructor = Button
// BUTTON NO CONFLICT
// ==================
$.fn.button.noConflict = function () {
$.fn.button = old
return this
}
// BUTTON DATA-API
// ===============
$(document)
.on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle')
e.preventDefault()
})
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
})
}(jQuery);
/* ========================================================================
* Bootstrap: carousel.js v3.3.4
* http://getbootstrap.com/javascript/#carousel
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CAROUSEL CLASS DEFINITION
// =========================
var Carousel = function (element, options) {
this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.paused = null
this.sliding = null
this.interval = null
this.$active = null
this.$items = null
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
}
Carousel.VERSION = '3.3.4'
Carousel.TRANSITION_DURATION = 600
Carousel.DEFAULTS = {
interval: 5000,
pause: 'hover',
wrap: true,
keyboard: true
}
Carousel.prototype.keydown = function (e) {
if (/input|textarea/i.test(e.target.tagName)) return
switch (e.which) {
case 37: this.prev(); break
case 39: this.next(); break
default: return
}
e.preventDefault()
}
Carousel.prototype.cycle = function (e) {
e || (this.paused = false)
this.interval && clearInterval(this.interval)
this.options.interval
&& !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this
}
Carousel.prototype.getItemIndex = function (item) {
this.$items = item.parent().children('.item')
return this.$items.index(item || this.$active)
}
Carousel.prototype.getItemForDirection = function (direction, active) {
var activeIndex = this.getItemIndex(active)
var willWrap = (direction == 'prev' && activeIndex === 0)
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
if (willWrap && !this.options.wrap) return active
var delta = direction == 'prev' ? -1 : 1
var itemIndex = (activeIndex + delta) % this.$items.length
return this.$items.eq(itemIndex)
}
Carousel.prototype.to = function (pos) {
var that = this
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
if (activeIndex == pos) return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
}
Carousel.prototype.pause = function (e) {
e || (this.paused = true)
if (this.$element.find('.next, .prev').length && $.support.transition) {
this.$element.trigger($.support.transition.end)
this.cycle(true)
}
this.interval = clearInterval(this.interval)
return this
}
Carousel.prototype.next = function () {
if (this.sliding) return
return this.slide('next')
}
Carousel.prototype.prev = function () {
if (this.sliding) return
return this.slide('prev')
}
Carousel.prototype.slide = function (type, next) {
var $active = this.$element.find('.item.active')
var $next = next || this.getItemForDirection(type, $active)
var isCycling = this.interval
var direction = type == 'next' ? 'left' : 'right'
var that = this
if ($next.hasClass('active')) return (this.sliding = false)
var relatedTarget = $next[0]
var slideEvent = $.Event('slide.bs.carousel', {
relatedTarget: relatedTarget,
direction: direction
})
this.$element.trigger(slideEvent)
if (slideEvent.isDefaultPrevented()) return
this.sliding = true
isCycling && this.pause()
if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active')
var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
$nextIndicator && $nextIndicator.addClass('active')
}
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
if ($.support.transition && this.$element.hasClass('slide')) {
$next.addClass(type)
$next[0].offsetWidth // force reflow
$active.addClass(direction)
$next.addClass(direction)
$active
.one('bsTransitionEnd', function () {
$next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' '))
that.sliding = false
setTimeout(function () {
that.$element.trigger(slidEvent)
}, 0)
})
.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
} else {
$active.removeClass('active')
$next.addClass('active')
this.sliding = false
this.$element.trigger(slidEvent)
}
isCycling && this.cycle()
return this
}
// CAROUSEL PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.carousel')
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
var action = typeof option == 'string' ? option : options.slide
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option)
else if (action) data[action]()
else if (options.interval) data.pause().cycle()
})
}
var old = $.fn.carousel
$.fn.carousel = Plugin
$.fn.carousel.Constructor = Carousel
// CAROUSEL NO CONFLICT
// ====================
$.fn.carousel.noConflict = function () {
$.fn.carousel = old
return this
}
// CAROUSEL DATA-API
// =================
var clickHandler = function (e) {
var href
var $this = $(this)
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
if (!$target.hasClass('carousel')) return
var options = $.extend({}, $target.data(), $this.data())
var slideIndex = $this.attr('data-slide-to')
if (slideIndex) options.interval = false
Plugin.call($target, options)
if (slideIndex) {
$target.data('bs.carousel').to(slideIndex)
}
e.preventDefault()
}
$(document)
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
$(window).on('load', function () {
$('[data-ride="carousel"]').each(function () {
var $carousel = $(this)
Plugin.call($carousel, $carousel.data())
})
})
}(jQuery);
/* ========================================================================
* Bootstrap: collapse.js v3.3.4
* http://getbootstrap.com/javascript/#collapse
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// COLLAPSE PUBLIC CLASS DEFINITION
// ================================
var Collapse = function (element, options) {
this.$element = $(element)
this.options = $.extend({}, Collapse.DEFAULTS, options)
this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
'[data-toggle="collapse"][data-target="#' + element.id + '"]')
this.transitioning = null
if (this.options.parent) {
this.$parent = this.getParent()
} else {
this.addAriaAndCollapsedClass(this.$element, this.$trigger)
}
if (this.options.toggle) this.toggle()
}
Collapse.VERSION = '3.3.4'
Collapse.TRANSITION_DURATION = 350
Collapse.DEFAULTS = {
toggle: true
}
Collapse.prototype.dimension = function () {
var hasWidth = this.$element.hasClass('width')
return hasWidth ? 'width' : 'height'
}
Collapse.prototype.show = function () {
if (this.transitioning || this.$element.hasClass('in')) return
var activesData
var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
if (actives && actives.length) {
activesData = actives.data('bs.collapse')
if (activesData && activesData.transitioning) return
}
var startEvent = $.Event('show.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
if (actives && actives.length) {
Plugin.call(actives, 'hide')
activesData || actives.data('bs.collapse', null)
}
var dimension = this.dimension()
this.$element
.removeClass('collapse')
.addClass('collapsing')[dimension](0)
.attr('aria-expanded', true)
this.$trigger
.removeClass('collapsed')
.attr('aria-expanded', true)
this.transitioning = 1
var complete = function () {
this.$element
.removeClass('collapsing')
.addClass('collapse in')[dimension]('')
this.transitioning = 0
this.$element
.trigger('shown.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
var scrollSize = $.camelCase(['scroll', dimension].join('-'))
this.$element
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
}
Collapse.prototype.hide = function () {
if (this.transitioning || !this.$element.hasClass('in')) return
var startEvent = $.Event('hide.bs.collapse')
this.$element.trigger(startEvent)
if (startEvent.isDefaultPrevented()) return
var dimension = this.dimension()
this.$element[dimension](this.$element[dimension]())[0].offsetHeight
this.$element
.addClass('collapsing')
.removeClass('collapse in')
.attr('aria-expanded', false)
this.$trigger
.addClass('collapsed')
.attr('aria-expanded', false)
this.transitioning = 1
var complete = function () {
this.transitioning = 0
this.$element
.removeClass('collapsing')
.addClass('collapse')
.trigger('hidden.bs.collapse')
}
if (!$.support.transition) return complete.call(this)
this.$element
[dimension](0)
.one('bsTransitionEnd', $.proxy(complete, this))
.emulateTransitionEnd(Collapse.TRANSITION_DURATION)
}
Collapse.prototype.toggle = function () {
this[this.$element.hasClass('in') ? 'hide' : 'show']()
}
Collapse.prototype.getParent = function () {
return $(this.options.parent)
.find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
.each($.proxy(function (i, element) {
var $element = $(element)
this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
}, this))
.end()
}
Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
var isOpen = $element.hasClass('in')
$element.attr('aria-expanded', isOpen)
$trigger
.toggleClass('collapsed', !isOpen)
.attr('aria-expanded', isOpen)
}
function getTargetFromTrigger($trigger) {
var href
var target = $trigger.attr('data-target')
|| (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
return $(target)
}
// COLLAPSE PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.collapse')
var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.collapse
$.fn.collapse = Plugin
$.fn.collapse.Constructor = Collapse
// COLLAPSE NO CONFLICT
// ====================
$.fn.collapse.noConflict = function () {
$.fn.collapse = old
return this
}
// COLLAPSE DATA-API
// =================
$(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
var $this = $(this)
if (!$this.attr('data-target')) e.preventDefault()
var $target = getTargetFromTrigger($this)
var data = $target.data('bs.collapse')
var option = data ? 'toggle' : $this.data()
Plugin.call($target, option)
})
}(jQuery);
/* ========================================================================
* Bootstrap: dropdown.js v3.3.4
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// DROPDOWN CLASS DEFINITION
// =========================
var backdrop = '.dropdown-backdrop'
var toggle = '[data-toggle="dropdown"]'
var Dropdown = function (element) {
$(element).on('click.bs.dropdown', this.toggle)
}
Dropdown.VERSION = '3.3.4'
Dropdown.prototype.toggle = function (e) {
var $this = $(this)
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
clearMenus()
if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
}
var relatedTarget = { relatedTarget: this }
$parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this
.trigger('focus')
.attr('aria-expanded', 'true')
$parent
.toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget)
}
return false
}
Dropdown.prototype.keydown = function (e) {
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
var $this = $(this)
e.preventDefault()
e.stopPropagation()
if ($this.is('.disabled, :disabled')) return
var $parent = getParent($this)
var isActive = $parent.hasClass('open')
if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click')
}
var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
if (!$items.length) return
var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0
$items.eq(index).trigger('focus')
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
// DROPDOWN PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.dropdown')
if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this)
})
}
var old = $.fn.dropdown
$.fn.dropdown = Plugin
$.fn.dropdown.Constructor = Dropdown
// DROPDOWN NO CONFLICT
// ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old
return this
}
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$(document)
.on('click.bs.dropdown.data-api', clearMenus)
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery);
/* ========================================================================
* Bootstrap: modal.js v3.3.4
* http://getbootstrap.com/javascript/#modals
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// MODAL CLASS DEFINITION
// ======================
var Modal = function (element, options) {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$dialog = this.$element.find('.modal-dialog')
this.$backdrop = null
this.isShown = null
this.originalBodyPad = null
this.scrollbarWidth = 0
this.ignoreBackdropClick = false
if (this.options.remote) {
this.$element
.find('.modal-content')
.load(this.options.remote, $.proxy(function () {
this.$element.trigger('loaded.bs.modal')
}, this))
}
}
Modal.VERSION = '3.3.4'
Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150
Modal.DEFAULTS = {
backdrop: true,
keyboard: true,
show: true
}
Modal.prototype.toggle = function (_relatedTarget) {
return this.isShown ? this.hide() : this.show(_relatedTarget)
}
Modal.prototype.show = function (_relatedTarget) {
var that = this
var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
this.isShown = true
this.checkScrollbar()
this.setScrollbar()
this.$body.addClass('modal-open')
this.escape()
this.resize()
this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
this.$dialog.on('mousedown.dismiss.bs.modal', function () {
that.$element.one('mouseup.dismiss.bs.modal', function (e) {
if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
})
})
this.backdrop(function () {
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
that.$element.appendTo(that.$body) // don't move modals dom position
}
that.$element
.show()
.scrollTop(0)
that.adjustDialog()
if (transition) {
that.$element[0].offsetWidth // force reflow
}
that.$element
.addClass('in')
.attr('aria-hidden', false)
that.enforceFocus()
var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
transition ?
that.$dialog // wait for modal to slide in
.one('bsTransitionEnd', function () {
that.$element.trigger('focus').trigger(e)
})
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
that.$element.trigger('focus').trigger(e)
})
}
Modal.prototype.hide = function (e) {
if (e) e.preventDefault()
e = $.Event('hide.bs.modal')
this.$element.trigger(e)
if (!this.isShown || e.isDefaultPrevented()) return
this.isShown = false
this.escape()
this.resize()
$(document).off('focusin.bs.modal')
this.$element
.removeClass('in')
.attr('aria-hidden', true)
.off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal')
this.$dialog.off('mousedown.dismiss.bs.modal')
$.support.transition && this.$element.hasClass('fade') ?
this.$element
.one('bsTransitionEnd', $.proxy(this.hideModal, this))
.emulateTransitionEnd(Modal.TRANSITION_DURATION) :
this.hideModal()
}
Modal.prototype.enforceFocus = function () {
$(document)
.off('focusin.bs.modal') // guard against infinite focus loop
.on('focusin.bs.modal', $.proxy(function (e) {
if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
this.$element.trigger('focus')
}
}, this))
}
Modal.prototype.escape = function () {
if (this.isShown && this.options.keyboard) {
this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
e.which == 27 && this.hide()
}, this))
} else if (!this.isShown) {
this.$element.off('keydown.dismiss.bs.modal')
}
}
Modal.prototype.resize = function () {
if (this.isShown) {
$(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
} else {
$(window).off('resize.bs.modal')
}
}
Modal.prototype.hideModal = function () {
var that = this
this.$element.hide()
this.backdrop(function () {
that.$body.removeClass('modal-open')
that.resetAdjustments()
that.resetScrollbar()
that.$element.trigger('hidden.bs.modal')
})
}
Modal.prototype.removeBackdrop = function () {
this.$backdrop && this.$backdrop.remove()
this.$backdrop = null
}
Modal.prototype.backdrop = function (callback) {
var that = this
var 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(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
if (this.ignoreBackdropClick) {
this.ignoreBackdropClick = false
return
}
if (e.target !== e.currentTarget) return
this.options.backdrop == 'static'
? this.$element[0].focus()
: this.hide()
}, this))
if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
this.$backdrop.addClass('in')
if (!callback) return
doAnimate ?
this.$backdrop
.one('bsTransitionEnd', callback)
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callback()
} else if (!this.isShown && this.$backdrop) {
this.$backdrop.removeClass('in')
var callbackRemove = function () {
that.removeBackdrop()
callback && callback()
}
$.support.transition && this.$element.hasClass('fade') ?
this.$backdrop
.one('bsTransitionEnd', callbackRemove)
.emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
callbackRemove()
} else if (callback) {
callback()
}
}
// these following methods are used to handle overflowing modals
Modal.prototype.handleUpdate = function () {
this.adjustDialog()
}
Modal.prototype.adjustDialog = function () {
var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
this.$element.css({
paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
})
}
Modal.prototype.resetAdjustments = function () {
this.$element.css({
paddingLeft: '',
paddingRight: ''
})
}
Modal.prototype.checkScrollbar = function () {
var fullWindowWidth = window.innerWidth
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
var documentElementRect = document.documentElement.getBoundingClientRect()
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
}
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
this.scrollbarWidth = this.measureScrollbar()
}
Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
this.originalBodyPad = document.body.style.paddingRight || ''
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
}
Modal.prototype.resetScrollbar = function () {
this.$body.css('padding-right', this.originalBodyPad)
}
Modal.prototype.measureScrollbar = function () { // thx walsh
var scrollDiv = document.createElement('div')
scrollDiv.className = 'modal-scrollbar-measure'
this.$body.append(scrollDiv)
var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
this.$body[0].removeChild(scrollDiv)
return scrollbarWidth
}
// MODAL PLUGIN DEFINITION
// =======================
function Plugin(option, _relatedTarget) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.modal')
var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
if (typeof option == 'string') data[option](_relatedTarget)
else if (options.show) data.show(_relatedTarget)
})
}
var old = $.fn.modal
$.fn.modal = Plugin
$.fn.modal.Constructor = Modal
// MODAL NO CONFLICT
// =================
$.fn.modal.noConflict = function () {
$.fn.modal = old
return this
}
// MODAL DATA-API
// ==============
$(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
var $this = $(this)
var href = $this.attr('href')
var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
if ($this.is('a')) e.preventDefault()
$target.one('show.bs.modal', function (showEvent) {
if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
$target.one('hidden.bs.modal', function () {
$this.is(':visible') && $this.trigger('focus')
})
})
Plugin.call($target, option, this)
})
}(jQuery);
/* ========================================================================
* Bootstrap: tooltip.js v3.3.4
* http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// TOOLTIP PUBLIC CLASS DEFINITION
// ===============================
var Tooltip = function (element, options) {
this.type = null
this.options = null
this.enabled = null
this.timeout = null
this.hoverState = null
this.$element = null
this.init('tooltip', element, options)
}
Tooltip.VERSION = '3.3.4'
Tooltip.TRANSITION_DURATION = 150
Tooltip.DEFAULTS = {
animation: true,
placement: 'top',
selector: false,
template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
trigger: 'hover focus',
title: '',
delay: 0,
html: false,
container: false,
viewport: {
selector: 'body',
padding: 0
}
}
Tooltip.prototype.init = function (type, element, options) {
this.enabled = true
this.type = type
this.$element = $(element)
this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
}
var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) {
var trigger = triggers[i]
if (trigger == 'click') {
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (trigger != 'manual') {
var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'
var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
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()
}
Tooltip.prototype.getDefaults = function () {
return Tooltip.DEFAULTS
}
Tooltip.prototype.getOptions = function (options) {
options = $.extend({}, this.getDefaults(), this.$element.data(), options)
if (options.delay && typeof options.delay == 'number') {
options.delay = {
show: options.delay,
hide: options.delay
}
}
return options
}
Tooltip.prototype.getDelegateOptions = function () {
var options = {}
var defaults = this.getDefaults()
this._options && $.each(this._options, function (key, value) {
if (defaults[key] != value) options[key] = value
})
return options
}
Tooltip.prototype.enter = function (obj) {
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type)
if (self && self.$tip && self.$tip.is(':visible')) {
self.hoverState = 'in'
return
}
if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self)
}
clearTimeout(self.timeout)
self.hoverState = 'in'
if (!self.options.delay || !self.options.delay.show) return self.show()
self.timeout = setTimeout(function () {
if (self.hoverState == 'in') self.show()
}, self.options.delay.show)
}
Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type)
if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self)
}
clearTimeout(self.timeout)
self.hoverState = 'out'
if (!self.options.delay || !self.options.delay.hide) return self.hide()
self.timeout = setTimeout(function () {
if (self.hoverState == 'out') self.hide()
}, self.options.delay.hide)
}
Tooltip.prototype.show = function () {
var e = $.Event('show.bs.' + this.type)
if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
if (e.isDefaultPrevented() || !inDom) return
var that = this
var $tip = this.tip()
var tipId = this.getUID(this.type)
this.setContent()
$tip.attr('id', tipId)
this.$element.attr('aria-describedby', tipId)
if (this.options.animation) $tip.addClass('fade')
var placement = typeof this.options.placement == 'function' ?
this.options.placement.call(this, $tip[0], this.$element[0]) :
this.options.placement
var autoToken = /\s?auto?\s?/i
var autoPlace = autoToken.test(placement)
if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
$tip
.detach()
.css({ top: 0, left: 0, display: 'block' })
.addClass(placement)
.data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
var pos = this.getPosition()
var actualWidth = $tip[0].offsetWidth
var actualHeight = $tip[0].offsetHeight
if (autoPlace) {
var orgPlacement = placement
var $container = this.options.container ? $(this.options.container) : this.$element.parent()
var containerDim = this.getPosition($container)
placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' :
placement
$tip
.removeClass(orgPlacement)
.addClass(placement)
}
var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
this.applyPlacement(calculatedOffset, placement)
var complete = function () {
var prevHoverState = that.hoverState
that.$element.trigger('shown.bs.' + that.type)
that.hoverState = null
if (prevHoverState == 'out') that.leave(that)
}
$.support.transition && this.$tip.hasClass('fade') ?
$tip
.one('bsTransitionEnd', complete)
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
complete()
}
}
Tooltip.prototype.applyPlacement = function (offset, placement) {
var $tip = this.tip()
var width = $tip[0].offsetWidth
var height = $tip[0].offsetHeight
// manually read margins because getBoundingClientRect includes difference
var marginTop = parseInt($tip.css('margin-top'), 10)
var marginLeft = parseInt($tip.css('margin-left'), 10)
// we must check for NaN for ie 8/9
if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0
offset.top = offset.top + marginTop
offset.left = offset.left + marginLeft
// $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0
$.offset.setOffset($tip[0], $.extend({
using: function (props) {
$tip.css({
top: Math.round(props.top),
left: Math.round(props.left)
})
}
}, offset), 0)
$tip.addClass('in')
// check to see if placing tip in new offset caused the tip to resize itself
var actualWidth = $tip[0].offsetWidth
var actualHeight = $tip[0].offsetHeight
if (placement == 'top' && actualHeight != height) {
offset.top = offset.top + height - actualHeight
}
var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
if (delta.left) offset.left += delta.left
else offset.top += delta.top
var isVertical = /top|bottom/.test(placement)
var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
$tip.offset(offset)
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
}
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
this.arrow()
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
.css(isVertical ? 'top' : 'left', '')
}
Tooltip.prototype.setContent = function () {
var $tip = this.tip()
var title = this.getTitle()
$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
$tip.removeClass('fade in top bottom left right')
}
Tooltip.prototype.hide = function (callback) {
var that = this
var $tip = $(this.$tip)
var e = $.Event('hide.bs.' + this.type)
function complete() {
if (that.hoverState != 'in') $tip.detach()
that.$element
.removeAttr('aria-describedby')
.trigger('hidden.bs.' + that.type)
callback && callback()
}
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$tip.removeClass('in')
$.support.transition && $tip.hasClass('fade') ?
$tip
.one('bsTransitionEnd', complete)
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
complete()
this.hoverState = null
return this
}
Tooltip.prototype.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') || '').attr('title', '')
}
}
Tooltip.prototype.hasContent = function () {
return this.getTitle()
}
Tooltip.prototype.getPosition = function ($element) {
$element = $element || this.$element
var el = $element[0]
var isBody = el.tagName == 'BODY'
var elRect = el.getBoundingClientRect()
if (elRect.width == null) {
// width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
}
var elOffset = isBody ? { top: 0, left: 0 } : $element.offset()
var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
return $.extend({}, elRect, scroll, outerDims, elOffset)
}
Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
/* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
}
Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
var delta = { top: 0, left: 0 }
if (!this.$viewport) return delta
var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
var viewportDimensions = this.getPosition(this.$viewport)
if (/right|left/.test(placement)) {
var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll
var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
if (topEdgeOffset < viewportDimensions.top) { // top overflow
delta.top = viewportDimensions.top - topEdgeOffset
} else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
}
} else {
var leftEdgeOffset = pos.left - viewportPadding
var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset
} else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
}
}
return delta
}
Tooltip.prototype.getTitle = function () {
var title
var $e = this.$element
var o = this.options
title = $e.attr('data-original-title')
|| (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)
return title
}
Tooltip.prototype.getUID = function (prefix) {
do prefix += ~~(Math.random() * 1000000)
while (document.getElementById(prefix))
return prefix
}
Tooltip.prototype.tip = function () {
return (this.$tip = this.$tip || $(this.options.template))
}
Tooltip.prototype.arrow = function () {
return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
}
Tooltip.prototype.enable = function () {
this.enabled = true
}
Tooltip.prototype.disable = function () {
this.enabled = false
}
Tooltip.prototype.toggleEnabled = function () {
this.enabled = !this.enabled
}
Tooltip.prototype.toggle = function (e) {
var self = this
if (e) {
self = $(e.currentTarget).data('bs.' + this.type)
if (!self) {
self = new this.constructor(e.currentTarget, this.getDelegateOptions())
$(e.currentTarget).data('bs.' + this.type, self)
}
}
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
Tooltip.prototype.destroy = function () {
var that = this
clearTimeout(this.timeout)
this.hide(function () {
that.$element.off('.' + that.type).removeData('bs.' + that.type)
})
}
// TOOLTIP PLUGIN DEFINITION
// =========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option
if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.tooltip
$.fn.tooltip = Plugin
$.fn.tooltip.Constructor = Tooltip
// TOOLTIP NO CONFLICT
// ===================
$.fn.tooltip.noConflict = function () {
$.fn.tooltip = old
return this
}
}(jQuery);
/* ========================================================================
* Bootstrap: popover.js v3.3.4
* http://getbootstrap.com/javascript/#popovers
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// POPOVER PUBLIC CLASS DEFINITION
// ===============================
var Popover = function (element, options) {
this.init('popover', element, options)
}
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.4'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right',
trigger: 'click',
content: '',
template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
})
// NOTE: POPOVER EXTENDS tooltip.js
// ================================
Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
Popover.prototype.constructor = Popover
Popover.prototype.getDefaults = function () {
return Popover.DEFAULTS
}
Popover.prototype.setContent = function () {
var $tip = this.tip()
var title = this.getTitle()
var content = this.getContent()
$tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
$tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
](content)
$tip.removeClass('fade top bottom left right in')
// IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
// this manually by checking the contents.
if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
}
Popover.prototype.hasContent = function () {
return this.getTitle() || this.getContent()
}
Popover.prototype.getContent = function () {
var $e = this.$element
var o = this.options
return $e.attr('data-content')
|| (typeof o.content == 'function' ?
o.content.call($e[0]) :
o.content)
}
Popover.prototype.arrow = function () {
return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
}
// POPOVER PLUGIN DEFINITION
// =========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.popover')
var options = typeof option == 'object' && option
if (!data && /destroy|hide/.test(option)) return
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.popover
$.fn.popover = Plugin
$.fn.popover.Constructor = Popover
// POPOVER NO CONFLICT
// ===================
$.fn.popover.noConflict = function () {
$.fn.popover = old
return this
}
}(jQuery);
/* ========================================================================
* Bootstrap: scrollspy.js v3.3.4
* http://getbootstrap.com/javascript/#scrollspy
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// SCROLLSPY CLASS DEFINITION
// ==========================
function ScrollSpy(element, options) {
this.$body = $(document.body)
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
this.selector = (this.options.target || '') + ' .nav li > a'
this.offsets = []
this.targets = []
this.activeTarget = null
this.scrollHeight = 0
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
this.refresh()
this.process()
}
ScrollSpy.VERSION = '3.3.4'
ScrollSpy.DEFAULTS = {
offset: 10
}
ScrollSpy.prototype.getScrollHeight = function () {
return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
}
ScrollSpy.prototype.refresh = function () {
var that = this
var offsetMethod = 'offset'
var offsetBase = 0
this.offsets = []
this.targets = []
this.scrollHeight = this.getScrollHeight()
if (!$.isWindow(this.$scrollElement[0])) {
offsetMethod = 'position'
offsetBase = this.$scrollElement.scrollTop()
}
this.$body
.find(this.selector)
.map(function () {
var $el = $(this)
var href = $el.data('target') || $el.attr('href')
var $href = /^#./.test(href) && $(href)
return ($href
&& $href.length
&& $href.is(':visible')
&& [[$href[offsetMethod]().top + offsetBase, href]]) || null
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
that.offsets.push(this[0])
that.targets.push(this[1])
})
}
ScrollSpy.prototype.process = function () {
var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
var scrollHeight = this.getScrollHeight()
var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()
var offsets = this.offsets
var targets = this.targets
var activeTarget = this.activeTarget
var i
if (this.scrollHeight != scrollHeight) {
this.refresh()
}
if (scrollTop >= maxScroll) {
return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
}
if (activeTarget && scrollTop < offsets[0]) {
this.activeTarget = null
return this.clear()
}
for (i = offsets.length; i--;) {
activeTarget != targets[i]
&& scrollTop >= offsets[i]
&& (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
&& this.activate(targets[i])
}
}
ScrollSpy.prototype.activate = function (target) {
this.activeTarget = target
this.clear()
var selector = this.selector +
'[data-target="' + target + '"],' +
this.selector + '[href="' + target + '"]'
var active = $(selector)
.parents('li')
.addClass('active')
if (active.parent('.dropdown-menu').length) {
active = active
.closest('li.dropdown')
.addClass('active')
}
active.trigger('activate.bs.scrollspy')
}
ScrollSpy.prototype.clear = function () {
$(this.selector)
.parentsUntil(this.options.target, '.active')
.removeClass('active')
}
// SCROLLSPY PLUGIN DEFINITION
// ===========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.scrollspy')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.scrollspy
$.fn.scrollspy = Plugin
$.fn.scrollspy.Constructor = ScrollSpy
// SCROLLSPY NO CONFLICT
// =====================
$.fn.scrollspy.noConflict = function () {
$.fn.scrollspy = old
return this
}
// SCROLLSPY DATA-API
// ==================
$(window).on('load.bs.scrollspy.data-api', function () {
$('[data-spy="scroll"]').each(function () {
var $spy = $(this)
Plugin.call($spy, $spy.data())
})
})
}(jQuery);
/* ========================================================================
* Bootstrap: tab.js v3.3.4
* http://getbootstrap.com/javascript/#tabs
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// TAB CLASS DEFINITION
// ====================
var Tab = function (element) {
this.element = $(element)
}
Tab.VERSION = '3.3.4'
Tab.TRANSITION_DURATION = 150
Tab.prototype.show = function () {
var $this = this.element
var $ul = $this.closest('ul:not(.dropdown-menu)')
var selector = $this.data('target')
if (!selector) {
selector = $this.attr('href')
selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
if ($this.parent('li').hasClass('active')) return
var $previous = $ul.find('.active:last a')
var hideEvent = $.Event('hide.bs.tab', {
relatedTarget: $this[0]
})
var showEvent = $.Event('show.bs.tab', {
relatedTarget: $previous[0]
})
$previous.trigger(hideEvent)
$this.trigger(showEvent)
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
var $target = $(selector)
this.activate($this.closest('li'), $ul)
this.activate($target, $target.parent(), function () {
$previous.trigger({
type: 'hidden.bs.tab',
relatedTarget: $this[0]
})
$this.trigger({
type: 'shown.bs.tab',
relatedTarget: $previous[0]
})
})
}
Tab.prototype.activate = function (element, container, callback) {
var $active = container.find('> .active')
var transition = callback
&& $.support.transition
&& (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)
function next() {
$active
.removeClass('active')
.find('> .dropdown-menu > .active')
.removeClass('active')
.end()
.find('[data-toggle="tab"]')
.attr('aria-expanded', false)
element
.addClass('active')
.find('[data-toggle="tab"]')
.attr('aria-expanded', true)
if (transition) {
element[0].offsetWidth // reflow for transition
element.addClass('in')
} else {
element.removeClass('fade')
}
if (element.parent('.dropdown-menu').length) {
element
.closest('li.dropdown')
.addClass('active')
.end()
.find('[data-toggle="tab"]')
.attr('aria-expanded', true)
}
callback && callback()
}
$active.length && transition ?
$active
.one('bsTransitionEnd', next)
.emulateTransitionEnd(Tab.TRANSITION_DURATION) :
next()
$active.removeClass('in')
}
// TAB PLUGIN DEFINITION
// =====================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.tab')
if (!data) $this.data('bs.tab', (data = new Tab(this)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.tab
$.fn.tab = Plugin
$.fn.tab.Constructor = Tab
// TAB NO CONFLICT
// ===============
$.fn.tab.noConflict = function () {
$.fn.tab = old
return this
}
// TAB DATA-API
// ============
var clickHandler = function (e) {
e.preventDefault()
Plugin.call($(this), 'show')
}
$(document)
.on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
.on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
}(jQuery);
/* ========================================================================
* Bootstrap: affix.js v3.3.4
* http://getbootstrap.com/javascript/#affix
* ========================================================================
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// AFFIX CLASS DEFINITION
// ======================
var Affix = function (element, options) {
this.options = $.extend({}, Affix.DEFAULTS, options)
this.$target = $(this.options.target)
.on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
this.$element = $(element)
this.affixed = null
this.unpin = null
this.pinnedOffset = null
this.checkPosition()
}
Affix.VERSION = '3.3.4'
Affix.RESET = 'affix affix-top affix-bottom'
Affix.DEFAULTS = {
offset: 0,
target: window
}
Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
var targetHeight = this.$target.height()
if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
if (this.affixed == 'bottom') {
if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
}
var initializing = this.affixed == null
var colliderTop = initializing ? scrollTop : position.top
var colliderHeight = initializing ? targetHeight : height
if (offsetTop != null && scrollTop <= offsetTop) return 'top'
if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
return false
}
Affix.prototype.getPinnedOffset = function () {
if (this.pinnedOffset) return this.pinnedOffset
this.$element.removeClass(Affix.RESET).addClass('affix')
var scrollTop = this.$target.scrollTop()
var position = this.$element.offset()
return (this.pinnedOffset = position.top - scrollTop)
}
Affix.prototype.checkPositionWithEventLoop = function () {
setTimeout($.proxy(this.checkPosition, this), 1)
}
Affix.prototype.checkPosition = function () {
if (!this.$element.is(':visible')) return
var height = this.$element.height()
var offset = this.options.offset
var offsetTop = offset.top
var offsetBottom = offset.bottom
var scrollHeight = $(document.body).height()
if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
if (this.affixed != affix) {
if (this.unpin != null) this.$element.css('top', '')
var affixType = 'affix' + (affix ? '-' + affix : '')
var e = $.Event(affixType + '.bs.affix')
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
this.affixed = affix
this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
this.$element
.removeClass(Affix.RESET)
.addClass(affixType)
.trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
}
if (affix == 'bottom') {
this.$element.offset({
top: scrollHeight - height - offsetBottom
})
}
}
// AFFIX PLUGIN DEFINITION
// =======================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var data = $this.data('bs.affix')
var options = typeof option == 'object' && option
if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.affix
$.fn.affix = Plugin
$.fn.affix.Constructor = Affix
// AFFIX NO CONFLICT
// =================
$.fn.affix.noConflict = function () {
$.fn.affix = old
return this
}
// AFFIX DATA-API
// ==============
$(window).on('load', function () {
$('[data-spy="affix"]').each(function () {
var $spy = $(this)
var data = $spy.data()
data.offset = data.offset || {}
if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
if (data.offsetTop != null) data.offset.top = data.offsetTop
Plugin.call($spy, data)
})
})
}(jQuery);
/*!
* Bootstrap v3.3.4 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.4",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.4",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.4",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.4",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.4",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport),this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.4",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.4",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.4",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){
var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.4",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a(document.body).height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')
\ No newline at end of file
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Memopol</title>
<!-- Bootstrap core CSS -->
<link href="./css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="./css/custom.css" rel="stylesheet">
<style>
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container-fluid">
<div class="row">
<!---------------------------------------------------------
VOLET DE NAVIGATION
---------------------------------------------------------->
<div class="col-sm-3 custom-nav">
<!----------------
INTRO
----------------->
<h1 class="text-center"><span class="glyphicon glyphicon-eye-open"></span><br/>Memopol</h1>
<p class="lead text-center">What is Memopol ?</p>
<p class="text-justify">Memopol is a tool designed by La Quadrature du Net to help European citizens to reach members of European Parliament (MEPs) and track their voting records on issues related to fundamental freedoms online. </p>
<div class="container-fluid">
<div class="row">
<div class="pull-right">
<a class="btn btn-default">More on our blog</a>
</div>
</div>
</div>
<hr/>
<!----------------
SEARCH
----------------->
<form class="form-horizontal">
<div class="input-group">
<label class="sr-only" for="rechercher">Search</label>
<input type="text" class="form-control" placeholder="Search" id="rechercher">
<span class="input-group-btn">
<button class="btn btn-primary" type="button">
<span class="glyphicon glyphicon-search"></span>
</button>
</span>
</div>
</form>
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#moresearch" aria-expanded="false" aria-controls="moresearch">
More search options
</button>
<div class="collapse" id="moresearch">
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#formMEP" aria-expanded="false" aria-controls="formMEP">
Find a MEP
</button>
<div class="collapse" id="formMEP">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-2" for="name">Name</label>
<div class="col-sm-10">
<input type="email" class="form-control" id="name" placeholder="Leave empty for all">
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="country">Country</label>
<div class="col-sm-9">
<select class="form-control" id="country">
<option>All</option>
<option>AT . Austria </option>
<option>BE . Belgium </option>
<option>BG . Bulgaria </option>
<option>HR . Croatia </option>
<option>CY . Cyprus </option>
<option>CZ . Czech Republic </option>
<option>DK . Denmark </option>
<option>EE . Estonia </option>
<option>FI . Finland </option>
<option>FR . France </option>
<option>DE . Germany </option>
<option>GR . Greece </option>
<option>HU . Hungary </option>
<option>IE . Ireland </option>
<option>IT . Italy </option>
<option>LV . Latvia </option>
<option>LT . Lithuania </option>
<option>LU . Luxembourg </option>
<option>MT . Malta </option>
<option>NL . Netherlands </option>
<option>PL . Poland </option>
<option>PT . Portugal </option>
<option>RO . Romania </option>
<option>SK . Slovakia </option>
<option>SI . Slovenia </option>
<option>ES . Spain </option>
<option>SE . Sweden </option>
<option>GB . United Kingdom </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="party">Party</label>
<div class="col-sm-9">
<select class="form-control" id="party">
<option>All</option>
<option>GUE/NGL . Confederal Group of the European United Left - Nordic Green Left </option>
<option>ECR . European Conservatives and Reformists Group </option>
<option>EFDD . Europe of Freedom and Direct Democracy Group </option>
<option>ALDE . Group of the Alliance of Liberals and Democrats for Europe </option>
<option>EPP . Group of the European People's Party (Christian Democrats) </option>
<option>Greens/EFA . Group of the Greens/European Free Alliance </option>
<option>SD . Group of the Progressive Alliance of Socialists and Democrats in the European Parliament </option>
<option>NI . Non-attached Members </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="delegation">Delegation</label>
<div class="col-sm-9">
<select class="form-control" id="delegation">
<option>All</option>
<option>Delegation for relations with Afghanistan </option>
<option>Delegation for relations with Australia and New Zealand </option>
<option>Delegation for relations with Belarus </option>
<option>Delegation for relations with Bosnia and Herzegovina, and Kosovo </option>
<option>Delegation for relations with Canada </option>
<option>Delegation for relations with India </option>
<option>Delegation for relations with Iran </option>
<option>Delegation for relations with Iraq </option>
<option>Delegation for relations with Israel </option>
<option>Delegation for relations with Japan </option>
<option>Delegation for relations with Mercosur </option>
<option>Delegation for relations with South Africa </option>
<option>Delegation for relations with Switzerland and Norway and to the EU-Iceland Joint Parliamentary Committee and the European Economic Area (EEA) Joint Parliamentary Committee </option>
<option>Delegation for relations with the Arab Peninsula </option>
<option>Delegation for relations with the countries of Central America </option>
<option>Delegation for relations with the countries of South Asia </option>
<option>Delegation for relations with the countries of Southeast Asia and the Association of Southeast Asian Nations (ASEAN) </option>
<option>Delegation for relations with the countries of the Andean Community </option>
<option>Delegation for relations with the Federative Republic of Brazil </option>
<option>Delegation for relations with the Korean Peninsula </option>
<option>Delegation for relations with the Maghreb countries and the Arab Maghreb Union </option>
<option>Delegation for relations with the Mashreq countries </option>
<option>Delegation for relations with the NATO Parliamentary Assembly </option>
<option>Delegation for relations with the Palestinian Legislative Council </option>
<option>Delegation for relations with the Pan-African Parliament </option>
<option>Delegation for relations with the People's Republic of China </option>
<option>Delegation for relations with the United States </option>
<option>Delegation to the ACP-EU Joint Parliamentary Assembly </option>
<option>Delegation to the Cariforum — EU Parliamentary Committee </option>
<option>Delegation to the EU-Albania Stabilisation and Association Parliamentary Committee </option>
<option>Delegation to the EU-Armenia and EU-Azerbaijan Parliamentary Cooperation Committees and the EU-Georgia Parliamentary Association Committee </option>
<option>Delegation to the EU-Chile Joint Parliamentary Committee </option>
<option>Delegation to the EU-Former Yugoslav Republic of Macedonia Joint Parliamentary Committee </option>
<option>Delegation to the EU-Kazakhstan, EU-Kyrgyzstan, EU-Uzbekistan and EU-Tajikistan Parliamentary Cooperation Committees and for relations with Turkmenistan and Mongolia </option>
<option>Delegation to the EU-Mexico Joint Parliamentary Committee </option>
<option>Delegation to the EU-Moldova Parliamentary Association Committee </option>
<option>Delegation to the EU-Montenegro Stabilisation and Association Parliamentary Committee </option>
<option>Delegation to the Euro-Latin American Parliamentary Assembly </option>
<option>Delegation to the Euronest Parliamentary Assembly </option>
<option>Delegation to the EU-Russia Parliamentary Cooperation Committee </option>
<option>Delegation to the EU-Serbia Stabilisation and Association Parliamentary Committee </option>
<option>Delegation to the EU-Turkey Joint Parliamentary Committee </option>
<option>Delegation to the EU-Ukraine Parliamentary Association Committee </option>
<option>Delegation to the Parliamentary Assembly of the Union for the Mediterranean </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3" for="committee">Committee</label>
<div class="col-sm-9">
<select class="form-control" id="committee">
<option>All</option>
<option>AGRI . Committee on Agriculture and Rural Development </option>
<option>CONT . Committee on Budgetary Control </option>
<option>BUDG . Committee on Budgets </option>
<option>LIBE . Committee on Civil Liberties, Justice and Home Affairs </option>
<option>AFCO . Committee on Constitutional Affairs </option>
<option>CULT . Committee on Culture and Education </option>
<option>DEVE . Committee on Development </option>
<option>ECON . Committee on Economic and Monetary Affairs </option>
<option>EMPL . Committee on Employment and Social Affairs </option>
<option>PECH . Committee on Fisheries </option>
<option>AFET . Committee on Foreign Affairs </option>
<option>ITRE . Committee on Industry, Research and Energy </option>
<option>INTA . Committee on International Trade </option>
<option>JURI . Committee on Legal Affairs </option>
<option>PETI . Committee on Petitions </option>
<option>REGI . Committee on Regional Development </option>
<option>ENVI . Committee on the Environment, Public Health and Food Safety </option>
<option>IMCO . Committee on the Internal Market and Consumer Protection </option>
<option>TRAN . Committee on Transport and Tourism </option>
<option>FEMM . Committee on Women's Rights and Gender Equality </option>
<option>DROI . Subcommittee on Human Rights </option>
</select>
</div>
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
</div>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#formDossiers" aria-expanded="false" aria-controls="formDossiers">
Explore the dossiers
</button>
<div class="collapse" id="formDossiers">
<form class="form-horizontal">
<div class="form-group">
<div class="col-sm-12">
<select class="form-control" id="dossiers">
<option>All</option>
<option>Personal data protection: processing of data for the purposes of prevention, investigation, detection or prosecution of criminal offences or execution of criminal penalties, and free movement of data </option>
<option>ACTA </option>
<option>Personal data protection: processing and free movement of data </option>
</select>
</div>
</div>
<button type="submit" class="btn btn-default">Search</button>
</form>
</div>
</div>
<hr>
<!----------------
NAV
----------------->
<a href="listMEP.html" class="btn btn-primary btn-block">Check out all MEPs</a>
<a href="listDossiers.html" href="dossiers.html" class="btn btn-primary btn-block">Check out all Dossiers</a>
<br>
<!----------------
ADD POSITION
----------------->
<button class="btn btn-default" type="button" data-toggle="collapse" data-target="#addpposition" aria-expanded="false" aria-controls="addpposition">
Add a MEP's public position
</button>
<div class="collapse" id="addpposition">
<form class="form-horizontal">
<div class="form-group">
<label class="col-sm-3 control-label" for="MEPname">MEP</label>
<div class="col-sm-8">
<select class="form-control" id="MEPname">
<option>Jan Philipp ALBRECHT</option>
<option>Martina ANDERSON</option>
<option>Sergio Gaetano COFFERATI</option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="date">Date</label>
<div class="col-sm-8">
<input type="date" class="form-control" id="date" placeholder="Today">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="dossier">Dossier</label>
<div class="col-sm-8">
<select class="form-control" id="dossiers">
<option>Any</option>
<option>Personal data protection: processing of data for the purposes of prevention, investigation, detection or prosecution of criminal offences or execution of criminal penalties, and free movement of data </option>
<option>ACTA </option>
<option>Personal data protection: processing and free movement of data </option>
</select>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="text">Transcript</label>
<div class="col-sm-8">
<textarea class="form-control" id="text" rows="5"></textarea>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="source">Source link</label>
<div class="col-sm-8">
<input type="url" class="form-control" id="source" placeholder="https://">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label" for="tags">Tags</label>
<div class="col-sm-8">
<input type="url" class="form-control" id="source" placeholder="ACTA, Net neutrality, ...">
</div>
</div>
<p class="text-center"><button type="submit" class="btn btn-primary">Add that public position &raquo;</button></p>
</form>
</div>
</div>
<!---------------------------------------------------------
FIN DU VOLET DE NAVIGATION
---------------------------------------------------------->
<div class="col-sm-9 col-sm-offset-3 ">
<!---------------------------------------------------------
TITRE DE LA PAGE
---------------------------------------------------------->
<h1 class="text-center">Dossiers</h1>
<p class="lead text-center">{number} dossiers on {bidule recherché}.</p>
<!---------------------------------------------------------
FIN DU TITRE DE LA PAGE
---------------------------------------------------------->
<br/>
<p>
<div class="dropdown" style="display:inline-block;">
Order by
<button class="btn btn-default dropdown-toggle" type="button" id="orderby" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Name
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="orderby">
<li class="disabled"><a href="#">Name</a></li>
<li><a href="#">Recent</a></li>
</ul>
</div>
</p>
<br/>
<div class="row">
<div class="col-xs-12 col-md-4">
<!---------------------------------------------------------
CARD DOSSIER
---------------------------------------------------------->
<div class="thumbnail">
<a href="#" class="custom-thumbnail custom-invisible">
<div class="row">
<div class="col-xs-12">
<h4 class="text-center">ACTA</h4>
<p class="text-center">Last updated yesterday</p>
<p class="text-center lead">
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Upcoming envents"><span class="glyphicon glyphicon-calendar"></span> <span class="badge">5</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Votes"><span class="glyphicon glyphicon-check"></span> <span class="badge">2</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Public positions"><span class="glyphicon glyphicon-comment"></span> <span class="badge">42</span></span>
</p>
<div class="alert alert-info text-center" role="alert"><span class="glyphicon glyphicon-alert"></span> A campaign is currently ongoing with La Quadrature. <a href="#" class="alert-link">Check it out!</a> </div>
</div>
</div>
</a>
</div>
<!---------------------------------------------------------
FIN CARD DOSSIER
---------------------------------------------------------->
<!---------------------------------------------------------
CARD DOSSIER
---------------------------------------------------------->
<div class="thumbnail">
<a href="#" class="custom-thumbnail custom-invisible">
<div class="row">
<div class="col-xs-12">
<h4 class="text-center">Personal data protection</h4>
<p class="text-center">Last updated on DD MMMM YYYY</p>
<p class="text-center lead">
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Upcoming envents"><span class="glyphicon glyphicon-calendar"></span> <span class="badge">2</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Votes"><span class="glyphicon glyphicon-check"></span> <span class="badge">5</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Public positions"><span class="glyphicon glyphicon-comment"></span> <span class="badge">3</span></span>
</p>
</div>
</div>
</a>
</div>
<!---------------------------------------------------------
FIN CARD DOSSIER
---------------------------------------------------------->
</div>
<div class="col-xs-12 col-md-4">
<!---------------------------------------------------------
CARD DOSSIER
---------------------------------------------------------->
<div class="thumbnail">
<a href="#" class="custom-thumbnail custom-invisible">
<div class="row">
<div class="col-xs-12">
<h4 class="text-center">Personal data protection</h4>
<p class="text-center">Last updated on DD MMMM YYYY</p>
<p class="text-center lead">
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Upcoming envents"><span class="glyphicon glyphicon-calendar"></span> <span class="badge">2</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Votes"><span class="glyphicon glyphicon-check"></span> <span class="badge">5</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Public positions"><span class="glyphicon glyphicon-comment"></span> <span class="badge">3</span></span>
</p>
</div>
</div>
</a>
</div>
<!---------------------------------------------------------
FIN CARD DOSSIER
---------------------------------------------------------->
<!---------------------------------------------------------
CARD DOSSIER
---------------------------------------------------------->
<div class="thumbnail">
<a href="#" class="custom-thumbnail custom-invisible">
<div class="row">
<div class="col-xs-12">
<h4 class="text-center">Other dossier with a very very long name</h4>
<p class="text-center">Last updated on DD MMMM YYYY</p>
<p class="text-center lead">
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Upcoming envents"><span class="glyphicon glyphicon-calendar"></span> <span class="badge">plouf</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Votes"><span class="glyphicon glyphicon-check"></span> <span class="badge">3,14</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Public positions"><span class="glyphicon glyphicon-comment"></span> <span class="badge">1337</span></span>
</p>
</div>
</div>
</a>
</div>
<!---------------------------------------------------------
FIN CARD DOSSIER
---------------------------------------------------------->
</div>
<div class="col-xs-12 col-md-4">
<!---------------------------------------------------------
CARD DOSSIER
---------------------------------------------------------->
<div class="thumbnail">
<a href="#" class="custom-thumbnail custom-invisible">
<div class="row">
<div class="col-xs-12">
<h4 class="text-center">Other dossier with a very very long name</h4>
<p class="text-center">Last updated on DD MMMM YYYY</p>
<p class="text-center lead">
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Upcoming envents"><span class="glyphicon glyphicon-calendar"></span> <span class="badge">plouf</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Votes"><span class="glyphicon glyphicon-check"></span> <span class="badge">3,14</span></span>
<span class="label label-default" data-toggle="tooltip" data-placement="bottom" title="Public positions"><span class="glyphicon glyphicon-comment"></span> <span class="badge">1337</span></span>
</p>
</div>
</div>
</a>
</div>
<!---------------------------------------------------------
FIN CARD DOSSIER
---------------------------------------------------------->
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/docs.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="./js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Memopol</title>
<!-- Bootstrap core CSS -->
<link href="./css/bootstrap.min.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="./css/custom.css" rel="stylesheet">
<style>
</style>
<!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div class="container-fluid">
<div class="row">
<!---------------------------------------------------------
VOLET DE NAVIGATION
---------------------------------------------------------->
<div class="col-sm-3 custom-nav">
</div>
<!---------------------------------------------------------
/ FIN DU VOLET DE NAVIGATION
---------------------------------------------------------->
<div class="col-sm-9 col-sm-offset-3 custom-listMEP">
<!---------------------------------------------------------
TITRE DE LA PAGE
---------------------------------------------------------->
<h1 class="text-center">Members of the European Parliement</h1>
<p class="lead text-center">{number} MEP from {country}, members of {party}, working in {delegation} and on {committee}.</p>
<div class="col-sm-7">
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-default active">
<input type="radio" name="view" id="cards" autocomplete="off" checked><span class="glyphicon glyphicon-th"></span>
</label>
<label class="btn btn-default">
<input type="radio" name="view" id="lists" autocomplete="off"><span class="glyphicon glyphicon-list"></span>
</label>
</div>
<div class="dropdown" style="display:inline-block;">
&nbsp;&nbsp;&nbsp;Order by
<button class="btn btn-default dropdown-toggle" type="button" id="orderby" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
Score
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="orderby">
<li class="disabled"><a href="#">Score</a></li>
<li><a href="#">Country</a></li>
<li><a href="#">Party</a></li>
<li><a href="#">Group</a></li>
</ul>
</div>
</div>
<div class="col-sm-5 text-right">
<button class="btn btn-default"><span class="glyphicon glyphicon-save"></span>Download CSV</button>
</div>
<br/><br/><br/>
<!---------------------------------------------------------
FIN DU TITRE DE LA PAGE
---------------------------------------------------------->
<!--Affichage en cards-->
<div class="row">
<!---------------------------------------------------------
CARD MEP
---------------------------------------------------------->
<div class="col-xs-12 col-md-4">
<div class="thumbnail">
<a href="#" class="custom-thumbnail">
<div class="row">
<div class="col-xs-5">
<img class="img-responsive" src="img/jp-albrecht.jpg">
<div class="custom-thumbnail-details">
<p>
<span class="glyphicon glyphicon-flag"></span> Germany<br/>
<span class="glyphicon glyphicon-paperclip"></span> Greens/EFA<br/>
<span class="glyphicon glyphicon-briefcase "></span> Parti national
</p>
</div>
</div>
<div class="col-xs-7">
<h4 class="text-center">Jan Philipp ALBRECHT</h4>
<p class="text-center"><span class="label label-primary"><span class="glyphicon glyphicon-flag"></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-paperclip"></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-briefcase "></span></span>
</p>
<p class="text-center">
<span class="glyphicon glyphicon-education" data-toggle="tooltip" data-placement="bottom" title="Golden medal on ACTA" style="color:gold;"></span>
<span class="glyphicon glyphicon-education" data-toggle="tooltip" data-placement="bottom" title="Silver medal on Net Neutrality" style="color:silver;"></span>
<span class="glyphicon glyphicon-glyphicon glyphicon-thumbs-down" data-toggle="tooltip" data-placement="bottom" title="Booh on whatever other theme we are monitoring" style="color:maroon;"></span>
</p>
<p class="text-right"><span class="badge">130</span></p>
</div>
</div>
</a>
</div>
</div>
<!---------------------------------------------------------
FIN CARD MEP
---------------------------------------------------------->
<!---------------------------------------------------------
CARD MEP
---------------------------------------------------------->
<div class="col-xs-12 col-md-4">
<div class="thumbnail">
<a href="#" class="custom-thumbnail">
<div class="row">
<div class="col-xs-5">
<img class="img-responsive" src="img/m-anderson.jpg">
<div class="custom-thumbnail-details">
<p>
<span class="glyphicon glyphicon-flag"></span> Pays<br/>
<span class="glyphicon glyphicon-paperclip"></span> GUE/NGL<br/>
<span class="glyphicon glyphicon-briefcase "></span> Parti national
</p>
</div>
</div>
<div class="col-xs-7">
<h4 class="text-center">Martina ANDERSON</h4>
<p class="text-center"><span class="label label-primary"><span class="glyphicon glyphicon-flag"></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-paperclip"></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-briefcase "></span></span>
</p>
<p class="text-center small">
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
</p>
<p class="text-right"><span class="badge">120</span></p>
</div>
</div>
</a>
</div>
</div>
<!---------------------------------------------------------
FIN CARD MEP
---------------------------------------------------------->
<!---------------------------------------------------------
CARD MEP
---------------------------------------------------------->
<div class="col-xs-12 col-md-4">
<div class="thumbnail">
<a href="#" class="custom-thumbnail">
<div class="row">
<div class="col-xs-5">
<img class="img-responsive" src="img/sg-cofferati.jpg">
<div class="custom-thumbnail-details">
<p>
<span class="glyphicon glyphicon-flag"></span> Pays<br/>
<span class="glyphicon glyphicon-paperclip"></span> SD<br/>
<span class="glyphicon glyphicon-briefcase "></span> Parti national
</p>
</div>
</div>
<div class="col-xs-7">
<h4 class="text-center">Sergio Gaetano COFFERATI</h4>
<p class="text-center"><span class="label label-primary"><span class="glyphicon glyphicon-flag"></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-paperclip"></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-briefcase "></span></span>
</p>
<p class="text-center small">
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
<span class="label label-primary"><span class="glyphicon glyphicon-pushpin "></span></span>
</p>
<p class="text-right"><span class="badge">120</span></p>
</div>
</div>
</a>
</div>
</div>
<!---------------------------------------------------------
FIN CARD MEP
---------------------------------------------------------->
</div>
<!--En liste-->
<br/>
<div class="row">
<table class="table table-striped table-hover text-center">
<thead>
<tr>
<th>MEP</th>
<th class="text-center">Country</th>
<th class="text-center">Group</th>
<th class="text-center">Party</th>
<th class="text-center active">Score <a data-toggle="tooltip" data-placement="top" title="Le score est une somme de points attribués suivant si le MEP vote dans notre sens (positif) ou non (négatif) multiplié par le poids (importance) de ce vote."><span class="glyphicon glyphicon-info-sign"></span></a></th>
<th class="text-center">Evolution</th>
</tr>
</thead>
<tbody>
<tr>
<th>Jan Philipp ALBRECHT</th>
<td>groupe machin</td>
<td><span class="glyphicon glyphicon-flag"></span> Germany</td>
<td>Greens/EFA</td>
<td class="active"><span class="badge">130</span></td>
<td><span class="glyphicon glyphicon-upload text-success"></span></td>
</tr>
<tr>
<th>Martina ANDERSON</th>
<td>groupe machin</td>
<td><span class="glyphicon glyphicon-flag"></span> United Kingdom</td>
<td>GUE/NGL</td>
<td class="active"><span class="badge">120</span></td>
<td><span class="glyphicon glyphicon-download text-danger"></span></td>
</tr>
<tr>
<th>Jan Philipp ALBRECHT</th>
<td>groupe machin</td>
<td><span class="glyphicon glyphicon-flag"></span> Germany</td>
<td>Greens/EFA</td>
<td class="active"><span class="badge">120</span></td>
<td><span class="glyphicon glyphicon-upload text-success"></span></td>
</tr>
</tbody>
</table>
</div>
<nav class="text-center">
<ul class="pagination">
<li class="disabled"><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span></a></li>
<li class="active"><a href="#">1 <span class="sr-only">(current)</span></a></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="./js/bootstrap.min.js"></script>
<script src="./js/docs.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="./js/ie10-viewport-bug-workaround.js"></script>
<script>
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
</script>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1417.324px" height="1417.324px" viewBox="0 0 1417.324 1417.324" enable-background="new 0 0 1417.324 1417.324" xml:space="preserve">
<g id="Calque_2">
<rect fill="#333333" width="1417.324" height="1417.324"/>
<path fill="#FFFFFF" d="M1262.896,502.08l-60.006,28.391c26.238,63.137,40.781,132.355,40.781,204.983 c0,295.281-239.352,534.623-534.639,534.623c-295.282,0-534.649-239.342-534.649-534.623c0-72.354,14.44-141.307,40.491-204.242 l-59.944-28.545c-30.117,71.594-46.782,150.236-46.782,232.787c0,331.859,269.016,600.859,600.875,600.859 c331.866,0,600.876-269,600.876-600.859C1309.908,652.686,1293.166,573.826,1262.896,502.08z"/>
<path fill="#FFFFFF" d="M1057.873,599.004c16.547,42.299,25.744,88.283,25.744,136.451c0,206.873-167.703,374.566-374.584,374.566 S334.44,942.328,334.44,735.455c0-47.715,9.019-93.296,25.275-135.267l-64.923-30.919 c-20.638,51.378-32.095,107.431-32.095,166.193c0,246.504,199.832,446.318,446.335,446.318 c246.502,0,446.334-199.814,446.334-446.318c0-59.154-11.611-115.574-32.521-167.232L1057.873,599.004z"/>
<path fill="#FFFFFF" d="M917.15,665.656h-2.361c7.435,21.908,11.518,45.363,11.518,69.791 c0,120.008-97.273,217.271-217.281,217.271s-217.29-97.264-217.29-217.271c0-24.428,4.092-47.883,11.525-69.791h-6.069 l-62.519-29.775c-11.278,31.076-17.45,64.594-17.45,99.574c0,161.148,130.646,291.777,291.802,291.777 c161.155,0,291.794-130.629,291.794-291.777c0-35.481-6.351-69.475-17.943-100.934L917.15,665.656z"/>
<path fill="#FFFFFF" d="M709.169,76.328c-244.286,0-414.769,231.026-414.769,231.026S447.16,552.476,693.774,552.476 c285.896,0,429.899-245.122,429.899-245.122S953.447,76.328,709.169,76.328z M693.774,473.915 c-139.588,0-246.528-101.583-298.357-162.878C452.224,252.5,568.098,154.89,709.169,154.89 c141.625,0,257.738,98.394,314.248,156.897C972.525,372.516,862.312,473.915,693.774,473.915z"/>
<path fill="#FFFFFF" d="M709.033,183.834c-72.118,0-130.57,58.462-130.57,130.57c0,72.113,58.453,130.57,130.57,130.57 c72.108,0,130.562-58.457,130.562-130.57C839.594,242.296,781.141,183.834,709.033,183.834z M709.033,371.592 c-31.592,0-57.19-25.604-57.19-57.184c0-31.583,25.608-57.186,57.19-57.186c31.574,0,57.183,25.603,57.183,57.186 C766.215,345.979,740.607,371.592,709.033,371.592z"/>
</g>
<g id="Calque_2_-_copie" display="none">
<path display="inline" fill="#333333" d="M954.234,93.418l-60.006,28.391c26.238,63.137,40.781,132.355,40.781,204.984 c0,295.28-239.351,534.623-534.639,534.623c-295.281,0-534.648-239.342-534.648-534.623c0-72.355,14.44-141.307,40.491-204.242 l-59.944-28.545c-30.117,71.594-46.782,150.236-46.782,232.787c0,331.859,269.016,600.859,600.875,600.859 c331.866,0,600.876-269,600.876-600.859C1001.246,244.024,984.503,165.164,954.234,93.418z"/>
<path display="inline" fill="#333333" d="M749.21,190.342c16.547,42.299,25.744,88.283,25.744,136.451 c0,206.873-167.703,374.566-374.583,374.566c-206.881,0-374.593-167.693-374.593-374.566c0-47.716,9.019-93.297,25.275-135.267 l-64.923-30.919c-20.638,51.378-32.095,107.431-32.095,166.194c0,246.503,199.832,446.318,446.335,446.318 s446.334-199.815,446.334-446.318c0-59.155-11.611-115.575-32.521-167.233L749.21,190.342z"/>
<path display="inline" fill="#333333" d="M608.488,256.994h-2.361c7.434,21.908,11.517,45.363,11.517,69.79 c0,120.009-97.273,217.272-217.281,217.272c-120.008,0-217.29-97.265-217.29-217.272c0-24.427,4.092-47.882,11.525-69.79h-6.069 l-62.519-29.775c-11.278,31.076-17.45,64.594-17.45,99.574c0,161.147,130.646,291.777,291.802,291.777 c161.155,0,291.794-130.63,291.794-291.777c0-35.482-6.351-69.475-17.944-100.934L608.488,256.994z"/>
<path display="inline" fill="#333333" d="M400.507-332.334c-244.286,0-414.768,231.026-414.768,231.026 s152.759,245.122,399.373,245.122c285.895,0,429.899-245.122,429.899-245.122S644.785-332.334,400.507-332.334z M385.112,65.253 c-139.588,0-246.528-101.583-298.357-162.878c56.807-58.537,172.681-156.147,313.752-156.147 c141.626,0,257.738,98.394,314.249,156.897C663.863-36.146,553.65,65.253,385.112,65.253z"/>
<path display="inline" fill="#333333" d="M400.371-224.828c-72.118,0-130.57,58.462-130.57,130.57 c0,72.113,58.453,130.57,130.57,130.57c72.108,0,130.561-58.457,130.561-130.57C530.932-166.366,472.479-224.828,400.371-224.828z M400.371-37.07c-31.592,0-57.191-25.604-57.191-57.184c0-31.583,25.608-57.186,57.191-57.186 c31.574,0,57.182,25.603,57.182,57.186C457.553-62.683,431.945-37.07,400.371-37.07z"/>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="181.417px" height="181.417px" viewBox="1355.726 -34.413 181.417 181.417"
enable-background="new 1355.726 -34.413 181.417 181.417" xml:space="preserve">
<g id="Calque_2">
<rect x="1355.819" y="-34.319" fill="#333333" width="181.323" height="181.323"/>
<path fill="#FFFFFF" d="M1517.386,29.913l-7.677,3.633c3.357,8.077,5.218,16.933,5.218,26.224
c0,37.776-30.621,68.396-68.398,68.396c-37.776,0-68.399-30.62-68.399-68.396c0-9.257,1.848-18.078,5.18-26.129l-7.668-3.651
c-3.854,9.159-5.986,19.22-5.986,29.781c0,42.457,34.416,76.871,76.872,76.871c42.457,0,76.872-34.414,76.872-76.871
C1523.4,49.181,1521.259,39.093,1517.386,29.913z"/>
<path fill="#FFFFFF" d="M1491.156,42.313c2.117,5.411,3.294,11.294,3.294,17.457c0,26.467-21.454,47.919-47.922,47.919
c-26.466,0-47.923-21.453-47.923-47.919c0-6.104,1.154-11.936,3.232-17.305l-8.305-3.956c-2.641,6.573-4.106,13.744-4.106,21.262
c0,31.537,25.565,57.099,57.102,57.099c31.535,0,57.102-25.563,57.102-57.099c0-7.568-1.485-14.786-4.161-21.395L1491.156,42.313z"
/>
<path fill="#FFFFFF" d="M1473.153,50.84h-0.302c0.951,2.804,1.474,5.804,1.474,8.929c0,15.354-12.445,27.796-27.799,27.796
c-15.353,0-27.798-12.443-27.798-27.796c0-3.125,0.523-6.125,1.475-8.929h-0.776l-7.999-3.809
c-1.442,3.976-2.232,8.264-2.232,12.739c0,20.617,16.715,37.328,37.331,37.328c20.618,0,37.33-16.711,37.33-37.328
c0-4.54-0.812-8.887-2.295-12.913L1473.153,50.84z"/>
<path fill="#FFFFFF" d="M1446.544-24.554c-31.251,0-53.062,29.555-53.062,29.555s19.543,31.36,51.093,31.36
c36.576,0,54.999-31.36,54.999-31.36S1477.797-24.554,1446.544-24.554z M1444.575,26.311c-17.856,0-31.538-12.996-38.169-20.837
c7.267-7.489,22.092-19.977,40.138-19.977c18.12,0,32.975,12.588,40.204,20.073C1480.238,13.338,1466.139,26.311,1444.575,26.311z"
/>
<path fill="#FFFFFF" d="M1446.528-10.801c-9.227,0-16.704,7.479-16.704,16.705c0,9.225,7.478,16.704,16.704,16.704
c9.226,0,16.702-7.479,16.702-16.704C1463.23-3.322,1455.754-10.801,1446.528-10.801z M1446.528,13.22
c-4.042,0-7.317-3.276-7.317-7.316c0-4.041,3.277-7.316,7.317-7.316c4.039,0,7.315,3.275,7.315,7.316
C1453.844,9.943,1450.567,13.22,1446.528,13.22z"/>
</g>
<g id="Calque_2_-_copie">
</g>
</svg>
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1417.323px" height="1417.323px" viewBox="-308.662 -408.662 1417.323 1417.323"
enable-background="new -308.662 -408.662 1417.323 1417.323" xml:space="preserve">
<g id="Calque_2" display="none">
<rect x="-308.662" y="-408.662" display="inline" fill="#333333" width="1417.323" height="1417.323"/>
<path display="inline" fill="#FFFFFF" d="M954.233,93.418l-60.004,28.391c26.238,63.137,40.781,132.355,40.781,204.984
c0,295.28-239.352,534.623-534.64,534.623c-295.281,0-534.648-239.343-534.648-534.623c0-72.355,14.44-141.307,40.491-204.242
l-59.944-28.545c-30.117,71.594-46.782,150.236-46.782,232.787c0,331.859,269.016,600.858,600.875,600.858
c331.867,0,600.875-268.999,600.875-600.858C1001.246,244.024,984.504,165.164,954.233,93.418z"/>
<path display="inline" fill="#FFFFFF" d="M749.211,190.342c16.546,42.299,25.743,88.283,25.743,136.451
c0,206.873-167.702,374.566-374.583,374.566c-206.881,0-374.593-167.693-374.593-374.566c0-47.716,9.019-93.297,25.275-135.267
l-64.923-30.919c-20.638,51.378-32.095,107.431-32.095,166.194c0,246.503,199.832,446.317,446.335,446.317
c246.503,0,446.334-199.814,446.334-446.317c0-59.155-11.61-115.575-32.521-167.233L749.211,190.342z"/>
<path display="inline" fill="#FFFFFF" d="M608.488,256.994h-2.361c7.434,21.908,11.517,45.363,11.517,69.79
c0,120.009-97.273,217.273-217.281,217.273s-217.29-97.265-217.29-217.273c0-24.427,4.092-47.882,11.525-69.79h-6.069
l-62.519-29.775c-11.278,31.076-17.45,64.594-17.45,99.574c0,161.147,130.646,291.777,291.802,291.777
c161.155,0,291.794-130.63,291.794-291.777c0-35.482-6.351-69.475-17.944-100.934L608.488,256.994z"/>
<path display="inline" fill="#FFFFFF" d="M400.507-332.334c-244.286,0-414.768,231.026-414.768,231.026
s152.759,245.122,399.373,245.122c285.895,0,429.899-245.122,429.899-245.122S644.785-332.334,400.507-332.334z M385.112,65.253
c-139.588,0-246.528-101.583-298.357-162.878c56.807-58.537,172.681-156.147,313.752-156.147
c141.626,0,257.738,98.394,314.248,156.897C663.863-36.146,553.65,65.253,385.112,65.253z"/>
<path display="inline" fill="#FFFFFF" d="M400.371-224.828c-72.118,0-130.57,58.462-130.57,130.57
c0,72.113,58.453,130.57,130.57,130.57c72.108,0,130.561-58.457,130.561-130.57C530.932-166.366,472.479-224.828,400.371-224.828z
M400.371-37.07c-31.592,0-57.191-25.604-57.191-57.184c0-31.583,25.608-57.186,57.191-57.186
c31.574,0,57.182,25.603,57.182,57.186C457.553-62.683,431.945-37.07,400.371-37.07z"/>
</g>
<g id="Calque_2_-_copie">
<path fill="#333333" d="M954.233,93.418l-60.004,28.391c26.238,63.137,40.781,132.355,40.781,204.984
c0,295.28-239.352,534.623-534.64,534.623c-295.281,0-534.648-239.343-534.648-534.623c0-72.355,14.44-141.307,40.491-204.242
l-59.944-28.545c-30.117,71.594-46.782,150.236-46.782,232.787c0,331.859,269.016,600.858,600.875,600.858
c331.867,0,600.875-268.999,600.875-600.858C1001.246,244.024,984.504,165.164,954.233,93.418z"/>
<path fill="#333333" d="M749.211,190.342c16.546,42.299,25.743,88.283,25.743,136.451c0,206.873-167.702,374.566-374.583,374.566
c-206.881,0-374.593-167.693-374.593-374.566c0-47.716,9.019-93.297,25.275-135.267l-64.923-30.919
c-20.638,51.378-32.095,107.431-32.095,166.194c0,246.503,199.832,446.317,446.335,446.317
c246.503,0,446.334-199.814,446.334-446.317c0-59.155-11.61-115.575-32.521-167.233L749.211,190.342z"/>
<path fill="#333333" d="M608.488,256.994h-2.361c7.434,21.908,11.517,45.363,11.517,69.79
c0,120.009-97.273,217.273-217.281,217.273s-217.29-97.265-217.29-217.273c0-24.427,4.092-47.882,11.525-69.79h-6.069
l-62.519-29.775c-11.278,31.076-17.45,64.594-17.45,99.574c0,161.147,130.646,291.777,291.802,291.777
c161.155,0,291.794-130.63,291.794-291.777c0-35.482-6.351-69.475-17.944-100.934L608.488,256.994z"/>
<path fill="#333333" d="M400.507-332.334c-244.286,0-414.768,231.026-414.768,231.026s152.759,245.122,399.373,245.122
c285.895,0,429.899-245.122,429.899-245.122S644.785-332.334,400.507-332.334z M385.112,65.253
c-139.588,0-246.528-101.583-298.357-162.878c56.807-58.537,172.681-156.147,313.752-156.147
c141.626,0,257.738,98.394,314.248,156.897C663.863-36.146,553.65,65.253,385.112,65.253z"/>
<path fill="#333333" d="M400.371-224.828c-72.118,0-130.57,58.462-130.57,130.57c0,72.113,58.453,130.57,130.57,130.57
c72.108,0,130.561-58.457,130.561-130.57C530.932-166.366,472.479-224.828,400.371-224.828z M400.371-37.07
c-31.592,0-57.191-25.604-57.191-57.184c0-31.583,25.608-57.186,57.191-57.186c31.574,0,57.182,25.603,57.182,57.186
C457.553-62.683,431.945-37.07,400.371-37.07z"/>
</g>
</svg>
from django import forms
from datetimewidget.widgets import DateWidget
from .models import Position
class PositionForm(forms.ModelForm):
class Meta:
model = Position
fields = ['tags', 'datetime', 'text', 'link', 'representative']
widgets = {
# Use localization and bootstrap 3
'datetime': DateWidget(
attrs={
'id': 'yourdatetimeid'
},
usel10n=True,
bootstrap_version=3,
),
'representative': forms.HiddenInput
}