www.dematic.com
Open in
urlscan Pro
2.16.186.211
Public Scan
Submitted URL: http://dematic.com/
Effective URL: https://www.dematic.com/de-de/
Submission: On September 23 via manual from AU — Scanned from DE
Effective URL: https://www.dematic.com/de-de/
Submission: On September 23 via manual from AU — Scanned from DE
Form analysis
1 forms found in the DOMPOST /de-de/
<form method="post" action="/de-de/" id="form1">
<div class="aspNetHidden">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="">
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="FuYQQQR+sbUMID7mcQ2cAlBih7xf8S1g6NJlIpSRnoJCSs+OcCX3ls3sLn3jTH2ZYPRCvjmziCj38q5nu4Tuk/zzjxe4LwmWxuR1vNrzZOjcjvjApSPdUT8zUlu1m0/Lgd6nUBkciRGlVBV6tZ5DlKLzCPI=">
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<script src="/WebResource.axd?d=pynGkmcFUV13He1Qd6_TZPZ5z0hUByY1h8iX7RYZZlh4Tk1Cto3KE5oULSFadgdWA0QBIA2&t=637638775858003502" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=NJmAwtEo3Ipnlaxl6CMhvhgc0-tjro6gKxLH8FCbU4rLDuaowI80sTkKiqjW6Yh7PwAa99rpiTtOkWziFE8sLLbtXz_i0CJ6fYIUR2xXBrl5wd0VtO6irFM4m5tlY39l-ul8mChQ5HgaTabxnG1T-6UCCww1&t=127f3acd" type="text/javascript"></script>
<script src="/ScriptResource.axd?d=dwY9oWetJoJoVpgL6Zq8OPhCH5FvqK64L_AH5BGjcjCsTURC3ASj4mYgGJFGbkOnxU4p2AgpbJ2cSBG6zRw61YR9sWKxU5BdSlJdEC2fW7ZrOazNpcY0wNrvnAx2FZtpxoH0INNBylxHRRxzNUvPkDytUL01&t=127f3acd" type="text/javascript"></script>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="FD97A3D4">
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="KgY6k8ffv0YXjUEdmhcGTcQp0Sjc0xwncI89JqdjQ3sR82TvZPcjW1HeedSozZEHfkiBSJtDyujeOBoeb/6d5rRSrFLBoRBK/j8zhCEed9nEWMqFkj1coVRGYQG/7JkdF1fyNQ==">
</div>
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('sm', 'form1', [], [], [], 90, '');
//]]>
</script>
<!--modal-->
<!--navigation-->
<div class="navbar-fixed-top" style="background-color: #dedede!important; z-index: 100;">
<div class="container-fluid nopad">
<div style="border-top: #fff solid 1px">
<div class="mainbar">
<div class="navbar pull-right">
<ul class="navbar-nav">
<li class="nav-item hidden-xs dropdown">
<a class="dropdown-toggle" href="#" id="dropdown0" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Downloads und Ressourcen</a>
<div class="dropdown-menu" aria-labelledby="dropdown0">
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/broschueren">Broschüren</a>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/referenzen">Anwenderberichte</a>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/white-papers">White Papers</a>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/video">Videos</a>
</div>
</li>
<li class="nav-item hidden-xs dropdown">
<a class="dropdown-toggle" href="#" id="dropdown1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Presse und Veranstaltungen</a>
<div class="dropdown-menu" aria-labelledby="dropdown1">
<a class="topdroplink " href="/de-de/presse-und-veranstaltungen/veranstaltungen">Veranstaltungen</a>
<a class="topdroplink " href="/de-de/presse-und-veranstaltungen/pressemitteilungen">Presse und Mitteilungen</a>
<a class="topdroplink " href="/de-de/presse-und-veranstaltungen/veranstaltungen/webinars">Webinare</a>
</div>
</li>
<li class="nav-item hidden-xs ">
<a href="/de-de/ueber/karriere">Karriere</a>
</li>
<li class="nav-item hidden-xs ">
<a href="/de-de/kontakt">Kontakt</a>
</li>
</ul>
</div>
</div>
<div class="supportbar curse">
<a href="/de-de/services/customer-support/service-kontakt" target="" style="color: #fff; font-size: 12px">
<i class="ti-headphone-alt"> </i> Support
</a>
</div>
<div class="searchbar curse">
<a data-toggle="modal" data-target="#search" class="topitem" style="color: #fff">
<i class="ti-search"></i>
</a>
</div>
<div style="clear: both"></div>
</div>
<div class="nav-container nopad" style="min-height: 45px;">
<div class="whitespace hidden-xs hidden-sm">
</div>
<nav>
<div class="nav-bar">
<div class="module left">
<a href="/de-de">
<img alt="Dematic" class="logod" src="/Content/img/logo.svg">
</a>
<div class="tagspace hidden-xs hidden-sm">
<a href="/de-de" style="color: #000">
<span style="color:#fdba30">Power</span> the Future of Commerce
</a>
</div>
</div>
<div class="module widget-handle mobile-toggle right visible-sm visible-xs" style="z-index: 1!important">
<span style="font-size: 16px; vertical-align: 6px; padding-right: 12px; color: #666;">MENU</span><i class="ti-menu"></i>
</div>
<div class="module-group right">
<div class="module left modulepad">
<ul class="menu">
<li class="has-dropdown mainitempadding">
<a>Branchen</a>
<ul class="mega-menu feature" style="padding-bottom: 0!important">
<li>
<ul>
<li><a href="/de-de/branchen/branchenueberblick" class="title">Branchenüberblick</a></li>
<li><a href="/de-de/branchen/branchenueberblick/bekleidung-und-textil">Bekleidung und Textil</a></li>
<li><a href="/de-de/branchen/branchenueberblick/produzierendes-gewerbe">Produzierendes Gewerbe</a></li>
<li><a href="/de-de/branchen/branchenueberblick/e-commerce">E-Commerce</a></li>
<li><a href="/de-de/branchen/branchenueberblick/nahrungs-und-genussmittelindustrie">Nahrungs- und Genussmittelindustrie</a></li>
<li><a href="/de-de/branchen/branchenueberblick/handel">Handel</a></li>
<li><a href="/de-de/branchen/branchenueberblick/einzel-und-lebensmittelhandel">Lebensmittelhandel</a></li>
<li><a href="/de-de/branchen/branchenueberblick/gesundheitswesen">Gesundheitswesen</a></li>
<li><a href="/de-de/branchen/branchenueberblick/konsumgueter-industrie">Konsumgüter-Industrie</a></li>
<li><a href="/de-de/branchen/branchenueberblick/paketdienstleister">Paketdienstleister</a></li>
<li><a href="/de-de/branchen/branchenueberblick/kontraktlogistik">Third-Party Logistics (Kontraktlogistik)</a></li>
<li><a href="/de-de/branchen/branchenueberblick/grosshandel-b2b">Großhandel (B2B)</a></li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs hidden-sm"> </li>
<li class="has-dropdown mainitempadding">
<a>Lösungen</a>
<ul class="mega-menu feature" style="padding-bottom: 0!important">
<li>
<ul>
<li><a href="/de-de/loesungen/systemloesungen" class="title">Systemlösungen</a></li>
<li><a href="/de-de/loesungen/systemloesungen/microfulfillment">Micro-Fulfillment</a></li>
<li><a href="/de-de/loesungen/systemloesungen/retouren-system">Retouren-System</a></li>
<li><a href="/de-de/loesungen/systemloesungen/taschensorter">Taschensorter</a></li>
</ul>
<ul>
<li><a href="/de-de/loesungen/loesungsueberblick" class="title">Lösungsüberblick</a></li>
<li><a href="/de-de/loesungen/loesungsueberblick/wareneingangsverarbeitung">Wareneingangsverarbeitung</a></li>
<li><a href="/de-de/loesungen/loesungsueberblick/foerderung-und-transport">Förderung und Transport</a></li>
<li><a href="/de-de/loesungen/loesungsueberblick/lagerung-und-zwischenlagerung">Lagerung und Zwischenlagerung</a></li>
<li><a href="/de-de/loesungen/loesungsueberblick/behaelterkommissionierung">Behälterkommissionierung</a></li>
<li><a href="/de-de/loesungen/loesungsueberblick/stueckgutkommissionierung">Stückgutkommissionierung</a></li>
<li><a href="/de-de/loesungen/loesungsueberblick/warenausgangsverarbeitung">Warenausgangsverarbeitung</a></li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs hidden-sm"> </li>
<li class="has-dropdown mainitempadding">
<a>Produkte</a>
<ul class="mega-menu feature" style="padding-bottom: 0!important">
<li>
<ul>
<li><a href="/de-de/produkte/produktueberblick" class="title">Produktüberblick</a></li>
<li><a href="/de-de/produkte/produktueberblick/fahrerlose-transportsysteme">Fahrerlose Transportsysteme</a></li>
<li><a href="/de-de/produkte/produktueberblick/foerdersysteme">Fördertechnik / Fördersysteme</a></li>
<li><a href="/de-de/produkte/produktueberblick/haengesysteme">Hängesysteme</a></li>
<li><a href="/de-de/produkte/produktueberblick/palettierung-und-depalettierung">Palettierung und Depalettierung</a></li>
<li><a href="/de-de/produkte/produktueberblick/kommissioniersysteme">Kommissioniersysteme</a></li>
<li><a href="/de-de/produkte/produktueberblick/robotik-systeme">Robotik-Systeme</a></li>
<li><a href="/de-de/produkte/produktueberblick/sortiersysteme">Sorter und automatische Sortiersysteme</a></li>
<li><a href="/de-de/produkte/produktueberblick/lagertechnik">Lagerautomation: Lagertechnik und Lagersysteme</a></li>
<li><a href="/de-de/produkte/produktueberblick/workstation-systems">Arbeitsstationssysteme</a></li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs hidden-sm"> </li>
<li class="has-dropdown mainitempadding">
<a>Software</a>
<ul class="mega-menu feature" style="padding-bottom: 0!important">
<li>
<ul>
<li><a href="/de-de/software/dematic-iq" class="title">Logistiksoftware</a></li>
<li><a href="/de-de/software/dematic-iq/dematic-insights">Dematic InSights</a></li>
<li><a href="/de-de/software/dematic-iq/dematic-iq-optimize">Dematic iQ Optimize</a></li>
<li><a href="/de-de/software/dematic-iq/dematic-iq-virtual">Dematic iQ Virtual</a></li>
<li><a href="/de-de/software/dematic-iq/dematic-iq-workflow">Dematic iQ Workflow</a></li>
<li><a href="/de-de/software/dematic-iq/dematic-sprocket">Dematic Sprocket</a></li>
</ul>
<ul>
<li><a href="/de-de/software/sap-loesungen" class="title">SAP Lösungen</a></li>
<li><a href="/de-de/software/sap-loesungen/sap-ewm">SAP EWM</a></li>
<li><a href="/de-de/software/sap-loesungen/sap-les">SAP LES</a></li>
<li><a href="/de-de/software/sap-loesungen/subsuite">Dematic SubSuite 2.0</a></li>
<li><a href="/de-de/software/sap-loesungen/sap-tm">SAP TM</a></li>
<li><a href="/de-de/software/sap-loesungen/projektmethodik">Projektmethodik</a></li>
<li><a href="/de-de/software/sap-loesungen/nutzen">Ihr Nutzen</a></li>
</ul>
<ul>
<li><a href="/de-de/software/altsysteme" class="title">Altsysteme</a></li>
<li><a href="/de-de/software/altsysteme/ewms">E'wms® Warehouse Management System</a></li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs hidden-sm"> </li>
<li class="has-dropdown mainitempadding">
<a>Services & Support</a>
<ul class="mega-menu feature" style="padding-bottom: 0!important">
<li>
<ul>
<li><a href="/de-de/services/kundenservices" class="title">Kundendienst</a></li>
<li><a href="/de-de/services/kundenservices/beratung-und-training">Beratung und Training</a></li>
<li><a href="/de-de/services/kundenservices/maintenance-management-loesung">Anlagenverwaltungssystem (Enterprise Asset Management, EAM)</a></li>
<li><a href="/de-de/services/kundenservices/kundendienst-vor-ort">Kundendienst vor Ort</a></li>
<li><a href="/de-de/services/kundenservices/modernisierung-und-erweiterungen">Modernisierungen und Upgrades</a></li>
<li><a href="/de-de/services/kundenservices/fernueberwachung-fernbetreuung">Fernüberwachung und Fernbetreuung</a></li>
<li><a href="/de-de/services/kundenservices/betriebsbegleitung">Betriebsbegleitung</a></li>
<li><a href="/de-de/services/kundenservices/gewaehrleistungsmanagement">Gewährleistungs-Management Europa/EMEA</a></li>
</ul>
<ul>
<li><a href="/de-de/services/customer-support" class="title">Kunden-Support</a></li>
<li><a href="/de-de/services/customer-support/ersatzteil-services">Ersatzteile</a></li>
<li><a href="/de-de/services/customer-support/service-kontakt">Technischer Support</a></li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs hidden-sm"> </li>
<li class="has-dropdown mainitempadding">
<a>Über</a>
<ul class="mega-menu feature" style="padding-bottom: 0!important">
<li>
<ul>
<li><a href="/de-de/ueber/ueber-dematic" class="title">Über Dematic</a></li>
<li><a href="/de-de/ueber/ueber-dematic/200-jahre">Dematic wird 200</a></li>
<li><a href="/de-de/ueber/ueber-dematic/innovationen">Innovationen</a></li>
<li><a href="/de-de/ueber/ueber-dematic/the-kion-group">The KION Group</a></li>
<li><a href="/de-de/ueber/ueber-dematic/losungskompetenz">Lösungskompetenz</a></li>
<li><a href="/de-de/ueber/ueber-dematic/unternehmensleitung">Unternehmensleitung</a></li>
<li><a href="/de-de/ueber/ueber-dematic/iso-9001-zertifiziert">ISO 9001 zertifiziertes QMS</a></li>
<li><a href="/de-de/ueber/ueber-dematic/konformitat">Konformität</a></li>
<li><a href="/de-de/ueber/ueber-dematic/verbaende">Branchenverbände</a></li>
</ul>
<ul>
<li><a href="/de-de/ueber/karriere" class="title">Karriere</a></li>
<li><a href="/de-de/ueber/karriere/was-wir-bieten">Leben bei Dematic </a></li>
<li><a href="/de-de/ueber/karriere/offene-stellen">Offene Stellen</a></li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs hidden-sm"> </li>
<li class="nav-item top-nav-mobile has-dropdown">
<a class="dropdown-toggle" href="#" id="dropdown-mobile-0" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Downloads und Ressourcen</a>
<ul class="mega-menu feature" aria-labelledby="dropdown-mobile-0" style="padding-bottom: 0!important">
<li>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/broschueren">Broschüren</a>
</li>
<li>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/referenzen">Anwenderberichte</a>
</li>
<li>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/white-papers">White Papers</a>
</li>
<li>
<a class="topdroplink " href="/de-de/downloads-und-ressourcen/video">Videos</a>
</li>
</ul>
</li>
<li class="nav-item top-nav-mobile has-dropdown">
<a class="dropdown-toggle" href="#" id="dropdown-mobile-1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Presse und Veranstaltungen</a>
<ul class="mega-menu feature" aria-labelledby="dropdown-mobile-1" style="padding-bottom: 0!important">
<li>
<a class="topdroplink " href="/de-de/presse-und-veranstaltungen/veranstaltungen">Veranstaltungen</a>
</li>
<li>
<a class="topdroplink " href="/de-de/presse-und-veranstaltungen/pressemitteilungen">Presse und Mitteilungen</a>
</li>
<li>
<a class="topdroplink " href="/de-de/presse-und-veranstaltungen/veranstaltungen/webinars">Webinare</a>
</li>
</ul>
</li>
<li class="nav-item top-nav-mobile ">
<a href="/de-de/ueber/karriere">Karriere</a>
</li>
<li class="nav-item top-nav-mobile ">
<a href="/de-de/kontakt">Kontakt</a>
</li>
</ul>
</div>
<div class="module worldwide right">
<ul class="menu">
<li class="has-dropdown mainitempadding">
<a href="#">
<i class="ti-world" style="font-weight: bold;"></i> Worldwide
</a>
<ul class="mega-menu feature mr-m-120">
<li>
<ul>
<li>
<span class="region">Asia Pacific</span>
</li>
<li>
<span class="country">Australia - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">India - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Indonesia - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Korea - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Malaysia - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">New Zealand - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Philipines - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Singapore - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Taiwan - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Thailand - </span>
<a href="/en-au" class="language">English</a>
</li>
<li>
<span class="country">Vietnam - </span>
<a href="/en-au" class="language">English</a>
</li>
<li class="nav-padding">
<span class="region">China</span>
</li>
<li>
<span class="country">China - </span>
<a href="/zh-cn" class="language">中国版</a>
</li>
</ul>
</li>
<li>
<ul>
<li>
<span class="region">Europe/EMEA</span>
</li>
<li>
<span class="country">Austria - </span>
<a href="/de-at" class="language">Deutsch</a>
</li>
<li>
<span class="country">Belgium - </span>
<a href="/fr-be" class="language">Français</a>
<a href="/nl-be" class="language">Nederlands</a>
</li>
<li>
<span class="country">Denmark - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Estonia - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Finland - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">France - </span>
<a href="/fr-fr" class="language">Français</a>
</li>
<li>
<span class="country">Germany - </span>
<a href="/de-de" class="language">Deutsch</a>
</li>
<li>
<span class="country">Ireland - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Italy - </span>
<a href="/it-it" class="language">Italiano</a>
</li>
<li>
<span class="country">Latvia - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Lithuania - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Netherlands - </span>
<a href="/nl" class="language">Nederlands</a>
</li>
<li>
<span class="country">Norway - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Poland - </span>
<a href="/pl-pl" class="language">Polski</a>
</li>
<li>
<span class="country">Portugal - </span>
<a href="/pt-pt" class="language">Português</a>
</li>
<li>
<span class="country">Russia - </span>
<a href="/ru-ru" class="language">Русский</a>
</li>
<li>
<span class="country">South Africa - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Spain - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Sweden - </span>
<a href="/en" class="language">English</a>
</li>
<li>
<span class="country">Switzerland - </span>
<a href="/de-de" class="language">Deutsch</a>
</li>
<li>
<span class="country">United Kingdom - </span>
<a href="/en-gb" class="language">English UK</a>
</li>
</ul>
</li>
<li>
<ul>
<li>
<span class="region">Latin America</span>
</li>
<li>
<span class="country">Argentina - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Bolivia - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Brazil - </span>
<a href="/pt-br" class="language">Português</a>
</li>
<li>
<span class="country">Chile - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Colombia - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Costa Rica - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Ecuador - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Panama - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Paraguay - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Peru - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li>
<span class="country">Uruguay - </span>
<a href="/es-es" class="language">Español</a>
</li>
<li class="nav-padding">
<span class="region">North America</span>
</li>
<li>
<span class="country">Canada - </span>
<a href="/en-us" class="language">English</a>
<a href="/fr-ca" class="language">Français</a>
</li>
<li>
<span class="country">Mexico - </span>
<a href="/es-mx" class="language">Español</a>
</li>
<li>
<span class="country">United States - </span>
<a href="/en-us" class="language">English</a>
</li>
</ul>
</li>
</ul>
</li>
<li class="spacer hidden-xs"> </li>
</ul>
</div>
</div>
</div>
</nav>
</div>
</div>
</div>
<div class="pc-only" align="center">
<!-- Inline Script Include Widget - Begin -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
/*! ResponsiveSlides.js v1.55
* http://responsiveslides.com
* http://viljamis.com
*
* Copyright (c) 2011-2012 @viljamis
* Available under the MIT license
*/
/*jslint browser: true, sloppy: true, vars: true, plusplus: true, indent: 2 */
(function($, window, i) {
$.fn.responsiveSlides = function(options) {
// Default settings
var settings = $.extend({
"auto": true, // Boolean: Animate automatically, true or false
"speed": 500, // Integer: Speed of the transition, in milliseconds
"timeout": 4000, // Integer: Time between slide transitions, in milliseconds
"pager": false, // Boolean: Show pager, true or false
"nav": false, // Boolean: Show navigation, true or false
"random": false, // Boolean: Randomize the order of the slides, true or false
"pause": false, // Boolean: Pause on hover, true or false
"pauseControls": true, // Boolean: Pause when hovering controls, true or false
"prevText": "Previous", // String: Text for the "previous" button
"nextText": "Next", // String: Text for the "next" button
"maxwidth": "", // Integer: Max-width of the slideshow, in pixels
"navContainer": "", // Selector: Where auto generated controls should be appended to, default is after the <ul>
"manualControls": "", // Selector: Declare custom pager navigation
"namespace": "rslides", // String: change the default namespace used
"before": $.noop, // Function: Before callback
"after": $.noop // Function: After callback
}, options);
return this.each(function() {
// Index for namespacing
i++;
var $this = $(this),
// Local variables
vendor,
selectTab,
startCycle,
restartCycle,
rotate,
$tabs,
// Helpers
index = 0,
$slide = $this.children(),
length = $slide.length,
fadeTime = parseFloat(settings.speed),
waitTime = parseFloat(settings.timeout),
maxw = parseFloat(settings.maxwidth),
// Namespacing
namespace = settings.namespace,
namespaceIdx = namespace + i,
// Classes
navClass = namespace + "_nav " + namespaceIdx + "_nav",
activeClass = namespace + "_here",
visibleClass = namespaceIdx + "_on",
slideClassPrefix = namespaceIdx + "_s",
// Pager
$pager = $("<ul class='" + namespace + "_tabs " + namespaceIdx + "_tabs' />"),
// Styles for visible and hidden slides
visible = {
"float": "left",
"position": "relative",
"opacity": 1,
"zIndex": 2
},
hidden = {
"float": "none",
"position": "absolute",
"opacity": 0,
"zIndex": 1
},
// Detect transition support
supportsTransitions = (function() {
var docBody = document.body || document.documentElement;
var styles = docBody.style;
var prop = "transition";
if (typeof styles[prop] === "string") {
return true;
}
// Tests for vendor specific prop
vendor = ["Moz", "Webkit", "Khtml", "O", "ms"];
prop = prop.charAt(0).toUpperCase() + prop.substr(1);
var i;
for (i = 0; i < vendor.length; i++) {
if (typeof styles[vendor[i] + prop] === "string") {
return true;
}
}
return false;
})(),
// Fading animation
slideTo = function(idx) {
settings.before(idx);
// If CSS3 transitions are supported
if (supportsTransitions) {
$slide.removeClass(visibleClass).css(hidden).eq(idx).addClass(visibleClass).css(visible);
index = idx;
setTimeout(function() {
settings.after(idx);
}, fadeTime);
// If not, use jQuery fallback
} else {
$slide.stop().fadeOut(fadeTime, function() {
$(this).removeClass(visibleClass).css(hidden).css("opacity", 1);
}).eq(idx).fadeIn(fadeTime, function() {
$(this).addClass(visibleClass).css(visible);
settings.after(idx);
index = idx;
});
}
};
// Random order
if (settings.random) {
$slide.sort(function() {
return (Math.round(Math.random()) - 0.5);
});
$this.empty().append($slide);
}
// Add ID's to each slide
$slide.each(function(i) {
this.id = slideClassPrefix + i;
});
// Add max-width and classes
$this.addClass(namespace + " " + namespaceIdx);
if (options && options.maxwidth) {
$this.css("max-width", maxw);
}
// Hide all slides, then show first one
$slide.hide().css(hidden).eq(0).addClass(visibleClass).css(visible).show();
// CSS transitions
if (supportsTransitions) {
$slide.show().css({
// -ms prefix isn't needed as IE10 uses prefix free version
"-webkit-transition": "opacity " + fadeTime + "ms ease-in-out",
"-moz-transition": "opacity " + fadeTime + "ms ease-in-out",
"-o-transition": "opacity " + fadeTime + "ms ease-in-out",
"transition": "opacity " + fadeTime + "ms ease-in-out"
});
}
// Only run if there's more than one slide
if ($slide.length > 1) {
// Make sure the timeout is at least 100ms longer than the fade
if (waitTime < fadeTime + 100) {
return;
}
// Pager
if (settings.pager && !settings.manualControls) {
var tabMarkup = [];
$slide.each(function(i) {
var n = i + 1;
tabMarkup += "<li>" + "<a href='#' class='" + slideClassPrefix + n + "'>" + n + "</a>" + "</li>";
});
$pager.append(tabMarkup);
// Inject pager
if (options.navContainer) {
$(settings.navContainer).append($pager);
} else {
$this.after($pager);
}
}
// Manual pager controls
if (settings.manualControls) {
$pager = $(settings.manualControls);
$pager.addClass(namespace + "_tabs " + namespaceIdx + "_tabs");
}
// Add pager slide class prefixes
if (settings.pager || settings.manualControls) {
$pager.find('li').each(function(i) {
$(this).addClass(slideClassPrefix + (i + 1));
});
}
// If we have a pager, we need to set up the selectTab function
if (settings.pager || settings.manualControls) {
$tabs = $pager.find('a');
// Select pager item
selectTab = function(idx) {
$tabs.closest("li").removeClass(activeClass).eq(idx).addClass(activeClass);
};
}
// Array to enter timeout values.
var desiredTimeout = [3500, 3000, 3000, 3000, 3000, 18500];
// Auto cycle
if (settings.auto) {
startCycle = function(i) {
rotate = setTimeout(function() {
// Clear the event queue
$slide.stop(true, true);
var idx = index + 1 < length ? index + 1 : 0;
// Remove active state and set new if pager is set
if (settings.pager || settings.manualControls) {
selectTab(idx);
}
slideTo(idx);
startCycle(index);
}, desiredTimeout[i]);
};
// Init cycle
startCycle(index);
}
// Restarting cycle
restartCycle = function() {
if (settings.auto) {
// Stop
clearTimeout(rotate);
// Restart
startCycle(index);
}
};
// Pause on hover
if (settings.pause) {
$this.hover(function() {
clearTimeout(rotate);
}, function() {
restartCycle();
});
}
// Pager click event handler
if (settings.pager || settings.manualControls) {
$tabs.bind("click", function(e) {
e.preventDefault();
if (!settings.pauseControls) {
restartCycle();
}
// Get index of clicked tab
var idx = $tabs.index(this);
// Break if element is already active or currently animated
if (index === idx || $("." + visibleClass).queue('fx').length) {
return;
}
// Remove active state from old tab and set new one
selectTab(idx);
// Do the animation
slideTo(idx);
}).eq(0).closest("li").addClass(activeClass);
// Pause when hovering pager
if (settings.pauseControls) {
$tabs.hover(function() {
clearInterval(rotate);
}, function() {
restartCycle();
});
}
}
// Navigation
if (settings.nav) {
var navMarkup = "<a href='#' class='" + navClass + " prev'>" + settings.prevText + "</a>" + "<a href='#' class='" + navClass + " next'>" + settings.nextText + "</a>";
// Inject navigation
if (options.navContainer) {
$(settings.navContainer).append(navMarkup);
} else {
$this.after(navMarkup);
}
var $trigger = $("." + namespaceIdx + "_nav"),
$prev = $trigger.filter(".prev");
// Click event handler
$trigger.bind("click", function(e) {
e.preventDefault();
var $visibleClass = $("." + visibleClass);
// Prevent clicking if currently animated
if ($visibleClass.queue('fx').length) {
return;
}
// Adds active class during slide animation
// $(this)
// .addClass(namespace + "_active")
// .delay(fadeTime)
// .queue(function (next) {
// $(this).removeClass(namespace + "_active");
// next();
// });
// Determine where to slide
var idx = $slide.index($visibleClass),
prevIdx = idx - 1,
nextIdx = idx + 1 < length ? index + 1 : 0;
// Go to slide
slideTo($(this)[0] === $prev[0] ? prevIdx : nextIdx);
if (settings.pager || settings.manualControls) {
selectTab($(this)[0] === $prev[0] ? prevIdx : nextIdx);
}
if (!settings.pauseControls) {
restartCycle();
}
});
// Pause when hovering navigation
if (settings.pauseControls) {
$trigger.hover(function() {
clearInterval(rotate);
}, function() {
restartCycle();
});
}
}
}
// Max-width fallback
if (typeof document.body.style.maxWidth === "undefined" && options.maxwidth) {
var widthSupport = function() {
$this.css("width", "100%");
if ($this.width() > maxw) {
$this.css("width", maxw);
}
};
// Init fallback
widthSupport();
$(window).bind("resize", function() {
widthSupport();
});
}
});
};
})(jQuery, this, 0);
</script>
<!-- Inline Script Include Widget - End -->
</div>
<style>
.featureleft {
z-index: 150 !important;
}
.menu>li>ul>li>ul {
z-index: 150 !important;
}
a:hover {
opacity: 0.9
}
.gotolink {
font-size: 12px !important;
line-height: 1.2em;
}
.icon-sm {
vertical-align: -2px;
padding-left: 8px
}
.learn {
margin-right: 8px;
border-color: #ffffff;
background-color: transparent !important;
}
#cf4a {
position: relative;
height: 300px;
}
.bigblock {
height: 300px;
padding-left: 1px;
padding-right: 1px;
margin-bottom: 2px;
}
.smallblock {
height: 150px;
padding-left: 1px;
padding-right: 1px;
margin-bottom: 2px;
position: relative
}
.smallblock img {
background-size: cover;
object-fit: cover;
width: 100%;
height: 100%;
}
.f3 {
background-size: cover;
object-fit: cover;
width: 100%;
height: 100%;
}
.bigblock::after {
display: block;
position: relative;
background: linear-gradient(to left, transparent 0%, rgba(0, 0, 0, 1));
margin-top: -300px;
height: 300px;
width: 100%;
content: '';
z-index: 0;
}
.smallblock::after {
display: block;
position: relative;
background: linear-gradient(to left, transparent 20%, rgba(0, 0, 0, 0.8));
margin-top: -150px;
height: 150px;
width: 100%;
content: '';
z-index: 0;
}
.tbox {
position: absolute;
left: 20px;
bottom: 15px;
z-index: 1;
max-width: 70%
}
.tbox h1,
.tbox h4 {
color: #fff;
margin-bottom: 6px
}
.tbox h4 {
font-size: 18px;
text-shadow: 2px 2px 7px #000000;
}
.bbox {
position: absolute;
left: 20px;
bottom: 25px;
z-index: 1;
max-width: 90%
}
.bbox h1,
.bbox h2,
.bbox h4,
.tbox h4 {
color: #fff
}
.bbox .lead {
font-size: 16px
}
.bbox h2 {
font-size: 22px;
margin-bottom: 0px
}
.supper {
font-size: 14px;
vertical-align: 4px
}
@media only screen and (min-width : 576px) {
.gotolink {
font-size: 15px !important;
line-height: 1.2em;
}
.tbox {
position: absolute;
left: 40px;
bottom: 30px;
max-width: 70%
}
.tbox h4 {
font-size: 24px
}
.bbox {
position: absolute;
left: 40px;
bottom: 40px;
max-width: 70%
}
#cf4a {
height: 408px;
}
.bbox h1 {
font-size: 50px
}
.bbox h2 {
font-size: 30px
}
.bigblock {
height: 408px
}
.bigblock::after {
margin-top: -408px;
height: 408px;
}
.smallblock {
height: 200px;
}
.smallblock::after {
margin-top: -200px;
height: 200px;
}
.bbox .lead {
font-size: 18px
}
.supper {
font-size: 18px;
vertical-align: 14px
}
}
@media only screen and (min-width : 768px) and (max-width : 992px) {
.bbox {
position: absolute;
left: 40px;
bottom: 40px;
max-width: 70%
}
.smallblock {
height: 170px;
}
.smallblock::after {
margin-top: -170px;
height: 170px;
}
}
@media only screen and (min-width : 993px) {
.bbox {
max-width: 70%
}
#cf4a {
height: 400px;
}
.bigblock {
height: 400px;
}
.bigblock::after {
margin-top: -400px;
height: 400px;
}
.bbox .lead {
font-size: 20px
}
}
@media only screen and (min-width : 1200px) {
.tbox {
max-width: 70%
}
.bbox {
position: absolute;
left: 40px;
bottom: 60px;
z-index: 2;
max-width: 70%
}
.bbox h1 {
font-size: 60px
}
#cf4a {
height: 444px;
}
.bigblock {
height: 444px;
}
.bigblock::after {
margin-top: -444px;
height: 444px;
}
.smallblock {
height: 240px;
}
.smallblock::after {
margin-top: -240px;
height: 240px;
}
}
@media only screen and (min-width : 1600px) {
.bbox {
position: absolute;
left: 80px;
bottom: 120px;
z-index: 2;
max-width: 70%
}
#cf4a {
height: 604px;
}
.bigblock {
height: 604px;
}
.bigblock::after {
margin-top: -604px;
height: 604px;
}
.smallblock {
height: 200px;
}
.smallblock::after {
margin-top: -200px;
height: 200px;
}
.bbox .lead {
font-size: 24px
}
}
@-webkit-keyframes cf4FadeInOut {
0% {
opacity: 1;
}
17% {
opacity: 1;
}
25% {
opacity: 0;
}
92% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-moz-keyframes cf4FadeInOut {
0% {
opacity: 1;
}
17% {
opacity: 1;
}
25% {
opacity: 0;
}
92% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@-o-keyframes cf4FadeInOut {
0% {
opacity: 1;
}
17% {
opacity: 1;
}
25% {
opacity: 0;
}
92% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes cf4FadeInOut {
0% {
opacity: 1;
}
17% {
opacity: 1;
}
25% {
opacity: 0;
}
92% {
opacity: 0;
}
100% {
opacity: 1;
}
}
#cf4a img {
position: absolute;
left: 0;
object-fit: cover;
width: 100%;
height: 100%
}
#cf4a img {
-webkit-animation-name: cf4FadeInOut;
-webkit-animation-timing-function: ease-in-out;
-webkit-animation-iteration-count: infinite;
-webkit-animation-duration: 24s;
-moz-animation-name: cf4FadeInOut;
-moz-animation-timing-function: ease-in-out;
-moz-animation-iteration-count: infinite;
-moz-animation-duration: 24s;
-o-animation-name: cf4FadeInOut;
-o-animation-timing-function: ease-in-out;
-o-animation-iteration-count: infinite;
-o-animation-duration: 24s;
animation-name: cf4FadeInOut;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
animation-duration: 24s;
}
#cf4a img:nth-of-type(1) {
-webkit-animation-delay: 21s;
-moz-animation-delay: 21s;
-o-animation-delay: 21s;
animation-delay: 21s;
}
#cf4a img:nth-of-type(2) {
-webkit-animation-delay: 18s;
-moz-animation-delay: 18s;
-o-animation-delay: 18s;
animation-delay: 18s;
}
#cf4a img:nth-of-type(3) {
-webkit-animation-delay: 15s;
-moz-animation-delay: 15s;
-o-animation-delay: 15s;
animation-delay: 15s;
}
#cf4a img:nth-of-type(4) {
-webkit-animation-delay: 12s;
-moz-animation-delay: 12s;
-o-animation-delay: 12s;
animation-delay: 12s;
}
#cf4a img:nth-of-type(5) {
-webkit-animation-delay: 9s;
-moz-animation-delay: 9s;
-o-animation-delay: 9s;
animation-delay: 9s;
}
#cf4a img:nth-of-type(6) {
-webkit-animation-delay: 6s;
-moz-animation-delay: 6s;
-o-animation-delay: 6s;
animation-delay: 6s;
}
#cf4a img:nth-of-type(7) {
-webkit-animation-delay: 3s;
-moz-animation-delay: 3s;
-o-animation-delay: 3s;
animation-delay: 3s;
}
#cf4a img:nth-of-type(8) {
-webkit-animation-delay: 0;
-moz-animation-delay: 0;
-o-animation-delay: 0;
animation-delay: 0;
}
@media (min-width: 1200px) and (max-width: 1599px) {
#hero .hidden-lg {
display: none !important;
}
}
#hero .visible-xl-block,
#hero .visible-xl-inline,
#hero .visible-xl-inline-block,
#hero .visible-xl {
display: none !important;
}
@media (min-width: 1600px) {
#hero.container {
width: 1570px;
}
#hero .col-xl-1,
#hero .col-xl-2,
#hero .col-xl-3,
#hero .col-xl-4,
#hero .col-xl-5,
#hero .col-xl-6,
#hero .col-xl-7,
#hero .col-xl-8,
#hero .col-xl-9,
#hero .col-xl-10,
#hero .col-xl-11,
#hero .col-xl-12 {
float: left;
}
#hero .col-xl-12 {
width: 100%;
}
#hero .col-xl-11 {
width: 91.66666667%;
}
#hero .col-xl-10 {
width: 83.33333333%;
}
#hero .col-xl-9 {
width: 75%;
}
#hero .col-xl-8 {
width: 66.66666667%;
}
#hero.col-xl-7 {
width: 58.33333333%;
}
#hero .col-xl-6 {
width: 50%;
}
#hero .col-xl-5 {
width: 41.66666667%;
}
#hero .col-xl-4 {
width: 33.33333333%;
}
#hero .col-xl-3 {
width: 25%;
}
#hero .col-xl-2 {
width: 16.66666667%;
}
#hero .col-xl-1 {
width: 8.33333333%;
}
#hero .col-xl-pull-12 {
right: 100%;
}
#hero .col-xl-pull-11 {
right: 91.66666667%;
}
.col-xl-pull-10 {
right: 83.33333333%;
}
#hero .col-xl-pull-9 {
right: 75%;
}
#hero .col-xl-pull-8 {
right: 66.66666667%;
}
#hero .col-xl-pull-7 {
right: 58.33333333%;
}
#hero .col-xl-pull-6 {
right: 50%;
}
#hero .col-xl-pull-5 {
right: 41.66666667%;
}
#hero .col-xl-pull-4 {
right: 33.33333333%;
}
#hero .col-xl-pull-3 {
right: 25%;
}
#hero .col-xl-pull-2 {
right: 16.66666667%;
}
#hero .col-xl-pull-1 {
right: 8.33333333%;
}
#hero .col-xl-pull-0 {
right: auto;
}
#hero .col-xl-push-12 {
left: 100%;
}
#hero .col-xl-push-11 {
left: 91.66666667%;
}
#hero .col-xl-push-10 {
left: 83.33333333%;
}
#hero .col-xl-push-9 {
left: 75%;
}
#hero .col-xl-push-8 {
left: 66.66666667%;
}
#hero .col-xl-push-7 {
left: 58.33333333%;
}
#hero .col-xl-push-6 {
left: 50%;
}
#hero .col-xl-push-5 {
left: 41.66666667%;
}
#hero .col-xl-push-4 {
left: 33.33333333%;
}
#hero .col-xl-push-3 {
left: 25%;
}
#hero .col-xl-push-2 {
left: 16.66666667%;
}
#hero .col-xl-push-1 {
left: 8.33333333%;
}
#hero .col-xl-push-0 {
left: auto;
}
#hero .col-xl-offset-12 {
margin-left: 100%;
}
#hero .col-xl-offset-11 {
margin-left: 91.66666667%;
}
#hero .col-xl-offset-10 {
margin-left: 83.33333333%;
}
#hero .col-xl-offset-9 {
margin-left: 75%;
}
#hero .col-xl-offset-8 {
margin-left: 66.66666667%;
}
#hero .col-xl-offset-7 {
margin-left: 58.33333333%;
}
#hero .col-xl-offset-6 {
margin-left: 50%;
}
#hero .col-xl-offset-5 {
margin-left: 41.66666667%;
}
#hero .col-xl-offset-4 {
margin-left: 33.33333333%;
}
#hero .col-xl-offset-3 {
margin-left: 25%;
}
#hero .col-xl-offset-2 {
margin-left: 16.66666667%;
}
#hero .col-xl-offset-1 {
margin-left: 8.33333333%;
}
#hero .col-xl-offset-0 {
margin-left: 0;
}
#hero .visible-xl {
display: block !important;
}
#hero table.visible-xl {
display: table;
}
#hero tr.visible-xl {
display: table-row !important;
}
#hero th.visible-xl,
td.visible-xl {
display: table-cell !important;
}
#hero .visible-xl-block {
display: block !important;
}
#hero .visible-xl-inline {
display: inline !important;
}
#hero .visible-xl-inline-block {
display: inline-block !important;
}
#hero .hidden-xl {
display: none !important;
}
}
</style>
<style>
.mhlc .mhlclogo {
max-width: 170px;
margin-bottom: 10px
}
.mhlc .mhlcbeyond {
max-width: 250px;
margin-bottom: 10px
}
.mhlc .lead {
color: #fdba32;
margin-top: 5px;
margin-bottom: 16px
}
.mhlc .tag {
color: #fdba32;
margin-bottom: 0px;
font-size: 12px
}
.f3 {
object-fit: cover;
width: auto;
height: 100%;
object-position: right center
}
@media only screen and (min-width : 576px) {
.mhlc .mhlclogo {
max-width: 200px;
margin-bottom: 10px
}
.mhlc .mhlcbeyond {
max-width: 290px;
margin-bottom: 10px
}
.mhlc h2 {
font-size: 22px
}
}
@media only screen and (min-width : 768px) and (max-width : 992px) {
.mhlc .mhlclogo {
max-width: 240px;
margin-bottom: 20px
}
.mhlc .mhlcbeyond {
max-width: 360px;
margin-bottom: 20px
}
.mhlc .lead {
color: #fdba32;
margin-top: 20px
}
.mhlc .tag {
color: #fdba32;
margin-bottom: 8px;
font-size: 12px
}
.mhlc h2 {
font-size: 22px
}
}
@media only screen and (min-width : 993px) {
.mhlc .mhlclogo {
max-width: 240px;
margin-bottom: 20px
}
.mhlc .mhlcbeyond {
max-width: 360px;
margin-bottom: 20px
}
.mhlc .lead {
color: #fdba32;
margin-top: 20px
}
.mhlc .tag {
color: #fdba32;
margin-bottom: 8px;
font-size: 16px
}
}
@media only screen and (min-width : 1200px) {
.mhlc .mhlclogo {
max-width: 280px;
margin-bottom: 20px
}
.mhlc .mhlcbeyond {
max-width: 400px;
margin-bottom: 20px
}
.mhlc .lead {
color: #fdba32;
margin-top: 20px
}
.mhlc .tag {
color: #fdba32;
margin-bottom: 16px;
font-size: 18px
}
}
@media only screen and (min-width : 1600px) {
.mhlc .mhlclogo {
max-width: 310px;
margin-bottom: 20px
}
.mhlc .mhlcbeyond {
max-width: 500px;
margin-bottom: 20px
}
.mhlc .lead {
color: #fdba32;
margin-top: 20px;
margin-bottom: 20px
}
}
</style>
<div id="hero" class="container-fluid hero2020 mhlc" style="padding: 0">
<div class="row" style="margin-left:2px; margin-right:2px">
<div class="col-xs-12 col-md-12 col-lg-12 col-xl-9">
<div class="row">
<!--block 1 static-->
<a class="gotopage" href="https://www.mhlc.com">
<div class="col-xs-12 bigblock" style="">
<img class="f3" src="https://pages.dematic.com/dematiccom/hero/img/mhlc-back.jpg" style="background-position:right center!important; width:100%">
<div class="bbox">
<p class="tag" style="">
GLOBAL VIRTUAL CONFERENCE
</p>
<img class="mhlclogo" src="https://pages.dematic.com/dematiccom/hero/img/mhlc.png" style=""><br>
<img class="mhlcbeyond" src="https://pages.dematic.com/dematiccom/hero/img/mhlc-beyond.png" style="">
<h2>
Innovation ist nicht mehr optional - sie ist eine Notwendigkeit, um voranzukommen.
</h2>
<!-- <p class="lead" style="">
13.–15. September 2021
</p> -->
<p class="btn btn-filled btn-lg mb0 learn mt24">
Weitere Infos <i class="icon-sm ti-arrow-circle-right" style="color:#fff; font-size: 16px; vertical-align: -2px; padding-left: 8px"></i>
</p>
</div>
</div>
</a>
</div>
</div>
<div class="col-xs-12 col-md-12 col-lg-12 col-xl-3">
<div class="row">
<!--block 2-->
<a href="https://www.dematic.com/de-de/loesungen/systemloesungen/microfulfillment/">
<div class="col-xs-12 col-sm-4 col-md-4 col-lg-4 col-xl-12 smallblock">
<img src="/~/media/images/hero/scene1.ashx?la=de-de&hash=33CCCF7C9CB4C27DC7D5C0C119BA7DCE2688434E" alt="Micro-Fulfillment">
<div class="tbox">
<h4>
Dematic Micro-Fulfillment
</h4>
<p class="gotolink mt0 mb0" style="color:#fdba32">
Weitere Infos<i class="icon-sm ti-arrow-circle-right"></i>
</p>
</div>
</div>
</a>
<!--block 3-->
<a href="https://www.dematic.com/de-de/produkte/produktueberblick/lagertechnik/autostore/">
<div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 col-xl-12 smallblock">
<img src="https://pages.dematic.com/dematiccom/hero/img/autostore.jpg" alt="AutoStore">
<div class="tbox">
<h4>
Große Wirkung<br>auf kleinem Raum
</h4>
<p class="gotolink mt0 mb0" style="color:#fdba32">
Mehr über<br>AutoStore<i class="icon-sm ti-arrow-circle-right"></i>
</p>
</div>
</div>
</a>
<!--block 4-->
<a href="https://www.dematic.com/de-de/branchen/branchenueberblick/einzel-und-lebensmittelhandel/">
<div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 col-xl-12 smallblock">
<img src="https://pages.dematic.com/dematiccom/hero/img/assessment-tool.jpg" alt="Micro-Fulfillment Assessment Tool">
<div class="tbox">
<h4>
Unsere Lösungen für den<br>Einzel- und Lebensmittelhandel
</h4>
<p class="gotolink mt0 mb0" style="color:#fdba32">
Anpassbar an<br>Ihre Bedürfnisse<i class="icon-sm ti-arrow-circle-right"></i>
</p>
</div>
</div>
</a>
</div>
</div>
</div>
</div>
<div class="container-fluid" style="background-color: #ededed;">
<section class="pb56 pb-xs-40 pt64 callto">
<div class="container">
<div class="row">
<div class="col-sm-4 text-center pb24">
<div class="text-center">
<div class="text-center">
<img src="/~/media/images/misc/banner list/industry icon.ashx?style=width:100px;" class="img-circle" style="width:100px;">
<h5 class="mb8 mt16" style="font-weight: 600">Branchen</h5>
</div>
<p class="text mb16"> Sie kennen Ihren Markt – und Dematic verfügt über die richtigen Lösungen zur Erfüllung Ihrer spezifischen Branchenanforderungen. </p>
</div>
<div class="goto mb0 mt0" style="text-align:center">
<a class="gotolink gotoblue " href="/de-de/branchen/branchenueberblick"> <span class="lastword">Erkunden <i class="ti-arrow-circle-right"></i></span></a>
</div>
</div>
<div class="col-sm-4 text-center pb24">
<div class="text-center">
<div class="text-center">
<img src="/~/media/images/misc/banner list/function icon.ashx?style=width:100px;" class="img-circle" style="width:100px;">
<h5 class="mb8 mt16" style="font-weight: 600">Lösungen</h5>
</div>
<p class="text mb16"> Produktion und Vertrieb sind mit einer Vielzahl intralogistischer Herausforderungen verbunden. Dematic hat die richtigen Lösungen dafür. </p>
</div>
<div class="goto mb0 mt0" style="text-align:center">
<a class="gotolink gotoblue " href="/de-de/loesungen/loesungsueberblick"> <span class="lastword">Erkunden <i class="ti-arrow-circle-right"></i></span></a>
</div>
</div>
<div class="col-sm-4 text-center pb24">
<div class="text-center">
<div class="text-center">
<img src="/~/media/images/misc/banner list/technology icon.ashx?style=width:100px;" class="img-circle" style="width:100px;">
<h5 class="mb8 mt16" style="font-weight: 600">Produkte</h5>
</div>
<p class="text mb16"> Produkte sind Instrumente, um Aufgaben zu erfüllen. Dematic bietet die beste Auswahl für die beste Lösung. </p>
</div>
<div class="goto mb0 mt0" style="text-align:center">
<a class="gotolink gotoblue " href="/de-de/produkte/produktueberblick"> <span class="lastword">Erkunden <i class="ti-arrow-circle-right"></i></span></a>
</div>
</div>
</div>
</div>
</section>
</div>
<div class="container-fluid pb0 nopad" style="background-color: #fff">
<section class="mb0 pb80 pt80">
<div class="container">
<div id="carousel-d1f22a9c7a3a4544aa960a9edd3b2857" class="carousel slide" data-ride="carousel" data-interval="8000">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="carousel-d1f22a9c7a3a4544aa960a9edd3b2857" data-slide-to="0" class=""></li>
<li data-target="carousel-d1f22a9c7a3a4544aa960a9edd3b2857" data-slide-to="1" class=""></li>
<li data-target="carousel-d1f22a9c7a3a4544aa960a9edd3b2857" data-slide-to="2" class=""></li>
<li data-target="carousel-d1f22a9c7a3a4544aa960a9edd3b2857" data-slide-to="3" class=""></li>
<li data-target="carousel-d1f22a9c7a3a4544aa960a9edd3b2857" data-slide-to="4" class=""></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<div class="row v-align-children">
<div class="visible-xs text-right">
<img src="/~/media/images/solutions/systems/microfulfillment/sidebar-micro-1.ashx" alt="MicroFulfillment">
</div>
<div class="col-lg-6 col-md-6 col-sm-6 mb-xs-24" style="padding-left: 30px;">
<h6 class="mt16 mb8 uppercase"> Lösungen für die <span style="color: #fdba30;">Zukunft</span> des Handels: </h6>
<h3 class="mb0">Micro-Fulfillment</h3>
<h5>Schnelle Auftragserfüllung</h5>
<p>Die Micro-Fulfillment-Lösung von Dematic ist eine leistungsstarke Kombination aus intelligenter Automatisierungs-Hardware und proprietärer Software, die speziell entwickelt wurde, um Einzelhändlern aus allen Branchen zu helfen,
die steigende Nachfrage der Verbraucher nach schneller Online-Bestellabwicklung zu befriedigen.</p>
<p> </p>
<p class="mb0">
<a class="btn btn-filled btn-lg mb16 " href="/de-de/loesungen/systemloesungen/microfulfillment">Mehr über <span class="lastword">Micro-Fulfillment <i class="icon-sm ti-arrow-circle-right" style="color:#fff; font-size: 16px; vertical-align: -2px; padding-left: 8px"></i></span></a>
<a></a>
</p>
</div>
<div class="col-lg-5 col-lg-offset-1 col-md-6 col-sm-6 text-right hidden-xs">
<img src="/~/media/images/solutions/systems/microfulfillment/sidebar-micro-1.ashx" alt="MicroFulfillment">
</div>
</div>
</div>
<div class="item ">
<div class="row v-align-children">
<div class="visible-xs text-right">
<img src="/~/media/images/assets/600-robotic-picking-2.ashx" alt="Leistungsoptimierende Software">
</div>
<div class="col-lg-6 col-md-6 col-sm-6 mb-xs-24" style="padding-left: 30px;">
<h6 class="mt16 mb8 uppercase"> Lösungen, die Ihre Supply Chain <span style="color:#fdba30">optimieren</span>: </h6>
<h3 class="mb0">Roboter-Kommissioniersystem</h3>
<h5> Lights-out Order Fulfillment </h5>
<p>Da Kunden eine schnellere, genauere Auftragsabwicklung verlangen, können Distributionszentren, die nach wie vor auf manuelle Arbeit setzen, kaum mithalten.</p>
<p>
</p>
<p>Dematic Robotik-Systeme ersetzen knappe und teure Arbeitskräfte durch automatisierte Lösungen für wichtige Lagerfunktionen, einschließlich des „Last Touch“ im Order-Fulfillment-Prozess.</p>
<p> </p>
<p class="mb0">
<a class="btn btn-filled btn-lg mb16 " href="/de-de/produkte/produktueberblick/robotik-systeme"> <span class="lastword">Mehr... <i class="icon-sm ti-arrow-circle-right" style="color:#fff; font-size: 16px; vertical-align: -2px; padding-left: 8px"></i></span></a>
<a></a>
</p>
</div>
<div class="col-lg-5 col-lg-offset-1 col-md-6 col-sm-6 text-right hidden-xs">
<img src="/~/media/images/assets/600-robotic-picking-2.ashx" alt="Leistungsoptimierende Software">
</div>
</div>
</div>
<div class="item ">
<div class="row v-align-children">
<div class="visible-xs text-right">
<img src="/~/media/images/features/carousel/storage-systems-carousel.ashx" alt="Dematic Storage Systems">
</div>
<div class="col-lg-6 col-md-6 col-sm-6 mb-xs-24" style="padding-left: 30px;">
<h6 class="mt16 mb8 uppercase"> Lösungen, die Ihre Supply Chain <span style="color:#fdba30">optimieren</span>: </h6>
<h3 class="mb0">Dematic iQ</h3>
<h5>Leistungsoptimierende Software</h5>
<p>Dematic iQ ist eine umfassende Software-Plattform, die Ihren Anlagenbetrieb von Anfang bis Ende automatisiert und optimiert.</p>
<p>
</p>
<p>Dematic iQ bietet skalierbare Lösungen vom einfachen/konventionellen Betrieb bis hin zu hochintegrierten/automatisierten Anlagen. Konfigurierbare, einfach zu implementierende Module spiegeln Best Practices wider, die in
jahrzehntelanger Erfahrung in der Materialhandhabung sowie in der betrieblichen Forschung und Simulationsmodellierung erworben wurden.</p>
<p> </p>
<p class="mb0">
<a class="btn btn-filled btn-lg mb16 " href="/de-de/software/dematic-iq"> <span class="lastword">Mehr... <i class="icon-sm ti-arrow-circle-right" style="color:#fff; font-size: 16px; vertical-align: -2px; padding-left: 8px"></i></span></a>
<a></a>
</p>
</div>
<div class="col-lg-5 col-lg-offset-1 col-md-6 col-sm-6 text-right hidden-xs">
<img src="/~/media/images/features/carousel/storage-systems-carousel.ashx" alt="Dematic Storage Systems">
</div>
</div>
</div>
<div class="item ">
<div class="row v-align-children">
<div class="visible-xs text-right">
<img src="/~/media/images/features/carousel/agvs-carousel.ashx" alt="Dematic AGVs">
</div>
<div class="col-lg-6 col-md-6 col-sm-6 mb-xs-24" style="padding-left: 30px;">
<h6 class="mt16 mb8 uppercase"> Lösungen, die Ihre Supply Chain <span style="color:#fdba30">optimieren</span>: </h6>
<h3 class="mb0">Taschensortiersystem</h3>
<h5>Distributions- und Retouren-Aufgaben lösen</h5>
<p>Das Dematic Taschensortiersystem ist ein automatisches Hängesystem auf Rollenadaptern, das sowohl hängende als auch flach verpackte Waren und Kartons gleichzeitig puffern und sortieren kann. Diese vielseitige Funktionalität macht
es ideal für Multichannel-Modehändler, die unterschiedliches Stückgut in einer Bestellung kombinieren möchten. </p>
<p> </p>
<p class="mb0">
<a class="btn btn-filled btn-lg mb16 " href="/de-de/produkte/produktueberblick/haengesysteme/taschen-sorter"> <span class="lastword">Mehr... <i class="icon-sm ti-arrow-circle-right" style="color:#fff; font-size: 16px; vertical-align: -2px; padding-left: 8px"></i></span></a>
<a></a>
</p>
</div>
<div class="col-lg-5 col-lg-offset-1 col-md-6 col-sm-6 text-right hidden-xs">
<img src="/~/media/images/features/carousel/agvs-carousel.ashx" alt="Dematic AGVs">
</div>
</div>
</div>
<div class="item ">
<div class="row v-align-children">
<div class="visible-xs text-right">
<img src="/~/media/images/features/carousel/voice-and-lights-carousel.ashx" alt="Dematic RapidPut Solution">
</div>
<div class="col-lg-6 col-md-6 col-sm-6 mb-xs-24" style="padding-left: 30px;">
<h6 class="mt16 mb8 uppercase"> Lösungen, die Ihre Supply Chain <span style="color:#fdba30">optimieren</span>: </h6>
<h3 class="mb0">Voice-Technologie</h3>
<h5>Erhöhte Produktivität, Genauigkeit und Flexibilität</h5> Dematic Pick-to-Voice-Systeme ermöglichen einen bedeutenden Vorsprung in der Auftragsabwicklung. Indem sie Anweisungen vollständig per Sprache übermitteln, schaffen diese
Systeme konsequent Einsparungen und einen Wettbewerbsvorteil. <p> </p>
<p class="mb0">
<a class="btn btn-filled btn-lg mb16 " href="/de-de/produkte/produktueberblick/kommissioniersysteme"> <span class="lastword">Mehr... <i class="icon-sm ti-arrow-circle-right" style="color:#fff; font-size: 16px; vertical-align: -2px; padding-left: 8px"></i></span></a>
<a></a>
</p>
</div>
<div class="col-lg-5 col-lg-offset-1 col-md-6 col-sm-6 text-right hidden-xs">
<img src="/~/media/images/features/carousel/voice-and-lights-carousel.ashx" alt="Dematic RapidPut Solution">
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Left and right controls -->
<a class="left carousel-control" href="#carousel-d1f22a9c7a3a4544aa960a9edd3b2857" role="button" data-slide="prev">
<span><img src="/Content/img/chev-left.png"></span>
</a>
<a class="right carousel-control" href="#carousel-d1f22a9c7a3a4544aa960a9edd3b2857" role="button" data-slide="next">
<span><img src="/Content/img/chev-right.png"></span>
</a>
</section>
</div>
<div class="festuredcasestudy container-fluid nopad">
<section class="pt0 pb0">
<div class="row visible-xs">
<div class="col-sm-2 col-lg-3 image2 b-lazy" data-src="/~/media/images/news and events/events/ce/pattberg1_tn.ashx" style="height: 200px;">
</div>
</div>
<div class="row row-eq-height">
<!-- <div class="col-sm-2 col-lg-3 image2" style=""> -->
<div class="col-sm-2 col-lg-3 image2 b-lazy" data-src=" /~/media/images/news and events/events/ce/pattberg1_tn.ashx">
</div>
<div class="col-sm-5 col-md-4 col-lg-3 pt64 pb64" style="background-color: #7b9eb8; padding-left: 40px; padding-right: 40px;">
<h6 class="mb8 uppercase" style="color: #fff;"> Ausgewählter Anwenderbericht: </h6>
<h2 class="mb8" style="color: #fff; line-height: 1.1em"> C.E. Pattberg </h2>
<h5 class="mb8" style="color: #fff;"> Die Lösung: </h5>
<p style="color: #fff;"> Während die Waren zuvor in Hochregallagern auf insgesamt 6.000 Quadratmetern Platz fanden, lagert die AutoStore®-Anlage einen Großteil der Artikel nun auf einer Fläche von rund 170 Quadratmetern. </p>
<div class="goto mb0 mt0" style="text-align:left">
<a class="gotolink gotowhite " href="https://pages.dematic.com/assets/view-ung/?map=13&id=2638">Zum <span class="lastword">Anwenderbericht <i class="ti-arrow-circle-right"></i></span></a>
</div>
</div>
<!-- <div class="col-sm-7 col-md-6 image1" style=""> -->
<div class="col-sm-7 col-md-6 image1 b-lazy" data-src="/~/media/images/news and events/events/ce/pattberg1.ashx">
</div>
</div>
</section>
</div>
<style>
.iframe {
height: 1200px;
width: 100%;
resize: both;
overflow: auto;
}
/* Custom, iPhone Retina */
@media only screen and (min-width : 320px) {}
/* Extra Small Devices, Phones */
@media only screen and (min-width : 480px) {
.iframe {
height: 1200px;
}
}
/* Extra Small Devices, Phones */
@media only screen and (min-width : 580px) {
.iframe {
height: 1400px;
}
}
/* Small Devices, Tablets */
@media only screen and (min-width : 768px) {
.iframe {
height: 1600px;
}
}
/* Medium Devices, Desktops */
@media only screen and (min-width : 992px) {
.iframe {
height: 750px;
}
}
/* Large Devices, Wide Screens */
@media only screen and (min-width : 1200px) {
.iframe {
height: 850px;
}
}
</style>
<div class="container-fluid" style="padding:0;padding-bottom: 0px">
<iframe src="https://pages.dematic.com/news-component?map=13" class="iframe" style="margin:0; display:block; padding:0;width:100%;" scrolling="no"></iframe>
</div>
<style>
.playbook {
background: url('/~/media/Images/Features/Event/Feature-Event-MF-c.ashx') left center;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
position: relative;
margin: 0px;
padding: 0px;
height: 540px;
}
.playbookpad {
padding-top: 60px;
padding-bottom: 60px
}
@media (min-width: 768px) {
.playbookpad {
padding-top: 80px;
padding-bottom: 80px
}
}
</style>
<div class="container-fluid nopad" style="background-color: #ededed;">
<section class="image-edge pt0 pb0 pt-xs-0 pb-xs-0">
<div class="row">
<div class="col-md-6 col-sm-4 p0 playbook"></div>
<div class="col-md-5 col-sm-7 playbookpad" style="padding-left: 40px;" title="Micro-Fulfilment Playbook">
<h6 class="mb8 uppercase">Zukunftsorientierte Auftragserfüllung</h6>
<h2 class="mb8" style="line-height: 1.1em;">Warum Micro-Fulfillment die Antwort des Einzelhandels auf die moderne Verbrauchernachfrage ist</h2>
<p class="mb24"> Die Verbraucher kaufen mit 77% höherer Wahrscheinlichkeit in einem Geschäft ein, wenn es eine Lieferung am selben Tag anbietet. Laden Sie unser Playbook herunter, um zu sehen, wie die Micro-Fulfillment eine skalierbare,
profitable Lösung für heutige Lieferanforderungen bieten kann. </p>
<p class="mb0">
<a class="btn btn-filled btn-lg mb16" href="/de-de/loesungen/systemloesungen/microfulfillment"> Mehr über Micro-Fulfillment <em class="icon-sm ti-arrow-circle-right" style="color: #ffffff; font-size: 16px; vertical-align: -2px; padding-left: 8px;"></em></a>
</p>
</div>
</div>
</section>
</div>
<div class="pc-only" align="center">
<!-- Inline Script Include Widget - Begin -->
<script src="{path to script}/responsiveslides.js"></script>
<script>
$(function() {
$(".rslides").responsiveSlides();
});
</script>
<!-- Inline Script Include Widget - End -->
</div>
<div class="pc-only" align="center">
<!-- Inline Script Include Widget - Begin -->
<script>
/*!
* jQuery JavaScript Library v1.5.2
* http://jquery.com/
*
* Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Thu Mar 31 15:28:23 2011 -0400
*/
(function(a, b) {
function ci(a) {
return d.isWindow(a) ? a : a.nodeType === 9 ? a.defaultView || a.parentWindow : !1
}
function cf(a) {
if (!b_[a]) {
var b = d("<" + a + ">").appendTo("body"),
c = b.css("display");
b.remove();
if (c === "none" || c === "") c = "block";
b_[a] = c
}
return b_[a]
}
function ce(a, b) {
var c = {};
d.each(cd.concat.apply([], cd.slice(0, b)), function() {
c[this] = a
});
return c
}
function b$() {
try {
return new a.ActiveXObject("Microsoft.XMLHTTP")
} catch (b) {}
}
function bZ() {
try {
return new a.XMLHttpRequest
} catch (b) {}
}
function bY() {
d(a).unload(function() {
for (var a in bW) bW[a](0, 1)
})
}
function bS(a, c) {
a.dataFilter && (c = a.dataFilter(c, a.dataType));
var e = a.dataTypes,
f = {},
g, h, i = e.length,
j, k = e[0],
l, m, n, o, p;
for (g = 1; g < i; g++) {
if (g === 1)
for (h in a.converters) typeof h === "string" && (f[h.toLowerCase()] = a.converters[h]);
l = k, k = e[g];
if (k === "*") k = l;
else if (l !== "*" && l !== k) {
m = l + " " + k, n = f[m] || f["* " + k];
if (!n) {
p = b;
for (o in f) {
j = o.split(" ");
if (j[0] === l || j[0] === "*") {
p = f[j[1] + " " + k];
if (p) {
o = f[o], o === !0 ? n = p : p === !0 && (n = o);
break
}
}
}
}!n && !p && d.error("No conversion from " + m.replace(" ", " to ")), n !== !0 && (c = n ? n(c) : p(o(c)))
}
}
return c
}
function bR(a, c, d) {
var e = a.contents,
f = a.dataTypes,
g = a.responseFields,
h, i, j, k;
for (i in g) i in d && (c[g[i]] = d[i]);
while (f[0] === "*") f.shift(), h === b && (h = a.mimeType || c.getResponseHeader("content-type"));
if (h)
for (i in e)
if (e[i] && e[i].test(h)) {
f.unshift(i);
break
} if (f[0] in d) j = f[0];
else {
for (i in d) {
if (!f[0] || a.converters[i + " " + f[0]]) {
j = i;
break
}
k || (k = i)
}
j = j || k
}
if (j) {
j !== f[0] && f.unshift(j);
return d[j]
}
}
function bQ(a, b, c, e) {
if (d.isArray(b) && b.length) d.each(b, function(b, f) {
c || bs.test(a) ? e(a, f) : bQ(a + "[" + (typeof f === "object" || d.isArray(f) ? b : "") + "]", f, c, e)
});
else if (c || b == null || typeof b !== "object") e(a, b);
else if (d.isArray(b) || d.isEmptyObject(b)) e(a, "");
else
for (var f in b) bQ(a + "[" + f + "]", b[f], c, e)
}
function bP(a, c, d, e, f, g) {
f = f || c.dataTypes[0], g = g || {}, g[f] = !0;
var h = a[f],
i = 0,
j = h ? h.length : 0,
k = a === bJ,
l;
for (; i < j && (k || !l); i++) l = h[i](c, d, e), typeof l === "string" && (!k || g[l] ? l = b : (c.dataTypes.unshift(l), l = bP(a, c, d, e, l, g)));
(k || !l) && !g["*"] && (l = bP(a, c, d, e, "*", g));
return l
}
function bO(a) {
return function(b, c) {
typeof b !== "string" && (c = b, b = "*");
if (d.isFunction(c)) {
var e = b.toLowerCase().split(bD),
f = 0,
g = e.length,
h, i, j;
for (; f < g; f++) h = e[f], j = /^\+/.test(h), j && (h = h.substr(1) || "*"), i = a[h] = a[h] || [], i[j ? "unshift" : "push"](c)
}
}
}
function bq(a, b, c) {
var e = b === "width" ? bk : bl,
f = b === "width" ? a.offsetWidth : a.offsetHeight;
if (c === "border") return f;
d.each(e, function() {
c || (f -= parseFloat(d.css(a, "padding" + this)) || 0), c === "margin" ? f += parseFloat(d.css(a, "margin" + this)) || 0 : f -= parseFloat(d.css(a, "border" + this + "Width")) || 0
});
return f
}
function bc(a, b) {
b.src ? d.ajax({
url: b.src,
async: !1,
dataType: "script"
}) : d.globalEval(b.text || b.textContent || b.innerHTML || ""), b.parentNode && b.parentNode.removeChild(b)
}
function bb(a) {
return "getElementsByTagName" in a ? a.getElementsByTagName("*") : "querySelectorAll" in a ? a.querySelectorAll("*") : []
}
function ba(a, b) {
if (b.nodeType === 1) {
var c = b.nodeName.toLowerCase();
b.clearAttributes(), b.mergeAttributes(a);
if (c === "object") b.outerHTML = a.outerHTML;
else if (c !== "input" || a.type !== "checkbox" && a.type !== "radio") {
if (c === "option") b.selected = a.defaultSelected;
else if (c === "input" || c === "textarea") b.defaultValue = a.defaultValue
} else a.checked && (b.defaultChecked = b.checked = a.checked), b.value !== a.value && (b.value = a.value);
b.removeAttribute(d.expando)
}
}
function _(a, b) {
if (b.nodeType === 1 && d.hasData(a)) {
var c = d.expando,
e = d.data(a),
f = d.data(b, e);
if (e = e[c]) {
var g = e.events;
f = f[c] = d.extend({}, e);
if (g) {
delete f.handle, f.events = {};
for (var h in g)
for (var i = 0, j = g[h].length; i < j; i++) d.event.add(b, h + (g[h][i].namespace ? "." : "") + g[h][i].namespace, g[h][i], g[h][i].data)
}
}
}
}
function $(a, b) {
return d.nodeName(a, "table") ? a.getElementsByTagName("tbody")[0] || a.appendChild(a.ownerDocument.createElement("tbody")) : a
}
function Q(a, b, c) {
if (d.isFunction(b)) return d.grep(a, function(a, d) {
var e = !!b.call(a, d, a);
return e === c
});
if (b.nodeType) return d.grep(a, function(a, d) {
return a === b === c
});
if (typeof b === "string") {
var e = d.grep(a, function(a) {
return a.nodeType === 1
});
if (L.test(b)) return d.filter(b, e, !c);
b = d.filter(b, e)
}
return d.grep(a, function(a, e) {
return d.inArray(a, b) >= 0 === c
})
}
function P(a) {
return !a || !a.parentNode || a.parentNode.nodeType === 11
}
function H(a, b) {
return (a && a !== "*" ? a + "." : "") + b.replace(t, "`").replace(u, "&")
}
function G(a) {
var b, c, e, f, g, h, i, j, k, l, m, n, o, p = [],
q = [],
s = d._data(this, "events");
if (a.liveFired !== this && s && s.live && !a.target.disabled && (!a.button || a.type !== "click")) {
a.namespace && (n = new RegExp("(^|\\.)" + a.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)")), a.liveFired = this;
var t = s.live.slice(0);
for (i = 0; i < t.length; i++) g = t[i], g.origType.replace(r, "") === a.type ? q.push(g.selector) : t.splice(i--, 1);
f = d(a.target).closest(q, a.currentTarget);
for (j = 0, k = f.length; j < k; j++) {
m = f[j];
for (i = 0; i < t.length; i++) {
g = t[i];
if (m.selector === g.selector && (!n || n.test(g.namespace)) && !m.elem.disabled) {
h = m.elem, e = null;
if (g.preType === "mouseenter" || g.preType === "mouseleave") a.type = g.preType, e = d(a.relatedTarget).closest(g.selector)[0];
(!e || e !== h) && p.push({
elem: h,
handleObj: g,
level: m.level
})
}
}
}
for (j = 0, k = p.length; j < k; j++) {
f = p[j];
if (c && f.level > c) break;
a.currentTarget = f.elem, a.data = f.handleObj.data, a.handleObj = f.handleObj, o = f.handleObj.origHandler.apply(f.elem, arguments);
if (o === !1 || a.isPropagationStopped()) {
c = f.level, o === !1 && (b = !1);
if (a.isImmediatePropagationStopped()) break
}
}
return b
}
}
function E(a, c, e) {
var f = d.extend({}, e[0]);
f.type = a, f.originalEvent = {}, f.liveFired = b, d.event.handle.call(c, f), f.isDefaultPrevented() && e[0].preventDefault()
}
function y() {
return !0
}
function x() {
return !1
}
function i(a) {
for (var b in a)
if (b !== "toJSON") return !1;
return !0
}
function h(a, c, e) {
if (e === b && a.nodeType === 1) {
e = a.getAttribute("data-" + c);
if (typeof e === "string") {
try {
e = e === "true" ? !0 : e === "false" ? !1 : e === "null" ? null : d.isNaN(e) ? g.test(e) ? d.parseJSON(e) : e : parseFloat(e)
} catch (f) {}
d.data(a, c, e)
} else e = b
}
return e
}
var c = a.document,
d = function() {
function G() {
if (!d.isReady) {
try {
c.documentElement.doScroll("left")
} catch (a) {
setTimeout(G, 1);
return
}
d.ready()
}
}
var d = function(a, b) {
return new d.fn.init(a, b, g)
},
e = a.jQuery,
f = a.$,
g, h = /^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,
i = /\S/,
j = /^\s+/,
k = /\s+$/,
l = /\d/,
m = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
n = /^[\],:{}\s]*$/,
o = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
p = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
q = /(?:^|:|,)(?:\s*\[)+/g,
r = /(webkit)[ \/]([\w.]+)/,
s = /(opera)(?:.*version)?[ \/]([\w.]+)/,
t = /(msie) ([\w.]+)/,
u = /(mozilla)(?:.*? rv:([\w.]+))?/,
v = navigator.userAgent,
w, x, y, z = Object.prototype.toString,
A = Object.prototype.hasOwnProperty,
B = Array.prototype.push,
C = Array.prototype.slice,
D = String.prototype.trim,
E = Array.prototype.indexOf,
F = {};
d.fn = d.prototype = {
constructor: d,
init: function(a, e, f) {
var g, i, j, k;
if (!a) return this;
if (a.nodeType) {
this.context = this[0] = a, this.length = 1;
return this
}
if (a === "body" && !e && c.body) {
this.context = c, this[0] = c.body, this.selector = "body", this.length = 1;
return this
}
if (typeof a === "string") {
g = h.exec(a);
if (!g || !g[1] && e) return !e || e.jquery ? (e || f).find(a) : this.constructor(e).find(a);
if (g[1]) {
e = e instanceof d ? e[0] : e, k = e ? e.ownerDocument || e : c, j = m.exec(a), j ? d.isPlainObject(e) ? (a = [c.createElement(j[1])], d.fn.attr.call(a, e, !0)) : a = [k.createElement(j[1])] : (j = d.buildFragment([g[1]], [
k]), a = (j.cacheable ? d.clone(j.fragment) : j.fragment).childNodes);
return d.merge(this, a)
}
i = c.getElementById(g[2]);
if (i && i.parentNode) {
if (i.id !== g[2]) return f.find(a);
this.length = 1, this[0] = i
}
this.context = c, this.selector = a;
return this
}
if (d.isFunction(a)) return f.ready(a);
a.selector !== b && (this.selector = a.selector, this.context = a.context);
return d.makeArray(a, this)
},
selector: "",
jquery: "1.5.2",
length: 0,
size: function() {
return this.length
},
toArray: function() {
return C.call(this, 0)
},
get: function(a) {
return a == null ? this.toArray() : a < 0 ? this[this.length + a] : this[a]
},
pushStack: function(a, b, c) {
var e = this.constructor();
d.isArray(a) ? B.apply(e, a) : d.merge(e, a), e.prevObject = this, e.context = this.context, b === "find" ? e.selector = this.selector + (this.selector ? " " : "") + c : b && (e.selector = this.selector + "." + b + "(" + c +
")");
return e
},
each: function(a, b) {
return d.each(this, a, b)
},
ready: function(a) {
d.bindReady(), x.done(a);
return this
},
eq: function(a) {
return a === -1 ? this.slice(a) : this.slice(a, +a + 1)
},
first: function() {
return this.eq(0)
},
last: function() {
return this.eq(-1)
},
slice: function() {
return this.pushStack(C.apply(this, arguments), "slice", C.call(arguments).join(","))
},
map: function(a) {
return this.pushStack(d.map(this, function(b, c) {
return a.call(b, c, b)
}))
},
end: function() {
return this.prevObject || this.constructor(null)
},
push: B,
sort: [].sort,
splice: [].splice
}, d.fn.init.prototype = d.fn, d.extend = d.fn.extend = function() {
var a, c, e, f, g, h, i = arguments[0] || {},
j = 1,
k = arguments.length,
l = !1;
typeof i === "boolean" && (l = i, i = arguments[1] || {}, j = 2), typeof i !== "object" && !d.isFunction(i) && (i = {}), k === j && (i = this, --j);
for (; j < k; j++)
if ((a = arguments[j]) != null)
for (c in a) {
e = i[c], f = a[c];
if (i === f) continue;
l && f && (d.isPlainObject(f) || (g = d.isArray(f))) ? (g ? (g = !1, h = e && d.isArray(e) ? e : []) : h = e && d.isPlainObject(e) ? e : {}, i[c] = d.extend(l, h, f)) : f !== b && (i[c] = f)
}
return i
}, d.extend({
noConflict: function(b) {
a.$ = f, b && (a.jQuery = e);
return d
},
isReady: !1,
readyWait: 1,
ready: function(a) {
a === !0 && d.readyWait--;
if (!d.readyWait || a !== !0 && !d.isReady) {
if (!c.body) return setTimeout(d.ready, 1);
d.isReady = !0;
if (a !== !0 && --d.readyWait > 0) return;
x.resolveWith(c, [d]), d.fn.trigger && d(c).trigger("ready").unbind("ready")
}
},
bindReady: function() {
if (!x) {
x = d._Deferred();
if (c.readyState === "complete") return setTimeout(d.ready, 1);
if (c.addEventListener) c.addEventListener("DOMContentLoaded", y, !1), a.addEventListener("load", d.ready, !1);
else if (c.attachEvent) {
c.attachEvent("onreadystatechange", y), a.attachEvent("onload", d.ready);
var b = !1;
try {
b = a.frameElement == null
} catch (e) {}
c.documentElement.doScroll && b && G()
}
}
},
isFunction: function(a) {
return d.type(a) === "function"
},
isArray: Array.isArray || function(a) {
return d.type(a) === "array"
},
isWindow: function(a) {
return a && typeof a === "object" && "setInterval" in a
},
isNaN: function(a) {
return a == null || !l.test(a) || isNaN(a)
},
type: function(a) {
return a == null ? String(a) : F[z.call(a)] || "object"
},
isPlainObject: function(a) {
if (!a || d.type(a) !== "object" || a.nodeType || d.isWindow(a)) return !1;
if (a.constructor && !A.call(a, "constructor") && !A.call(a.constructor.prototype, "isPrototypeOf")) return !1;
var c;
for (c in a) {}
return c === b || A.call(a, c)
},
isEmptyObject: function(a) {
for (var b in a) return !1;
return !0
},
error: function(a) {
throw a
},
parseJSON: function(b) {
if (typeof b !== "string" || !b) return null;
b = d.trim(b);
if (n.test(b.replace(o, "@").replace(p, "]").replace(q, ""))) return a.JSON && a.JSON.parse ? a.JSON.parse(b) : (new Function("return " + b))();
d.error("Invalid JSON: " + b)
},
parseXML: function(b, c, e) {
a.DOMParser ? (e = new DOMParser, c = e.parseFromString(b, "text/xml")) : (c = new ActiveXObject("Microsoft.XMLDOM"), c.async = "false", c.loadXML(b)), e = c.documentElement, (!e || !e.nodeName || e.nodeName ===
"parsererror") && d.error("Invalid XML: " + b);
return c
},
noop: function() {},
globalEval: function(a) {
if (a && i.test(a)) {
var b = c.head || c.getElementsByTagName("head")[0] || c.documentElement,
e = c.createElement("script");
d.support.scriptEval() ? e.appendChild(c.createTextNode(a)) : e.text = a, b.insertBefore(e, b.firstChild), b.removeChild(e)
}
},
nodeName: function(a, b) {
return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase()
},
each: function(a, c, e) {
var f, g = 0,
h = a.length,
i = h === b || d.isFunction(a);
if (e) {
if (i) {
for (f in a)
if (c.apply(a[f], e) === !1) break
} else
for (; g < h;)
if (c.apply(a[g++], e) === !1) break
} else if (i) {
for (f in a)
if (c.call(a[f], f, a[f]) === !1) break
} else
for (var j = a[0]; g < h && c.call(j, g, j) !== !1; j = a[++g]) {}
return a
},
trim: D ? function(a) {
return a == null ? "" : D.call(a)
} : function(a) {
return a == null ? "" : (a + "").replace(j, "").replace(k, "")
},
makeArray: function(a, b) {
var c = b || [];
if (a != null) {
var e = d.type(a);
a.length == null || e === "string" || e === "function" || e === "regexp" || d.isWindow(a) ? B.call(c, a) : d.merge(c, a)
}
return c
},
inArray: function(a, b) {
if (b.indexOf) return b.indexOf(a);
for (var c = 0, d = b.length; c < d; c++)
if (b[c] === a) return c;
return -1
},
merge: function(a, c) {
var d = a.length,
e = 0;
if (typeof c.length === "number")
for (var f = c.length; e < f; e++) a[d++] = c[e];
else
while (c[e] !== b) a[d++] = c[e++];
a.length = d;
return a
},
grep: function(a, b, c) {
var d = [],
e;
c = !!c;
for (var f = 0, g = a.length; f < g; f++) e = !!b(a[f], f), c !== e && d.push(a[f]);
return d
},
map: function(a, b, c) {
var d = [],
e;
for (var f = 0, g = a.length; f < g; f++) e = b(a[f], f, c), e != null && (d[d.length] = e);
return d.concat.apply([], d)
},
guid: 1,
proxy: function(a, c, e) {
arguments.length === 2 && (typeof c === "string" ? (e = a, a = e[c], c = b) : c && !d.isFunction(c) && (e = c, c = b)), !c && a && (c = function() {
return a.apply(e || this, arguments)
}), a && (c.guid = a.guid = a.guid || c.guid || d.guid++);
return c
},
access: function(a, c, e, f, g, h) {
var i = a.length;
if (typeof c === "object") {
for (var j in c) d.access(a, j, c[j], f, g, e);
return a
}
if (e !== b) {
f = !h && f && d.isFunction(e);
for (var k = 0; k < i; k++) g(a[k], c, f ? e.call(a[k], k, g(a[k], c)) : e, h);
return a
}
return i ? g(a[0], c) : b
},
now: function() {
return (new Date).getTime()
},
uaMatch: function(a) {
a = a.toLowerCase();
var b = r.exec(a) || s.exec(a) || t.exec(a) || a.indexOf("compatible") < 0 && u.exec(a) || [];
return {
browser: b[1] || "",
version: b[2] || "0"
}
},
sub: function() {
function a(b, c) {
return new a.fn.init(b, c)
}
d.extend(!0, a, this), a.superclass = this, a.fn = a.prototype = this(), a.fn.constructor = a, a.subclass = this.subclass, a.fn.init = function b(b, c) {
c && c instanceof d && !(c instanceof a) && (c = a(c));
return d.fn.init.call(this, b, c, e)
}, a.fn.init.prototype = a.fn;
var e = a(c);
return a
},
browser: {}
}), d.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(a, b) {
F["[object " + b + "]"] = b.toLowerCase()
}), w = d.uaMatch(v), w.browser && (d.browser[w.browser] = !0, d.browser.version = w.version), d.browser.webkit && (d.browser.safari = !0), E && (d.inArray = function(a, b) {
return E.call(b, a)
}), i.test(" ") && (j = /^[\s\xA0]+/, k = /[\s\xA0]+$/), g = d(c), c.addEventListener ? y = function() {
c.removeEventListener("DOMContentLoaded", y, !1), d.ready()
} : c.attachEvent && (y = function() {
c.readyState === "complete" && (c.detachEvent("onreadystatechange", y), d.ready())
});
return d
}(),
e = "then done fail isResolved isRejected promise".split(" "),
f = [].slice;
d.extend({
_Deferred: function() {
var a = [],
b, c, e, f = {
done: function() {
if (!e) {
var c = arguments,
g, h, i, j, k;
b && (k = b, b = 0);
for (g = 0, h = c.length; g < h; g++) i = c[g], j = d.type(i), j === "array" ? f.done.apply(f, i) : j === "function" && a.push(i);
k && f.resolveWith(k[0], k[1])
}
return this
},
resolveWith: function(d, f) {
if (!e && !b && !c) {
f = f || [], c = 1;
try {
while (a[0]) a.shift().apply(d, f)
} finally {
b = [d, f], c = 0
}
}
return this
},
resolve: function() {
f.resolveWith(this, arguments);
return this
},
isResolved: function() {
return c || b
},
cancel: function() {
e = 1, a = [];
return this
}
};
return f
},
Deferred: function(a) {
var b = d._Deferred(),
c = d._Deferred(),
f;
d.extend(b, {
then: function(a, c) {
b.done(a).fail(c);
return this
},
fail: c.done,
rejectWith: c.resolveWith,
reject: c.resolve,
isRejected: c.isResolved,
promise: function(a) {
if (a == null) {
if (f) return f;
f = a = {}
}
var c = e.length;
while (c--) a[e[c]] = b[e[c]];
return a
}
}), b.done(c.cancel).fail(b.cancel), delete b.cancel, a && a.call(b, b);
return b
},
when: function(a) {
function i(a) {
return function(c) {
b[a] = arguments.length > 1 ? f.call(arguments, 0) : c, --g || h.resolveWith(h, f.call(b, 0))
}
}
var b = arguments,
c = 0,
e = b.length,
g = e,
h = e <= 1 && a && d.isFunction(a.promise) ? a : d.Deferred();
if (e > 1) {
for (; c < e; c++) b[c] && d.isFunction(b[c].promise) ? b[c].promise().then(i(c), h.reject) : --g;
g || h.resolveWith(h, b)
} else h !== a && h.resolveWith(h, e ? [a] : []);
return h.promise()
}
}),
function() {
d.support = {};
var b = c.createElement("div");
b.style.display = "none", b.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e = b.getElementsByTagName("*"),
f = b.getElementsByTagName("a")[0],
g = c.createElement("select"),
h = g.appendChild(c.createElement("option")),
i = b.getElementsByTagName("input")[0];
if (e && e.length && f) {
d.support = {
leadingWhitespace: b.firstChild.nodeType === 3,
tbody: !b.getElementsByTagName("tbody").length,
htmlSerialize: !!b.getElementsByTagName("link").length,
style: /red/.test(f.getAttribute("style")),
hrefNormalized: f.getAttribute("href") === "/a",
opacity: /^0.55$/.test(f.style.opacity),
cssFloat: !!f.style.cssFloat,
checkOn: i.value === "on",
optSelected: h.selected,
deleteExpando: !0,
optDisabled: !1,
checkClone: !1,
noCloneEvent: !0,
noCloneChecked: !0,
boxModel: null,
inlineBlockNeedsLayout: !1,
shrinkWrapBlocks: !1,
reliableHiddenOffsets: !0,
reliableMarginRight: !0
}, i.checked = !0, d.support.noCloneChecked = i.cloneNode(!0).checked, g.disabled = !0, d.support.optDisabled = !h.disabled;
var j = null;
d.support.scriptEval = function() {
if (j === null) {
var b = c.documentElement,
e = c.createElement("script"),
f = "script" + d.now();
try {
e.appendChild(c.createTextNode("window." + f + "=1;"))
} catch (g) {}
b.insertBefore(e, b.firstChild), a[f] ? (j = !0, delete a[f]) : j = !1, b.removeChild(e)
}
return j
};
try {
delete b.test
} catch (k) {
d.support.deleteExpando = !1
}!b.addEventListener && b.attachEvent && b.fireEvent && (b.attachEvent("onclick", function l() {
d.support.noCloneEvent = !1, b.detachEvent("onclick", l)
}), b.cloneNode(!0).fireEvent("onclick")), b = c.createElement("div"), b.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
var m = c.createDocumentFragment();
m.appendChild(b.firstChild), d.support.checkClone = m.cloneNode(!0).cloneNode(!0).lastChild.checked, d(function() {
var a = c.createElement("div"),
b = c.getElementsByTagName("body")[0];
if (b) {
a.style.width = a.style.paddingLeft = "1px", b.appendChild(a), d.boxModel = d.support.boxModel = a.offsetWidth === 2, "zoom" in a.style && (a.style.display = "inline", a.style.zoom = 1, d.support.inlineBlockNeedsLayout = a
.offsetWidth === 2, a.style.display = "", a.innerHTML = "<div style='width:4px;'></div>", d.support.shrinkWrapBlocks = a.offsetWidth !== 2), a.innerHTML =
"<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
var e = a.getElementsByTagName("td");
d.support.reliableHiddenOffsets = e[0].offsetHeight === 0, e[0].style.display = "", e[1].style.display = "none", d.support.reliableHiddenOffsets = d.support.reliableHiddenOffsets && e[0].offsetHeight === 0, a.innerHTML = "", c
.defaultView && c.defaultView.getComputedStyle && (a.style.width = "1px", a.style.marginRight = "0", d.support.reliableMarginRight = (parseInt(c.defaultView.getComputedStyle(a, null).marginRight, 10) || 0) === 0), b
.removeChild(a).style.display = "none", a = e = null
}
});
var n = function(a) {
var b = c.createElement("div");
a = "on" + a;
if (!b.attachEvent) return !0;
var d = a in b;
d || (b.setAttribute(a, "return;"), d = typeof b[a] === "function");
return d
};
d.support.submitBubbles = n("submit"), d.support.changeBubbles = n("change"), b = e = f = null
}
}();
var g = /^(?:\{.*\}|\[.*\])$/;
d.extend({
cache: {},
uuid: 0,
expando: "jQuery" + (d.fn.jquery + Math.random()).replace(/\D/g, ""),
noData: {
embed: !0,
object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
applet: !0
},
hasData: function(a) {
a = a.nodeType ? d.cache[a[d.expando]] : a[d.expando];
return !!a && !i(a)
},
data: function(a, c, e, f) {
if (d.acceptData(a)) {
var g = d.expando,
h = typeof c === "string",
i, j = a.nodeType,
k = j ? d.cache : a,
l = j ? a[d.expando] : a[d.expando] && d.expando;
if ((!l || f && l && !k[l][g]) && h && e === b) return;
l || (j ? a[d.expando] = l = ++d.uuid : l = d.expando), k[l] || (k[l] = {}, j || (k[l].toJSON = d.noop));
if (typeof c === "object" || typeof c === "function") f ? k[l][g] = d.extend(k[l][g], c) : k[l] = d.extend(k[l], c);
i = k[l], f && (i[g] || (i[g] = {}), i = i[g]), e !== b && (i[c] = e);
if (c === "events" && !i[c]) return i[g] && i[g].events;
return h ? i[c] : i
}
},
removeData: function(b, c, e) {
if (d.acceptData(b)) {
var f = d.expando,
g = b.nodeType,
h = g ? d.cache : b,
j = g ? b[d.expando] : d.expando;
if (!h[j]) return;
if (c) {
var k = e ? h[j][f] : h[j];
if (k) {
delete k[c];
if (!i(k)) return
}
}
if (e) {
delete h[j][f];
if (!i(h[j])) return
}
var l = h[j][f];
d.support.deleteExpando || h != a ? delete h[j] : h[j] = null, l ? (h[j] = {}, g || (h[j].toJSON = d.noop), h[j][f] = l) : g && (d.support.deleteExpando ? delete b[d.expando] : b.removeAttribute ? b.removeAttribute(d.expando) :
b[d.expando] = null)
}
},
_data: function(a, b, c) {
return d.data(a, b, c, !0)
},
acceptData: function(a) {
if (a.nodeName) {
var b = d.noData[a.nodeName.toLowerCase()];
if (b) return b !== !0 && a.getAttribute("classid") === b
}
return !0
}
}), d.fn.extend({
data: function(a, c) {
var e = null;
if (typeof a === "undefined") {
if (this.length) {
e = d.data(this[0]);
if (this[0].nodeType === 1) {
var f = this[0].attributes,
g;
for (var i = 0, j = f.length; i < j; i++) g = f[i].name, g.indexOf("data-") === 0 && (g = g.substr(5), h(this[0], g, e[g]))
}
}
return e
}
if (typeof a === "object") return this.each(function() {
d.data(this, a)
});
var k = a.split(".");
k[1] = k[1] ? "." + k[1] : "";
if (c === b) {
e = this.triggerHandler("getData" + k[1] + "!", [k[0]]), e === b && this.length && (e = d.data(this[0], a), e = h(this[0], a, e));
return e === b && k[1] ? this.data(k[0]) : e
}
return this.each(function() {
var b = d(this),
e = [k[0], c];
b.triggerHandler("setData" + k[1] + "!", e), d.data(this, a, c), b.triggerHandler("changeData" + k[1] + "!", e)
})
},
removeData: function(a) {
return this.each(function() {
d.removeData(this, a)
})
}
}), d.extend({
queue: function(a, b, c) {
if (a) {
b = (b || "fx") + "queue";
var e = d._data(a, b);
if (!c) return e || [];
!e || d.isArray(c) ? e = d._data(a, b, d.makeArray(c)) : e.push(c);
return e
}
},
dequeue: function(a, b) {
b = b || "fx";
var c = d.queue(a, b),
e = c.shift();
e === "inprogress" && (e = c.shift()), e && (b === "fx" && c.unshift("inprogress"), e.call(a, function() {
d.dequeue(a, b)
})), c.length || d.removeData(a, b + "queue", !0)
}
}), d.fn.extend({
queue: function(a, c) {
typeof a !== "string" && (c = a, a = "fx");
if (c === b) return d.queue(this[0], a);
return this.each(function(b) {
var e = d.queue(this, a, c);
a === "fx" && e[0] !== "inprogress" && d.dequeue(this, a)
})
},
dequeue: function(a) {
return this.each(function() {
d.dequeue(this, a)
})
},
delay: function(a, b) {
a = d.fx ? d.fx.speeds[a] || a : a, b = b || "fx";
return this.queue(b, function() {
var c = this;
setTimeout(function() {
d.dequeue(c, b)
}, a)
})
},
clearQueue: function(a) {
return this.queue(a || "fx", [])
}
});
var j = /[\n\t\r]/g,
k = /\s+/,
l = /\r/g,
m = /^(?:href|src|style)$/,
n = /^(?:button|input)$/i,
o = /^(?:button|input|object|select|textarea)$/i,
p = /^a(?:rea)?$/i,
q = /^(?:radio|checkbox)$/i;
d.props = {
"for": "htmlFor",
"class": "className",
readonly: "readOnly",
maxlength: "maxLength",
cellspacing: "cellSpacing",
rowspan: "rowSpan",
colspan: "colSpan",
tabindex: "tabIndex",
usemap: "useMap",
frameborder: "frameBorder"
}, d.fn.extend({
attr: function(a, b) {
return d.access(this, a, b, !0, d.attr)
},
removeAttr: function(a, b) {
return this.each(function() {
d.attr(this, a, ""), this.nodeType === 1 && this.removeAttribute(a)
})
},
addClass: function(a) {
if (d.isFunction(a)) return this.each(function(b) {
var c = d(this);
c.addClass(a.call(this, b, c.attr("class")))
});
if (a && typeof a === "string") {
var b = (a || "").split(k);
for (var c = 0, e = this.length; c < e; c++) {
var f = this[c];
if (f.nodeType === 1)
if (f.className) {
var g = " " + f.className + " ",
h = f.className;
for (var i = 0, j = b.length; i < j; i++) g.indexOf(" " + b[i] + " ") < 0 && (h += " " + b[i]);
f.className = d.trim(h)
} else f.className = a
}
}
return this
},
removeClass: function(a) {
if (d.isFunction(a)) return this.each(function(b) {
var c = d(this);
c.removeClass(a.call(this, b, c.attr("class")))
});
if (a && typeof a === "string" || a === b) {
var c = (a || "").split(k);
for (var e = 0, f = this.length; e < f; e++) {
var g = this[e];
if (g.nodeType === 1 && g.className)
if (a) {
var h = (" " + g.className + " ").replace(j, " ");
for (var i = 0, l = c.length; i < l; i++) h = h.replace(" " + c[i] + " ", " ");
g.className = d.trim(h)
} else g.className = ""
}
}
return this
},
toggleClass: function(a, b) {
var c = typeof a,
e = typeof b === "boolean";
if (d.isFunction(a)) return this.each(function(c) {
var e = d(this);
e.toggleClass(a.call(this, c, e.attr("class"), b), b)
});
return this.each(function() {
if (c === "string") {
var f, g = 0,
h = d(this),
i = b,
j = a.split(k);
while (f = j[g++]) i = e ? i : !h.hasClass(f), h[i ? "addClass" : "removeClass"](f)
} else if (c === "undefined" || c === "boolean") this.className && d._data(this, "__className__", this.className), this.className = this.className || a === !1 ? "" : d._data(this, "__className__") || ""
})
},
hasClass: function(a) {
var b = " " + a + " ";
for (var c = 0, d = this.length; c < d; c++)
if ((" " + this[c].className + " ").replace(j, " ").indexOf(b) > -1) return !0;
return !1
},
val: function(a) {
if (!arguments.length) {
var c = this[0];
if (c) {
if (d.nodeName(c, "option")) {
var e = c.attributes.value;
return !e || e.specified ? c.value : c.text
}
if (d.nodeName(c, "select")) {
var f = c.selectedIndex,
g = [],
h = c.options,
i = c.type === "select-one";
if (f < 0) return null;
for (var j = i ? f : 0, k = i ? f + 1 : h.length; j < k; j++) {
var m = h[j];
if (m.selected && (d.support.optDisabled ? !m.disabled : m.getAttribute("disabled") === null) && (!m.parentNode.disabled || !d.nodeName(m.parentNode, "optgroup"))) {
a = d(m).val();
if (i) return a;
g.push(a)
}
}
if (i && !g.length && h.length) return d(h[f]).val();
return g
}
if (q.test(c.type) && !d.support.checkOn) return c.getAttribute("value") === null ? "on" : c.value;
return (c.value || "").replace(l, "")
}
return b
}
var n = d.isFunction(a);
return this.each(function(b) {
var c = d(this),
e = a;
if (this.nodeType === 1) {
n && (e = a.call(this, b, c.val())), e == null ? e = "" : typeof e === "number" ? e += "" : d.isArray(e) && (e = d.map(e, function(a) {
return a == null ? "" : a + ""
}));
if (d.isArray(e) && q.test(this.type)) this.checked = d.inArray(c.val(), e) >= 0;
else if (d.nodeName(this, "select")) {
var f = d.makeArray(e);
d("option", this).each(function() {
this.selected = d.inArray(d(this).val(), f) >= 0
}), f.length || (this.selectedIndex = -1)
} else this.value = e
}
})
}
}), d.extend({
attrFn: {
val: !0,
css: !0,
html: !0,
text: !0,
data: !0,
width: !0,
height: !0,
offset: !0
},
attr: function(a, c, e, f) {
if (!a || a.nodeType === 3 || a.nodeType === 8 || a.nodeType === 2) return b;
if (f && c in d.attrFn) return d(a)[c](e);
var g = a.nodeType !== 1 || !d.isXMLDoc(a),
h = e !== b;
c = g && d.props[c] || c;
if (a.nodeType === 1) {
var i = m.test(c);
if (c === "selected" && !d.support.optSelected) {
var j = a.parentNode;
j && (j.selectedIndex, j.parentNode && j.parentNode.selectedIndex)
}
if ((c in a || a[c] !== b) && g && !i) {
h && (c === "type" && n.test(a.nodeName) && a.parentNode && d.error("type property can't be changed"), e === null ? a.nodeType === 1 && a.removeAttribute(c) : a[c] = e);
if (d.nodeName(a, "form") && a.getAttributeNode(c)) return a.getAttributeNode(c).nodeValue;
if (c === "tabIndex") {
var k = a.getAttributeNode("tabIndex");
return k && k.specified ? k.value : o.test(a.nodeName) || p.test(a.nodeName) && a.href ? 0 : b
}
return a[c]
}
if (!d.support.style && g && c === "style") {
h && (a.style.cssText = "" + e);
return a.style.cssText
}
h && a.setAttribute(c, "" + e);
if (!a.attributes[c] && (a.hasAttribute && !a.hasAttribute(c))) return b;
var l = !d.support.hrefNormalized && g && i ? a.getAttribute(c, 2) : a.getAttribute(c);
return l === null ? b : l
}
h && (a[c] = e);
return a[c]
}
});
var r = /\.(.*)$/,
s = /^(?:textarea|input|select)$/i,
t = /\./g,
u = / /g,
v = /[^\w\s.|`]/g,
w = function(a) {
return a.replace(v, "\\$&")
};
d.event = {
add: function(c, e, f, g) {
if (c.nodeType !== 3 && c.nodeType !== 8) {
try {
d.isWindow(c) && (c !== a && !c.frameElement) && (c = a)
} catch (h) {}
if (f === !1) f = x;
else if (!f) return;
var i, j;
f.handler && (i = f, f = i.handler), f.guid || (f.guid = d.guid++);
var k = d._data(c);
if (!k) return;
var l = k.events,
m = k.handle;
l || (k.events = l = {}), m || (k.handle = m = function(a) {
return typeof d !== "undefined" && d.event.triggered !== a.type ? d.event.handle.apply(m.elem, arguments) : b
}), m.elem = c, e = e.split(" ");
var n, o = 0,
p;
while (n = e[o++]) {
j = i ? d.extend({}, i) : {
handler: f,
data: g
}, n.indexOf(".") > -1 ? (p = n.split("."), n = p.shift(), j.namespace = p.slice(0).sort().join(".")) : (p = [], j.namespace = ""), j.type = n, j.guid || (j.guid = f.guid);
var q = l[n],
r = d.event.special[n] || {};
if (!q) {
q = l[n] = [];
if (!r.setup || r.setup.call(c, g, p, m) === !1) c.addEventListener ? c.addEventListener(n, m, !1) : c.attachEvent && c.attachEvent("on" + n, m)
}
r.add && (r.add.call(c, j), j.handler.guid || (j.handler.guid = f.guid)), q.push(j), d.event.global[n] = !0
}
c = null
}
},
global: {},
remove: function(a, c, e, f) {
if (a.nodeType !== 3 && a.nodeType !== 8) {
e === !1 && (e = x);
var g, h, i, j, k = 0,
l, m, n, o, p, q, r, s = d.hasData(a) && d._data(a),
t = s && s.events;
if (!s || !t) return;
c && c.type && (e = c.handler, c = c.type);
if (!c || typeof c === "string" && c.charAt(0) === ".") {
c = c || "";
for (h in t) d.event.remove(a, h + c);
return
}
c = c.split(" ");
while (h = c[k++]) {
r = h, q = null, l = h.indexOf(".") < 0, m = [], l || (m = h.split("."), h = m.shift(), n = new RegExp("(^|\\.)" + d.map(m.slice(0).sort(), w).join("\\.(?:.*\\.)?") + "(\\.|$)")), p = t[h];
if (!p) continue;
if (!e) {
for (j = 0; j < p.length; j++) {
q = p[j];
if (l || n.test(q.namespace)) d.event.remove(a, r, q.handler, j), p.splice(j--, 1)
}
continue
}
o = d.event.special[h] || {};
for (j = f || 0; j < p.length; j++) {
q = p[j];
if (e.guid === q.guid) {
if (l || n.test(q.namespace)) f == null && p.splice(j--, 1), o.remove && o.remove.call(a, q);
if (f != null) break
}
}
if (p.length === 0 || f != null && p.length === 1)(!o.teardown || o.teardown.call(a, m) === !1) && d.removeEvent(a, h, s.handle), g = null, delete t[h]
}
if (d.isEmptyObject(t)) {
var u = s.handle;
u && (u.elem = null), delete s.events, delete s.handle, d.isEmptyObject(s) && d.removeData(a, b, !0)
}
}
},
trigger: function(a, c, e) {
var f = a.type || a,
g = arguments[3];
if (!g) {
a = typeof a === "object" ? a[d.expando] ? a : d.extend(d.Event(f), a) : d.Event(f), f.indexOf("!") >= 0 && (a.type = f = f.slice(0, -1), a.exclusive = !0), e || (a.stopPropagation(), d.event.global[f] && d.each(d.cache,
function() {
var b = d.expando,
e = this[b];
e && e.events && e.events[f] && d.event.trigger(a, c, e.handle.elem)
}));
if (!e || e.nodeType === 3 || e.nodeType === 8) return b;
a.result = b, a.target = e, c = d.makeArray(c), c.unshift(a)
}
a.currentTarget = e;
var h = d._data(e, "handle");
h && h.apply(e, c);
var i = e.parentNode || e.ownerDocument;
try {
e && e.nodeName && d.noData[e.nodeName.toLowerCase()] || e["on" + f] && e["on" + f].apply(e, c) === !1 && (a.result = !1, a.preventDefault())
} catch (j) {}
if (!a.isPropagationStopped() && i) d.event.trigger(a, c, i, !0);
else if (!a.isDefaultPrevented()) {
var k, l = a.target,
m = f.replace(r, ""),
n = d.nodeName(l, "a") && m === "click",
o = d.event.special[m] || {};
if ((!o._default || o._default.call(e, a) === !1) && !n && !(l && l.nodeName && d.noData[l.nodeName.toLowerCase()])) {
try {
l[m] && (k = l["on" + m], k && (l["on" + m] = null), d.event.triggered = a.type, l[m]())
} catch (p) {}
k && (l["on" + m] = k), d.event.triggered = b
}
}
},
handle: function(c) {
var e, f, g, h, i, j = [],
k = d.makeArray(arguments);
c = k[0] = d.event.fix(c || a.event), c.currentTarget = this, e = c.type.indexOf(".") < 0 && !c.exclusive, e || (g = c.type.split("."), c.type = g.shift(), j = g.slice(0).sort(), h = new RegExp("(^|\\.)" + j.join("\\.(?:.*\\.)?") +
"(\\.|$)")), c.namespace = c.namespace || j.join("."), i = d._data(this, "events"), f = (i || {})[c.type];
if (i && f) {
f = f.slice(0);
for (var l = 0, m = f.length; l < m; l++) {
var n = f[l];
if (e || h.test(n.namespace)) {
c.handler = n.handler, c.data = n.data, c.handleObj = n;
var o = n.handler.apply(this, k);
o !== b && (c.result = o, o === !1 && (c.preventDefault(), c.stopPropagation()));
if (c.isImmediatePropagationStopped()) break
}
}
}
return c.result
},
props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which"
.split(" "),
fix: function(a) {
if (a[d.expando]) return a;
var e = a;
a = d.Event(e);
for (var f = this.props.length, g; f;) g = this.props[--f], a[g] = e[g];
a.target || (a.target = a.srcElement || c), a.target.nodeType === 3 && (a.target = a.target.parentNode), !a.relatedTarget && a.fromElement && (a.relatedTarget = a.fromElement === a.target ? a.toElement : a.fromElement);
if (a.pageX == null && a.clientX != null) {
var h = c.documentElement,
i = c.body;
a.pageX = a.clientX + (h && h.scrollLeft || i && i.scrollLeft || 0) - (h && h.clientLeft || i && i.clientLeft || 0), a.pageY = a.clientY + (h && h.scrollTop || i && i.scrollTop || 0) - (h && h.clientTop || i && i.clientTop || 0)
}
a.which == null && (a.charCode != null || a.keyCode != null) && (a.which = a.charCode != null ? a.charCode : a.keyCode), !a.metaKey && a.ctrlKey && (a.metaKey = a.ctrlKey), !a.which && a.button !== b && (a.which = a.button & 1 ? 1 :
a.button & 2 ? 3 : a.button & 4 ? 2 : 0);
return a
},
guid: 1e8,
proxy: d.proxy,
special: {
ready: {
setup: d.bindReady,
teardown: d.noop
},
live: {
add: function(a) {
d.event.add(this, H(a.origType, a.selector), d.extend({}, a, {
handler: G,
guid: a.handler.guid
}))
},
remove: function(a) {
d.event.remove(this, H(a.origType, a.selector), a)
}
},
beforeunload: {
setup: function(a, b, c) {
d.isWindow(this) && (this.onbeforeunload = c)
},
teardown: function(a, b) {
this.onbeforeunload === b && (this.onbeforeunload = null)
}
}
}
}, d.removeEvent = c.removeEventListener ? function(a, b, c) {
a.removeEventListener && a.removeEventListener(b, c, !1)
} : function(a, b, c) {
a.detachEvent && a.detachEvent("on" + b, c)
}, d.Event = function(a) {
if (!this.preventDefault) return new d.Event(a);
a && a.type ? (this.originalEvent = a, this.type = a.type, this.isDefaultPrevented = a.defaultPrevented || a.returnValue === !1 || a.getPreventDefault && a.getPreventDefault() ? y : x) : this.type = a, this.timeStamp = d.now(), this[d
.expando] = !0
}, d.Event.prototype = {
preventDefault: function() {
this.isDefaultPrevented = y;
var a = this.originalEvent;
a && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
},
stopPropagation: function() {
this.isPropagationStopped = y;
var a = this.originalEvent;
a && (a.stopPropagation && a.stopPropagation(), a.cancelBubble = !0)
},
stopImmediatePropagation: function() {
this.isImmediatePropagationStopped = y, this.stopPropagation()
},
isDefaultPrevented: x,
isPropagationStopped: x,
isImmediatePropagationStopped: x
};
var z = function(a) {
var b = a.relatedTarget;
try {
if (b && b !== c && !b.parentNode) return;
while (b && b !== this) b = b.parentNode;
b !== this && (a.type = a.data, d.event.handle.apply(this, arguments))
} catch (e) {}
},
A = function(a) {
a.type = a.data, d.event.handle.apply(this, arguments)
};
d.each({
mouseenter: "mouseover",
mouseleave: "mouseout"
}, function(a, b) {
d.event.special[a] = {
setup: function(c) {
d.event.add(this, b, c && c.selector ? A : z, a)
},
teardown: function(a) {
d.event.remove(this, b, a && a.selector ? A : z)
}
}
}), d.support.submitBubbles || (d.event.special.submit = {
setup: function(a, b) {
if (this.nodeName && this.nodeName.toLowerCase() !== "form") d.event.add(this, "click.specialSubmit", function(a) {
var b = a.target,
c = b.type;
(c === "submit" || c === "image") && d(b).closest("form").length && E("submit", this, arguments)
}), d.event.add(this, "keypress.specialSubmit", function(a) {
var b = a.target,
c = b.type;
(c === "text" || c === "password") && d(b).closest("form").length && a.keyCode === 13 && E("submit", this, arguments)
});
else return !1
},
teardown: function(a) {
d.event.remove(this, ".specialSubmit")
}
});
if (!d.support.changeBubbles) {
var B, C = function(a) {
var b = a.type,
c = a.value;
b === "radio" || b === "checkbox" ? c = a.checked : b === "select-multiple" ? c = a.selectedIndex > -1 ? d.map(a.options, function(a) {
return a.selected
}).join("-") : "" : a.nodeName.toLowerCase() === "select" && (c = a.selectedIndex);
return c
},
D = function D(a) {
var c = a.target,
e, f;
if (s.test(c.nodeName) && !c.readOnly) {
e = d._data(c, "_change_data"), f = C(c), (a.type !== "focusout" || c.type !== "radio") && d._data(c, "_change_data", f);
if (e === b || f === e) return;
if (e != null || f) a.type = "change", a.liveFired = b, d.event.trigger(a, arguments[1], c)
}
};
d.event.special.change = {
filters: {
focusout: D,
beforedeactivate: D,
click: function(a) {
var b = a.target,
c = b.type;
(c === "radio" || c === "checkbox" || b.nodeName.toLowerCase() === "select") && D.call(this, a)
},
keydown: function(a) {
var b = a.target,
c = b.type;
(a.keyCode === 13 && b.nodeName.toLowerCase() !== "textarea" || a.keyCode === 32 && (c === "checkbox" || c === "radio") || c === "select-multiple") && D.call(this, a)
},
beforeactivate: function(a) {
var b = a.target;
d._data(b, "_change_data", C(b))
}
},
setup: function(a, b) {
if (this.type === "file") return !1;
for (var c in B) d.event.add(this, c + ".specialChange", B[c]);
return s.test(this.nodeName)
},
teardown: function(a) {
d.event.remove(this, ".specialChange");
return s.test(this.nodeName)
}
}, B = d.event.special.change.filters, B.focus = B.beforeactivate
}
c.addEventListener && d.each({
focus: "focusin",
blur: "focusout"
}, function(a, b) {
function f(a) {
var c = d.event.fix(a);
c.type = b, c.originalEvent = {}, d.event.trigger(c, null, c.target), c.isDefaultPrevented() && a.preventDefault()
}
var e = 0;
d.event.special[b] = {
setup: function() {
e++ === 0 && c.addEventListener(a, f, !0)
},
teardown: function() {
--e === 0 && c.removeEventListener(a, f, !0)
}
}
}), d.each(["bind", "one"], function(a, c) {
d.fn[c] = function(a, e, f) {
if (typeof a === "object") {
for (var g in a) this[c](g, e, a[g], f);
return this
}
if (d.isFunction(e) || e === !1) f = e, e = b;
var h = c === "one" ? d.proxy(f, function(a) {
d(this).unbind(a, h);
return f.apply(this, arguments)
}) : f;
if (a === "unload" && c !== "one") this.one(a, e, f);
else
for (var i = 0, j = this.length; i < j; i++) d.event.add(this[i], a, h, e);
return this
}
}), d.fn.extend({
unbind: function(a, b) {
if (typeof a !== "object" || a.preventDefault)
for (var e = 0, f = this.length; e < f; e++) d.event.remove(this[e], a, b);
else
for (var c in a) this.unbind(c, a[c]);
return this
},
delegate: function(a, b, c, d) {
return this.live(b, c, d, a)
},
undelegate: function(a, b, c) {
return arguments.length === 0 ? this.unbind("live") : this.die(b, null, c, a)
},
trigger: function(a, b) {
return this.each(function() {
d.event.trigger(a, b, this)
})
},
triggerHandler: function(a, b) {
if (this[0]) {
var c = d.Event(a);
c.preventDefault(), c.stopPropagation(), d.event.trigger(c, b, this[0]);
return c.result
}
},
toggle: function(a) {
var b = arguments,
c = 1;
while (c < b.length) d.proxy(a, b[c++]);
return this.click(d.proxy(a, function(e) {
var f = (d._data(this, "lastToggle" + a.guid) || 0) % c;
d._data(this, "lastToggle" + a.guid, f + 1), e.preventDefault();
return b[f].apply(this, arguments) || !1
}))
},
hover: function(a, b) {
return this.mouseenter(a).mouseleave(b || a)
}
});
var F = {
focus: "focusin",
blur: "focusout",
mouseenter: "mouseover",
mouseleave: "mouseout"
};
d.each(["live", "die"], function(a, c) {
d.fn[c] = function(a, e, f, g) {
var h, i = 0,
j, k, l, m = g || this.selector,
n = g ? this : d(this.context);
if (typeof a === "object" && !a.preventDefault) {
for (var o in a) n[c](o, e, a[o], m);
return this
}
d.isFunction(e) && (f = e, e = b), a = (a || "").split(" ");
while ((h = a[i++]) != null) {
j = r.exec(h), k = "", j && (k = j[0], h = h.replace(r, ""));
if (h === "hover") {
a.push("mouseenter" + k, "mouseleave" + k);
continue
}
l = h, h === "focus" || h === "blur" ? (a.push(F[h] + k), h = h + k) : h = (F[h] || h) + k;
if (c === "live")
for (var p = 0, q = n.length; p < q; p++) d.event.add(n[p], "live." + H(h, m), {
data: e,
selector: m,
handler: f,
origType: h,
origHandler: f,
preType: l
});
else n.unbind("live." + H(h, m), f)
}
return this
}
}), d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), function(a, b) {
d.fn[b] = function(a, c) {
c == null && (c = a, a = null);
return arguments.length > 0 ? this.bind(b, a, c) : this.trigger(b)
}, d.attrFn && (d.attrFn[b] = !0)
}),
function() {
function u(a, b, c, d, e, f) {
for (var g = 0, h = d.length; g < h; g++) {
var i = d[g];
if (i) {
var j = !1;
i = i[a];
while (i) {
if (i.sizcache === c) {
j = d[i.sizset];
break
}
if (i.nodeType === 1) {
f || (i.sizcache = c, i.sizset = g);
if (typeof b !== "string") {
if (i === b) {
j = !0;
break
}
} else if (k.filter(b, [i]).length > 0) {
j = i;
break
}
}
i = i[a]
}
d[g] = j
}
}
}
function t(a, b, c, d, e, f) {
for (var g = 0, h = d.length; g < h; g++) {
var i = d[g];
if (i) {
var j = !1;
i = i[a];
while (i) {
if (i.sizcache === c) {
j = d[i.sizset];
break
}
i.nodeType === 1 && !f && (i.sizcache = c, i.sizset = g);
if (i.nodeName.toLowerCase() === b) {
j = i;
break
}
i = i[a]
}
d[g] = j
}
}
}
var a = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e = 0,
f = Object.prototype.toString,
g = !1,
h = !0,
i = /\\/g,
j = /\W/;
[0, 0].sort(function() {
h = !1;
return 0
});
var k = function(b, d, e, g) {
e = e || [], d = d || c;
var h = d;
if (d.nodeType !== 1 && d.nodeType !== 9) return [];
if (!b || typeof b !== "string") return e;
var i, j, n, o, q, r, s, t, u = !0,
w = k.isXML(d),
x = [],
y = b;
do {
a.exec(""), i = a.exec(y);
if (i) {
y = i[3], x.push(i[1]);
if (i[2]) {
o = i[3];
break
}
}
} while (i);
if (x.length > 1 && m.exec(b))
if (x.length === 2 && l.relative[x[0]]) j = v(x[0] + x[1], d);
else {
j = l.relative[x[0]] ? [d] : k(x.shift(), d);
while (x.length) b = x.shift(), l.relative[b] && (b += x.shift()), j = v(b, j)
}
else {
!g && x.length > 1 && d.nodeType === 9 && !w && l.match.ID.test(x[0]) && !l.match.ID.test(x[x.length - 1]) && (q = k.find(x.shift(), d, w), d = q.expr ? k.filter(q.expr, q.set)[0] : q.set[0]);
if (d) {
q = g ? {
expr: x.pop(),
set: p(g)
} : k.find(x.pop(), x.length === 1 && (x[0] === "~" || x[0] === "+") && d.parentNode ? d.parentNode : d, w), j = q.expr ? k.filter(q.expr, q.set) : q.set, x.length > 0 ? n = p(j) : u = !1;
while (x.length) r = x.pop(), s = r, l.relative[r] ? s = x.pop() : r = "", s == null && (s = d), l.relative[r](n, s, w)
} else n = x = []
}
n || (n = j), n || k.error(r || b);
if (f.call(n) === "[object Array]")
if (u)
if (d && d.nodeType === 1)
for (t = 0; n[t] != null; t++) n[t] && (n[t] === !0 || n[t].nodeType === 1 && k.contains(d, n[t])) && e.push(j[t]);
else
for (t = 0; n[t] != null; t++) n[t] && n[t].nodeType === 1 && e.push(j[t]);
else e.push.apply(e, n);
else p(n, e);
o && (k(o, h, e, g), k.uniqueSort(e));
return e
};
k.uniqueSort = function(a) {
if (r) {
g = h, a.sort(r);
if (g)
for (var b = 1; b < a.length; b++) a[b] === a[b - 1] && a.splice(b--, 1)
}
return a
}, k.matches = function(a, b) {
return k(a, null, null, b)
}, k.matchesSelector = function(a, b) {
return k(b, null, null, [a]).length > 0
}, k.find = function(a, b, c) {
var d;
if (!a) return [];
for (var e = 0, f = l.order.length; e < f; e++) {
var g, h = l.order[e];
if (g = l.leftMatch[h].exec(a)) {
var j = g[1];
g.splice(1, 1);
if (j.substr(j.length - 1) !== "\\") {
g[1] = (g[1] || "").replace(i, ""), d = l.find[h](g, b, c);
if (d != null) {
a = a.replace(l.match[h], "");
break
}
}
}
}
d || (d = typeof b.getElementsByTagName !== "undefined" ? b.getElementsByTagName("*") : []);
return {
set: d,
expr: a
}
}, k.filter = function(a, c, d, e) {
var f, g, h = a,
i = [],
j = c,
m = c && c[0] && k.isXML(c[0]);
while (a && c.length) {
for (var n in l.filter)
if ((f = l.leftMatch[n].exec(a)) != null && f[2]) {
var o, p, q = l.filter[n],
r = f[1];
g = !1, f.splice(1, 1);
if (r.substr(r.length - 1) === "\\") continue;
j === i && (i = []);
if (l.preFilter[n]) {
f = l.preFilter[n](f, j, d, i, e, m);
if (f) {
if (f === !0) continue
} else g = o = !0
}
if (f)
for (var s = 0;
(p = j[s]) != null; s++)
if (p) {
o = q(p, f, s, j);
var t = e ^ !!o;
d && o != null ? t ? g = !0 : j[s] = !1 : t && (i.push(p), g = !0)
} if (o !== b) {
d || (j = i), a = a.replace(l.match[n], "");
if (!g) return [];
break
}
} if (a === h)
if (g == null) k.error(a);
else break;
h = a
}
return j
}, k.error = function(a) {
throw "Syntax error, unrecognized expression: " + a
};
var l = k.selectors = {
order: ["ID", "NAME", "TAG"],
match: {
ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
},
leftMatch: {},
attrMap: {
"class": "className",
"for": "htmlFor"
},
attrHandle: {
href: function(a) {
return a.getAttribute("href")
},
type: function(a) {
return a.getAttribute("type")
}
},
relative: {
"+": function(a, b) {
var c = typeof b === "string",
d = c && !j.test(b),
e = c && !d;
d && (b = b.toLowerCase());
for (var f = 0, g = a.length, h; f < g; f++)
if (h = a[f]) {
while ((h = h.previousSibling) && h.nodeType !== 1) {}
a[f] = e || h && h.nodeName.toLowerCase() === b ? h || !1 : h === b
} e && k.filter(b, a, !0)
},
">": function(a, b) {
var c, d = typeof b === "string",
e = 0,
f = a.length;
if (d && !j.test(b)) {
b = b.toLowerCase();
for (; e < f; e++) {
c = a[e];
if (c) {
var g = c.parentNode;
a[e] = g.nodeName.toLowerCase() === b ? g : !1
}
}
} else {
for (; e < f; e++) c = a[e], c && (a[e] = d ? c.parentNode : c.parentNode === b);
d && k.filter(b, a, !0)
}
},
"": function(a, b, c) {
var d, f = e++,
g = u;
typeof b === "string" && !j.test(b) && (b = b.toLowerCase(), d = b, g = t), g("parentNode", b, f, a, d, c)
},
"~": function(a, b, c) {
var d, f = e++,
g = u;
typeof b === "string" && !j.test(b) && (b = b.toLowerCase(), d = b, g = t), g("previousSibling", b, f, a, d, c)
}
},
find: {
ID: function(a, b, c) {
if (typeof b.getElementById !== "undefined" && !c) {
var d = b.getElementById(a[1]);
return d && d.parentNode ? [d] : []
}
},
NAME: function(a, b) {
if (typeof b.getElementsByName !== "undefined") {
var c = [],
d = b.getElementsByName(a[1]);
for (var e = 0, f = d.length; e < f; e++) d[e].getAttribute("name") === a[1] && c.push(d[e]);
return c.length === 0 ? null : c
}
},
TAG: function(a, b) {
if (typeof b.getElementsByTagName !== "undefined") return b.getElementsByTagName(a[1])
}
},
preFilter: {
CLASS: function(a, b, c, d, e, f) {
a = " " + a[1].replace(i, "") + " ";
if (f) return a;
for (var g = 0, h;
(h = b[g]) != null; g++) h && (e ^ (h.className && (" " + h.className + " ").replace(/[\t\n\r]/g, " ").indexOf(a) >= 0) ? c || d.push(h) : c && (b[g] = !1));
return !1
},
ID: function(a) {
return a[1].replace(i, "")
},
TAG: function(a, b) {
return a[1].replace(i, "").toLowerCase()
},
CHILD: function(a) {
if (a[1] === "nth") {
a[2] || k.error(a[0]), a[2] = a[2].replace(/^\+|\s*/g, "");
var b = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2] === "even" && "2n" || a[2] === "odd" && "2n+1" || !/\D/.test(a[2]) && "0n+" + a[2] || a[2]);
a[2] = b[1] + (b[2] || 1) - 0, a[3] = b[3] - 0
} else a[2] && k.error(a[0]);
a[0] = e++;
return a
},
ATTR: function(a, b, c, d, e, f) {
var g = a[1] = a[1].replace(i, "");
!f && l.attrMap[g] && (a[1] = l.attrMap[g]), a[4] = (a[4] || a[5] || "").replace(i, ""), a[2] === "~=" && (a[4] = " " + a[4] + " ");
return a
},
PSEUDO: function(b, c, d, e, f) {
if (b[1] === "not")
if ((a.exec(b[3]) || "").length > 1 || /^\w/.test(b[3])) b[3] = k(b[3], null, null, c);
else {
var g = k.filter(b[3], c, d, !0 ^ f);
d || e.push.apply(e, g);
return !1
}
else if (l.match.POS.test(b[0]) || l.match.CHILD.test(b[0])) return !0;
return b
},
POS: function(a) {
a.unshift(!0);
return a
}
},
filters: {
enabled: function(a) {
return a.disabled === !1 && a.type !== "hidden"
},
disabled: function(a) {
return a.disabled === !0
},
checked: function(a) {
return a.checked === !0
},
selected: function(a) {
a.parentNode && a.parentNode.selectedIndex;
return a.selected === !0
},
parent: function(a) {
return !!a.firstChild
},
empty: function(a) {
return !a.firstChild
},
has: function(a, b, c) {
return !!k(c[3], a).length
},
header: function(a) {
return /h\d/i.test(a.nodeName)
},
text: function(a) {
var b = a.getAttribute("type"),
c = a.type;
return "text" === c && (b === c || b === null)
},
radio: function(a) {
return "radio" === a.type
},
checkbox: function(a) {
return "checkbox" === a.type
},
file: function(a) {
return "file" === a.type
},
password: function(a) {
return "password" === a.type
},
submit: function(a) {
return "submit" === a.type
},
image: function(a) {
return "image" === a.type
},
reset: function(a) {
return "reset" === a.type
},
button: function(a) {
return "button" === a.type || a.nodeName.toLowerCase() === "button"
},
input: function(a) {
return /input|select|textarea|button/i.test(a.nodeName)
}
},
setFilters: {
first: function(a, b) {
return b === 0
},
last: function(a, b, c, d) {
return b === d.length - 1
},
even: function(a, b) {
return b % 2 === 0
},
odd: function(a, b) {
return b % 2 === 1
},
lt: function(a, b, c) {
return b < c[3] - 0
},
gt: function(a, b, c) {
return b > c[3] - 0
},
nth: function(a, b, c) {
return c[3] - 0 === b
},
eq: function(a, b, c) {
return c[3] - 0 === b
}
},
filter: {
PSEUDO: function(a, b, c, d) {
var e = b[1],
f = l.filters[e];
if (f) return f(a, c, b, d);
if (e === "contains") return (a.textContent || a.innerText || k.getText([a]) || "").indexOf(b[3]) >= 0;
if (e === "not") {
var g = b[3];
for (var h = 0, i = g.length; h < i; h++)
if (g[h] === a) return !1;
return !0
}
k.error(e)
},
CHILD: function(a, b) {
var c = b[1],
d = a;
switch (c) {
case "only":
case "first":
while (d = d.previousSibling)
if (d.nodeType === 1) return !1;
if (c === "first") return !0;
d = a;
case "last":
while (d = d.nextSibling)
if (d.nodeType === 1) return !1;
return !0;
case "nth":
var e = b[2],
f = b[3];
if (e === 1 && f === 0) return !0;
var g = b[0],
h = a.parentNode;
if (h && (h.sizcache !== g || !a.nodeIndex)) {
var i = 0;
for (d = h.firstChild; d; d = d.nextSibling) d.nodeType === 1 && (d.nodeIndex = ++i);
h.sizcache = g
}
var j = a.nodeIndex - f;
return e === 0 ? j === 0 : j % e === 0 && j / e >= 0
}
},
ID: function(a, b) {
return a.nodeType === 1 && a.getAttribute("id") === b
},
TAG: function(a, b) {
return b === "*" && a.nodeType === 1 || a.nodeName.toLowerCase() === b
},
CLASS: function(a, b) {
return (" " + (a.className || a.getAttribute("class")) + " ").indexOf(b) > -1
},
ATTR: function(a, b) {
var c = b[1],
d = l.attrHandle[c] ? l.attrHandle[c](a) : a[c] != null ? a[c] : a.getAttribute(c),
e = d + "",
f = b[2],
g = b[4];
return d == null ? f === "!=" : f === "=" ? e === g : f === "*=" ? e.indexOf(g) >= 0 : f === "~=" ? (" " + e + " ").indexOf(g) >= 0 : g ? f === "!=" ? e !== g : f === "^=" ? e.indexOf(g) === 0 : f === "$=" ? e.substr(e
.length - g.length) === g : f === "|=" ? e === g || e.substr(0, g.length + 1) === g + "-" : !1 : e && d !== !1
},
POS: function(a, b, c, d) {
var e = b[2],
f = l.setFilters[e];
if (f) return f(a, c, b, d)
}
}
},
m = l.match.POS,
n = function(a, b) {
return "\\" + (b - 0 + 1)
};
for (var o in l.match) l.match[o] = new RegExp(l.match[o].source + /(?![^\[]*\])(?![^\(]*\))/.source), l.leftMatch[o] = new RegExp(/(^(?:.|\r|\n)*?)/.source + l.match[o].source.replace(/\\(\d+)/g, n));
var p = function(a, b) {
a = Array.prototype.slice.call(a, 0);
if (b) {
b.push.apply(b, a);
return b
}
return a
};
try {
Array.prototype.slice.call(c.documentElement.childNodes, 0)[0].nodeType
} catch (q) {
p = function(a, b) {
var c = 0,
d = b || [];
if (f.call(a) === "[object Array]") Array.prototype.push.apply(d, a);
else if (typeof a.length === "number")
for (var e = a.length; c < e; c++) d.push(a[c]);
else
for (; a[c]; c++) d.push(a[c]);
return d
}
}
var r, s;
c.documentElement.compareDocumentPosition ? r = function(a, b) {
if (a === b) {
g = !0;
return 0
}
if (!a.compareDocumentPosition || !b.compareDocumentPosition) return a.compareDocumentPosition ? -1 : 1;
return a.compareDocumentPosition(b) & 4 ? -1 : 1
} : (r = function(a, b) {
var c, d, e = [],
f = [],
h = a.parentNode,
i = b.parentNode,
j = h;
if (a === b) {
g = !0;
return 0
}
if (h === i) return s(a, b);
if (!h) return -1;
if (!i) return 1;
while (j) e.unshift(j), j = j.parentNode;
j = i;
while (j) f.unshift(j), j = j.parentNode;
c = e.length, d = f.length;
for (var k = 0; k < c && k < d; k++)
if (e[k] !== f[k]) return s(e[k], f[k]);
return k === c ? s(a, f[k], -1) : s(e[k], b, 1)
}, s = function(a, b, c) {
if (a === b) return c;
var d = a.nextSibling;
while (d) {
if (d === b) return -1;
d = d.nextSibling
}
return 1
}), k.getText = function(a) {
var b = "",
c;
for (var d = 0; a[d]; d++) c = a[d], c.nodeType === 3 || c.nodeType === 4 ? b += c.nodeValue : c.nodeType !== 8 && (b += k.getText(c.childNodes));
return b
},
function() {
var a = c.createElement("div"),
d = "script" + (new Date).getTime(),
e = c.documentElement;
a.innerHTML = "<a name='" + d + "'/>", e.insertBefore(a, e.firstChild), c.getElementById(d) && (l.find.ID = function(a, c, d) {
if (typeof c.getElementById !== "undefined" && !d) {
var e = c.getElementById(a[1]);
return e ? e.id === a[1] || typeof e.getAttributeNode !== "undefined" && e.getAttributeNode("id").nodeValue === a[1] ? [e] : b : []
}
}, l.filter.ID = function(a, b) {
var c = typeof a.getAttributeNode !== "undefined" && a.getAttributeNode("id");
return a.nodeType === 1 && c && c.nodeValue === b
}), e.removeChild(a), e = a = null
}(),
function() {
var a = c.createElement("div");
a.appendChild(c.createComment("")), a.getElementsByTagName("*").length > 0 && (l.find.TAG = function(a, b) {
var c = b.getElementsByTagName(a[1]);
if (a[1] === "*") {
var d = [];
for (var e = 0; c[e]; e++) c[e].nodeType === 1 && d.push(c[e]);
c = d
}
return c
}), a.innerHTML = "<a href='#'></a>", a.firstChild && typeof a.firstChild.getAttribute !== "undefined" && a.firstChild.getAttribute("href") !== "#" && (l.attrHandle.href = function(a) {
return a.getAttribute("href", 2)
}), a = null
}(), c.querySelectorAll && function() {
var a = k,
b = c.createElement("div"),
d = "__sizzle__";
b.innerHTML = "<p class='TEST'></p>";
if (!b.querySelectorAll || b.querySelectorAll(".TEST").length !== 0) {
k = function(b, e, f, g) {
e = e || c;
if (!g && !k.isXML(e)) {
var h = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);
if (h && (e.nodeType === 1 || e.nodeType === 9)) {
if (h[1]) return p(e.getElementsByTagName(b), f);
if (h[2] && l.find.CLASS && e.getElementsByClassName) return p(e.getElementsByClassName(h[2]), f)
}
if (e.nodeType === 9) {
if (b === "body" && e.body) return p([e.body], f);
if (h && h[3]) {
var i = e.getElementById(h[3]);
if (!i || !i.parentNode) return p([], f);
if (i.id === h[3]) return p([i], f)
}
try {
return p(e.querySelectorAll(b), f)
} catch (j) {}
} else if (e.nodeType === 1 && e.nodeName.toLowerCase() !== "object") {
var m = e,
n = e.getAttribute("id"),
o = n || d,
q = e.parentNode,
r = /^\s*[+~]/.test(b);
n ? o = o.replace(/'/g, "\\$&") : e.setAttribute("id", o), r && q && (e = e.parentNode);
try {
if (!r || q) return p(e.querySelectorAll("[id='" + o + "'] " + b), f)
} catch (s) {} finally {
n || m.removeAttribute("id")
}
}
}
return a(b, e, f, g)
};
for (var e in a) k[e] = a[e];
b = null
}
}(),
function() {
var a = c.documentElement,
b = a.matchesSelector || a.mozMatchesSelector || a.webkitMatchesSelector || a.msMatchesSelector;
if (b) {
var d = !b.call(c.createElement("div"), "div"),
e = !1;
try {
b.call(c.documentElement, "[test!='']:sizzle")
} catch (f) {
e = !0
}
k.matchesSelector = function(a, c) {
c = c.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
if (!k.isXML(a)) try {
if (e || !l.match.PSEUDO.test(c) && !/!=/.test(c)) {
var f = b.call(a, c);
if (f || !d || a.document && a.document.nodeType !== 11) return f
}
} catch (g) {}
return k(c, null, null, [a]).length > 0
}
}
}(),
function() {
var a = c.createElement("div");
a.innerHTML = "<div class='test e'></div><div class='test'></div>";
if (a.getElementsByClassName && a.getElementsByClassName("e").length !== 0) {
a.lastChild.className = "e";
if (a.getElementsByClassName("e").length === 1) return;
l.order.splice(1, 0, "CLASS"), l.find.CLASS = function(a, b, c) {
if (typeof b.getElementsByClassName !== "undefined" && !c) return b.getElementsByClassName(a[1])
}, a = null
}
}(), c.documentElement.contains ? k.contains = function(a, b) {
return a !== b && (a.contains ? a.contains(b) : !0)
} : c.documentElement.compareDocumentPosition ? k.contains = function(a, b) {
return !!(a.compareDocumentPosition(b) & 16)
} : k.contains = function() {
return !1
}, k.isXML = function(a) {
var b = (a ? a.ownerDocument || a : 0).documentElement;
return b ? b.nodeName !== "HTML" : !1
};
var v = function(a, b) {
var c, d = [],
e = "",
f = b.nodeType ? [b] : b;
while (c = l.match.PSEUDO.exec(a)) e += c[0], a = a.replace(l.match.PSEUDO, "");
a = l.relative[a] ? a + "*" : a;
for (var g = 0, h = f.length; g < h; g++) k(a, f[g], d);
return k.filter(e, d)
};
d.find = k, d.expr = k.selectors, d.expr[":"] = d.expr.filters, d.unique = k.uniqueSort, d.text = k.getText, d.isXMLDoc = k.isXML, d.contains = k.contains
}();
var I = /Until$/,
J = /^(?:parents|prevUntil|prevAll)/,
K = /,/,
L = /^.[^:#\[\.,]*$/,
M = Array.prototype.slice,
N = d.expr.match.POS,
O = {
children: !0,
contents: !0,
next: !0,
prev: !0
};
d.fn.extend({
find: function(a) {
var b = this.pushStack("", "find", a),
c = 0;
for (var e = 0, f = this.length; e < f; e++) {
c = b.length, d.find(a, this[e], b);
if (e > 0)
for (var g = c; g < b.length; g++)
for (var h = 0; h < c; h++)
if (b[h] === b[g]) {
b.splice(g--, 1);
break
}
}
return b
},
has: function(a) {
var b = d(a);
return this.filter(function() {
for (var a = 0, c = b.length; a < c; a++)
if (d.contains(this, b[a])) return !0
})
},
not: function(a) {
return this.pushStack(Q(this, a, !1), "not", a)
},
filter: function(a) {
return this.pushStack(Q(this, a, !0), "filter", a)
},
is: function(a) {
return !!a && d.filter(a, this).length > 0
},
closest: function(a, b) {
var c = [],
e, f, g = this[0];
if (d.isArray(a)) {
var h, i, j = {},
k = 1;
if (g && a.length) {
for (e = 0, f = a.length; e < f; e++) i = a[e], j[i] || (j[i] = d.expr.match.POS.test(i) ? d(i, b || this.context) : i);
while (g && g.ownerDocument && g !== b) {
for (i in j) h = j[i], (h.jquery ? h.index(g) > -1 : d(g).is(h)) && c.push({
selector: i,
elem: g,
level: k
});
g = g.parentNode, k++
}
}
return c
}
var l = N.test(a) ? d(a, b || this.context) : null;
for (e = 0, f = this.length; e < f; e++) {
g = this[e];
while (g) {
if (l ? l.index(g) > -1 : d.find.matchesSelector(g, a)) {
c.push(g);
break
}
g = g.parentNode;
if (!g || !g.ownerDocument || g === b) break
}
}
c = c.length > 1 ? d.unique(c) : c;
return this.pushStack(c, "closest", a)
},
index: function(a) {
if (!a || typeof a === "string") return d.inArray(this[0], a ? d(a) : this.parent().children());
return d.inArray(a.jquery ? a[0] : a, this)
},
add: function(a, b) {
var c = typeof a === "string" ? d(a, b) : d.makeArray(a),
e = d.merge(this.get(), c);
return this.pushStack(P(c[0]) || P(e[0]) ? e : d.unique(e))
},
andSelf: function() {
return this.add(this.prevObject)
}
}), d.each({
parent: function(a) {
var b = a.parentNode;
return b && b.nodeType !== 11 ? b : null
},
parents: function(a) {
return d.dir(a, "parentNode")
},
parentsUntil: function(a, b, c) {
return d.dir(a, "parentNode", c)
},
next: function(a) {
return d.nth(a, 2, "nextSibling")
},
prev: function(a) {
return d.nth(a, 2, "previousSibling")
},
nextAll: function(a) {
return d.dir(a, "nextSibling")
},
prevAll: function(a) {
return d.dir(a, "previousSibling")
},
nextUntil: function(a, b, c) {
return d.dir(a, "nextSibling", c)
},
prevUntil: function(a, b, c) {
return d.dir(a, "previousSibling", c)
},
siblings: function(a) {
return d.sibling(a.parentNode.firstChild, a)
},
children: function(a) {
return d.sibling(a.firstChild)
},
contents: function(a) {
return d.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document : d.makeArray(a.childNodes)
}
}, function(a, b) {
d.fn[a] = function(c, e) {
var f = d.map(this, b, c),
g = M.call(arguments);
I.test(a) || (e = c), e && typeof e === "string" && (f = d.filter(e, f)), f = this.length > 1 && !O[a] ? d.unique(f) : f, (this.length > 1 || K.test(e)) && J.test(a) && (f = f.reverse());
return this.pushStack(f, a, g.join(","))
}
}), d.extend({
filter: function(a, b, c) {
c && (a = ":not(" + a + ")");
return b.length === 1 ? d.find.matchesSelector(b[0], a) ? [b[0]] : [] : d.find.matches(a, b)
},
dir: function(a, c, e) {
var f = [],
g = a[c];
while (g && g.nodeType !== 9 && (e === b || g.nodeType !== 1 || !d(g).is(e))) g.nodeType === 1 && f.push(g), g = g[c];
return f
},
nth: function(a, b, c, d) {
b = b || 1;
var e = 0;
for (; a; a = a[c])
if (a.nodeType === 1 && ++e === b) break;
return a
},
sibling: function(a, b) {
var c = [];
for (; a; a = a.nextSibling) a.nodeType === 1 && a !== b && c.push(a);
return c
}
});
var R = / jQuery\d+="(?:\d+|null)"/g,
S = /^\s+/,
T = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
U = /<([\w:]+)/,
V = /<tbody/i,
W = /<|&#?\w+;/,
X = /<(?:script|object|embed|option|style)/i,
Y = /checked\s*(?:[^=]|=\s*.checked.)/i,
Z = {
option: [1, "<select multiple='multiple'>", "</select>"],
legend: [1, "<fieldset>", "</fieldset>"],
thead: [1, "<table>", "</table>"],
tr: [2, "<table><tbody>", "</tbody></table>"],
td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
area: [1, "<map>", "</map>"],
_default: [0, "", ""]
};
Z.optgroup = Z.option, Z.tbody = Z.tfoot = Z.colgroup = Z.caption = Z.thead, Z.th = Z.td, d.support.htmlSerialize || (Z._default = [1, "div<div>", "</div>"]), d.fn.extend({
text: function(a) {
if (d.isFunction(a)) return this.each(function(b) {
var c = d(this);
c.text(a.call(this, b, c.text()))
});
if (typeof a !== "object" && a !== b) return this.empty().append((this[0] && this[0].ownerDocument || c).createTextNode(a));
return d.text(this)
},
wrapAll: function(a) {
if (d.isFunction(a)) return this.each(function(b) {
d(this).wrapAll(a.call(this, b))
});
if (this[0]) {
var b = d(a, this[0].ownerDocument).eq(0).clone(!0);
this[0].parentNode && b.insertBefore(this[0]), b.map(function() {
var a = this;
while (a.firstChild && a.firstChild.nodeType === 1) a = a.firstChild;
return a
}).append(this)
}
return this
},
wrapInner: function(a) {
if (d.isFunction(a)) return this.each(function(b) {
d(this).wrapInner(a.call(this, b))
});
return this.each(function() {
var b = d(this),
c = b.contents();
c.length ? c.wrapAll(a) : b.append(a)
})
},
wrap: function(a) {
return this.each(function() {
d(this).wrapAll(a)
})
},
unwrap: function() {
return this.parent().each(function() {
d.nodeName(this, "body") || d(this).replaceWith(this.childNodes)
}).end()
},
append: function() {
return this.domManip(arguments, !0, function(a) {
this.nodeType === 1 && this.appendChild(a)
})
},
prepend: function() {
return this.domManip(arguments, !0, function(a) {
this.nodeType === 1 && this.insertBefore(a, this.firstChild)
})
},
before: function() {
if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function(a) {
this.parentNode.insertBefore(a, this)
});
if (arguments.length) {
var a = d(arguments[0]);
a.push.apply(a, this.toArray());
return this.pushStack(a, "before", arguments)
}
},
after: function() {
if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function(a) {
this.parentNode.insertBefore(a, this.nextSibling)
});
if (arguments.length) {
var a = this.pushStack(this, "after", arguments);
a.push.apply(a, d(arguments[0]).toArray());
return a
}
},
remove: function(a, b) {
for (var c = 0, e;
(e = this[c]) != null; c++)
if (!a || d.filter(a, [e]).length) !b && e.nodeType === 1 && (d.cleanData(e.getElementsByTagName("*")), d.cleanData([e])), e.parentNode && e.parentNode.removeChild(e);
return this
},
empty: function() {
for (var a = 0, b;
(b = this[a]) != null; a++) {
b.nodeType === 1 && d.cleanData(b.getElementsByTagName("*"));
while (b.firstChild) b.removeChild(b.firstChild)
}
return this
},
clone: function(a, b) {
a = a == null ? !1 : a, b = b == null ? a : b;
return this.map(function() {
return d.clone(this, a, b)
})
},
html: function(a) {
if (a === b) return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(R, "") : null;
if (typeof a !== "string" || X.test(a) || !d.support.leadingWhitespace && S.test(a) || Z[(U.exec(a) || ["", ""])[1].toLowerCase()]) d.isFunction(a) ? this.each(function(b) {
var c = d(this);
c.html(a.call(this, b, c.html()))
}) : this.empty().append(a);
else {
a = a.replace(T, "<$1></$2>");
try {
for (var c = 0, e = this.length; c < e; c++) this[c].nodeType === 1 && (d.cleanData(this[c].getElementsByTagName("*")), this[c].innerHTML = a)
} catch (f) {
this.empty().append(a)
}
}
return this
},
replaceWith: function(a) {
if (this[0] && this[0].parentNode) {
if (d.isFunction(a)) return this.each(function(b) {
var c = d(this),
e = c.html();
c.replaceWith(a.call(this, b, e))
});
typeof a !== "string" && (a = d(a).detach());
return this.each(function() {
var b = this.nextSibling,
c = this.parentNode;
d(this).remove(), b ? d(b).before(a) : d(c).append(a)
})
}
return this.length ? this.pushStack(d(d.isFunction(a) ? a() : a), "replaceWith", a) : this
},
detach: function(a) {
return this.remove(a, !0)
},
domManip: function(a, c, e) {
var f, g, h, i, j = a[0],
k = [];
if (!d.support.checkClone && arguments.length === 3 && typeof j === "string" && Y.test(j)) return this.each(function() {
d(this).domManip(a, c, e, !0)
});
if (d.isFunction(j)) return this.each(function(f) {
var g = d(this);
a[0] = j.call(this, f, c ? g.html() : b), g.domManip(a, c, e)
});
if (this[0]) {
i = j && j.parentNode, d.support.parentNode && i && i.nodeType === 11 && i.childNodes.length === this.length ? f = {
fragment: i
} : f = d.buildFragment(a, this, k), h = f.fragment, h.childNodes.length === 1 ? g = h = h.firstChild : g = h.firstChild;
if (g) {
c = c && d.nodeName(g, "tr");
for (var l = 0, m = this.length, n = m - 1; l < m; l++) e.call(c ? $(this[l], g) : this[l], f.cacheable || m > 1 && l < n ? d.clone(h, !0, !0) : h)
}
k.length && d.each(k, bc)
}
return this
}
}), d.buildFragment = function(a, b, e) {
var f, g, h, i = b && b[0] ? b[0].ownerDocument || b[0] : c;
a.length === 1 && typeof a[0] === "string" && a[0].length < 512 && i === c && a[0].charAt(0) === "<" && !X.test(a[0]) && (d.support.checkClone || !Y.test(a[0])) && (g = !0, h = d.fragments[a[0]], h && (h !== 1 && (f = h))), f || (f = i
.createDocumentFragment(), d.clean(a, i, f, e)), g && (d.fragments[a[0]] = h ? f : 1);
return {
fragment: f,
cacheable: g
}
}, d.fragments = {}, d.each({
appendTo: "append",
prependTo: "prepend",
insertBefore: "before",
insertAfter: "after",
replaceAll: "replaceWith"
}, function(a, b) {
d.fn[a] = function(c) {
var e = [],
f = d(c),
g = this.length === 1 && this[0].parentNode;
if (g && g.nodeType === 11 && g.childNodes.length === 1 && f.length === 1) {
f[b](this[0]);
return this
}
for (var h = 0, i = f.length; h < i; h++) {
var j = (h > 0 ? this.clone(!0) : this).get();
d(f[h])[b](j), e = e.concat(j)
}
return this.pushStack(e, a, f.selector)
}
}), d.extend({
clone: function(a, b, c) {
var e = a.cloneNode(!0),
f, g, h;
if ((!d.support.noCloneEvent || !d.support.noCloneChecked) && (a.nodeType === 1 || a.nodeType === 11) && !d.isXMLDoc(a)) {
ba(a, e), f = bb(a), g = bb(e);
for (h = 0; f[h]; ++h) ba(f[h], g[h])
}
if (b) {
_(a, e);
if (c) {
f = bb(a), g = bb(e);
for (h = 0; f[h]; ++h) _(f[h], g[h])
}
}
return e
},
clean: function(a, b, e, f) {
b = b || c, typeof b.createElement === "undefined" && (b = b.ownerDocument || b[0] && b[0].ownerDocument || c);
var g = [];
for (var h = 0, i;
(i = a[h]) != null; h++) {
typeof i === "number" && (i += "");
if (!i) continue;
if (typeof i !== "string" || W.test(i)) {
if (typeof i === "string") {
i = i.replace(T, "<$1></$2>");
var j = (U.exec(i) || ["", ""])[1].toLowerCase(),
k = Z[j] || Z._default,
l = k[0],
m = b.createElement("div");
m.innerHTML = k[1] + i + k[2];
while (l--) m = m.lastChild;
if (!d.support.tbody) {
var n = V.test(i),
o = j === "table" && !n ? m.firstChild && m.firstChild.childNodes : k[1] === "<table>" && !n ? m.childNodes : [];
for (var p = o.length - 1; p >= 0; --p) d.nodeName(o[p], "tbody") && !o[p].childNodes.length && o[p].parentNode.removeChild(o[p])
}!d.support.leadingWhitespace && S.test(i) && m.insertBefore(b.createTextNode(S.exec(i)[0]), m.firstChild), i = m.childNodes
}
} else i = b.createTextNode(i);
i.nodeType ? g.push(i) : g = d.merge(g, i)
}
if (e)
for (h = 0; g[h]; h++) !f || !d.nodeName(g[h], "script") || g[h].type && g[h].type.toLowerCase() !== "text/javascript" ? (g[h].nodeType === 1 && g.splice.apply(g, [h + 1, 0].concat(d.makeArray(g[h].getElementsByTagName(
"script")))), e.appendChild(g[h])) : f.push(g[h].parentNode ? g[h].parentNode.removeChild(g[h]) : g[h]);
return g
},
cleanData: function(a) {
var b, c, e = d.cache,
f = d.expando,
g = d.event.special,
h = d.support.deleteExpando;
for (var i = 0, j;
(j = a[i]) != null; i++) {
if (j.nodeName && d.noData[j.nodeName.toLowerCase()]) continue;
c = j[d.expando];
if (c) {
b = e[c] && e[c][f];
if (b && b.events) {
for (var k in b.events) g[k] ? d.event.remove(j, k) : d.removeEvent(j, k, b.handle);
b.handle && (b.handle.elem = null)
}
h ? delete j[d.expando] : j.removeAttribute && j.removeAttribute(d.expando), delete e[c]
}
}
}
});
var bd = /alpha\([^)]*\)/i,
be = /opacity=([^)]*)/,
bf = /-([a-z])/ig,
bg = /([A-Z]|^ms)/g,
bh = /^-?\d+(?:px)?$/i,
bi = /^-?\d/,
bj = {
position: "absolute",
visibility: "hidden",
display: "block"
},
bk = ["Left", "Right"],
bl = ["Top", "Bottom"],
bm, bn, bo, bp = function(a, b) {
return b.toUpperCase()
};
d.fn.css = function(a, c) {
if (arguments.length === 2 && c === b) return this;
return d.access(this, a, c, !0, function(a, c, e) {
return e !== b ? d.style(a, c, e) : d.css(a, c)
})
}, d.extend({
cssHooks: {
opacity: {
get: function(a, b) {
if (b) {
var c = bm(a, "opacity", "opacity");
return c === "" ? "1" : c
}
return a.style.opacity
}
}
},
cssNumber: {
zIndex: !0,
fontWeight: !0,
opacity: !0,
zoom: !0,
lineHeight: !0
},
cssProps: {
"float": d.support.cssFloat ? "cssFloat" : "styleFloat"
},
style: function(a, c, e, f) {
if (a && a.nodeType !== 3 && a.nodeType !== 8 && a.style) {
var g, h = d.camelCase(c),
i = a.style,
j = d.cssHooks[h];
c = d.cssProps[h] || h;
if (e === b) {
if (j && "get" in j && (g = j.get(a, !1, f)) !== b) return g;
return i[c]
}
if (typeof e === "number" && isNaN(e) || e == null) return;
typeof e === "number" && !d.cssNumber[h] && (e += "px");
if (!j || !("set" in j) || (e = j.set(a, e)) !== b) try {
i[c] = e
} catch (k) {}
}
},
css: function(a, c, e) {
var f, g = d.camelCase(c),
h = d.cssHooks[g];
c = d.cssProps[g] || g;
if (h && "get" in h && (f = h.get(a, !0, e)) !== b) return f;
if (bm) return bm(a, c, g)
},
swap: function(a, b, c) {
var d = {};
for (var e in b) d[e] = a.style[e], a.style[e] = b[e];
c.call(a);
for (e in b) a.style[e] = d[e]
},
camelCase: function(a) {
return a.replace(bf, bp)
}
}), d.curCSS = d.css, d.each(["height", "width"], function(a, b) {
d.cssHooks[b] = {
get: function(a, c, e) {
var f;
if (c) {
a.offsetWidth !== 0 ? f = bq(a, b, e) : d.swap(a, bj, function() {
f = bq(a, b, e)
});
if (f <= 0) {
f = bm(a, b, b), f === "0px" && bo && (f = bo(a, b, b));
if (f != null) return f === "" || f === "auto" ? "0px" : f
}
if (f < 0 || f == null) {
f = a.style[b];
return f === "" || f === "auto" ? "0px" : f
}
return typeof f === "string" ? f : f + "px"
}
},
set: function(a, b) {
if (!bh.test(b)) return b;
b = parseFloat(b);
if (b >= 0) return b + "px"
}
}
}), d.support.opacity || (d.cssHooks.opacity = {
get: function(a, b) {
return be.test((b && a.currentStyle ? a.currentStyle.filter : a.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "" : b ? "1" : ""
},
set: function(a, b) {
var c = a.style;
c.zoom = 1;
var e = d.isNaN(b) ? "" : "alpha(opacity=" + b * 100 + ")",
f = c.filter || "";
c.filter = bd.test(f) ? f.replace(bd, e) : c.filter + " " + e
}
}), d(function() {
d.support.reliableMarginRight || (d.cssHooks.marginRight = {
get: function(a, b) {
var c;
d.swap(a, {
display: "inline-block"
}, function() {
b ? c = bm(a, "margin-right", "marginRight") : c = a.style.marginRight
});
return c
}
})
}), c.defaultView && c.defaultView.getComputedStyle && (bn = function(a, c, e) {
var f, g, h;
e = e.replace(bg, "-$1").toLowerCase();
if (!(g = a.ownerDocument.defaultView)) return b;
if (h = g.getComputedStyle(a, null)) f = h.getPropertyValue(e), f === "" && !d.contains(a.ownerDocument.documentElement, a) && (f = d.style(a, e));
return f
}), c.documentElement.currentStyle && (bo = function(a, b) {
var c, d = a.currentStyle && a.currentStyle[b],
e = a.runtimeStyle && a.runtimeStyle[b],
f = a.style;
!bh.test(d) && bi.test(d) && (c = f.left, e && (a.runtimeStyle.left = a.currentStyle.left), f.left = b === "fontSize" ? "1em" : d || 0, d = f.pixelLeft + "px", f.left = c, e && (a.runtimeStyle.left = e));
return d === "" ? "auto" : d
}), bm = bn || bo, d.expr && d.expr.filters && (d.expr.filters.hidden = function(a) {
var b = a.offsetWidth,
c = a.offsetHeight;
return b === 0 && c === 0 || !d.support.reliableHiddenOffsets && (a.style.display || d.css(a, "display")) === "none"
}, d.expr.filters.visible = function(a) {
return !d.expr.filters.hidden(a)
});
var br = /%20/g,
bs = /\[\]$/,
bt = /\r?\n/g,
bu = /#.*$/,
bv = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
bw = /^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
bx = /^(?:about|app|app\-storage|.+\-extension|file|widget):$/,
by = /^(?:GET|HEAD)$/,
bz = /^\/\//,
bA = /\?/,
bB = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
bC = /^(?:select|textarea)/i,
bD = /\s+/,
bE = /([?&])_=[^&]*/,
bF = /(^|\-)([a-z])/g,
bG = function(a, b, c) {
return b + c.toUpperCase()
},
bH = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
bI = d.fn.load,
bJ = {},
bK = {},
bL, bM;
try {
bL = c.location.href
} catch (bN) {
bL = c.createElement("a"), bL.href = "", bL = bL.href
}
bM = bH.exec(bL.toLowerCase()) || [], d.fn.extend({
load: function(a, c, e) {
if (typeof a !== "string" && bI) return bI.apply(this, arguments);
if (!this.length) return this;
var f = a.indexOf(" ");
if (f >= 0) {
var g = a.slice(f, a.length);
a = a.slice(0, f)
}
var h = "GET";
c && (d.isFunction(c) ? (e = c, c = b) : typeof c === "object" && (c = d.param(c, d.ajaxSettings.traditional), h = "POST"));
var i = this;
d.ajax({
url: a,
type: h,
dataType: "html",
data: c,
complete: function(a, b, c) {
c = a.responseText, a.isResolved() && (a.done(function(a) {
c = a
}), i.html(g ? d("<div>").append(c.replace(bB, "")).find(g) : c)), e && i.each(e, [c, b, a])
}
});
return this
},
serialize: function() {
return d.param(this.serializeArray())
},
serializeArray: function() {
return this.map(function() {
return this.elements ? d.makeArray(this.elements) : this
}).filter(function() {
return this.name && !this.disabled && (this.checked || bC.test(this.nodeName) || bw.test(this.type))
}).map(function(a, b) {
var c = d(this).val();
return c == null ? null : d.isArray(c) ? d.map(c, function(a, c) {
return {
name: b.name,
value: a.replace(bt, "\r\n")
}
}) : {
name: b.name,
value: c.replace(bt, "\r\n")
}
}).get()
}
}), d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(a, b) {
d.fn[b] = function(a) {
return this.bind(b, a)
}
}), d.each(["get", "post"], function(a, c) {
d[c] = function(a, e, f, g) {
d.isFunction(e) && (g = g || f, f = e, e = b);
return d.ajax({
type: c,
url: a,
data: e,
success: f,
dataType: g
})
}
}), d.extend({
getScript: function(a, c) {
return d.get(a, b, c, "script")
},
getJSON: function(a, b, c) {
return d.get(a, b, c, "json")
},
ajaxSetup: function(a, b) {
b ? d.extend(!0, a, d.ajaxSettings, b) : (b = a, a = d.extend(!0, d.ajaxSettings, b));
for (var c in {
context: 1,
url: 1
}) c in b ? a[c] = b[c] : c in d.ajaxSettings && (a[c] = d.ajaxSettings[c]);
return a
},
ajaxSettings: {
url: bL,
isLocal: bx.test(bM[1]),
global: !0,
type: "GET",
contentType: "application/x-www-form-urlencoded",
processData: !0,
async: !0,
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
text: "text/plain",
json: "application/json, text/javascript",
"*": "*/*"
},
contents: {
xml: /xml/,
html: /html/,
json: /json/
},
responseFields: {
xml: "responseXML",
text: "responseText"
},
converters: {
"* text": a.String,
"text html": !0,
"text json": d.parseJSON,
"text xml": d.parseXML
}
},
ajaxPrefilter: bO(bJ),
ajaxTransport: bO(bK),
ajax: function(a, c) {
function v(a, c, l, n) {
if (r !== 2) {
r = 2, p && clearTimeout(p), o = b, m = n || "", u.readyState = a ? 4 : 0;
var q, t, v, w = l ? bR(e, u, l) : b,
x, y;
if (a >= 200 && a < 300 || a === 304) {
if (e.ifModified) {
if (x = u.getResponseHeader("Last-Modified")) d.lastModified[k] = x;
if (y = u.getResponseHeader("Etag")) d.etag[k] = y
}
if (a === 304) c = "notmodified", q = !0;
else try {
t = bS(e, w), c = "success", q = !0
} catch (z) {
c = "parsererror", v = z
}
} else {
v = c;
if (!c || a) c = "error", a < 0 && (a = 0)
}
u.status = a, u.statusText = c, q ? h.resolveWith(f, [t, c, u]) : h.rejectWith(f, [u, c, v]), u.statusCode(j), j = b, s && g.trigger("ajax" + (q ? "Success" : "Error"), [u, e, q ? t : v]), i.resolveWith(f, [u, c]), s && (g
.trigger("ajaxComplete", [u, e]), --d.active || d.event.trigger("ajaxStop"))
}
}
typeof a === "object" && (c = a, a = b), c = c || {};
var e = d.ajaxSetup({}, c),
f = e.context || e,
g = f !== e && (f.nodeType || f instanceof d) ? d(f) : d.event,
h = d.Deferred(),
i = d._Deferred(),
j = e.statusCode || {},
k, l = {},
m, n, o, p, q, r = 0,
s, t, u = {
readyState: 0,
setRequestHeader: function(a, b) {
r || (l[a.toLowerCase().replace(bF, bG)] = b);
return this
},
getAllResponseHeaders: function() {
return r === 2 ? m : null
},
getResponseHeader: function(a) {
var c;
if (r === 2) {
if (!n) {
n = {};
while (c = bv.exec(m)) n[c[1].toLowerCase()] = c[2]
}
c = n[a.toLowerCase()]
}
return c === b ? null : c
},
overrideMimeType: function(a) {
r || (e.mimeType = a);
return this
},
abort: function(a) {
a = a || "abort", o && o.abort(a), v(0, a);
return this
}
};
h.promise(u), u.success = u.done, u.error = u.fail, u.complete = i.done, u.statusCode = function(a) {
if (a) {
var b;
if (r < 2)
for (b in a) j[b] = [j[b], a[b]];
else b = a[u.status], u.then(b, b)
}
return this
}, e.url = ((a || e.url) + "").replace(bu, "").replace(bz, bM[1] + "//"), e.dataTypes = d.trim(e.dataType || "*").toLowerCase().split(bD), e.crossDomain == null && (q = bH.exec(e.url.toLowerCase()), e.crossDomain = q && (q[1] !=
bM[1] || q[2] != bM[2] || (q[3] || (q[1] === "http:" ? 80 : 443)) != (bM[3] || (bM[1] === "http:" ? 80 : 443)))), e.data && e.processData && typeof e.data !== "string" && (e.data = d.param(e.data, e.traditional)), bP(bJ, e, c,
u);
if (r === 2) return !1;
s = e.global, e.type = e.type.toUpperCase(), e.hasContent = !by.test(e.type), s && d.active++ === 0 && d.event.trigger("ajaxStart");
if (!e.hasContent) {
e.data && (e.url += (bA.test(e.url) ? "&" : "?") + e.data), k = e.url;
if (e.cache === !1) {
var w = d.now(),
x = e.url.replace(bE, "$1_=" + w);
e.url = x + (x === e.url ? (bA.test(e.url) ? "&" : "?") + "_=" + w : "")
}
}
if (e.data && e.hasContent && e.contentType !== !1 || c.contentType) l["Content-Type"] = e.contentType;
e.ifModified && (k = k || e.url, d.lastModified[k] && (l["If-Modified-Since"] = d.lastModified[k]), d.etag[k] && (l["If-None-Match"] = d.etag[k])), l.Accept = e.dataTypes[0] && e.accepts[e.dataTypes[0]] ? e.accepts[e.dataTypes[
0]] + (e.dataTypes[0] !== "*" ? ", */*; q=0.01" : "") : e.accepts["*"];
for (t in e.headers) u.setRequestHeader(t, e.headers[t]);
if (e.beforeSend && (e.beforeSend.call(f, u, e) === !1 || r === 2)) {
u.abort();
return !1
}
for (t in {
success: 1,
error: 1,
complete: 1
}) u[t](e[t]);
o = bP(bK, e, c, u);
if (o) {
u.readyState = 1, s && g.trigger("ajaxSend", [u, e]), e.async && e.timeout > 0 && (p = setTimeout(function() {
u.abort("timeout")
}, e.timeout));
try {
r = 1, o.send(l, v)
} catch (y) {
status < 2 ? v(-1, y) : d.error(y)
}
} else v(-1, "No Transport");
return u
},
param: function(a, c) {
var e = [],
f = function(a, b) {
b = d.isFunction(b) ? b() : b, e[e.length] = encodeURIComponent(a) + "=" + encodeURIComponent(b)
};
c === b && (c = d.ajaxSettings.traditional);
if (d.isArray(a) || a.jquery && !d.isPlainObject(a)) d.each(a, function() {
f(this.name, this.value)
});
else
for (var g in a) bQ(g, a[g], c, f);
return e.join("&").replace(br, "+")
}
}), d.extend({
active: 0,
lastModified: {},
etag: {}
});
var bT = d.now(),
bU = /(\=)\?(&|$)|\?\?/i;
d.ajaxSetup({
jsonp: "callback",
jsonpCallback: function() {
return d.expando + "_" + bT++
}
}), d.ajaxPrefilter("json jsonp", function(b, c, e) {
var f = typeof b.data === "string";
if (b.dataTypes[0] === "jsonp" || c.jsonpCallback || c.jsonp != null || b.jsonp !== !1 && (bU.test(b.url) || f && bU.test(b.data))) {
var g, h = b.jsonpCallback = d.isFunction(b.jsonpCallback) ? b.jsonpCallback() : b.jsonpCallback,
i = a[h],
j = b.url,
k = b.data,
l = "$1" + h + "$2",
m = function() {
a[h] = i, g && d.isFunction(i) && a[h](g[0])
};
b.jsonp !== !1 && (j = j.replace(bU, l), b.url === j && (f && (k = k.replace(bU, l)), b.data === k && (j += (/\?/.test(j) ? "&" : "?") + b.jsonp + "=" + h))), b.url = j, b.data = k, a[h] = function(a) {
g = [a]
}, e.then(m, m), b.converters["script json"] = function() {
g || d.error(h + " was not called");
return g[0]
}, b.dataTypes[0] = "json";
return "script"
}
}), d.ajaxSetup({
accepts: {
script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents: {
script: /javascript|ecmascript/
},
converters: {
"text script": function(a) {
d.globalEval(a);
return a
}
}
}), d.ajaxPrefilter("script", function(a) {
a.cache === b && (a.cache = !1), a.crossDomain && (a.type = "GET", a.global = !1)
}), d.ajaxTransport("script", function(a) {
if (a.crossDomain) {
var d, e = c.head || c.getElementsByTagName("head")[0] || c.documentElement;
return {
send: function(f, g) {
d = c.createElement("script"), d.async = "async", a.scriptCharset && (d.charset = a.scriptCharset), d.src = a.url, d.onload = d.onreadystatechange = function(a, c) {
if (!d.readyState || /loaded|complete/.test(d.readyState)) d.onload = d.onreadystatechange = null, e && d.parentNode && e.removeChild(d), d = b, c || g(200, "success")
}, e.insertBefore(d, e.firstChild)
},
abort: function() {
d && d.onload(0, 1)
}
}
}
});
var bV = d.now(),
bW, bX;
d.ajaxSettings.xhr = a.ActiveXObject ? function() {
return !this.isLocal && bZ() || b$()
} : bZ, bX = d.ajaxSettings.xhr(), d.support.ajax = !!bX, d.support.cors = bX && "withCredentials" in bX, bX = b, d.support.ajax && d.ajaxTransport(function(a) {
if (!a.crossDomain || d.support.cors) {
var c;
return {
send: function(e, f) {
var g = a.xhr(),
h, i;
a.username ? g.open(a.type, a.url, a.async, a.username, a.password) : g.open(a.type, a.url, a.async);
if (a.xhrFields)
for (i in a.xhrFields) g[i] = a.xhrFields[i];
a.mimeType && g.overrideMimeType && g.overrideMimeType(a.mimeType), !a.crossDomain && !e["X-Requested-With"] && (e["X-Requested-With"] = "XMLHttpRequest");
try {
for (i in e) g.setRequestHeader(i, e[i])
} catch (j) {}
g.send(a.hasContent && a.data || null), c = function(e, i) {
var j, k, l, m, n;
try {
if (c && (i || g.readyState === 4)) {
c = b, h && (g.onreadystatechange = d.noop, delete bW[h]);
if (i) g.readyState !== 4 && g.abort();
else {
j = g.status, l = g.getAllResponseHeaders(), m = {}, n = g.responseXML, n && n.documentElement && (m.xml = n), m.text = g.responseText;
try {
k = g.statusText
} catch (o) {
k = ""
}
j || !a.isLocal || a.crossDomain ? j === 1223 && (j = 204) : j = m.text ? 200 : 404
}
}
} catch (p) {
i || f(-1, p)
}
m && f(j, k, m, l)
}, a.async && g.readyState !== 4 ? (bW || (bW = {}, bY()), h = bV++, g.onreadystatechange = bW[h] = c) : c()
},
abort: function() {
c && c(0, 1)
}
}
}
});
var b_ = {},
ca = /^(?:toggle|show|hide)$/,
cb = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
cc, cd = [
["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"],
["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"],
["opacity"]
];
d.fn.extend({
show: function(a, b, c) {
var e, f;
if (a || a === 0) return this.animate(ce("show", 3), a, b, c);
for (var g = 0, h = this.length; g < h; g++) e = this[g], f = e.style.display, !d._data(e, "olddisplay") && f === "none" && (f = e.style.display = ""), f === "" && d.css(e, "display") === "none" && d._data(e, "olddisplay", cf(e
.nodeName));
for (g = 0; g < h; g++) {
e = this[g], f = e.style.display;
if (f === "" || f === "none") e.style.display = d._data(e, "olddisplay") || ""
}
return this
},
hide: function(a, b, c) {
if (a || a === 0) return this.animate(ce("hide", 3), a, b, c);
for (var e = 0, f = this.length; e < f; e++) {
var g = d.css(this[e], "display");
g !== "none" && !d._data(this[e], "olddisplay") && d._data(this[e], "olddisplay", g)
}
for (e = 0; e < f; e++) this[e].style.display = "none";
return this
},
_toggle: d.fn.toggle,
toggle: function(a, b, c) {
var e = typeof a === "boolean";
d.isFunction(a) && d.isFunction(b) ? this._toggle.apply(this, arguments) : a == null || e ? this.each(function() {
var b = e ? a : d(this).is(":hidden");
d(this)[b ? "show" : "hide"]()
}) : this.animate(ce("toggle", 3), a, b, c);
return this
},
fadeTo: function(a, b, c, d) {
return this.filter(":hidden").css("opacity", 0).show().end().animate({
opacity: b
}, a, c, d)
},
animate: function(a, b, c, e) {
var f = d.speed(b, c, e);
if (d.isEmptyObject(a)) return this.each(f.complete);
return this[f.queue === !1 ? "each" : "queue"](function() {
var b = d.extend({}, f),
c, e = this.nodeType === 1,
g = e && d(this).is(":hidden"),
h = this;
for (c in a) {
var i = d.camelCase(c);
c !== i && (a[i] = a[c], delete a[c], c = i);
if (a[c] === "hide" && g || a[c] === "show" && !g) return b.complete.call(this);
if (e && (c === "height" || c === "width")) {
b.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY];
if (d.css(this, "display") === "inline" && d.css(this, "float") === "none")
if (d.support.inlineBlockNeedsLayout) {
var j = cf(this.nodeName);
j === "inline" ? this.style.display = "inline-block" : (this.style.display = "inline", this.style.zoom = 1)
} else this.style.display = "inline-block"
}
d.isArray(a[c]) && ((b.specialEasing = b.specialEasing || {})[c] = a[c][1], a[c] = a[c][0])
}
b.overflow != null && (this.style.overflow = "hidden"), b.curAnim = d.extend({}, a), d.each(a, function(c, e) {
var f = new d.fx(h, b, c);
if (ca.test(e)) f[e === "toggle" ? g ? "show" : "hide" : e](a);
else {
var i = cb.exec(e),
j = f.cur();
if (i) {
var k = parseFloat(i[2]),
l = i[3] || (d.cssNumber[c] ? "" : "px");
l !== "px" && (d.style(h, c, (k || 1) + l), j = (k || 1) / f.cur() * j, d.style(h, c, j + l)), i[1] && (k = (i[1] === "-=" ? -1 : 1) * k + j), f.custom(j, k, l)
} else f.custom(j, e, "")
}
});
return !0
})
},
stop: function(a, b) {
var c = d.timers;
a && this.queue([]), this.each(function() {
for (var a = c.length - 1; a >= 0; a--) c[a].elem === this && (b && c[a](!0), c.splice(a, 1))
}), b || this.dequeue();
return this
}
}), d.each({
slideDown: ce("show", 1),
slideUp: ce("hide", 1),
slideToggle: ce("toggle", 1),
fadeIn: {
opacity: "show"
},
fadeOut: {
opacity: "hide"
},
fadeToggle: {
opacity: "toggle"
}
}, function(a, b) {
d.fn[a] = function(a, c, d) {
return this.animate(b, a, c, d)
}
}), d.extend({
speed: function(a, b, c) {
var e = a && typeof a === "object" ? d.extend({}, a) : {
complete: c || !c && b || d.isFunction(a) && a,
duration: a,
easing: c && b || b && !d.isFunction(b) && b
};
e.duration = d.fx.off ? 0 : typeof e.duration === "number" ? e.duration : e.duration in d.fx.speeds ? d.fx.speeds[e.duration] : d.fx.speeds._default, e.old = e.complete, e.complete = function() {
e.queue !== !1 && d(this).dequeue(), d.isFunction(e.old) && e.old.call(this)
};
return e
},
easing: {
linear: function(a, b, c, d) {
return c + d * a
},
swing: function(a, b, c, d) {
return (-Math.cos(a * Math.PI) / 2 + .5) * d + c
}
},
timers: [],
fx: function(a, b, c) {
this.options = b, this.elem = a, this.prop = c, b.orig || (b.orig = {})
}
}), d.fx.prototype = {
update: function() {
this.options.step && this.options.step.call(this.elem, this.now, this), (d.fx.step[this.prop] || d.fx.step._default)(this)
},
cur: function() {
if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null)) return this.elem[this.prop];
var a, b = d.css(this.elem, this.prop);
return isNaN(a = parseFloat(b)) ? !b || b === "auto" ? 0 : b : a
},
custom: function(a, b, c) {
function g(a) {
return e.step(a)
}
var e = this,
f = d.fx;
this.startTime = d.now(), this.start = a, this.end = b, this.unit = c || this.unit || (d.cssNumber[this.prop] ? "" : "px"), this.now = this.start, this.pos = this.state = 0, g.elem = this.elem, g() && d.timers.push(g) && !cc && (
cc = setInterval(f.tick, f.interval))
},
show: function() {
this.options.orig[this.prop] = d.style(this.elem, this.prop), this.options.show = !0, this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur()), d(this.elem).show()
},
hide: function() {
this.options.orig[this.prop] = d.style(this.elem, this.prop), this.options.hide = !0, this.custom(this.cur(), 0)
},
step: function(a) {
var b = d.now(),
c = !0;
if (a || b >= this.options.duration + this.startTime) {
this.now = this.end, this.pos = this.state = 1, this.update(), this.options.curAnim[this.prop] = !0;
for (var e in this.options.curAnim) this.options.curAnim[e] !== !0 && (c = !1);
if (c) {
if (this.options.overflow != null && !d.support.shrinkWrapBlocks) {
var f = this.elem,
g = this.options;
d.each(["", "X", "Y"], function(a, b) {
f.style["overflow" + b] = g.overflow[a]
})
}
this.options.hide && d(this.elem).hide();
if (this.options.hide || this.options.show)
for (var h in this.options.curAnim) d.style(this.elem, h, this.options.orig[h]);
this.options.complete.call(this.elem)
}
return !1
}
var i = b - this.startTime;
this.state = i / this.options.duration;
var j = this.options.specialEasing && this.options.specialEasing[this.prop],
k = this.options.easing || (d.easing.swing ? "swing" : "linear");
this.pos = d.easing[j || k](this.state, i, 0, 1, this.options.duration), this.now = this.start + (this.end - this.start) * this.pos, this.update();
return !0
}
}, d.extend(d.fx, {
tick: function() {
var a = d.timers;
for (var b = 0; b < a.length; b++) a[b]() || a.splice(b--, 1);
a.length || d.fx.stop()
},
interval: 13,
stop: function() {
clearInterval(cc), cc = null
},
speeds: {
slow: 600,
fast: 200,
_default: 400
},
step: {
opacity: function(a) {
d.style(a.elem, "opacity", a.now)
},
_default: function(a) {
a.elem.style && a.elem.style[a.prop] != null ? a.elem.style[a.prop] = (a.prop === "width" || a.prop === "height" ? Math.max(0, a.now) : a.now) + a.unit : a.elem[a.prop] = a.now
}
}
}), d.expr && d.expr.filters && (d.expr.filters.animated = function(a) {
return d.grep(d.timers, function(b) {
return a === b.elem
}).length
});
var cg = /^t(?:able|d|h)$/i,
ch = /^(?:body|html)$/i;
"getBoundingClientRect" in c.documentElement ? d.fn.offset = function(a) {
var b = this[0],
c;
if (a) return this.each(function(b) {
d.offset.setOffset(this, a, b)
});
if (!b || !b.ownerDocument) return null;
if (b === b.ownerDocument.body) return d.offset.bodyOffset(b);
try {
c = b.getBoundingClientRect()
} catch (e) {}
var f = b.ownerDocument,
g = f.documentElement;
if (!c || !d.contains(g, b)) return c ? {
top: c.top,
left: c.left
} : {
top: 0,
left: 0
};
var h = f.body,
i = ci(f),
j = g.clientTop || h.clientTop || 0,
k = g.clientLeft || h.clientLeft || 0,
l = i.pageYOffset || d.support.boxModel && g.scrollTop || h.scrollTop,
m = i.pageXOffset || d.support.boxModel && g.scrollLeft || h.scrollLeft,
n = c.top + l - j,
o = c.left + m - k;
return {
top: n,
left: o
}
} : d.fn.offset = function(a) {
var b = this[0];
if (a) return this.each(function(b) {
d.offset.setOffset(this, a, b)
});
if (!b || !b.ownerDocument) return null;
if (b === b.ownerDocument.body) return d.offset.bodyOffset(b);
d.offset.initialize();
var c, e = b.offsetParent,
f = b,
g = b.ownerDocument,
h = g.documentElement,
i = g.body,
j = g.defaultView,
k = j ? j.getComputedStyle(b, null) : b.currentStyle,
l = b.offsetTop,
m = b.offsetLeft;
while ((b = b.parentNode) && b !== i && b !== h) {
if (d.offset.supportsFixedPosition && k.position === "fixed") break;
c = j ? j.getComputedStyle(b, null) : b.currentStyle, l -= b.scrollTop, m -= b.scrollLeft, b === e && (l += b.offsetTop, m += b.offsetLeft, d.offset.doesNotAddBorder && (!d.offset.doesAddBorderForTableAndCells || !cg.test(b
.nodeName)) && (l += parseFloat(c.borderTopWidth) || 0, m += parseFloat(c.borderLeftWidth) || 0), f = e, e = b.offsetParent), d.offset.subtractsBorderForOverflowNotVisible && c.overflow !== "visible" && (l += parseFloat(c
.borderTopWidth) || 0, m += parseFloat(c.borderLeftWidth) || 0), k = c
}
if (k.position === "relative" || k.position === "static") l += i.offsetTop, m += i.offsetLeft;
d.offset.supportsFixedPosition && k.position === "fixed" && (l += Math.max(h.scrollTop, i.scrollTop), m += Math.max(h.scrollLeft, i.scrollLeft));
return {
top: l,
left: m
}
}, d.offset = {
initialize: function() {
var a = c.body,
b = c.createElement("div"),
e, f, g, h, i = parseFloat(d.css(a, "marginTop")) || 0,
j =
"<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
d.extend(b.style, {
position: "absolute",
top: 0,
left: 0,
margin: 0,
border: 0,
width: "1px",
height: "1px",
visibility: "hidden"
}), b.innerHTML = j, a.insertBefore(b, a.firstChild), e = b.firstChild, f = e.firstChild, h = e.nextSibling.firstChild.firstChild, this.doesNotAddBorder = f.offsetTop !== 5, this.doesAddBorderForTableAndCells = h.offsetTop === 5,
f.style.position = "fixed", f.style.top = "20px", this.supportsFixedPosition = f.offsetTop === 20 || f.offsetTop === 15, f.style.position = f.style.top = "", e.style.overflow = "hidden", e.style.position = "relative", this
.subtractsBorderForOverflowNotVisible = f.offsetTop === -5, this.doesNotIncludeMarginInBodyOffset = a.offsetTop !== i, a.removeChild(b), d.offset.initialize = d.noop
},
bodyOffset: function(a) {
var b = a.offsetTop,
c = a.offsetLeft;
d.offset.initialize(), d.offset.doesNotIncludeMarginInBodyOffset && (b += parseFloat(d.css(a, "marginTop")) || 0, c += parseFloat(d.css(a, "marginLeft")) || 0);
return {
top: b,
left: c
}
},
setOffset: function(a, b, c) {
var e = d.css(a, "position");
e === "static" && (a.style.position = "relative");
var f = d(a),
g = f.offset(),
h = d.css(a, "top"),
i = d.css(a, "left"),
j = (e === "absolute" || e === "fixed") && d.inArray("auto", [h, i]) > -1,
k = {},
l = {},
m, n;
j && (l = f.position()), m = j ? l.top : parseInt(h, 10) || 0, n = j ? l.left : parseInt(i, 10) || 0, d.isFunction(b) && (b = b.call(a, c, g)), b.top != null && (k.top = b.top - g.top + m), b.left != null && (k.left = b.left - g
.left + n), "using" in b ? b.using.call(a, k) : f.css(k)
}
}, d.fn.extend({
position: function() {
if (!this[0]) return null;
var a = this[0],
b = this.offsetParent(),
c = this.offset(),
e = ch.test(b[0].nodeName) ? {
top: 0,
left: 0
} : b.offset();
c.top -= parseFloat(d.css(a, "marginTop")) || 0, c.left -= parseFloat(d.css(a, "marginLeft")) || 0, e.top += parseFloat(d.css(b[0], "borderTopWidth")) || 0, e.left += parseFloat(d.css(b[0], "borderLeftWidth")) || 0;
return {
top: c.top - e.top,
left: c.left - e.left
}
},
offsetParent: function() {
return this.map(function() {
var a = this.offsetParent || c.body;
while (a && (!ch.test(a.nodeName) && d.css(a, "position") === "static")) a = a.offsetParent;
return a
})
}
}), d.each(["Left", "Top"], function(a, c) {
var e = "scroll" + c;
d.fn[e] = function(c) {
var f = this[0],
g;
if (!f) return null;
if (c !== b) return this.each(function() {
g = ci(this), g ? g.scrollTo(a ? d(g).scrollLeft() : c, a ? c : d(g).scrollTop()) : this[e] = c
});
g = ci(f);
return g ? "pageXOffset" in g ? g[a ? "pageYOffset" : "pageXOffset"] : d.support.boxModel && g.document.documentElement[e] || g.document.body[e] : f[e]
}
}), d.each(["Height", "Width"], function(a, c) {
var e = c.toLowerCase();
d.fn["inner" + c] = function() {
return this[0] ? parseFloat(d.css(this[0], e, "padding")) : null
}, d.fn["outer" + c] = function(a) {
return this[0] ? parseFloat(d.css(this[0], e, a ? "margin" : "border")) : null
}, d.fn[e] = function(a) {
var f = this[0];
if (!f) return a == null ? null : this;
if (d.isFunction(a)) return this.each(function(b) {
var c = d(this);
c[e](a.call(this, b, c[e]()))
});
if (d.isWindow(f)) {
var g = f.document.documentElement["client" + c];
return f.document.compatMode === "CSS1Compat" && g || f.document.body["client" + c] || g
}
if (f.nodeType === 9) return Math.max(f.documentElement["client" + c], f.body["scroll" + c], f.documentElement["scroll" + c], f.body["offset" + c], f.documentElement["offset" + c]);
if (a === b) {
var h = d.css(f, e),
i = parseFloat(h);
return d.isNaN(i) ? h : i
}
return this.css(e, typeof a === "string" ? a : a + "px")
}
}), a.jQuery = a.$ = d
})(window);
/*!
* jQuery Cycle Plugin (with Transition Definitions)
* Examples and documentation at: http://jquery.malsup.com/cycle/
* Copyright (c) 2007-2013 M. Alsup
* Version: 3.0.3 (11-JUL-2013)
* Dual licensed under the MIT and GPL licenses.
* http://jquery.malsup.com/license.html
* Requires: jQuery v1.7.1 or later
*/
;
(function($, undefined) {
"use strict";
var ver = '3.0.3';
function debug(s) {
if ($.fn.cycle.debug) log(s);
}
function log() {
/*global console */
if (window.console && console.log) console.log('[cycle] ' + Array.prototype.join.call(arguments, ' '));
}
$.expr[':'].paused = function(el) {
return el.cyclePause;
};
// the options arg can be...
// a number - indicates an immediate transition should occur to the given slide index
// a string - 'pause', 'resume', 'toggle', 'next', 'prev', 'stop', 'destroy' or the name of a transition effect (ie, 'fade', 'zoom', etc)
// an object - properties to control the slideshow
//
// the arg2 arg can be...
// the name of an fx (only used in conjunction with a numeric value for 'options')
// the value true (only used in first arg == 'resume') and indicates
// that the resume should occur immediately (not wait for next timeout)
$.fn.cycle = function(options, arg2) {
var o = {
s: this.selector,
c: this.context
};
// in 1.3+ we can fix mistakes with the ready state
if (this.length === 0 && options != 'stop') {
if (!$.isReady && o.s) {
log('DOM not ready, queuing slideshow');
$(function() {
$(o.s, o.c).cycle(options, arg2);
});
return this;
}
// is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
return this;
}
// iterate the matched nodeset
return this.each(function() {
var opts = handleArguments(this, options, arg2);
if (opts === false) return;
opts.updateActivePagerLink = opts.updateActivePagerLink || $.fn.cycle.updateActivePagerLink;
// stop existing slideshow for this container (if there is one)
if (this.cycleTimeout) clearTimeout(this.cycleTimeout);
this.cycleTimeout = this.cyclePause = 0;
this.cycleStop = 0; // issue #108
var $cont = $(this);
var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
var els = $slides.get();
if (els.length < 2) {
log('terminating; too few slides: ' + els.length);
return;
}
var opts2 = buildOptions($cont, $slides, els, opts, o);
if (opts2 === false) return;
var startTime = opts2.continuous ? 10 : getTimeout(els[opts2.currSlide], els[opts2.nextSlide], opts2, !opts2.backwards);
// if it's an auto slideshow, kick it off
if (startTime) {
startTime += (opts2.delay || 0);
if (startTime < 10) startTime = 10;
debug('first timeout: ' + startTime);
this.cycleTimeout = setTimeout(function() {
go(els, opts2, 0, !opts.backwards);
}, startTime);
}
});
};
function triggerPause(cont, byHover, onPager) {
var opts = $(cont).data('cycle.opts');
if (!opts) return;
var paused = !!cont.cyclePause;
if (paused && opts.paused) opts.paused(cont, opts, byHover, onPager);
else if (!paused && opts.resumed) opts.resumed(cont, opts, byHover, onPager);
}
// process the args that were passed to the plugin fn
function handleArguments(cont, options, arg2) {
if (cont.cycleStop === undefined) cont.cycleStop = 0;
if (options === undefined || options === null) options = {};
if (options.constructor == String) {
switch (options) {
case 'destroy':
case 'stop':
var opts = $(cont).data('cycle.opts');
if (!opts) return false;
cont.cycleStop++; // callbacks look for change
if (cont.cycleTimeout) clearTimeout(cont.cycleTimeout);
cont.cycleTimeout = 0;
if (opts.elements) $(opts.elements).stop();
$(cont).removeData('cycle.opts');
if (options == 'destroy') destroy(cont, opts);
return false;
case 'toggle':
cont.cyclePause = (cont.cyclePause === 1) ? 0 : 1;
checkInstantResume(cont.cyclePause, arg2, cont);
triggerPause(cont);
return false;
case 'pause':
cont.cyclePause = 1;
triggerPause(cont);
return false;
case 'resume':
cont.cyclePause = 0;
checkInstantResume(false, arg2, cont);
triggerPause(cont);
return false;
case 'prev':
case 'next':
opts = $(cont).data('cycle.opts');
if (!opts) {
log('options not found, "prev/next" ignored');
return false;
}
if (typeof arg2 == 'string') opts.oneTimeFx = arg2;
$.fn.cycle[options](opts);
return false;
default:
options = {
fx: options
};
}
return options;
} else if (options.constructor == Number) {
// go to the requested slide
var num = options;
options = $(cont).data('cycle.opts');
if (!options) {
log('options not found, can not advance slide');
return false;
}
if (num < 0 || num >= options.elements.length) {
log('invalid slide index: ' + num);
return false;
}
options.nextSlide = num;
if (cont.cycleTimeout) {
clearTimeout(cont.cycleTimeout);
cont.cycleTimeout = 0;
}
if (typeof arg2 == 'string') options.oneTimeFx = arg2;
go(options.elements, options, 1, num >= options.currSlide);
return false;
}
return options;
function checkInstantResume(isPaused, arg2, cont) {
if (!isPaused && arg2 === true) { // resume now!
var options = $(cont).data('cycle.opts');
if (!options) {
log('options not found, can not resume');
return false;
}
if (cont.cycleTimeout) {
clearTimeout(cont.cycleTimeout);
cont.cycleTimeout = 0;
}
go(options.elements, options, 1, !options.backwards);
}
}
}
function removeFilter(el, opts) {
if (!$.support.opacity && opts.cleartype && el.style.filter) {
try {
el.style.removeAttribute('filter');
} catch (smother) {} // handle old opera versions
}
}
// unbind event handlers
function destroy(cont, opts) {
if (opts.next) $(opts.next).unbind(opts.prevNextEvent);
if (opts.prev) $(opts.prev).unbind(opts.prevNextEvent);
if (opts.pager || opts.pagerAnchorBuilder) $.each(opts.pagerAnchors || [], function() {
this.unbind().remove();
});
opts.pagerAnchors = null;
$(cont).unbind('mouseenter.cycle mouseleave.cycle');
if (opts.destroy) // callback
opts.destroy(opts);
}
// one-time initialization
function buildOptions($cont, $slides, els, options, o) {
var startingSlideSpecified;
// support metadata plugin (v1.0 and v2.0)
var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
var meta = $.isFunction($cont.data) ? $cont.data(opts.metaAttr) : null;
if (meta) opts = $.extend(opts, meta);
if (opts.autostop) opts.countdown = opts.autostopCount || els.length;
var cont = $cont[0];
$cont.data('cycle.opts', opts);
opts.$cont = $cont;
opts.stopCount = cont.cycleStop;
opts.elements = els;
opts.before = opts.before ? [opts.before] : [];
opts.after = opts.after ? [opts.after] : [];
// push some after callbacks
if (!$.support.opacity && opts.cleartype) opts.after.push(function() {
removeFilter(this, opts);
});
if (opts.continuous) opts.after.push(function() {
go(els, opts, 0, !opts.backwards);
});
saveOriginalOpts(opts);
// clearType corrections
if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) clearTypeFix($slides);
// container requires non-static position so that slides can be position within
if ($cont.css('position') == 'static') $cont.css('position', 'relative');
if (opts.width) $cont.width(opts.width);
if (opts.height && opts.height != 'auto') $cont.height(opts.height);
if (opts.startingSlide !== undefined) {
opts.startingSlide = parseInt(opts.startingSlide, 10);
if (opts.startingSlide >= els.length || opts.startSlide < 0) opts.startingSlide = 0; // catch bogus input
else startingSlideSpecified = true;
} else if (opts.backwards) opts.startingSlide = els.length - 1;
else opts.startingSlide = 0;
// if random, mix up the slide array
if (opts.random) {
opts.randomMap = [];
for (var i = 0; i < els.length; i++) opts.randomMap.push(i);
opts.randomMap.sort(function(a, b) {
return Math.random() - 0.5;
});
if (startingSlideSpecified) {
// try to find the specified starting slide and if found set start slide index in the map accordingly
for (var cnt = 0; cnt < els.length; cnt++) {
if (opts.startingSlide == opts.randomMap[cnt]) {
opts.randomIndex = cnt;
}
}
} else {
opts.randomIndex = 1;
opts.startingSlide = opts.randomMap[1];
}
} else if (opts.startingSlide >= els.length) opts.startingSlide = 0; // catch bogus input
opts.currSlide = opts.startingSlide || 0;
var first = opts.startingSlide;
// set position and zIndex on all the slides
$slides.css({
position: 'absolute',
top: 0,
left: 0
}).hide().each(function(i) {
var z;
if (opts.backwards) z = first ? i <= first ? els.length + (i - first) : first - i : els.length - i;
else z = first ? i >= first ? els.length - (i - first) : first - i : els.length - i;
$(this).css('z-index', z);
});
// make sure first slide is visible
$(els[first]).css('opacity', 1).show(); // opacity bit needed to handle restart use case
removeFilter(els[first], opts);
// stretch slides
if (opts.fit) {
if (!opts.aspect) {
if (opts.width) $slides.width(opts.width);
if (opts.height && opts.height != 'auto') $slides.height(opts.height);
} else {
$slides.each(function() {
var $slide = $(this);
var ratio = (opts.aspect === true) ? $slide.width() / $slide.height() : opts.aspect;
if (opts.width && $slide.width() != opts.width) {
$slide.width(opts.width);
$slide.height(opts.width / ratio);
}
if (opts.height && $slide.height() < opts.height) {
$slide.height(opts.height);
$slide.width(opts.height * ratio);
}
});
}
}
if (opts.center && ((!opts.fit) || opts.aspect)) {
$slides.each(function() {
var $slide = $(this);
$slide.css({
"margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0,
"margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0
});
});
}
if (opts.center && !opts.fit && !opts.slideResize) {
$slides.each(function() {
var $slide = $(this);
$slide.css({
"margin-left": opts.width ? ((opts.width - $slide.width()) / 2) + "px" : 0,
"margin-top": opts.height ? ((opts.height - $slide.height()) / 2) + "px" : 0
});
});
}
// stretch container
var reshape = (opts.containerResize || opts.containerResizeHeight) && $cont.innerHeight() < 1;
if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
var maxw = 0,
maxh = 0;
for (var j = 0; j < els.length; j++) {
var $e = $(els[j]),
e = $e[0],
w = $e.outerWidth(),
h = $e.outerHeight();
if (!w) w = e.offsetWidth || e.width || $e.attr('width');
if (!h) h = e.offsetHeight || e.height || $e.attr('height');
maxw = w > maxw ? w : maxw;
maxh = h > maxh ? h : maxh;
}
if (opts.containerResize && maxw > 0 && maxh > 0) $cont.css({
width: maxw + 'px',
height: maxh + 'px'
});
if (opts.containerResizeHeight && maxh > 0) $cont.css({
height: maxh + 'px'
});
}
var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
if (opts.pause) $cont.bind('mouseenter.cycle', function() {
pauseFlag = true;
this.cyclePause++;
triggerPause(cont, true);
}).bind('mouseleave.cycle', function() {
if (pauseFlag) this.cyclePause--;
triggerPause(cont, true);
});
if (supportMultiTransitions(opts) === false) return false;
// apparently a lot of people use image slideshows without height/width attributes on the images.
// Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
var requeue = false;
options.requeueAttempts = options.requeueAttempts || 0;
$slides.each(function() {
// try to get height/width of each slide
var $el = $(this);
this.cycleH = (opts.fit && opts.height) ? opts.height : ($el.height() || this.offsetHeight || this.height || $el.attr('height') || 0);
this.cycleW = (opts.fit && opts.width) ? opts.width : ($el.width() || this.offsetWidth || this.width || $el.attr('width') || 0);
if ($el.is('img')) {
var loading = (this.cycleH === 0 && this.cycleW === 0 && !this.complete);
// don't requeue for images that are still loading but have a valid size
if (loading) {
if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
log(options.requeueAttempts, ' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
setTimeout(function() {
$(o.s, o.c).cycle(options);
}, opts.requeueTimeout);
requeue = true;
return false; // break each loop
} else {
log('could not determine size of image: ' + this.src, this.cycleW, this.cycleH);
}
}
}
return true;
});
if (requeue) return false;
opts.cssBefore = opts.cssBefore || {};
opts.cssAfter = opts.cssAfter || {};
opts.cssFirst = opts.cssFirst || {};
opts.animIn = opts.animIn || {};
opts.animOut = opts.animOut || {};
$slides.not(':eq(' + first + ')').css(opts.cssBefore);
$($slides[first]).css(opts.cssFirst);
if (opts.timeout) {
opts.timeout = parseInt(opts.timeout, 10);
// ensure that timeout and speed settings are sane
if (opts.speed.constructor == String) opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed, 10);
if (!opts.sync) opts.speed = opts.speed / 2;
var buffer = opts.fx == 'none' ? 0 : opts.fx == 'shuffle' ? 500 : 250;
while ((opts.timeout - opts.speed) < buffer) // sanitize timeout
opts.timeout += opts.speed;
}
if (opts.easing) opts.easeIn = opts.easeOut = opts.easing;
if (!opts.speedIn) opts.speedIn = opts.speed;
if (!opts.speedOut) opts.speedOut = opts.speed;
opts.slideCount = els.length;
opts.currSlide = opts.lastSlide = first;
if (opts.random) {
if (++opts.randomIndex == els.length) opts.randomIndex = 0;
opts.nextSlide = opts.randomMap[opts.randomIndex];
} else if (opts.backwards) opts.nextSlide = opts.startingSlide === 0 ? (els.length - 1) : opts.startingSlide - 1;
else opts.nextSlide = opts.startingSlide >= (els.length - 1) ? 0 : opts.startingSlide + 1;
// run transition init fn
if (!opts.multiFx) {
var init = $.fn.cycle.transitions[opts.fx];
if ($.isFunction(init)) init($cont, $slides, opts);
else if (opts.fx != 'custom' && !opts.multiFx) {
log('unknown transition: ' + opts.fx, '; slideshow terminating');
return false;
}
}
// fire artificial events
var e0 = $slides[first];
if (!opts.skipInitializationCallbacks) {
if (opts.before.length) opts.before[0].apply(e0, [e0, e0, opts, true]);
if (opts.after.length) opts.after[0].apply(e0, [e0, e0, opts, true]);
}
if (opts.next) $(opts.next).bind(opts.prevNextEvent, function() {
return advance(opts, 1);
});
if (opts.prev) $(opts.prev).bind(opts.prevNextEvent, function() {
return advance(opts, 0);
});
if (opts.pager || opts.pagerAnchorBuilder) buildPager(els, opts);
exposeAddSlide(opts, els);
return opts;
}
// save off original opts so we can restore after clearing state
function saveOriginalOpts(opts) {
opts.original = {
before: [],
after: []
};
opts.original.cssBefore = $.extend({}, opts.cssBefore);
opts.original.cssAfter = $.extend({}, opts.cssAfter);
opts.original.animIn = $.extend({}, opts.animIn);
opts.original.animOut = $.extend({}, opts.animOut);
$.each(opts.before, function() {
opts.original.before.push(this);
});
$.each(opts.after, function() {
opts.original.after.push(this);
});
}
function supportMultiTransitions(opts) {
var i, tx, txs = $.fn.cycle.transitions;
// look for multiple effects
if (opts.fx.indexOf(',') > 0) {
opts.multiFx = true;
opts.fxs = opts.fx.replace(/\s*/g, '').split(',');
// discard any bogus effect names
for (i = 0; i < opts.fxs.length; i++) {
var fx = opts.fxs[i];
tx = txs[fx];
if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
log('discarding unknown transition: ', fx);
opts.fxs.splice(i, 1);
i--;
}
}
// if we have an empty list then we threw everything away!
if (!opts.fxs.length) {
log('No valid transitions named; slideshow terminating.');
return false;
}
} else if (opts.fx == 'all') { // auto-gen the list of transitions
opts.multiFx = true;
opts.fxs = [];
for (var p in txs) {
if (txs.hasOwnProperty(p)) {
tx = txs[p];
if (txs.hasOwnProperty(p) && $.isFunction(tx)) opts.fxs.push(p);
}
}
}
if (opts.multiFx && opts.randomizeEffects) {
// munge the fxs array to make effect selection random
var r1 = Math.floor(Math.random() * 20) + 30;
for (i = 0; i < r1; i++) {
var r2 = Math.floor(Math.random() * opts.fxs.length);
opts.fxs.push(opts.fxs.splice(r2, 1)[0]);
}
debug('randomized fx sequence: ', opts.fxs);
}
return true;
}
// provide a mechanism for adding slides after the slideshow has started
function exposeAddSlide(opts, els) {
opts.addSlide = function(newSlide, prepend) {
var $s = $(newSlide),
s = $s[0];
if (!opts.autostopCount) opts.countdown++;
els[prepend ? 'unshift' : 'push'](s);
if (opts.els) opts.els[prepend ? 'unshift' : 'push'](s); // shuffle needs this
opts.slideCount = els.length;
// add the slide to the random map and resort
if (opts.random) {
opts.randomMap.push(opts.slideCount - 1);
opts.randomMap.sort(function(a, b) {
return Math.random() - 0.5;
});
}
$s.css('position', 'absolute');
$s[prepend ? 'prependTo' : 'appendTo'](opts.$cont);
if (prepend) {
opts.currSlide++;
opts.nextSlide++;
}
if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg) clearTypeFix($s);
if (opts.fit && opts.width) $s.width(opts.width);
if (opts.fit && opts.height && opts.height != 'auto') $s.height(opts.height);
s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();
$s.css(opts.cssBefore);
if (opts.pager || opts.pagerAnchorBuilder) $.fn.cycle.createPagerAnchor(els.length - 1, s, $(opts.pager), els, opts);
if ($.isFunction(opts.onAddSlide)) opts.onAddSlide($s);
else $s.hide(); // default behavior
};
}
// reset internal state; we do this on every pass in order to support multiple effects
$.fn.cycle.resetState = function(opts, fx) {
fx = fx || opts.fx;
opts.before = [];
opts.after = [];
opts.cssBefore = $.extend({}, opts.original.cssBefore);
opts.cssAfter = $.extend({}, opts.original.cssAfter);
opts.animIn = $.extend({}, opts.original.animIn);
opts.animOut = $.extend({}, opts.original.animOut);
opts.fxFn = null;
$.each(opts.original.before, function() {
opts.before.push(this);
});
$.each(opts.original.after, function() {
opts.after.push(this);
});
// re-init
var init = $.fn.cycle.transitions[fx];
if ($.isFunction(init)) init(opts.$cont, $(opts.elements), opts);
};
// this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
function go(els, opts, manual, fwd) {
var p = opts.$cont[0],
curr = els[opts.currSlide],
next = els[opts.nextSlide];
// opts.busy is true if we're in the middle of an animation
if (manual && opts.busy && opts.manualTrump) {
// let manual transitions requests trump active ones
debug('manualTrump in go(), stopping active transition');
$(els).stop(true, true);
opts.busy = 0;
clearTimeout(p.cycleTimeout);
}
// don't begin another timeout-based transition if there is one active
if (opts.busy) {
debug('transition active, ignoring new tx request');
return;
}
// stop cycling if we have an outstanding stop request
if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual) return;
// check to see if we should stop cycling based on autostop options
if (!manual && !p.cyclePause && !opts.bounce && ((opts.autostop && (--opts.countdown <= 0)) || (opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
if (opts.end) opts.end(opts);
return;
}
// if slideshow is paused, only transition on a manual trigger
var changed = false;
if ((manual || !p.cyclePause) && (opts.nextSlide != opts.currSlide)) {
changed = true;
var fx = opts.fx;
// keep trying to get the slide size if we don't have it yet
curr.cycleH = curr.cycleH || $(curr).height();
curr.cycleW = curr.cycleW || $(curr).width();
next.cycleH = next.cycleH || $(next).height();
next.cycleW = next.cycleW || $(next).width();
// support multiple transition types
if (opts.multiFx) {
if (fwd && (opts.lastFx === undefined || ++opts.lastFx >= opts.fxs.length)) opts.lastFx = 0;
else if (!fwd && (opts.lastFx === undefined || --opts.lastFx < 0)) opts.lastFx = opts.fxs.length - 1;
fx = opts.fxs[opts.lastFx];
}
// one-time fx overrides apply to: $('div').cycle(3,'zoom');
if (opts.oneTimeFx) {
fx = opts.oneTimeFx;
opts.oneTimeFx = null;
}
$.fn.cycle.resetState(opts, fx);
// run the before callbacks
if (opts.before.length) $.each(opts.before, function(i, o) {
if (p.cycleStop != opts.stopCount) return;
o.apply(next, [curr, next, opts, fwd]);
});
// stage the after callacks
var after = function() {
opts.busy = 0;
$.each(opts.after, function(i, o) {
if (p.cycleStop != opts.stopCount) return;
o.apply(next, [curr, next, opts, fwd]);
});
if (!p.cycleStop) {
// queue next transition
queueNext();
}
};
debug('tx firing(' + fx + '); currSlide: ' + opts.currSlide + '; nextSlide: ' + opts.nextSlide);
// get ready to perform the transition
opts.busy = 1;
if (opts.fxFn) // fx function provided?
opts.fxFn(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
$.fn.cycle[opts.fx](curr, next, opts, after, fwd, manual && opts.fastOnEvent);
else $.fn.cycle.custom(curr, next, opts, after, fwd, manual && opts.fastOnEvent);
} else {
queueNext();
}
if (changed || opts.nextSlide == opts.currSlide) {
// calculate the next slide
var roll;
opts.lastSlide = opts.currSlide;
if (opts.random) {
opts.currSlide = opts.nextSlide;
if (++opts.randomIndex == els.length) {
opts.randomIndex = 0;
opts.randomMap.sort(function(a, b) {
return Math.random() - 0.5;
});
}
opts.nextSlide = opts.randomMap[opts.randomIndex];
if (opts.nextSlide == opts.currSlide) opts.nextSlide = (opts.currSlide == opts.slideCount - 1) ? 0 : opts.currSlide + 1;
} else if (opts.backwards) {
roll = (opts.nextSlide - 1) < 0;
if (roll && opts.bounce) {
opts.backwards = !opts.backwards;
opts.nextSlide = 1;
opts.currSlide = 0;
} else {
opts.nextSlide = roll ? (els.length - 1) : opts.nextSlide - 1;
opts.currSlide = roll ? 0 : opts.nextSlide + 1;
}
} else { // sequence
roll = (opts.nextSlide + 1) == els.length;
if (roll && opts.bounce) {
opts.backwards = !opts.backwards;
opts.nextSlide = els.length - 2;
opts.currSlide = els.length - 1;
} else {
opts.nextSlide = roll ? 0 : opts.nextSlide + 1;
opts.currSlide = roll ? els.length - 1 : opts.nextSlide - 1;
}
}
}
if (changed && opts.pager) opts.updateActivePagerLink(opts.pager, opts.currSlide, opts.activePagerClass);
function queueNext() {
// stage the next transition
var ms = 0,
timeout = opts.timeout;
if (opts.timeout && !opts.continuous) {
ms = getTimeout(els[opts.currSlide], els[opts.nextSlide], opts, fwd);
if (opts.fx == 'shuffle') ms -= opts.speedOut;
} else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
ms = 10;
if (ms > 0) p.cycleTimeout = setTimeout(function() {
go(els, opts, 0, !opts.backwards);
}, ms);
}
}
// invoked after transition
$.fn.cycle.updateActivePagerLink = function(pager, currSlide, clsName) {
$(pager).each(function() {
$(this).children().removeClass(clsName).eq(currSlide).addClass(clsName);
});
};
// calculate timeout value for current transition
function getTimeout(curr, next, opts, fwd) {
if (opts.timeoutFn) {
// call user provided calc fn
var t = opts.timeoutFn.call(curr, curr, next, opts, fwd);
while (opts.fx != 'none' && (t - opts.speed) < 250) // sanitize timeout
t += opts.speed;
debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
if (t !== false) return t;
}
return opts.timeout;
}
// expose next/prev function, caller must pass in state
$.fn.cycle.next = function(opts) {
advance(opts, 1);
};
$.fn.cycle.prev = function(opts) {
advance(opts, 0);
};
// advance slide forward or back
function advance(opts, moveForward) {
var val = moveForward ? 1 : -1;
var els = opts.elements;
var p = opts.$cont[0],
timeout = p.cycleTimeout;
if (timeout) {
clearTimeout(timeout);
p.cycleTimeout = 0;
}
if (opts.random && val < 0) {
// move back to the previously display slide
opts.randomIndex--;
if (--opts.randomIndex == -2) opts.randomIndex = els.length - 2;
else if (opts.randomIndex == -1) opts.randomIndex = els.length - 1;
opts.nextSlide = opts.randomMap[opts.randomIndex];
} else if (opts.random) {
opts.nextSlide = opts.randomMap[opts.randomIndex];
} else {
opts.nextSlide = opts.currSlide + val;
if (opts.nextSlide < 0) {
if (opts.nowrap) return false;
opts.nextSlide = els.length - 1;
} else if (opts.nextSlide >= els.length) {
if (opts.nowrap) return false;
opts.nextSlide = 0;
}
}
var cb = opts.onPrevNextEvent || opts.prevNextClick; // prevNextClick is deprecated
if ($.isFunction(cb)) cb(val > 0, opts.nextSlide, els[opts.nextSlide]);
go(els, opts, 1, moveForward);
return false;
}
function buildPager(els, opts) {
var $p = $(opts.pager);
$.each(els, function(i, o) {
$.fn.cycle.createPagerAnchor(i, o, $p, els, opts);
});
opts.updateActivePagerLink(opts.pager, opts.startingSlide, opts.activePagerClass);
}
$.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
var a;
if ($.isFunction(opts.pagerAnchorBuilder)) {
a = opts.pagerAnchorBuilder(i, el);
debug('pagerAnchorBuilder(' + i + ', el) returned: ' + a);
} else a = '<a href="#">' + (i + 1) + '</a>';
if (!a) return;
var $a = $(a);
// don't reparent if anchor is in the dom
if ($a.parents('body').length === 0) {
var arr = [];
if ($p.length > 1) {
$p.each(function() {
var $clone = $a.clone(true);
$(this).append($clone);
arr.push($clone[0]);
});
$a = $(arr);
} else {
$a.appendTo($p);
}
}
opts.pagerAnchors = opts.pagerAnchors || [];
opts.pagerAnchors.push($a);
var pagerFn = function(e) {
e.preventDefault();
opts.nextSlide = i;
var p = opts.$cont[0],
timeout = p.cycleTimeout;
if (timeout) {
clearTimeout(timeout);
p.cycleTimeout = 0;
}
var cb = opts.onPagerEvent || opts.pagerClick; // pagerClick is deprecated
if ($.isFunction(cb)) cb(opts.nextSlide, els[opts.nextSlide]);
go(els, opts, 1, opts.currSlide < i); // trigger the trans
// return false; // <== allow bubble
};
if (/mouseenter|mouseover/i.test(opts.pagerEvent)) {
$a.hover(pagerFn, function() {
/* no-op */ });
} else {
$a.bind(opts.pagerEvent, pagerFn);
}
if (!/^click/.test(opts.pagerEvent) && !opts.allowPagerClickBubble) $a.bind('click.cycle', function() {
return false;
}); // suppress click
var cont = opts.$cont[0];
var pauseFlag = false; // https://github.com/malsup/cycle/issues/44
if (opts.pauseOnPagerHover) {
$a.hover(function() {
pauseFlag = true;
cont.cyclePause++;
triggerPause(cont, true, true);
}, function() {
if (pauseFlag) cont.cyclePause--;
triggerPause(cont, true, true);
});
}
};
// helper fn to calculate the number of slides between the current and the next
$.fn.cycle.hopsFromLast = function(opts, fwd) {
var hops, l = opts.lastSlide,
c = opts.currSlide;
if (fwd) hops = c > l ? c - l : opts.slideCount - l;
else hops = c < l ? l - c : l + opts.slideCount - c;
return hops;
};
// fix clearType problems in ie6 by setting an explicit bg color
// (otherwise text slides look horrible during a fade transition)
function clearTypeFix($slides) {
debug('applying clearType background-color hack');
function hex(s) {
s = parseInt(s, 10).toString(16);
return s.length < 2 ? '0' + s : s;
}
function getBg(e) {
for (; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
var v = $.css(e, 'background-color');
if (v && v.indexOf('rgb') >= 0) {
var rgb = v.match(/\d+/g);
return '#' + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
}
if (v && v != 'transparent') return v;
}
return '#ffffff';
}
$slides.each(function() {
$(this).css('background-color', getBg(this));
});
}
// reset common props before the next transition
$.fn.cycle.commonReset = function(curr, next, opts, w, h, rev) {
$(opts.elements).not(curr).hide();
if (typeof opts.cssBefore.opacity == 'undefined') opts.cssBefore.opacity = 1;
opts.cssBefore.display = 'block';
if (opts.slideResize && w !== false && next.cycleW > 0) opts.cssBefore.width = next.cycleW;
if (opts.slideResize && h !== false && next.cycleH > 0) opts.cssBefore.height = next.cycleH;
opts.cssAfter = opts.cssAfter || {};
opts.cssAfter.display = 'none';
$(curr).css('zIndex', opts.slideCount + (rev === true ? 1 : 0));
$(next).css('zIndex', opts.slideCount + (rev === true ? 0 : 1));
};
// the actual fn for effecting a transition
$.fn.cycle.custom = function(curr, next, opts, cb, fwd, speedOverride) {
var $l = $(curr),
$n = $(next);
var speedIn = opts.speedIn,
speedOut = opts.speedOut,
easeIn = opts.easeIn,
easeOut = opts.easeOut,
animInDelay = opts.animInDelay,
animOutDelay = opts.animOutDelay;
$n.css(opts.cssBefore);
if (speedOverride) {
if (typeof speedOverride == 'number') speedIn = speedOut = speedOverride;
else speedIn = speedOut = 1;
easeIn = easeOut = null;
}
var fn = function() {
$n.delay(animInDelay).animate(opts.animIn, speedIn, easeIn, function() {
cb();
});
};
$l.delay(animOutDelay).animate(opts.animOut, speedOut, easeOut, function() {
$l.css(opts.cssAfter);
if (!opts.sync) fn();
});
if (opts.sync) fn();
};
// transition definitions - only fade is defined here, transition pack defines the rest
$.fn.cycle.transitions = {
fade: function($cont, $slides, opts) {
$slides.not(':eq(' + opts.currSlide + ')').css('opacity', 0);
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts);
opts.cssBefore.opacity = 0;
});
opts.animIn = {
opacity: 1
};
opts.animOut = {
opacity: 0
};
opts.cssBefore = {
top: 0,
left: 0
};
}
};
$.fn.cycle.ver = function() {
return ver;
};
// override these globally if you like (they are all optional)
$.fn.cycle.defaults = {
activePagerClass: 'activeSlide', // class name used for the active pager link
after: null, // transition callback (scope set to element that was shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
allowPagerClickBubble: false, // allows or prevents click event on pager anchors from bubbling
animIn: null, // properties that define how the slide animates in
animInDelay: 0, // allows delay before next slide transitions in
animOut: null, // properties that define how the slide animates out
animOutDelay: 0, // allows delay before current slide transitions out
aspect: false, // preserve aspect ratio during fit resizing, cropping if necessary (must be used with fit option)
autostop: 0, // true to end slideshow after X transitions (where X == slide count)
autostopCount: 0, // number of transitions (optionally used with autostop to define X)
backwards: false, // true to start slideshow at last slide and move backwards through the stack
before: null, // transition callback (scope set to element to be shown): function(currSlideElement, nextSlideElement, options, forwardFlag)
center: null, // set to true to have cycle add top/left margin to each slide (use with width and height options)
cleartype: !$.support.opacity, // true if clearType corrections should be applied (for IE)
cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
containerResize: 1, // resize container to fit largest slide
containerResizeHeight: 0, // resize containers height to fit the largest slide but leave the width dynamic
continuous: 0, // true to start next transition immediately after current one completes
cssAfter: null, // properties that defined the state of the slide after transitioning out
cssBefore: null, // properties that define the initial state of the slide before transitioning in
delay: 0, // additional delay (in ms) for first transition (hint: can be negative)
easeIn: null, // easing for "in" transition
easeOut: null, // easing for "out" transition
easing: null, // easing method for both in and out transitions
end: null, // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
fastOnEvent: 0, // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
fit: 0, // force slides to fit container
fx: 'fade', // name of transition effect (or comma separated names, ex: 'fade,scrollUp,shuffle')
fxFn: null, // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
height: 'auto', // container height (if the 'fit' option is true, the slides will be set to this height as well)
manualTrump: true, // causes manual transition to stop an active transition instead of being ignored
metaAttr: 'cycle', // data- attribute that holds the option data for the slideshow
next: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for next slide
nowrap: 0, // true to prevent slideshow from wrapping
onPagerEvent: null, // callback fn for pager events: function(zeroBasedSlideIndex, slideElement)
onPrevNextEvent: null, // callback fn for prev/next events: function(isNext, zeroBasedSlideIndex, slideElement)
pager: null, // element, jQuery object, or jQuery selector string for the element to use as pager container
pagerAnchorBuilder: null, // callback fn for building anchor links: function(index, DOMelement)
pagerEvent: 'click.cycle', // name of event which drives the pager navigation
pause: 0, // true to enable "pause on hover"
pauseOnPagerHover: 0, // true to pause when hovering over pager link
prev: null, // element, jQuery object, or jQuery selector string for the element to use as event trigger for previous slide
prevNextEvent: 'click.cycle', // event which drives the manual transition to the previous or next slide
random: 0, // true for random, false for sequence (not applicable to shuffle fx)
randomizeEffects: 1, // valid when multiple effects are used; true to make the effect sequence random
requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
requeueTimeout: 250, // ms delay for requeue
rev: 0, // causes animations to transition in reverse (for effects that support it such as scrollHorz/scrollVert/shuffle)
shuffle: null, // coords for shuffle animation, ex: { top:15, left: 200 }
skipInitializationCallbacks: false, // set to true to disable the first before/after callback that occurs prior to any transition
slideExpr: null, // expression for selecting slides (if something other than all children is required)
slideResize: 1, // force slide width/height to fixed size before every transition
speed: 1000, // speed of the transition (any valid fx speed value)
speedIn: null, // speed of the 'in' transition
speedOut: null, // speed of the 'out' transition
startingSlide: undefined, // zero-based index of the first slide to be displayed
sync: 1, // true if in/out transitions should occur simultaneously
timeout: 4000, // milliseconds between slide transitions (0 to disable auto advance)
timeoutFn: null, // callback for determining per-slide timeout value: function(currSlideElement, nextSlideElement, options, forwardFlag)
updateActivePagerLink: null, // callback fn invoked to update the active pager link (adds/removes activePagerClass style)
width: null // container width (if the 'fit' option is true, the slides will be set to this width as well)
};
})(jQuery);
/*!
* jQuery Cycle Plugin Transition Definitions
* This script is a plugin for the jQuery Cycle Plugin
* Examples and documentation at: http://malsup.com/jquery/cycle/
* Copyright (c) 2007-2010 M. Alsup
* Version: 2.73
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function($) {
"use strict";
//
// These functions define slide initialization and properties for the named
// transitions. To save file size feel free to remove any of these that you
// don't need.
//
$.fn.cycle.transitions.none = function($cont, $slides, opts) {
opts.fxFn = function(curr, next, opts, after) {
$(next).show();
$(curr).hide();
after();
};
};
// not a cross-fade, fadeout only fades out the top slide
$.fn.cycle.transitions.fadeout = function($cont, $slides, opts) {
$slides.not(':eq(' + opts.currSlide + ')').css({
display: 'block',
'opacity': 1
});
opts.before.push(function(curr, next, opts, w, h, rev) {
$(curr).css('zIndex', opts.slideCount + (rev !== true ? 1 : 0));
$(next).css('zIndex', opts.slideCount + (rev !== true ? 0 : 1));
});
opts.animIn.opacity = 1;
opts.animOut.opacity = 0;
opts.cssBefore.opacity = 1;
opts.cssBefore.display = 'block';
opts.cssAfter.zIndex = 0;
};
// scrollUp/Down/Left/Right
$.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
$cont.css('overflow', 'hidden');
opts.before.push($.fn.cycle.commonReset);
var h = $cont.height();
opts.cssBefore.top = h;
opts.cssBefore.left = 0;
opts.cssFirst.top = 0;
opts.animIn.top = 0;
opts.animOut.top = -h;
};
$.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
$cont.css('overflow', 'hidden');
opts.before.push($.fn.cycle.commonReset);
var h = $cont.height();
opts.cssFirst.top = 0;
opts.cssBefore.top = -h;
opts.cssBefore.left = 0;
opts.animIn.top = 0;
opts.animOut.top = h;
};
$.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
$cont.css('overflow', 'hidden');
opts.before.push($.fn.cycle.commonReset);
var w = $cont.width();
opts.cssFirst.left = 0;
opts.cssBefore.left = w;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.left = 0 - w;
};
$.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
$cont.css('overflow', 'hidden');
opts.before.push($.fn.cycle.commonReset);
var w = $cont.width();
opts.cssFirst.left = 0;
opts.cssBefore.left = -w;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.left = w;
};
$.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
$cont.css('overflow', 'hidden').width();
opts.before.push(function(curr, next, opts, fwd) {
if (opts.rev) fwd = !fwd;
$.fn.cycle.commonReset(curr, next, opts);
opts.cssBefore.left = fwd ? (next.cycleW - 1) : (1 - next.cycleW);
opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
});
opts.cssFirst.left = 0;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.top = 0;
};
$.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
$cont.css('overflow', 'hidden');
opts.before.push(function(curr, next, opts, fwd) {
if (opts.rev) fwd = !fwd;
$.fn.cycle.commonReset(curr, next, opts);
opts.cssBefore.top = fwd ? (1 - next.cycleH) : (next.cycleH - 1);
opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
});
opts.cssFirst.top = 0;
opts.cssBefore.left = 0;
opts.animIn.top = 0;
opts.animOut.left = 0;
};
// slideX/slideY
$.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$(opts.elements).not(curr).hide();
$.fn.cycle.commonReset(curr, next, opts, false, true);
opts.animIn.width = next.cycleW;
});
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
opts.animIn.width = 'show';
opts.animOut.width = 0;
};
$.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$(opts.elements).not(curr).hide();
$.fn.cycle.commonReset(curr, next, opts, true, false);
opts.animIn.height = next.cycleH;
});
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.cssBefore.height = 0;
opts.animIn.height = 'show';
opts.animOut.height = 0;
};
// shuffle
$.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
var i, w = $cont.css('overflow', 'visible').width();
$slides.css({
left: 0,
top: 0
});
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, true, true);
});
// only adjust speed once!
if (!opts.speedAdjusted) {
opts.speed = opts.speed / 2; // shuffle has 2 transitions
opts.speedAdjusted = true;
}
opts.random = 0;
opts.shuffle = opts.shuffle || {
left: -w,
top: 15
};
opts.els = [];
for (i = 0; i < $slides.length; i++) opts.els.push($slides[i]);
for (i = 0; i < opts.currSlide; i++) opts.els.push(opts.els.shift());
// custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
opts.fxFn = function(curr, next, opts, cb, fwd) {
if (opts.rev) fwd = !fwd;
var $el = fwd ? $(curr) : $(next);
$(next).css(opts.cssBefore);
var count = opts.slideCount;
$el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
var hops = $.fn.cycle.hopsFromLast(opts, fwd);
for (var k = 0; k < hops; k++) {
if (fwd) opts.els.push(opts.els.shift());
else opts.els.unshift(opts.els.pop());
}
if (fwd) {
for (var i = 0, len = opts.els.length; i < len; i++) $(opts.els[i]).css('z-index', len - i + count);
} else {
var z = $(curr).css('z-index');
$el.css('z-index', parseInt(z, 10) + 1 + count);
}
$el.animate({
left: 0,
top: 0
}, opts.speedOut, opts.easeOut, function() {
$(fwd ? this : curr).hide();
if (cb) cb();
});
});
};
$.extend(opts.cssBefore, {
display: 'block',
opacity: 1,
top: 0,
left: 0
});
};
// turnUp/Down/Left/Right
$.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, false);
opts.cssBefore.top = next.cycleH;
opts.animIn.height = next.cycleH;
opts.animOut.width = next.cycleW;
});
opts.cssFirst.top = 0;
opts.cssBefore.left = 0;
opts.cssBefore.height = 0;
opts.animIn.top = 0;
opts.animOut.height = 0;
};
$.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, false);
opts.animIn.height = next.cycleH;
opts.animOut.top = curr.cycleH;
});
opts.cssFirst.top = 0;
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.cssBefore.height = 0;
opts.animOut.height = 0;
};
$.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, false, true);
opts.cssBefore.left = next.cycleW;
opts.animIn.width = next.cycleW;
});
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
opts.animIn.left = 0;
opts.animOut.width = 0;
};
$.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, false, true);
opts.animIn.width = next.cycleW;
opts.animOut.left = curr.cycleW;
});
$.extend(opts.cssBefore, {
top: 0,
left: 0,
width: 0
});
opts.animIn.left = 0;
opts.animOut.width = 0;
};
// zoom
$.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, false, false, true);
opts.cssBefore.top = next.cycleH / 2;
opts.cssBefore.left = next.cycleW / 2;
$.extend(opts.animIn, {
top: 0,
left: 0,
width: next.cycleW,
height: next.cycleH
});
$.extend(opts.animOut, {
width: 0,
height: 0,
top: curr.cycleH / 2,
left: curr.cycleW / 2
});
});
opts.cssFirst.top = 0;
opts.cssFirst.left = 0;
opts.cssBefore.width = 0;
opts.cssBefore.height = 0;
};
// fadeZoom
$.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, false, false);
opts.cssBefore.left = next.cycleW / 2;
opts.cssBefore.top = next.cycleH / 2;
$.extend(opts.animIn, {
top: 0,
left: 0,
width: next.cycleW,
height: next.cycleH
});
});
opts.cssBefore.width = 0;
opts.cssBefore.height = 0;
opts.animOut.opacity = 0;
};
// blindX
$.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
var w = $cont.css('overflow', 'hidden').width();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts);
opts.animIn.width = next.cycleW;
opts.animOut.left = curr.cycleW;
});
opts.cssBefore.left = w;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
opts.animOut.left = w;
};
// blindY
$.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
var h = $cont.css('overflow', 'hidden').height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts);
opts.animIn.height = next.cycleH;
opts.animOut.top = curr.cycleH;
});
opts.cssBefore.top = h;
opts.cssBefore.left = 0;
opts.animIn.top = 0;
opts.animOut.top = h;
};
// blindZ
$.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
var h = $cont.css('overflow', 'hidden').height();
var w = $cont.width();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts);
opts.animIn.height = next.cycleH;
opts.animOut.top = curr.cycleH;
});
opts.cssBefore.top = h;
opts.cssBefore.left = w;
opts.animIn.top = 0;
opts.animIn.left = 0;
opts.animOut.top = h;
opts.animOut.left = w;
};
// growX - grow horizontally from centered 0 width
$.fn.cycle.transitions.growX = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, false, true);
opts.cssBefore.left = this.cycleW / 2;
opts.animIn.left = 0;
opts.animIn.width = this.cycleW;
opts.animOut.left = 0;
});
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
};
// growY - grow vertically from centered 0 height
$.fn.cycle.transitions.growY = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, false);
opts.cssBefore.top = this.cycleH / 2;
opts.animIn.top = 0;
opts.animIn.height = this.cycleH;
opts.animOut.top = 0;
});
opts.cssBefore.height = 0;
opts.cssBefore.left = 0;
};
// curtainX - squeeze in both edges horizontally
$.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, false, true, true);
opts.cssBefore.left = next.cycleW / 2;
opts.animIn.left = 0;
opts.animIn.width = this.cycleW;
opts.animOut.left = curr.cycleW / 2;
opts.animOut.width = 0;
});
opts.cssBefore.top = 0;
opts.cssBefore.width = 0;
};
// curtainY - squeeze in both edges vertically
$.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, false, true);
opts.cssBefore.top = next.cycleH / 2;
opts.animIn.top = 0;
opts.animIn.height = next.cycleH;
opts.animOut.top = curr.cycleH / 2;
opts.animOut.height = 0;
});
opts.cssBefore.height = 0;
opts.cssBefore.left = 0;
};
// cover - curr slide covered by next slide
$.fn.cycle.transitions.cover = function($cont, $slides, opts) {
var d = opts.direction || 'left';
var w = $cont.css('overflow', 'hidden').width();
var h = $cont.height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts);
opts.cssAfter.display = '';
if (d == 'right') opts.cssBefore.left = -w;
else if (d == 'up') opts.cssBefore.top = h;
else if (d == 'down') opts.cssBefore.top = -h;
else opts.cssBefore.left = w;
});
opts.animIn.left = 0;
opts.animIn.top = 0;
opts.cssBefore.top = 0;
opts.cssBefore.left = 0;
};
// uncover - curr slide moves off next slide
$.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
var d = opts.direction || 'left';
var w = $cont.css('overflow', 'hidden').width();
var h = $cont.height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, true, true);
if (d == 'right') opts.animOut.left = w;
else if (d == 'up') opts.animOut.top = -h;
else if (d == 'down') opts.animOut.top = h;
else opts.animOut.left = -w;
});
opts.animIn.left = 0;
opts.animIn.top = 0;
opts.cssBefore.top = 0;
opts.cssBefore.left = 0;
};
// toss - move top slide and fade away
$.fn.cycle.transitions.toss = function($cont, $slides, opts) {
var w = $cont.css('overflow', 'visible').width();
var h = $cont.height();
opts.before.push(function(curr, next, opts) {
$.fn.cycle.commonReset(curr, next, opts, true, true, true);
// provide default toss settings if animOut not provided
if (!opts.animOut.left && !opts.animOut.top) $.extend(opts.animOut, {
left: w * 2,
top: -h / 2,
opacity: 0
});
else opts.animOut.opacity = 0;
});
opts.cssBefore.left = 0;
opts.cssBefore.top = 0;
opts.animIn.left = 0;
};
// wipe - clip animation
$.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
var w = $cont.css('overflow', 'hidden').width();
var h = $cont.height();
opts.cssBefore = opts.cssBefore || {};
var clip;
if (opts.clip) {
if (/l2r/.test(opts.clip)) clip = 'rect(0px 0px ' + h + 'px 0px)';
else if (/r2l/.test(opts.clip)) clip = 'rect(0px ' + w + 'px ' + h + 'px ' + w + 'px)';
else if (/t2b/.test(opts.clip)) clip = 'rect(0px ' + w + 'px 0px 0px)';
else if (/b2t/.test(opts.clip)) clip = 'rect(' + h + 'px ' + w + 'px ' + h + 'px 0px)';
else if (/zoom/.test(opts.clip)) {
var top = parseInt(h / 2, 10);
var left = parseInt(w / 2, 10);
clip = 'rect(' + top + 'px ' + left + 'px ' + top + 'px ' + left + 'px)';
}
}
opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';
var d = opts.cssBefore.clip.match(/(\d+)/g);
var t = parseInt(d[0], 10),
r = parseInt(d[1], 10),
b = parseInt(d[2], 10),
l = parseInt(d[3], 10);
opts.before.push(function(curr, next, opts) {
if (curr == next) return;
var $curr = $(curr),
$next = $(next);
$.fn.cycle.commonReset(curr, next, opts, true, true, false);
opts.cssAfter.display = 'block';
var step = 1,
count = parseInt((opts.speedIn / 13), 10) - 1;
(function f() {
var tt = t ? t - parseInt(step * (t / count), 10) : 0;
var ll = l ? l - parseInt(step * (l / count), 10) : 0;
var bb = b < h ? b + parseInt(step * ((h - b) / count || 1), 10) : h;
var rr = r < w ? r + parseInt(step * ((w - r) / count || 1), 10) : w;
$next.css({
clip: 'rect(' + tt + 'px ' + rr + 'px ' + bb + 'px ' + ll + 'px)'
});
(step++ <= count) ? setTimeout(f, 13): $curr.css('display', 'none');
})();
});
$.extend(opts.cssBefore, {
display: 'block',
opacity: 1,
top: 0,
left: 0
});
opts.animIn = {
left: 0
};
opts.animOut = {
left: 0
};
};
})(jQuery);
</script>
<script type="text/javascript">
$(function() {
$('#slideshow img:first').fadeIn(800, function() {
$('#slideshow').cycle({
speed: 800,
timeout: 160
});
});
});
</script>
<!-- Inline Script Include Widget - End -->
</div>
<!--footer-->
<div class="container-fluid nopad nextstep">
<section class="bg2-primary" style="padding-top: 30px; padding-bottom: 30px; background-color: #939597">
<div class="container">
<div class="row row-eq-height-footer">
<div class="col-xs-12 col-sm-12 col-md-6 col-lg-6 text-left">
<h3 class="mb0" style="color: #fff"> Sprechen Sie mit uns </h3>
<p style="color: #fff"> Die modularen Lösungen von Dematic erzielen einen hohen Return on Investment. Kontaktieren Sie einen Dematic-Vertreter und wir helfen Ihnen, die richtige Lösung für Ihr Unternehmen zu finden oder Ihre Fragen zu
beantworten. </p>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-md-offset-1 col-lg-3 text-left borderleft">
<i class="ti ti-email" style="font-size: 50px; color: #fff"></i>
<h4 class="mb0" style="color: #fff">Email</h4>
<p style="color: #fff; margin-bottom: 8px"> Füllen Sie ein kurzes Formular aus und wir melden uns umgehend bei Ihnen. </p>
<div class="goto mb0 mt0" style="text-align: left">
<a class="gotolink gotowhite " href="/de-de/kontakt">Ihre <span class="lastword">Angaben… <i class="ti-arrow-circle-right"></i></span></a>
</div>
</div>
<div class="col-xs-6 col-sm-6 col-md-3 col-lg-3 text-left borderleft">
<i class="ti ti-mobile" style="font-size: 50px; color: #fff"></i>
<h4 class="mb0" style="color: #fff">Telefon</h4>
<p style="color: #fff; margin-bottom: 8px"> Rufen Sie uns an! Wir freuen uns, von Ihnen zu hören. </p>
<h5 class="mt0 mb0">
<a href="tel:+49 69 5830250" class="whitelink">+49 69 583025-0</a>
</h5>
</div>
</div>
</div>
</section>
</div>
<div class="container-fluid nopad" style="border-top: 1px solid #dedede; background-color: #f5f5f5">
<footer class="footer-1 bg-light">
<div class="container">
<div class="row">
<div class="col-xs-6 col-sm-3 col-md-3 mb-xs-32">
<ul style="padding-left: 0">
<li class="mb16"><a href="/de-de/branchen/branchenueberblick">Branchenüberblick</a></li>
<li class="mb16"><a href="/de-de/loesungen/loesungsueberblick">Lösungsüberblick</a></li>
<li class="mb16"><a href="/de-de/produkte">Produkte</a></li>
<li class="mb16"><a href="/de-de/software">Software</a></li>
<li class="mb16"><a href="/de-de/services">Services & Support</a></li>
</ul>
</div>
<div class="col-xs-6 col-sm-3 col-md-3 mb-xs-32">
<ul style="padding-left: 0">
<li class="mb16"><a href="/de-de/ueber">Über</a></li>
<li class="mb16"><a href="/de-de/presse-und-veranstaltungen">Presse & Veranstaltungen</a></li>
<li class="mb16"><a href="/de-de/downloads-und-ressourcen">Downloads und Ressourcen</a></li>
<li class="mb16"><a href="/de-de/ueber/karriere">Karriere</a></li>
</ul>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="widget">
<div>
<div class="col-xs-7 col-md-6 col-sm-6" style="padding-left: 0; margin-left: 0">
<h5 class="title mb0" style="padding-left: 0">Follow Dematic</h5>
</div>
<div class="col-xs-5 col-md-6 col-sm-6 text-right">
<ul class="list-inline social-list mb0">
<li>
<a href="https://www.linkedin.com/company/dematic/" target="_blank">
<i class="ti-linkedin"></i>
</a>
</li>
<li>
<a href="https://www.facebook.com/Dematicglobal" target="_blank">
<i class="ti-facebook"></i>
</a>
</li>
<li>
<a href="https://twitter.com/dematicglobal" target="_blank">
<i class="ti-twitter-alt"></i>
</a>
</li>
<li>
<a href="https://www.youtube.com/DematicEuropa" target="_blank">
<i class="ti-youtube"></i>
</a>
</li>
<li>
<a href="https://www.xing.com/companies/dematic" target="_blank">
<i class=""></i>
</a>
</li>
</ul>
</div>
</div>
<div style="clear: both"></div>
<hr>
<div class="twitter-feed">
<div class="tweets-feed" data-feed-name="DematicEuropa" id="tweets-0">
</div>
</div>
</div>
</div>
</div>
</div>
</footer>
</div>
<div class="container-fluid nopad" style="border-top: 1px solid #ededed; background-color: #4c4c4c; position: relative">
<div class="container uppercase" style="position: absolute; right: 0px; top: -30px; background-color: #939597; width: 80px; height: 30px; color: #fff; text-align: center; line-height: 30px; font-size: 12px">
<a href="#" class="back-to-top">
Top <i class="ti-angle-double-up" style="vertical-align: -1px"></i>
</a>
</div>
<footer class="footer-1 bg-light pb16 pt24">
<div class="container pt0 mt0">
<div class="row v-align-children">
<div class="col-xs-12 col-sm-9 col-md-10 col-lg-10">
<h5 style="margin-bottom: 0; font-weight: 400; color: #ededed">
<span style="color:#fdba30">Power</span> the Future of Commerce
</h5>
<div class="sub">
<a href="/de-de/legal/impressum">Impressum</a>
<span class="lastword">| <a href="/de-de/legal/nutzungsbedingungen">Nutzungsbedingungen</a>
</span>
<span class="lastword">| <a href="/de-de/legal/datenschutz">Datenschutzrichtlinie</a>
</span>
<span class="lastword">| <a href="/de-de/legal/cookies">Cookies</a>
</span>
<span class="lastword">| <a href="/de-de/legal/datenschutzerklarung-fur-dematic-kandidaten">Datenschutzerklärung für Dematic-Kandidaten</a>
</span>
</div>
</div>
<div class="col-xs-12 col-sm-3 col-md-2 col-lg-2 pt0">
<div class="logobottom">
<img alt="Logo" src="/Content/img/logo-white.png" class="img-responsive mb8">
<div class="sub"> © 2021 Dematic </div>
</div>
</div>
</div>
</div>
</footer>
</div>
<script src="/Content/js/dematic.bundle.min.js"></script>
<script src="/Content/js/blazy.min.js"></script>
<!-- Search Modal -->
<div class="modal fade" id="search" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-controls-modal="your_div_id" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog search-dialog">
<div class="modal-content-2">
<div class="modal-body" align="left" style="margin-top: 0; padding-top: 100px; background-color: transparent !important">
<div class="row">
<div class="col-lg-12" style="margin: 0; padding: 0">
<div id="pnlSearch" class="input-group" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'btnSearch')">
<span class="input-group-btn">
<button class="btn-search" type="button">Search:</button>
</span>
<input name="txtSearch" type="text" id="txtSearch" class="form-control-2" style="width: 100%">
<span class="input-group-btn">
<input type="submit" name="btnSearch" value="Go!" id="btnSearch" class="btn-search" style="background-color: #fdba30; margin: 0; color: #fff; padding-left: 12px; padding-right: 12px">
</span>
<span class="input-group-btn">
<button class="btn-search close" type="button" style="background-color: #4c4c4c; margin: 0; width: 60px; color: #fff; opacity: 1.0" data-dismiss="modal" aria-label="Close">X</button>
</span>
</div>
<!-- /input-group -->
</div>
<!-- /.col-lg-6 -->
</div>
</div>
</div>
</div>
</div>
</form>
Text Content
* Downloads und Ressourcen Broschüren Anwenderberichte White Papers Videos * Presse und Veranstaltungen Veranstaltungen Presse und Mitteilungen Webinare * Karriere * Kontakt Support Power the Future of Commerce MENU * Branchen * * Branchenüberblick * Bekleidung und Textil * Produzierendes Gewerbe * E-Commerce * Nahrungs- und Genussmittelindustrie * Handel * Lebensmittelhandel * Gesundheitswesen * Konsumgüter-Industrie * Paketdienstleister * Third-Party Logistics (Kontraktlogistik) * Großhandel (B2B) * * Lösungen * * Systemlösungen * Micro-Fulfillment * Retouren-System * Taschensorter * Lösungsüberblick * Wareneingangsverarbeitung * Förderung und Transport * Lagerung und Zwischenlagerung * Behälterkommissionierung * Stückgutkommissionierung * Warenausgangsverarbeitung * * Produkte * * Produktüberblick * Fahrerlose Transportsysteme * Fördertechnik / Fördersysteme * Hängesysteme * Palettierung und Depalettierung * Kommissioniersysteme * Robotik-Systeme * Sorter und automatische Sortiersysteme * Lagerautomation: Lagertechnik und Lagersysteme * Arbeitsstationssysteme * * Software * * Logistiksoftware * Dematic InSights * Dematic iQ Optimize * Dematic iQ Virtual * Dematic iQ Workflow * Dematic Sprocket * SAP Lösungen * SAP EWM * SAP LES * Dematic SubSuite 2.0 * SAP TM * Projektmethodik * Ihr Nutzen * Altsysteme * E'wms® Warehouse Management System * * Services & Support * * Kundendienst * Beratung und Training * Anlagenverwaltungssystem (Enterprise Asset Management, EAM) * Kundendienst vor Ort * Modernisierungen und Upgrades * Fernüberwachung und Fernbetreuung * Betriebsbegleitung * Gewährleistungs-Management Europa/EMEA * Kunden-Support * Ersatzteile * Technischer Support * * Über * * Über Dematic * Dematic wird 200 * Innovationen * The KION Group * Lösungskompetenz * Unternehmensleitung * ISO 9001 zertifiziertes QMS * Konformität * Branchenverbände * Karriere * Leben bei Dematic * Offene Stellen * * Downloads und Ressourcen * Broschüren * Anwenderberichte * White Papers * Videos * Presse und Veranstaltungen * Veranstaltungen * Presse und Mitteilungen * Webinare * Karriere * Kontakt * Worldwide * * Asia Pacific * Australia - English * India - English * Indonesia - English * Korea - English * Malaysia - English * New Zealand - English * Philipines - English * Singapore - English * Taiwan - English * Thailand - English * Vietnam - English * China * China - 中国版 * * Europe/EMEA * Austria - Deutsch * Belgium - Français Nederlands * Denmark - English * Estonia - English * Finland - English * France - Français * Germany - Deutsch * Ireland - English * Italy - Italiano * Latvia - English * Lithuania - English * Netherlands - Nederlands * Norway - English * Poland - Polski * Portugal - Português * Russia - Русский * South Africa - English * Spain - Español * Sweden - English * Switzerland - Deutsch * United Kingdom - English UK * * Latin America * Argentina - Español * Bolivia - Español * Brazil - Português * Chile - Español * Colombia - Español * Costa Rica - Español * Ecuador - Español * Panama - Español * Paraguay - Español * Peru - Español * Uruguay - Español * North America * Canada - English Français * Mexico - Español * United States - English * GLOBAL VIRTUAL CONFERENCE INNOVATION IST NICHT MEHR OPTIONAL - SIE IST EINE NOTWENDIGKEIT, UM VORANZUKOMMEN. Weitere Infos DEMATIC MICRO-FULFILLMENT Weitere Infos GROSSE WIRKUNG AUF KLEINEM RAUM Mehr über AutoStore UNSERE LÖSUNGEN FÜR DEN EINZEL- UND LEBENSMITTELHANDEL Anpassbar an Ihre Bedürfnisse BRANCHEN Sie kennen Ihren Markt – und Dematic verfügt über die richtigen Lösungen zur Erfüllung Ihrer spezifischen Branchenanforderungen. Erkunden LÖSUNGEN Produktion und Vertrieb sind mit einer Vielzahl intralogistischer Herausforderungen verbunden. Dematic hat die richtigen Lösungen dafür. Erkunden PRODUKTE Produkte sind Instrumente, um Aufgaben zu erfüllen. Dematic bietet die beste Auswahl für die beste Lösung. Erkunden 1. 2. 3. 4. 5. LÖSUNGEN FÜR DIE ZUKUNFT DES HANDELS: MICRO-FULFILLMENT SCHNELLE AUFTRAGSERFÜLLUNG Die Micro-Fulfillment-Lösung von Dematic ist eine leistungsstarke Kombination aus intelligenter Automatisierungs-Hardware und proprietärer Software, die speziell entwickelt wurde, um Einzelhändlern aus allen Branchen zu helfen, die steigende Nachfrage der Verbraucher nach schneller Online-Bestellabwicklung zu befriedigen. Mehr über Micro-Fulfillment LÖSUNGEN, DIE IHRE SUPPLY CHAIN OPTIMIEREN: ROBOTER-KOMMISSIONIERSYSTEM LIGHTS-OUT ORDER FULFILLMENT Da Kunden eine schnellere, genauere Auftragsabwicklung verlangen, können Distributionszentren, die nach wie vor auf manuelle Arbeit setzen, kaum mithalten. Dematic Robotik-Systeme ersetzen knappe und teure Arbeitskräfte durch automatisierte Lösungen für wichtige Lagerfunktionen, einschließlich des „Last Touch“ im Order-Fulfillment-Prozess. Mehr... LÖSUNGEN, DIE IHRE SUPPLY CHAIN OPTIMIEREN: DEMATIC IQ LEISTUNGSOPTIMIERENDE SOFTWARE Dematic iQ ist eine umfassende Software-Plattform, die Ihren Anlagenbetrieb von Anfang bis Ende automatisiert und optimiert. Dematic iQ bietet skalierbare Lösungen vom einfachen/konventionellen Betrieb bis hin zu hochintegrierten/automatisierten Anlagen. Konfigurierbare, einfach zu implementierende Module spiegeln Best Practices wider, die in jahrzehntelanger Erfahrung in der Materialhandhabung sowie in der betrieblichen Forschung und Simulationsmodellierung erworben wurden. Mehr... LÖSUNGEN, DIE IHRE SUPPLY CHAIN OPTIMIEREN: TASCHENSORTIERSYSTEM DISTRIBUTIONS- UND RETOUREN-AUFGABEN LÖSEN Das Dematic Taschensortiersystem ist ein automatisches Hängesystem auf Rollenadaptern, das sowohl hängende als auch flach verpackte Waren und Kartons gleichzeitig puffern und sortieren kann. Diese vielseitige Funktionalität macht es ideal für Multichannel-Modehändler, die unterschiedliches Stückgut in einer Bestellung kombinieren möchten. Mehr... LÖSUNGEN, DIE IHRE SUPPLY CHAIN OPTIMIEREN: VOICE-TECHNOLOGIE ERHÖHTE PRODUKTIVITÄT, GENAUIGKEIT UND FLEXIBILITÄT Dematic Pick-to-Voice-Systeme ermöglichen einen bedeutenden Vorsprung in der Auftragsabwicklung. Indem sie Anweisungen vollständig per Sprache übermitteln, schaffen diese Systeme konsequent Einsparungen und einen Wettbewerbsvorteil. Mehr... AUSGEWÄHLTER ANWENDERBERICHT: C.E. PATTBERG DIE LÖSUNG: Während die Waren zuvor in Hochregallagern auf insgesamt 6.000 Quadratmetern Platz fanden, lagert die AutoStore®-Anlage einen Großteil der Artikel nun auf einer Fläche von rund 170 Quadratmetern. Zum Anwenderbericht ZUKUNFTSORIENTIERTE AUFTRAGSERFÜLLUNG WARUM MICRO-FULFILLMENT DIE ANTWORT DES EINZELHANDELS AUF DIE MODERNE VERBRAUCHERNACHFRAGE IST Die Verbraucher kaufen mit 77% höherer Wahrscheinlichkeit in einem Geschäft ein, wenn es eine Lieferung am selben Tag anbietet. Laden Sie unser Playbook herunter, um zu sehen, wie die Micro-Fulfillment eine skalierbare, profitable Lösung für heutige Lieferanforderungen bieten kann. Mehr über Micro-Fulfillment SPRECHEN SIE MIT UNS Die modularen Lösungen von Dematic erzielen einen hohen Return on Investment. Kontaktieren Sie einen Dematic-Vertreter und wir helfen Ihnen, die richtige Lösung für Ihr Unternehmen zu finden oder Ihre Fragen zu beantworten. EMAIL Füllen Sie ein kurzes Formular aus und wir melden uns umgehend bei Ihnen. Ihre Angaben… TELEFON Rufen Sie uns an! Wir freuen uns, von Ihnen zu hören. +49 69 583025-0 * Branchenüberblick * Lösungsüberblick * Produkte * Software * Services & Support * Über * Presse & Veranstaltungen * Downloads und Ressourcen * Karriere FOLLOW DEMATIC * * * * * -------------------------------------------------------------------------------- Top POWER THE FUTURE OF COMMERCE Impressum | Nutzungsbedingungen | Datenschutzrichtlinie | Cookies | Datenschutzerklärung für Dematic-Kandidaten © 2021 Dematic Search: X DATENSCHUTZ-PRÄFERENZ-CENTER Wenn Sie eine Website besuchen, kann diese Informationen über Ihren Browser abrufen oder speichern. Dies geschieht meist in Form von Cookies. Hierbei kann es sich um Informationen über Sie, Ihre Einstellungen oder Ihr Gerät handeln. Meist werden die Informationen verwendet, um die erwartungsgemäße Funktion der Website zu gewährleisten. Durch diese Informationen werden Sie normalerweise nicht direkt identifiziert. Dadurch kann Ihnen aber ein personalisierteres Web-Erlebnis geboten werden. Da wir Ihr Recht auf Datenschutz respektieren, können Sie sich entscheiden, bestimmte Arten von Cookies nicht zulassen. Klicken Sie auf die verschiedenen Kategorieüberschriften, um mehr zu erfahren und unsere Standardeinstellungen zu ändern. Die Blockierung bestimmter Arten von Cookies kann jedoch zu einer beeinträchtigten Erfahrung mit der von uns zur Verfügung gestellten Website und Dienste führen. Weitere Informationen Alle zulassen EINWILLIGUNGSPRÄFERENZEN VERWALTEN UNBEDINGT ERFORDERLICHE COOKIES Immer aktiv Diese Cookies sind zur Funktion der Website erforderlich und können in Ihren Systemen nicht deaktiviert werden. In der Regel werden diese Cookies nur als Reaktion auf von Ihnen getätigte Aktionen gesetzt, die einer Dienstanforderung entsprechen, wie etwa dem Festlegen Ihrer Datenschutzeinstellungen, dem Anmelden oder dem Ausfüllen von Formularen. Sie können Ihren Browser so einstellen, dass diese Cookies blockiert oder Sie über diese Cookies benachrichtigt werden. Einige Bereiche der Website funktionieren dann aber nicht. Diese Cookies speichern keine personenbezogenen Daten. LEISTUNGS-COOKIES Leistungs-Cookies Diese Cookies ermöglichen es uns, Besuche und Verkehrsquellen zu zählen, damit wir die Leistung unserer Website messen und verbessern können. Sie unterstützen uns bei der Beantwortung der Fragen, welche Seiten am beliebtesten sind, welche am wenigsten genutzt werden und wie sich Besucher auf der Website bewegen. Alle von diesen Cookies erfassten Informationen werden aggregiert und sind deshalb anonym. Wenn Sie diese Cookies nicht zulassen, können wir nicht wissen, wann Sie unsere Website besucht haben. FUNKTIONELLE COOKIES Funktionelle Cookies Mit diesen Cookies ist die Website in der Lage, erweiterte Funktionalität und Personalisierung bereitzustellen. Sie können von uns oder von Drittanbietern gesetzt werden, deren Dienste wir auf unseren Seiten verwenden. Wenn Sie diese Cookies nicht zulassen, funktionieren einige oder alle dieser Dienste möglicherweise nicht einwandfrei. COOKIES FÜR MARKETINGZWECKE Cookies für Marketingzwecke Diese Cookies können über unsere Website von unseren Werbepartnern gesetzt werden. Sie können von diesen Unternehmen verwendet werden, um ein Profil Ihrer Interessen zu erstellen und Ihnen relevante Anzeigen auf anderen Websites zu zeigen. Sie speichern nicht direkt personenbezogene Daten, basieren jedoch auf einer einzigartigen Identifizierung Ihres Browsers und Internet-Geräts. Wenn Sie diese Cookies nicht zulassen, werden Sie weniger gezielte Werbung erleben. BACK BUTTON PERFORMANCE COOKIES Vendor Search Search Icon Filter Icon Clear checkbox label label Apply Cancel Consent Leg.Interest checkbox label label checkbox label label checkbox label label Alle ablehnen Meine Auswahl bestätigen Wenn Sie auf „Alle Cookies akzeptieren“ klicken, stimmen Sie der Speicherung von Cookies auf Ihrem Gerät zu, um die Websitenavigation zu verbessern, die Websitenutzung zu analysieren und unsere Marketingbemühungen zu unterstützen. Alle Cookies akzeptieren Cookie-Einstellungen