1<!DOCTYPE html> 2<html id="ctl00_html1" xmlns="http://www.w3.org/1999/xhtml" lang="cs" xml:lang="cs"> 3<head id="ctl00_Head1">
3<script> 4window.dataLayer = window.dataLayer || []; 5function gtag(){dataLayer.push(arguments);} 6gtag('consent', 'default', {'ad_storage': 'denied', 7 'ad_user_data': 'denied', 8 'ad_personalization': 'denied', 9 'analytics_storage': 'denied', 10 'functionality_storage': 'denied', 11 'personalization_storage': 'denied', 12 'security_storage': 'denied', 13 'anonymize_ip': true, 'client_id': 'w4n3pp33tdhvqsynxrxr1g2h', 14 'debug_mode': false }); 15</script>
vendor: 65 bytes, lines 15-16
15 16<script async src="https://www.googletagmanager.com/gtag/js?id=
16G-L8G9W5N2FL
vendor: 13 bytes, line 16
16"></script>
17<script> 18gtag('js', new Date()); 19 20gtag('config', 'G-L8G9W5N2FL'); 21</script>
vendor: 2 bytes, line 21
21
22<script> 23dataLayer = [{ 24'ecomm_pagetype' : 'category', 25'category_id' : '9740000101:7740000101', 26'category_name' : 'Zdravà a krása | Osobnà péÄe | Kosmetika | PéÄe o pleÅ¥ | Äisticà pleÅ¥ové pÅÃpravky', 27'category_name_default' : 'Kategorie > PleÅ¥', 28'customerCategory': 'B2C', 29'customerCategoryId': '2500000101' 30}]; </script>
30<script> 31window.dataLayer = window.dataLayer || []; 32function gtag(){dataLayer.push(arguments);} 33gtag('consent', 'default', {'ad_storage': 'denied', 34 'ad_user_data': 'denied', 35 'analytics_storage': 'denied', 36 'ad_personalization': 'denied', 37 'functionality_storage': 'denied', 38 'personalization_storage': 'denied', 39 'security_storage': 'denied', 40 'anonymize_ip': true, 'client_id': 'w4n3pp33tdhvqsynxrxr1g2h' }); 41</script>
vendor: 63 bytes, line 41
41<script async src="https://www.googletagmanager.com/gtag/js?id=
41AW-1035942262
vendor: 13 bytes, line 41
41"></script>
42<script> 43gtag('js', new Date()); 44 45gtag('config', 'AW-1035942262',{'allow_enhanced_conversions':true}); 46</script>
vendor: 2 bytes, line 46
46
47<script> 48gtag('event','view_item_list', { 49'send_to': 'AW-1035942262', 50'value': '', 51}); 52</script>
vendor: 2 bytes, line 52
52
53<script> 54gtag('event','view_item_list',{"user_id":"8f6589ba82a680b405acf73c61f8971e","item_list_name":"Kategorie | PleÅ¥","items":[{"item_id":"3L6J000101","item_name":"MARIA GALLAND Book Collection The Iconic set vyživujÃcà pleÅ¥ové kosmetiky \t\t ","index":0,"price":1892.56,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"YK6J000101","item_name":"MARIA GALLAND Cleansing Ritual Kosmetický set bonbon pro odlÃÄenà pleti \t\t ","index":1,"price":818.18,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"XK6J000101","item_name":"MARIA GALLAND Firming Kosmetický set na lifting pleti \t\t ","index":2,"price":2223.14,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"VK6J000101","item_name":"MARIA GALLAND Illuminating Kosmetický set pro záÅivou a hydratovanou pleÅ¥ \t\t ","index":3,"price":1809.92,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"WK6J000101","item_name":"MARIA GALLAND Nourishing Kosmetický set pro výživu pleti \t\t ","index":4,"price":1975.21,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"ZK6J000101","item_name":"MARIA GALLAND Nourishing Ritual Kosmetický set bonbon pro výživu pleti \t\t ","index":5,"price":487.6,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"RM6J000101","item_name":"THALGO Cold Cream Marine set vyživujÃcà pleÅ¥ové kosmetiky ","index":6,"price":1586.78,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"MM6J000101","item_name":"THALGO Ãveil à la Mer Skin Radiance kosmetický set pro odlÃÄenà pleti ","index":7,"price":966.94,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"1N6J000101","item_name":"THALGO Exception Marine set zpevÅujÃcà pleÅ¥ové kosmetiky ","index":8,"price":3140.5,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"OM6J000101","item_name":"THALGO Express Beauty kosmetický set pleÅ¥ových masek ","index":9,"price":818.18,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"LM6J000101","item_name":"THALGO Hyalu-Procollagène Secret Santa kosmetický set zpevÅujÃcà na pleÅ¥ ","index":10,"price":669.42,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"TM6J000101","item_name":"THALGO Hyalu-Procollagène set zpevÅujÃcà pleÅ¥ové kosmetiky ","index":11,"price":2247.93,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"7N6J000101","item_name":"THALGO Men set kosmetiky pro muže ","index":12,"price":1479.34,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"UM6J000101","item_name":"THALGO Prodige des Océans set vyživujÃcà pleÅ¥ové kosmetiky ","index":13,"price":4793.39,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"0N6J000101","item_name":"THALGO Silicium Lift set liftingové pleÅ¥ové kosmetiky ","index":14,"price":2504.13,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"KM6J000101","item_name":"THALGO Source Marine Secret Santa kosmetický set hydrataÄnà na pleÅ¥ ","index":15,"price":669.42,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"QM6J000101","item_name":"THALGO Source Marine set hydrataÄnà pleÅ¥ové kosmetiky ","index":16,"price":1487.6,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"SM6J000101","item_name":"THALGO Spiruline Boost set vyhlazujÃcà pleÅ¥ové kosmetiky ","index":17,"price":1900.83,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"RK6J000101","item_name":"MARIA GALLAND Adventnà kalendáŠs pleÅ¥ovou kosmetikou, vzorky a dárky \t\t ","index":18,"price":2719.01,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"AL5J000101","item_name":"DR. HAUSCHKA Adventnà kalendáŠ","index":19,"price":2239.67,"discount":0.
540,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"CL5J000101","item_name":"DR. HAUSCHKA Dárková sada Äistota - ÄistÃcà rituál ","index":20,"price":685.95,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"BL5J000101","item_name":"DR. HAUSCHKA Dárková sada Klid - rituál pro duÅ¡evnà pohodu ","index":21,"price":537.19,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"EL5J000101","item_name":"DR. HAUSCHKA Dárková sada RozkvÄt - obnovujÃcà rituál ","index":22,"price":1115.7,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"DL5J000101","item_name":"DR. HAUSCHKA Dárková sada SvÄžest - hydrataÄnà rituál ","index":23,"price":876.03,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"0L6J000101","item_name":"MARIA GALLAND Book Collection The Affectionate Hydra set pleÅ¥ové kosmetiky \t\t ","index":24,"price":1148.76,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"},{"item_id":"1L6J000101","item_name":"MARIA GALLAND Book Collection The Affectionate Lift set pleÅ¥ové kosmetiky \t\t ","index":25,"price":1561.98,"discount":0.0,"item_category":"Kategorie","item_category2":"PleÅ¥"}]}); 55</script>
55 56<title> 57 Profesionálnà pleÅ¥ová kosmetika vaÅ¡i pleÅ¥ skuteÄnÄ rozmazlà a omladà | SENSUALITE.CZ 58</title><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=10.0" /> 59 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 60
60<script type='text/javascript' src="/scripts/unbundled/jquery.min.js"></script>
60 61 62
62<script src="/scripts/ie.js" language="javascript" type="text/javascript"></script>
62 63 64 65<link rel="preconnect" href="https://www.google.com" crossorigin> 66<link rel="dns-prefetch" href="https://www.google.com"> 67 68<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 69<link rel="dns-prefetch" href="https://fonts.gstatic.com"> 70 71<link rel="preconnect" href="https://www.google-analytics.com" crossorigin> 72<link rel="dns-prefetch" href="https://www.google-analytics.com"> 73 74<link rel="preconnect" href="https://analytics.google.com" crossorigin> 75<link rel="dns-prefetch" href="https://analytics.google.com"> 76 77<link rel="preconnect" href="https://connect.facebook.net" crossorigin> 78<link rel="dns-prefetch" href="https://connect.facebook.net"> 79 80<link rel="preload" as="font" href="https://fonts.gstatic.com/s/muli/v26/7Auwp_0qiz-afT3GLRrX.woff2" crossorigin> 81<link rel="preload" as="font" href="https://fonts.gstatic.com/s/muli/v26/7Auwp_0qiz-afTLGLQ.woff2" crossorigin> 82 83 84
85<script src="/scripts/unbundled/jquery-ui.min.js"></script>
vendor: 2 bytes, line 85
85
86<script src="/scripts/unbundled/bootstrap.min.js"></script>
86 87 88<meta name="facebook-domain-verification" content="bgv0ml4twzt4qaetmbs9ls2l5ktyb9" /> 89
90<script type="text/javascript" src="/scripts/jquery.easy-autocomplete.js"></script>
90 91
92<script id="mcjs">!function(c,h,i,m,p){m=c.createElement(h),p=c.getElementsByTagName(h)[0],m.async=1,m.src=i,p.parentNode.insertBefore(m,p)}(document,"script","https://chimpstatic.com/mcjs-connected/js/users/0a9c9df0313ac3ca7bac9b0eb/86e3b5c236fef9187e2990ce4.js");</script>
92 93 94
95<script async src="https://scripts.luigisbox.tech/LBX-561731.js"></script>
95<link media="all" href="/App_Themes/Default/bootstrap.min.css?v=10ff36bb2a6e73ade20b203d33645de5" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/easyautocomplete.css?v=126b089c01e60e382cd20293cb6a2d46" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/fonts.css?v=06109c12deae0f9ee6392d4d37c23ccd" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/jquery.fancybox.min.css?v=f6e0deb061084f28af2fced43f3c71a3" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/owl.carousel.css?v=ea98152e4fdeb4032847eb8ec4bc9d0f" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/owl.theme.default.css?v=a1e70807b5e5aadea4fd9570a8070d77" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/screen.css?v=6e6a3ad718660723a21bda70af16b94a" type="text/css" rel="stylesheet" /><link media="all" href="/App_Themes/Default/xcustom.css?v=c056561ad9f0f58995794a51e458f1f2" type="text/css" rel="stylesheet" /><meta name="description" content="DopÅejte své pleti pÅesnÄ to, co potÅebuje. â¤ï¸ HýÄkejte ji luxusnà peÄujÃcà kosmetikou renomovaných profesionálnÃch znaÄek. VaÅ¡e pleÅ¥ bude opÄt omlazená a rozzáÅená. VÃme to, protože ji sami použÃváme na sobÄ i na zákaznicÃch v naÅ¡em kosmetickém salonu. Zbožà pÅÃmo od výrobců." /><meta name="keywords" content="pleÅ¥ová kosmetika, kosmetika na pleÅ¥, pleÅ¥ový krém, krém proti vráskám, omlazujÃcà krém, krém na vrásky, pleÅ¥ové sérum, sérum na pleÅ¥, oÄnà krém, luxusnà kosmetika, kosmetika na vrásky, kosmetika proti stárnutÃ, pleÅ¥ová maska" /><meta name="author" content="Martin ProchÄËzka" /><meta name="copyright" content="SENSUALITE2021" /><meta name="robots" content="index,follow" /><meta name="googlebot" content="index,follow" /><link rel='preconnect' href='//c.seznam.cz'> 96 97
97<script src='https://c.seznam.cz/js/rc.js'></script>
97 98
98<script> 99 100 101 var retargetingConf = { 102 rtgId: 20149, 103 104 consent: 0 105 }; 106 window.rc.consent = 0 107 window.rc.retargetingHit(retargetingConf); 108 </script>
108<!--[if lt IE 9]>
108<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
108<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
108<![endif]-->
108<script type="text/javascript" language="Javascript" src="/scripts/jquery.nivo.slider.js"></script>
108<style type="text/css"> 109 .ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_TCWebPartZone1_0 { border-color:Black;border-width:1px;border-style:Solid; } 110 .ctl00_ewpz1_mainTemplateCtrl_TCWebPartZone1b_0 { border-color:Black;border-width:1px;border-style:Solid; } 111 112</style></head> 113<body id="ctl00_bodymaster"> 114 115 <form method="post" action="/kategorie/plet/" onsubmit="javascript:return WebForm_OnSubmit();" id="aspnetForm"> 116<div class="aspNetHidden"> 117<input type="hidden" name="__WPPS" id="__WPPS" value="s" /> 118<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> 119<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 120<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" /> 121<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPZwUPOGRmMjA5ZTM0YzFkNTJkmd7b6eyE2aiNr+3vJU6TSe3tfIs=" /> 122</div> 123
124<script type="text/javascript"> 125//<![CDATA[ 126var theForm = document.forms['aspnetForm']; 127if (!theForm) { 128 theForm = document.aspnetForm; 129} 130function __doPostBack(eventTarget, eventArgument) { 131 if (!theForm.onsubmit || (theForm.onsubmit() != false)) { 132 theForm.__EVENTTARGET.value = eventTarget; 133 theForm.__EVENTARGUMENT.value = eventArgument; 134 theForm.submit(); 135 } 136} 137//]]> 138</script>
138 139 140
141<script src="/WebResource.axd?d=Cr6NY1haBII3CUWgTf-vRxkAVYzK1FJ6XORbJp5zHXYb1faJ2WnIXBUQYE-i4nGMszzp_Bd8NNpxf0uVdI32lDKWS0A1&t=638901608248157332" type="text/javascript"></script>
141 142 143
144<script type="text/javascript"> 145//<![CDATA[ 146var __cultureInfo = {"name":"cs-CZ","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":",","IsReadOnly":false,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":" ","CurrencySymbol":"KÄ","NaNSymbol":"NaN","CurrencyNegativePattern":8,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-â","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":",","NumberGroupSeparator":" ","CurrencyPositivePattern":3,"PositiveInfinitySymbol":"â","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":",","PercentGroupSeparator":" ","PercentSymbol":"%","PerMilleSymbol":"â°","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"dop.","Calendar":{"MinSupportedDateTime":"\/Date(-62135596800000)\/","MaxSupportedDateTime":"\/Date(253402297199999)\/","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":false},"DateSeparator":".","FirstDayOfWeek":1,"CalendarWeekRule":2,"FullDateTimePattern":"dddd d. MMMM yyyy H:mm:ss","LongDatePattern":"dddd d. MMMM yyyy","LongTimePattern":"H:mm:ss","MonthDayPattern":"d. MMMM","PMDesignator":"odp.","RFC1123Pattern":"ddd, dd MMM yyyy HH\u0027:\u0027mm\u0027:\u0027ss \u0027GMT\u0027","ShortDatePattern":"dd.MM.yyyy","ShortTimePattern":"H:mm","SortableDateTimePattern":"yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\u0027-\u0027MM\u0027-\u0027dd HH\u0027:\u0027mm\u0027:\u0027ss\u0027Z\u0027","YearMonthPattern":"MMMM yyyy","AbbreviatedDayNames":["ne","po","út","st","Ät","pá","so"],"ShortestDayNames":["ne","po","út","st","Ät","pá","so"],"DayNames":["nedÄle","pondÄlÃ","úterý","stÅeda","Ätvrtek","pátek","sobota"],"AbbreviatedMonthNames":["led","úno","bÅe","dub","kvÄ","Ävn","Ävc","srp","záÅ","ÅÃj","lis","pro",""],"MonthNames":["leden","únor","bÅezen","duben","kvÄten","Äerven","Äervenec","srpen","záÅÃ","ÅÃjen","listopad","prosinec",""],"IsReadOnly":false,"NativeCalendarName":"Gregoriánský kalendáÅ","AbbreviatedMonthGenitiveNames":["led","úno","bÅe","dub","kvÄ","Ävn","Ävc","srp","záÅ","ÅÃj","lis","pro",""],"MonthGenitiveNames":["ledna","února","bÅezna","dubna","kvÄtna","Äervna","Äervence","srpna","záÅÃ","ÅÃjna","listopadu","prosince",""]},"eras":[1,"n. l.",null,0]};//]]> 147</script>
147 148
149<script src="/ScriptResource.axd?d=JLPvQCe79CMbnupy1Gw_l-8pG_7krA5qC2o0PaW7tIF2yz74Duh32ebddUL2UKxVYoXrogGXs_yQiGyzTGbDPyUEO-5d0Vsv9NQfr_2CPzolVg_BPkdMBupmv3MFEDN6M2fPD3H4bI2U8FrLkONBCpVCxcg1&t=5c0e0825" type="text/javascript"></script>
vendor: 2 bytes, line 149
149
150<script src="/ScriptResource.axd?d=ZSlWV-saEH3R2M3u8ZSRpICNWAa1IAES3J1XO9-87VImt0T286xSlcRSuRX0mqI1YWdemKFL25HeOcGp_Y5uvWqD-cJb33-4BOa1lCayGCuLiq1OA8qUpR8zxh9rJ-sPquWz94eFSp0YYzrA80szMwRK96-YOumEr6uFA56InFiMf6rm0&t=5c0e0825" type="text/javascript"></script>
vendor: 2 bytes, line 150
150
151<script type="text/javascript"> 152//<![CDATA[ 153var PageMethods = function() { 154PageMethods.initializeBase(this); 155this._timeout = 0; 156this._userContext = null; 157this._succeeded = null; 158this._failed = null; 159} 160PageMethods.prototype = { 161_get_path:function() { 162 var p = this.get_path(); 163 if (p) return p; 164 else return PageMethods._staticInstance.get_path();}, 165GetAutoCompleteSearchTextDiskSystems:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 166return this._invoke(this._get_path(), 'GetAutoCompleteSearchTextDiskSystems',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 167GetAutoCompleteSearchTextDOLTAK2025:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 168return this._invoke(this._get_path(), 'GetAutoCompleteSearchTextDOLTAK2025',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 169GetAutoCompleteSearchTextFREESTORE:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 170return this._invoke(this._get_path(), 'GetAutoCompleteSearchTextFREESTORE',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 171GetAutoCompleteAllStorecards:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 172return this._invoke(this._get_path(), 'GetAutoCompleteAllStorecards',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 173CheckCountryPopup:function(succeededCallback, failedCallback, userContext) { 174return this._invoke(this._get_path(), 'CheckCountryPopup',false,{},succeededCallback,failedCallback,userContext); }, 175GetAutoCompleteSearchTextTOPWET:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 176return this._invoke(this._get_path(), 'GetAutoCompleteSearchTextTOPWET',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 177PostAutoCompleteSearchAddToCartTOPWET:function(itemId,quantity,succeededCallback, failedCallback, userContext) { 178return this._invoke(this._get_path(), 'PostAutoCompleteSearchAddToCartTOPWET',false,{itemId:itemId,quantity:quantity},succeededCallback,failedCallback,userContext); }, 179GetAutoCompleteSearchTextSTART2022:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 180return this._invoke(this._get_path(), 'GetAutoCompleteSearchTextSTART2022',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 181GetAutoCompleteSearchText:function(prefixText,count,contextKey,succeededCallback, failedCallback, userContext) { 182return this._invoke(this._get_path(), 'GetAutoCompleteSearchText',false,{prefixText:prefixText,count:count,contextKey:contextKey},succeededCallback,failedCallback,userContext); }, 183PostAutoCompleteSearchAddToCart:function(itemId,quantity,succeededCallback, failedCallback, userContext) { 184return this._invoke(this._get_path(), 'PostAutoCompleteSearchAddToCart',false,{itemId:itemId,quantity:quantity},succeededCallback,failedCallback,userContext); }, 185CategoryGridGetRows:function(currpage,pagerows,succeededCallback, failedCallback, userContext) { 186return this._invoke(this._get_path(), 'CategoryGridGetRows',false,{currpage:currpage,pagerows:pagerows},succeededCallback,failedCallback,userContext); }} 187PageMethods.registerClass('PageMethods',Sys.Net.WebServiceProxy); 188PageMethods._staticInstance = new PageMethods(); 189PageMethods.set_path = function(value) { PageMethods._staticInstance.set_path(value); } 190PageMethods.get_path = function() { return PageMethods._staticInstance.get_path(); } 191PageMethods.set_timeout = function(value) { PageMethods._staticInstance.set_timeout(value); } 192PageMethods.get_timeout = function() { return PageMethods._staticInstance.get_timeout(); } 193PageMethods.set_defaultUserContext = function(value) { PageMethods._staticInstance.set_defaultUserContext(value); } 194PageMethods.get_defaultUserContext = function() { return PageMethods._staticInstance.get_defaultUserContext(); } 195PageMethods.set_defaultSucceededCallback = function(value) { PageMethods._staticInstance.set_defaultSucceededCallback(value); } 196PageMethods.get_defaultSucceededCallback = function() { return PageMethods._staticInstance.get_defaultSucceededCallback(); } 197PageMethods.set_defaultFailedCallback = function(value) { PageMethods._staticInstance.set_defaultFailedCallback(value); } 198PageMethods.get_defaultFailedCallback = function() { return PageMethods._staticInstance.get_defaultFailedCallback(); } 199PageMethods.set_enableJsonp = function(value) { PageMethods._staticInstance.set_enableJsonp(value); } 200PageMethods.get_enableJsonp = function() { return PageMethods._staticInstance.get_enableJsonp(); } 201PageMethods.set_jsonpCallbackParameter = function(value) { PageMethods._staticInstance.set_jsonpCallbackParameter(value); } 202PageMethods.get_jsonpCallbackParameter = function() { return PageMethods._staticInstance.get_jsonpCallbackParameter(); } 203PageMethods.set_path("./"); 204PageMethods.GetAutoCompleteSearchTextDiskSystems= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteSearchTextDiskSystems(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 205PageMethods.GetAutoCompleteSearchTextDOLTAK2025= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteSearchTextDOLTAK2025(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 206PageMethods.GetAutoCompleteSearchTextFREESTORE= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteSearchTextFREESTORE(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 207PageMethods.GetAutoCompleteAllStorecards= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteAllStorecards(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 208PageMethods.CheckCountryPopup= function(onSuccess,onFailed,userContext) {PageMethods._staticInstance.CheckCountryPopup(onSuccess,onFailed,userContext); } 209PageMethods.GetAutoCompleteSearchTextTOPWET= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteSearchTextTOPWET(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 210PageMethods.PostAutoCompleteSearchAddToCartTOPWET= function(itemId,quantity,onSuccess,onFailed,userContext) {PageMethods._staticInstance.PostAutoCompleteSearchAddToCartTOPWET(itemId,quantity,onSuccess,onFailed,userContext); } 211PageMethods.GetAutoCompleteSearchTextSTART2022= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteSearchTextSTART2022(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 212PageMethods.GetAutoCompleteSearchText= function(prefixText,count,contextKey,onSuccess,onFailed,userContext) {PageMethods._staticInstance.GetAutoCompleteSearchText(prefixText,count,contextKey,onSuccess,onFailed,userContext); } 213PageMethods.PostAutoCompleteSearchAddToCart= function(itemId,quantity,onSuccess,onFailed,userContext) {PageMethods._staticInstance.PostAutoCompleteSearchAddToCart(itemId,quantity,onSuccess,onFailed,userContext); } 214PageMethods.CategoryGridGetRows= function(currpage,pagerows,onSuccess,onFailed,userContext) {PageMethods._staticInstance.CategoryGridGetRows(currpage,pagerows,onSuccess,onFailed,userContext); } 215var gtc = Sys.Net.WebServiceProxy._generateTypedConstructor; 216Type.registerNamespace('WebCtrlLib'); 217if (typeof(WebCtrlLib.CategoryGridItem) === 'undefined') { 218WebCtrlLib.CategoryGridItem=gtc("WebCtrlLib.CategoryGridItem"); 219WebCtrlLib.CategoryGridItem.registerClass('WebCtrlLib.CategoryGridItem'); 220} 221function WebForm_OnSubmit() { 222null; 223return true; 224} 225//]]> 226</script>
226 227 228<div class="aspNetHidden"> 229 230 <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="9E3BDDCF" /> 231</div> 232
232<script type="text/javascript"> 233//<![CDATA[ 234Sys.WebForms.PageRequestManager._initialize('ctl00$ScriptManager1', 'aspnetForm', ['tctl00$ewpz1$mainTemplateCtrl$TemplateCtrl1$updatePanelCart2','','tctl00$ewpz1$mainTemplateCtrl$TemplateCtrl1$SearchNavBar20$upDocumentType','','tctl00$ewpz1$mainTemplateCtrl$TemplateCtrl1$updatePanelCart3','','tctl00$ewpz1$mainTemplateCtrl$updatePanelMain','','tctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$updatePanelENews','','tctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$updatePanelAddToCart','','tctl00$updatePanel1',''], ['ctl00$ScriptManager1',''], [], 90, 'ctl00'); 235//]]> 236</script>
236 237<input type="hidden" name="ctl00$ScriptManager1" id="ctl00_ScriptManager1" />
238<script type="text/javascript"> 239//<![CDATA[ 240Sys.Application.setServerId("ctl00_ScriptManager1", "ctl00$ScriptManager1"); 241Sys.Application._enableHistoryInScriptManager(); 242//]]> 243</script>
243 244 245
245<script language="JavaScript" type="text/javascript"> 246 var prm = Sys.WebForms.PageRequestManager.getInstance(); 247 prm.add_initializeRequest(InitializeRequest); 248 prm.add_endRequest(EndRequest); 249 </script>
249 250 251 <span id="ctl00_webPartManager1"></span> 252 253 254 255 256 257 258 <div class='maindiv-null'> 259 <div id="megadiv-null"> 260 <div id="ctl00_ewpz1_mainTemplateCtrl"> 261 262 263<div class='homepage'> 264<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1"> 265 266 267<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_TemplateCtrl8"> 268 269 </div> 270 271<header class=""> 272 <div class="container"> 273 <div class="header-inner"> 274 <div class="logo"> 275 <a href="/"> 276 <img alt="Sensualité logo" src="/images/logo.svg" class="main-logo"/> 277 </a> 278 </div> 279 280 <div class="navigation classic-nav"> <!-- normal-nav nebo eshop-nav view--> 281 <nav class='navbar navbar-expand-lg navbar-light bg-light eshop-nav'> 282 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarMain" 283 aria-controls="navbarMain" aria-expanded="false" aria-label="Toggle navigation"> 284 </button> 285 286 <div class="collapse navbar-collapse" id="navbarMain"> 287 288 <ul class="navbar-nav mr-auto"> 289 <li class="dropdown eshop"> 290 <a href='/kategorie/' class='mobile-eshop-btn'><span>E-shop</span><span class='smaller'>úvodnà stránka</span></a><div class='filters-btn'><div>Nastavit filtr<span>hledánà dle parametrů</span></div> 291 <div><img class='section-toggle' src='/images/eshop/filters-m.svg' alt=''></div></div><a class='nav-link active dropdown-toggle' href='/kategorie/' id='navbarDropdownEshop' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>E-shop</a><div class='dropdown-menu' aria-labelledby='navbarDropdownEshop'><div class='container'><div class='eshop-item to-eshop'><a href='/kategorie/' class='red'><span class='category-image'><img src='/images/eshop/cart-w2.svg' alt=''></span><span>JÃT DO ESHOPU</span></a></div><div class='eshop-item dropdown'><a href='/kategorie/liceni/'><span class='category-image'><img src='/images/eshop/liceni.svg' alt=''></span><span>LÃÄenÃ</span></a><div class='dropdown-menu'><a href='/kategorie/liceni/nehty/'>Nehty</a><a href='/kategorie/liceni/oboci/'>OboÄí</a><a href='/kategorie/liceni/oci/'>OÄi</a><a href='/kategorie/liceni/rty/'>Rty</a><a href='/kategorie/liceni/tvar/'>TváÅ</a><a href='/kategorie/liceni/kosmeticke-sady/'>Kosmetické sady</a><a href='/kategorie/liceni/doplnky/'>DoplÅky</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/plet/'><span class='category-image'><img src='/images/eshop/plet.svg' alt=''></span><span>PleÅ¥</span></a><div class='dropdown-menu'><a href='/kategorie/plet/odliceni-a-cisteni/'>OdlíÄení a ÄiÅ¡tÄní</a><a href='/kategorie/plet/pece-o-plet/'>PéÄe o pleÅ¥</a><a href='/kategorie/plet/pece-o-rty/'>PéÄe o rty</a><a href='/kategorie/plet/pece-o-ocni-okoli/'>PéÄe o oÄní okolí</a><a href='/kategorie/plet/pripravky-na-holeni/'>PÅípravky na holení</a><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a><a href='/kategorie/plet/doplnky-stravy-na-plet/'>
291DoplÅky stravy na pleÅ¥</a><a href='/kategorie/plet/doplnky/'>DoplÅky</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/telo/'><span class='category-image'><img src='/images/eshop/telo.svg' alt=''></span><span>TÄlo</span></a><div class='dropdown-menu'><a href='/kategorie/telo/deodoranty/'>Deodoranty</a><a href='/kategorie/telo/depilace-a-epilace/'>Depilace a epilace</a><a href='/kategorie/telo/hygiena-a-peeling/'>Hygiena a peeling</a><a href='/kategorie/telo/pece-o-telo/'>PéÄe o tÄlo</a><a href='/kategorie/telo/pece-o-vousy/'>PéÄe o vousy</a><a href='/kategorie/telo/pece-o-zuby/'>PéÄe o zuby</a><a href='/kategorie/telo/zestihlujici-pradlo/'>ZeÅ¡tíhlující prádlo</a><a href='/kategorie/telo/kosmeticke-sady/'>Kosmetické sady</a><a href='/kategorie/telo/doplnky-stravy-na-telo/'>DoplÅky stravy na tÄlo</a><a href='/kategorie/telo/doplnky/'>DoplÅky</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/vlasy/'><span class='category-image'><img src='/images/eshop/vlasy.svg' alt=''></span><span>Vlasy</span></a><div class='dropdown-menu'><a href='/kategorie/vlasy/barvy-na-vlasy/'>Barvy na vlasy</a><a href='/kategorie/vlasy/hrebeny-a-doplnky/'>HÅebeny a doplÅky</a><a href='/kategorie/vlasy/kondicionery/'>Kondicionéry</a><a href='/kategorie/vlasy/masky-na-vlasy/'>Masky na vlasy</a><a href='/kategorie/vlasy/parfemy-na-vlasy/'>Parfémy na vlasy</a><a href='/kategorie/vlasy/pece-o-pokozku-hlavy/'>PéÄe o pokožku hlavy</a><a href='/kategorie/vlasy/styling/'>Styling</a><a href='/kategorie/vlasy/sampony/'>Å ampony</a><a href='/kategorie/vlasy/vlasove-pece/'>Vlasové péÄe</a><a href='/kategorie/vlasy/doplnky-stravy-na-vlasy/'>DoplÅky stravy na vlasy</a><a href='/kategorie/vlasy/kosmeticke-sety/'>Kosmetické sety</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/sluneni/'><span class='category-image'><img src='/images/eshop/sluneni.svg' alt=''></span><span>SlunÄnÃ</span></a><div class='dropdown-menu'><a href='/kategorie/sluneni/na-opalovani/'>Na opalování</a><a href='/kategorie/sluneni/po-opalovani/'>Po opalování</a><a href='/kategorie/sluneni/pred-opalovanim/'>PÅed opalováním</a><a href='/kategorie/sluneni/samoopalovaci-produkty/'>Samoopalovací produkty</a><a href='/kategorie/sluneni/doplnky-stravy-na-opalovani/'>DoplÅky stravy na opalování</a><a href='/kategorie/sluneni/miniatury/'>Miniatury</a><a href='/kategorie/sluneni/testery/'>Testery</a><a href='/kategorie/sluneni/vzorky/'>Vzorky</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/deti/'><span class='category-image'><img src='/images/eshop/deti.svg' alt=''></span><span>DÄti</span></a><div class='dropdown-menu'><a href='/kategorie/deti/opalovani/'>Opalování</a><a href='/kategorie/deti/plet/'>PleÅ¥</a><a href='/kategorie/deti/telo/'>TÄlo</a><a href='/kategorie/deti/vlasy/'>Vlasy</a><a href='/kategorie/deti/kosmeticke-sady/'>Kosmetické sady</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/parfemy/'><span class='category-image'><img src='/images/eshop/parfemy.svg' alt=''></span><span>Parfémy</span></a><div class='dropdown-menu'><a href='/kategorie/parfemy/niche-parfemy/'>Niche parfémy</a><a href='/kategorie/parfemy/parfemy-pro-zeny/'>Parfémy pro ženy</a><a href='/kategorie/parfemy/parfemy-pro-muze/'>Parfémy pro muže</a><a href='/kategorie/parfemy/kosmeticke-sady/'>Kosmetické sady</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/niche/'><span class='category-image'><img src='/images/eshop/niche.svg' alt=''></span><span>Niche</span></a></div><div class='eshop-item dropdown'><a href='/kategorie/interierove-vune/'><span class='category-image'><img src='/images/eshop/ostatni.svg' alt=''></span><span>Interiérové vůnÄ</span></a><div class='dropdown-menu'><a href='/kategorie/interierove-vune/vune-do-auta/'>VůnÄ do auta</a><a href='/kategorie/interierove-vune/vune-do-bytu/'>VůnÄ do bytu</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/doplnky-stravy/'><span class='category-image'><img src='/images/eshop/doplnky.svg' alt=''></span><span>DoplÅky stravy</span></a><div class='dropdown-menu'><a href='/kategorie/doplnky-stravy/doplnky-stravy-na-telo/'>DoplÅky stravy na tÄlo</a><a href='/kategorie/doplnky-stravy/doplnky-stravy-na-plet/'>
291DoplÅky stravy na pleÅ¥</a><a href='/kategorie/doplnky-stravy/doplnky-stravy-na-vlasy/'>DoplÅky stravy na vlasy</a></div></div><div class='eshop-item dropdown'><a href='/kategorie/poukazy/'><span class='category-image'><img src='/images/eshop/poukazy.svg' alt=''></span><span>Poukazy</span></a></div><div class='eshop-item dropdown'><a href='/kategorie/zestihleni/'><span class='category-image'><img src='/images/eshop/zestihleni.svg' alt=''></span><span>ZeÅ¡tÃhlenÃ</span></a></div><div class='eshop-item dropdown'><a href='/akce/' class='red'><span class='category-image'><img src='/images/eshop/akce.svg' alt=''></span><span>Akce</span></a></div><div class='mobile-classic-nav'><a href='/magazin' class='mobile-show'><span>Blog</span></a><a href='/salony.aspx' class='mobile-show'><span>Salony</span></a><a href='/znacky.aspx' class='mobile-show'><span>ZnaÄky</span></a><a href='/proc-my/' class='mobile-show'><span>ProÄ my?</span></a><a href='/press.aspx' class='mobile-show'><span>Press</span></a><a href='/kontakt.aspx' class='mobile-show'><span>Kontakty</span></a></div></div></div><div id="ctl00_webPartManager1_MetaDataNavBar1"> 292 293 </div><div id="ctl00_webPartManager1_TreeConnectionProvider1"> 294 295 </div> 296 </li> 297 <li> 298 <a href='/magazin' class='nav-link'>Blog</a> 299 </li> 300 <li class="dropdown normal salons"> 301 <span class="toggle-arrow dropdown-toggle button-link" id="prodNavbarDropdown2" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></span> 302 <a href='/salony.aspx' class='nav-link dropdown-toggle mobile-redirect' id='navbarDropdown' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>Salony</a> 303 304 305 <div class="dropdown-menu" aria-labelledby="navbarDropdown"> 306 <div class="container"> 307 308 309 <div class="dropdown-section wide"> 310 <div class="section-head"> 311 <a href='https://www.sensualite-beauty.cz'> 312 <img src="/images/face.svg" alt='Salon'> 313 <strong>Sensualité Beauty, brno</strong> 314 </a> 315 </div> 316 <ul> 317 <li><a href="https://www.sensualite-beauty.cz/sluzby">PéÄe o pleÅ¥</a></li> 318 <li><a href="https://www.sensualite-beauty.cz/sluzby">KadeÅnictvÃ</a></li> 319 <li><a href="https://www.sensualite-beauty.cz/sluzby">PéÄe o tÄlo</a></li> 320 <li><a href="https://www.sensualite-beauty.cz/sluzby">Manikúra a pedikúra</a></li> 321 <li><a href="https://www.sensualite-beauty.cz/sluzby">PéÄe pro muže</a></li> 322 </ul> 323 324 <a href="https://www.sensualite-beauty.cz" class="button more">VÃce o salonu</a> 325 </div> 326 327 <div class="dropdown-section wide"> 328 <div class="section-head"> 329 <a href='/salony.aspx'> 330 <img src="/images/map-icon.svg" alt='Partnerské salony'> 331 <strong>Partnerské salony</strong> 332 </a> 333 </div> 334 <p>NaÅ¡i zákaznÃci jsou pro nás nejdůležitÄjÅ¡Ã, proto s nimi chceme být v kontaktu.</p> 335 <p>Rádi se s Vámi uslyÅ¡Ãme, napÃÅ¡eme si anebo se osobnÄ potkáme.</p> 336 <a href="/salony.aspx" class="button more">Mapa salonů</a> 337 </div> 338 339 <div class="dropdown-section wide"> 340 <div class="section-head"> 341 <a href='/pro-partnery.aspx'> 342 <img src="/images/hands.svg" alt='ProÄ pracovat s námi?'> 343 <strong>ProÄ pracovat s námi?</strong> 344 </a> 345 </div> 346 <p>ZÃskejte zkuÅ¡eného partnera, o kterého se můžete opÅÃt. Pomůžeme vám posunout péÄi o krásu vaÅ¡ich klientů na vyššà úroveÅ.</p> 347 <p>Spolupracujte s námi.</p> 348 <a href="/kontakt.aspx" class="button more">Kontaktujte nás</a> 349 </div> 350 351 <div class="dropdown-section wide"> 352 <div class="section-head"> 353 <a href='/odeslaneaktivity.aspx'> 354 <img src="/images/salon.svg" alt='Å kolenÃ'> 355 <strong>
355Å kolenÃ</strong> 356 </a> 357 </div> 358 <ul><li><a href='/skoleni/01-10-2026-zilina-thalgo-konference-pro-zeny-/'>THALGO Konference pro ženy </a></li><li><a href='/skoleni/22-10-2026-brno-2-maria-galland-uvedeni-novinek-a-setkani-zakazniku/'>MARIA GALLAND uvedenà novinek a setkánà zákaznÃků</a></li></ul> 359 360 <a href="/odeslaneaktivity.aspx" class="button more">DALÅ Ã Å KOLENÃ</a> 361 </div> 362 363 364 <div class="dropdown-section wide"> 365 <div class="section-head"> 366 <a href='/aktuality/'> 367 <img src="/images/news.svg" alt='Aktuality'> 368 <strong>Aktuality</strong> 369 </a> 370 </div> 371 <ul><li><a href='/aktualityb2b/dr-hauschka-nyni-v-nasi-distribuci/' class='title'>Dr. Hauschka nyní v naÅ¡í distribuci</a></li><li><a href='/aktualityb2b/ziskejte-provize-z-prodeju-na-sensualite/' class='title'>Získejte provize z prodejů na Sensualité</a></li><li><a href='/aktualityb2b/londontown-nehtova-kosmetika/' class='title'>LONDONTOWN nehtová kosmetika</a></li></ul> 372 373 <a href="/aktuality/" class="button more">DALÅ Ã AKTUALITY</a> 374 </div> 375 </div> 376 377 </div> 378 </li> 379 <li class="dropdown normal"> 380 <span class="toggle-arrow dropdown-toggle button-link" id="prodNavbarDropdown4" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"></span> 381 382 <a href='/znacky.aspx' class='nav-link' id='navbarDropdown3'>ZnaÄky</a> 383 384 </li> 385 <li> 386 <a href='/proc-my' class='nav-link'>ProÄ my?</a> 387 </li> 388 <li> 389 <a href='/press.aspx' class='nav-link'>Press</a> 390 </li> 391 <li> 392 <a href='/kontakt.aspx' class='nav-link'>Kontakty</a> 393 </li> 394 </ul> 395 </div> 396</nav> 397 </div> 398 399<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_updatePanelCart2"> 400 401 <div class="head-action-bar"> 402 <ul> 403 <li class='dropdown'> 404 <div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20"> 405 <div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_upDocumentType"> 406 <div class='head-search-btn'><img src='/images/loupe.svg' alt='Vyhledat'></div><div class='form head-search'><div class='persoo-search-bar'></div><div class='main-search-bar'><div class='mobile-head'><strong>Vyhledat</strong><div class='head-search-btn'><img alt='Vyhledat' src='/images/close-menu-w.svg'></div></div><strong>VyhledávánÃ:</strong><input name="ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl1$SearchNavBar20$tbSearchText" type="search" id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_tbSearchText" class="search-input" placeholder="Hledaný text" aria-label="Hledaný text" /><a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_BnVyhledat1" class="search-btn" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl1$SearchNavBar20$BnVyhledat1','')" style="cursor:pointer;">Vyhledat</a></div></div> 407 </div> 408 </div> 409 </li> 410 <li> 411 <a href='/login?ReturnUrl=%2fkategorie%2fplet%2f'><img src='/images/user.svg' alt='PÅihlásit se'></a> 412 </li> 413 <li class='head-cart'><a href='#'><img src='/images/cart.svg' alt='KoÅ¡Ãk'><span class='count'>0</span></a></li><li class='head-favorites'><a href='/filtr/oblibene/' title='OblÃbené zbožÃ'><img src='/images/heart.svg' alt='Moje oblÃbené kousky'><span class='count black'>0</span></a><div class='favorites-popup' ><img src='/images/fav-arrow.svg' alt=''><div class='left-side'><img src='/images/favorites.svg' alt='Moje oblÃbené kousky'></div><div class='right-side'><span>PÅihlaste se</span> a najdete tady své <strong>oblÃbené kousky i pÅÃÅ¡tÄ!</strong></div></div></li> 414 <li> 415 <a href="https://www.sensualite.sk">
416 <span class="text-flag">SK</span> 417 </a> 418 </li> 419 </ul> 420 421 <div class='head-action-message'>Nakupte jeÅ¡tÄ za <strong>1 200 KÄ</strong> a máte <span class='green'>dopravu zdarma</span>!</div> 422 </div> 423 424 </div> 425 </div> 426 </div> 427</header> 428 429<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_updatePanelCart3"> 430 431 <a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_ctl24_bnCartEdit2OK" class="hide" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl1$ctl24$bnCartEdit2OK','')">OK</a><div class='added-to-cart-popup' ><div class='cart-popup-inner'><div class='popup-left-side'><strong>DoporuÄené produkty</strong><div class='recommended-products products-list'></div></div><div class='popup-right-side'><div class='title'>Vložili jste do koÅ¡Ãku</div><div class='popup-close'>ZavÅÃt <img src='/images/popup-close-w.svg' alt=''></div><div class='cart-products products-list'></div><div class='delivery-line'><div class='icon'><img src='/images/popup-truck.svg' alt=''></div><div class='desc'>Nakupte jeÅ¡tÄ za <strong>1 200 KÄ</strong> a máte <span class='green'>dopravu zdarma</span>!</div></div><div class='summary-line'><div>MezisouÄet</div><div class='price'>0 KÄ</div></div><div class='button-line'><a href="javascript:$('.added-to-cart-popup').fadeOut();void(0);" class='button eshop-back'>ZpÄt k nákupu <img src='/images/popup-close-w.svg' alt=''></a><a href='/webform5.aspx' class='button brown'>JÃT DO KOÅ ÃKU <img src='/images/cart-btn.svg' alt=''></a></div></div></div></div> 432 <div> 433 434 </div> 435 <div> 436 437 </div> 438 <div> 439 440 </div> 441 442 </div> 443 </div> 444 445<div id="content" class="eshop"> 446 <div class="container"> 447 <aside id="ctl00_ewpz1_mainTemplateCtrl_sidebar" class="sidebar"> 448 <div id="category-filter" class="form"> 449 <div class="mobile-buttons"> 450 <a href="#" class="button close"><img class="section-toggle" src="/images/close-menu.svg" alt=''>ZavÅÃt filtr</a> 451 <a href="#" class="button apply">Filtrovánà 452 453 </a> 454 </div> 455 <div class="filters-sections"> 456 <div id="ctl00_ewpz1_mainTemplateCtrl_TCWebPartZone1b"> 457 <div class='filter-section categories'><div class='section-title open'>Kategorie <img class='section-toggle' src='/images/select-down.svg' alt='down'></div><div class='section-content long' style='display: block;'><div class='dropdown-tags'><div class='tag-item '><a href='/kategorie/liceni/' class='tag-title'>LÃÄenà <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/liceni/nehty/'>Nehty</a></div><div class='checkbox-line'><a href='/kategorie/liceni/oboci/'>OboÄí</a></div><div class='checkbox-line'><a href='/kategorie/liceni/oci/'>OÄi</a></div><div class='checkbox-line'><a href='/kategorie/liceni/rty/'>Rty</a></div><div class='checkbox-line'><a href='/kategorie/liceni/tvar/'>TváÅ</a></div><div class='checkbox-line'><a href='/kategorie/liceni/kosmeticke-sady/'>Kosmetické sady</a></div><div class='checkbox-line'><a href='/kategorie/liceni/doplnky/'>DoplÅky</a></div></div></div><div class='tag-item active'><a href='/kategorie/plet/' class='tag-title'>PleÅ¥ <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/plet/odliceni-a-cisteni/'>OdlíÄení a ÄiÅ¡tÄní</a></div><div class='checkbox-line'><a href='/kategorie/plet/pece-o-plet/'>PéÄe o pleÅ¥</a></div><div class='checkbox-line'><a href='/kategorie/plet/pece-o-rty/'>PéÄe o rty</a></div><div class='checkbox-line'><a href='/kategorie/plet/pece-o-ocni-okoli/'>PéÄe o oÄní okolí</a></div><div class='checkbox-line'><a href='/kategorie/plet/pripravky-na-holeni/'>PÅípravky na holení</a></div><div class='checkbox-line'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><div class='checkbox-line'><a href='/kategorie/plet/doplnky-stravy-na-plet/'>
457DoplÅky stravy na pleÅ¥</a></div><div class='checkbox-line'><a href='/kategorie/plet/doplnky/'>DoplÅky</a></div></div></div><div class='tag-item '><a href='/kategorie/telo/' class='tag-title'>TÄlo <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/telo/deodoranty/'>Deodoranty</a></div><div class='checkbox-line'><a href='/kategorie/telo/depilace-a-epilace/'>Depilace a epilace</a></div><div class='checkbox-line'><a href='/kategorie/telo/hygiena-a-peeling/'>Hygiena a peeling</a></div><div class='checkbox-line'><a href='/kategorie/telo/pece-o-telo/'>PéÄe o tÄlo</a></div><div class='checkbox-line'><a href='/kategorie/telo/pece-o-vousy/'>PéÄe o vousy</a></div><div class='checkbox-line'><a href='/kategorie/telo/pece-o-zuby/'>PéÄe o zuby</a></div><div class='checkbox-line'><a href='/kategorie/telo/zestihlujici-pradlo/'>ZeÅ¡tíhlující prádlo</a></div><div class='checkbox-line'><a href='/kategorie/telo/kosmeticke-sady/'>Kosmetické sady</a></div><div class='checkbox-line'><a href='/kategorie/telo/doplnky-stravy-na-telo/'>DoplÅky stravy na tÄlo</a></div><div class='checkbox-line'><a href='/kategorie/telo/doplnky/'>DoplÅky</a></div></div></div><div class='tag-item '><a href='/kategorie/vlasy/' class='tag-title'>Vlasy <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/vlasy/barvy-na-vlasy/'>Barvy na vlasy</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/hrebeny-a-doplnky/'>HÅebeny a doplÅky</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/kondicionery/'>Kondicionéry</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/masky-na-vlasy/'>Masky na vlasy</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/parfemy-na-vlasy/'>Parfémy na vlasy</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/pece-o-pokozku-hlavy/'>PéÄe o pokožku hlavy</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/styling/'>Styling</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/sampony/'>Å ampony</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/vlasove-pece/'>Vlasové péÄe</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/doplnky-stravy-na-vlasy/'>DoplÅky stravy na vlasy</a></div><div class='checkbox-line'><a href='/kategorie/vlasy/kosmeticke-sety/'>Kosmetické sety</a></div></div></div><div class='tag-item '><a href='/kategorie/sluneni/' class='tag-title'>SlunÄnà <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/sluneni/na-opalovani/'>Na opalování</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/po-opalovani/'>Po opalování</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/pred-opalovanim/'>PÅed opalováním</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/samoopalovaci-produkty/'>Samoopalovací produkty</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/doplnky-stravy-na-opalovani/'>DoplÅky stravy na opalování</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/miniatury/'>Miniatury</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/testery/'>Testery</a></div><div class='checkbox-line'><a href='/kategorie/sluneni/vzorky/'>Vzorky</a></div></div></div><div class='tag-item '><a href='/kategorie/deti/' class='tag-title'>DÄti <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/deti/opalovani/'>Opalování</a></div><div class='checkbox-line'><a href='/kategorie/deti/plet/'>PleÅ¥</a></div><div class='checkbox-line'><a href='/kategorie/deti/telo/'>TÄlo</a></div><div class='checkbox-line'><a href='/kategorie/deti/vlasy/'>Vlasy</a></div><div class='checkbox-line'><a href='/kategorie/deti/kosmeticke-sady/'>Kosmetické sady</a></div></div></div><div class='tag-item '><a href='/kategorie/parfemy/' class='tag-title'>Parfémy <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/parfemy/niche-parfemy/'>Niche parfémy</a></div><div class='checkbox-line'><a href='/kategorie/parfemy/parfemy-pro-zeny/'>Parfémy pro ženy</a></div><div class='checkbox-line'><a href='/kategorie/parfemy/parfemy-pro-muze/'>Parfémy pro muže</a></div><div class='checkbox-line'><a href='/kategorie/parfemy/kosmeticke-sady/'>Kosmetické sady</a></div></div></div><div class='tag-item '><a href='/kategorie/niche/' class='tag-title'>Niche <span class='count'></span></a></div><div class='tag-item '><a href='/kategorie/interierove-vune/' class='tag-title'>Interiérové vůnÄ <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/interierove-vune/vune-do-auta/'>VůnÄ do auta</a></div><div class='checkbox-line'><a href='/kategorie/interierove-vune/vune-do-bytu/'>VůnÄ do bytu</a></div></div></div><div class='tag-item '><a href='/kategorie/doplnky-stravy/' class='tag-title'>DoplÅky stravy <span class='count'></span></a><div class='tag-list'><div class='checkbox-line'><a href='/kategorie/doplnky-stravy/doplnky-stravy-na-telo/'>DoplÅky stravy na tÄlo</a></div><div class='checkbox-line'><a href='/kategorie/doplnky-stravy/doplnky-stravy-na-plet/'>
457DoplÅky stravy na pleÅ¥</a></div><div class='checkbox-line'><a href='/kategorie/doplnky-stravy/doplnky-stravy-na-vlasy/'>DoplÅky stravy na vlasy</a></div></div></div><div class='tag-item '><a href='/kategorie/poukazy/' class='tag-title'>Poukazy <span class='count'></span></a></div><div class='tag-item '><a href='/kategorie/zestihleni/' class='tag-title'>ZeÅ¡tÃhlenà <span class='count'></span></a></div></div></div></div><div class='filters-flags'><div class="checkbox-inline"> 458 <label for="ctl00_webPartManager1_FilterNavBar2_cbNew"><input id="ctl00_webPartManager1_FilterNavBar2_cbNew" type="checkbox" name="ctl00$webPartManager1$FilterNavBar2$cbNew" class="checkbox-inline" onclick="__doPostBack('ctl00$webPartManager1$FilterNavBar2$cbNew','')" />Novinka</label> 459 </div><div class="checkbox-inline"> 460 <label for="ctl00_webPartManager1_FilterNavBar2_cbSellout"><input id="ctl00_webPartManager1_FilterNavBar2_cbSellout" type="checkbox" name="ctl00$webPartManager1$FilterNavBar2$cbSellout" class="checkbox-inline" onclick="__doPostBack('ctl00$webPartManager1$FilterNavBar2$cbSellout','')" />Výprodej</label> 461 </div><div class="checkbox-inline"> 462 <label for="ctl00_webPartManager1_FilterNavBar2_cbAction"><input id="ctl00_webPartManager1_FilterNavBar2_cbAction" type="checkbox" name="ctl00$webPartManager1$FilterNavBar2$cbAction" class="checkbox-inline" onclick="__doPostBack('ctl00$webPartManager1$FilterNavBar2$cbAction','')" />Akce</label> 463 </div></div><div class='filter-section categories chosen-tags'><div class='section-title remove open'>ZnaÄka<img class='section-toggle' src='/images/select-down.svg' alt='down'></div><div class='section-content' style='display: block;'><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_MU4G100101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_MU4G100101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_MU4G100101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_MU4G100101">B'Kate</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_W7G3000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_W7G3000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_W7G3000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_W7G3000101">Coach</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_7Z7H100101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_7Z7H100101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_7Z7H100101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_7Z7H100101">Cocosolis</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_GX7H100101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_GX7H100101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_GX7H100101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_GX7H100101">Dr.Hauschka</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_WTIH000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_WTIH000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_WTIH000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_WTIH000101">Guess</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_4SO1000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_4SO1000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_4SO1000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_4SO1000101">Karl Lagerfeld</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_3ES1000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_3ES1000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_3ES1000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_3ES1000101">Maria Galland</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_WQQ4000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_WQQ4000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_WQQ4000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_WQQ4000101">Naif</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_D3YG100101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_D3YG100101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_D3YG100101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_D3YG100101">Ramissio</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_HR55000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_HR55000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_HR55000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_HR55000101">Rexaline</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_WH83000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_WH83000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_WH83000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_WH83000101">Sensualité</label></span><span class="checkbox-line"><input id="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_BMW1000101" type="checkbox" name="ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_BMW1000101" class="checkbox-line" onclick="__doPostBack('ctl00$webPartManager1$ProducersFilterNavBar1$BnProducer_BMW1000101','')" /><label for="ctl00_webPartManager1_ProducersFilterNavBar1_BnProducer_BMW1000101">Thalgo</label></span></div></div><div class='filter-section categories chosen-tags'><div class='section-title'>UrÄenà <img class='section-toggle' src='/images/select-down.svg' alt='down'></div><div class='section-content'><a href='/kategorie/plet/?page=1&urceni=pro-muze'><span class='checkbox-line'><input id='pro-muze' type='checkbox' class='checkbox-line' onclick="javascript:window.location='/kategorie/plet/?page=1&urceni=pro-muze';void(0);" aria-label='Pro muže'><label for='pro-muze'>Pro muže</label></span></a><a href='/kategorie/plet/?page=1&urceni=pro-zeny'><span class='checkbox-line'><input id='pro-zeny' type='checkbox' class='checkbox-line' onclick="javascript:window.location='/kategorie/plet/?page=1&urceni=pro-zeny';void(0);"><label for='pro-zeny'>Pro ženy</label></span></a><a href='/kategorie/plet/?page=1&urceni=pro-deti'><span class='checkbox-line'><input id='pro-deti' type='checkbox' class='checkbox-line' onclick="javascript:window.location='/kategorie/plet/?page=1&urceni=pro-deti';void(0);"><label for='pro-deti'>Pro dÄti</label></span></a></div></div> 464 </div> 465 466 467 </div> 468 </div> 469 470 <img src="/images/garance.svg" alt='garance'> 471 </aside> 472 <main class="content"> 473 474 <div class='category-banner sm-hide'><img src='/userdata/editor/images/2021/Bannery/Plet/banner_kategorie_1559x461_DH_plet_1026.webp' alt='VÄnováno tobÄ. 475DR. HAUSCHKA 476100% certifikovaná, úÄinná pÅÃrodnà kosmetika. Jiná už od roku 1967.'/><div class='banner-caption'><span style="color:#FFFFFF;">VÄnováno tobÄ.</span></strong> 477<h2><span style="color:#FFFFFF;">DR. HAUSCHKA</span></h2> 478<p><span style="color:#FFFFFF;">100% certifikovaná, úÄinná pÅÃrodnà kosmetika. Jiná už od roku 1967.</span></p><a href='https://www.sensualite.cz/kategorie/plet/?producersfilter=GX7H100101' class='button invert'>PROZKOUMAT</a></div></div><div class='category-banner sm-show'><a href='https://www.sensualite.cz/kategorie/plet/?producersfilter=GX7H100101'><img src='/userdata/editor/images/2021/Bannery/Plet/banner_kategorie_1080
478x1080_DH_1026_CZ.webp' alt='VÄnováno tobÄ. 479DR. HAUSCHKA 480100% certifikovaná, úÄinná pÅÃrodnà kosmetika. Jiná už od roku 1967.'/></a></div> 481 482 <div class="breadcrumbs dark"> 483 <ul itemscope itemtype='https://schema.org/BreadcrumbList'><li><a href='/'><img src='/images/home-w.svg' alt='home' /></a></li><li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a href='/kategorie/' itemprop='item'>Kategorie<meta itemprop='name' content='Kategorie' /></a><meta itemprop='position' content='1' /></li><li itemprop='itemListElement' itemscope itemtype='https://schema.org/ListItem'><a href='/kategorie/plet/' itemprop='item'>PleÅ¥<meta itemprop='name' content='PleÅ¥' /></a><meta itemprop='position' content='2' /></li></ol> 484 </div> 485 486 <div class='top-products-tabs'><div class='left-part'><ul class='tabs-line'><li><span>Top produkty</span></li><li><a href='/kategorie/plet/?list-tab=new'>Novinky</a></li><li><a href='/kategorie/plet/?list-tab=bestseller'>DoporuÄujeme</a></li><li><a href='/kategorie/plet/?list-tab=action'>Akce</a></li></ul></div><div class='right-part'><div class='sm-filters-toggle-btn'><img src='/images/filter-btn.svg' alt='Filtr'></div></div><div class='products-list owl-carousel inline'><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>1.</div><div class='flag discount'> -20%</div></div><div class='product-image'><a href='/thalgo-relaxacni-set-telove-kosmetiky--/'><img src='/userdata/cache_bk/158/P0YG100101.webp' alt='THALGO RelaxaÄní set tÄlové kosmetiky'></a></div></div><div class='desc-part'><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-relaxacni-set-telove-kosmetiky--/'>THALGO RelaxaÄní set tÄlové kosmetiky</a></h3><div class='product-bottom'><div class='old-price'>990 KÄ</div><div class='price'>792 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>2.</div></div><div class='product-image'><a href='/maria-galland-252-hydra-global-esence-na-ocni-kontury--10-ml/'><img src='/userdata/cache_bk/158/LPXG100101.webp' alt='MARIA GALLAND 252 Hydra'Global Esence na oÄní kontury '></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/pece-o-ocni-okoli/'>PéÄe o oÄní okolí</a></div><h3><a href='/maria-galland-252-hydra-global-esence-na-ocni-kontury--10-ml/'>MARIA GALLAND 252 Hydra'Global Esence na oÄní kontury </a></h3><div class='product-bottom'><div class='price'>1 190 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>3.</div></div><div class='product-image'><a href='/thalgo-eveil-a-la-mer-morske-cistici-tuhe-pletove-mydlo-z-ras--100-g/'><img src='/userdata/cache_bk/158/XORG100101.webp' alt='THALGO Éveil à la Mer MoÅské Äisticí tuhé pleÅ¥ové mýdlo z Åas '></a></div></div><div class='desc-part'><div class='category'><a href='/brand/thalgo/pletove-produkty/odlicovaci-rada-eveil-a-la-mer/'>OdliÄovací Åada Eveil a la Mer</a></div><h3><a href='/thalgo-eveil-a-la-mer-morske-cistici-tuhe-pletove-mydlo-z-ras--100-g/'>THALGO Éveil à la Mer MoÅské Äisticí tuhé pleÅ¥ové mýdlo z Åas </a></h3><div class='product-bottom'><div class='price'>400 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>4.</div></div><div class='product-image'><a href='/dr-hauschka-adventni-kalendar--/'><img src='/userdata/cache_bk/158/FRXG100101.webp' alt='DR. HAUSCHKA Adventní kalendáÅ'></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><h3><a href='/dr-hauschka-adventni-kalendar--/'>DR. HAUSCHKA Adventní kalendáÅ</a></h3><div class='product-bottom'><div class='price'>2 710 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>5.</div></div><div class='product-image'><a href='/thalgo-cold-cream-marine-nutri-comfort-bohaty-vyzivny-krem-na-suchou-plet-refill--50-ml/'><img src='/userdata/cache_bk/158/O4TG100101.webp' alt='THALGO Cold Cream Marine Nutri-Comfort bohatý výživný krém na suchou pleÅ¥ refill'></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/pece-o-plet/'>Pé
486Äe o pleÅ¥</a></div><h3><a href='/thalgo-cold-cream-marine-nutri-comfort-bohaty-vyzivny-krem-na-suchou-plet-refill--50-ml/'>THALGO Cold Cream Marine Nutri-Comfort bohatý výživný krém na suchou pleÅ¥ refill</a></h3><div class='product-bottom'><div class='price'>1 240 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>6.</div></div><div class='product-image'><a href='/maria-galland-60-osvezujici-cistici-a-odlicovaci-pletovy-gel--150ml/'><img src='/userdata/cache_bk/158/ADWG100101.webp' alt='MARIA GALLAND 60 OsvÄžující Äisticí a odliÄovací pleÅ¥ový gel'></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/odliceni-a-cisteni/'>OdlíÄení a ÄiÅ¡tÄní</a></div><h3><a href='/maria-galland-60-osvezujici-cistici-a-odlicovaci-pletovy-gel--150ml/'>MARIA GALLAND 60 OsvÄžující Äisticí a odliÄovací pleÅ¥ový gel</a></h3><div class='product-bottom'><div class='price'>1 150 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>7.</div></div><div class='product-image'><a href='/thalgo-collagene-marine-beaute-kolagenovy-doplnek-stravy-pro-plet-vlasy-a-nehty--21-ks/'><img src='/userdata/cache_bk/158/51YG100101.webp' alt='THALGO Collagène Marine Beauté Kolagenový doplnÄk stravy pro pleÅ¥, vlasy a nehty'></a></div></div><div class='desc-part'><div class='category'><a href='/brand/thalgo/doplnky-stravy/'>DoplÅky stravy</a></div><h3><a href='/thalgo-collagene-marine-beaute-kolagenovy-doplnek-stravy-pro-plet-vlasy-a-nehty--21-ks/'>THALGO Collagène Marine Beauté Kolagenový doplnÄk stravy pro pleÅ¥, vlasy a nehty</a></h3><div class='product-bottom'><div class='price'>1 560 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>8.</div></div><div class='product-image'><a href='/dr-hauschka-obnovujici-kura-pro-aktivaci-pleti-28-ampulek-/'><img src='/userdata/cache_bk/158/KEUG100101.webp' alt='DR. HAUSCHKA Obnovující kúra pro aktivaci pleti'></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/pece-o-plet/'>PéÄe o pleÅ¥</a></div><h3><a href='/dr-hauschka-obnovujici-kura-pro-aktivaci-pleti-28-ampulek-/'>DR. HAUSCHKA Obnovující kúra pro aktivaci pleti</a></h3><div class='product-bottom'><div class='price'>1 920 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>9.</div></div><div class='product-image'><a href='/maria-galland-641-lift-expert-liftingovy-pletovy-koncentrat-v-ampulkach--4-x-2-ml/'><img src='/userdata/cache_bk/158/HXXG100101.webp' alt='MARIA GALLAND 641 Lift'Expert Liftingový pleÅ¥ový koncentrát v ampulkách'></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/pece-o-plet/'>PéÄe o pleÅ¥</a></div><h3><a href='/maria-galland-641-lift-expert-liftingovy-pletovy-koncentrat-v-ampulkach--4-x-2-ml/'>MARIA GALLAND 641 Lift'Expert Liftingový pleÅ¥ový koncentrát v ampulkách</a></h3><div class='product-bottom'><div class='price'>890 KÄ</div></div></div></div></div><div class='product'><div class='product-inner'><div class='photo-part'><div class='product-flags'><div class='flag'>10.</div></div><div class='product-image'><a href='/maria-galland-1000-mille-pecujici-polstarkova-maska-pod-oci--4-pary/'><img src='/userdata/cache_bk/158/6HQG100101.webp' alt='MARIA GALLAND 1000 Mille PeÄující polÅ¡táÅková maska pod oÄi '></a></div></div><div class='desc-part'><div class='category'><a href='/kategorie/plet/pece-o-ocni-okoli/'>PéÄe o oÄní okolí</a></div><h3><a href='/maria-galland-1000-mille-pecujici-polstarkova-maska-pod-oci--4-pary/'>MARIA GALLAND 1000 Mille PeÄující polÅ¡táÅková maska pod oÄi </a></h3><div class='product-bottom'><div class='price'>1 650 KÄ</div></div></div></div></div></div></div> 487 488 489 <div id="ctl00_ewpz1_mainTemplateCtrl_updatePanelMain"> 490 491 <div class='category-title-header'><h1>PleÅ¥ </h1><div class='subcategories'><a href='/kategorie/plet/odliceni-a-cisteni/'>OdlÃÄenà a ÄiÅ¡tÄnÃ</a><a href='/kategorie/plet/pece-o-plet/'>
491PéÄe o pleÅ¥</a><a href='/kategorie/plet/pece-o-rty/'>PéÄe o rty</a><a href='/kategorie/plet/pece-o-ocni-okoli/'>PéÄe o oÄnà okolÃ</a><a href='/kategorie/plet/pripravky-na-holeni/'>PÅÃpravky na holenÃ</a><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a><a href='/kategorie/plet/doplnky-stravy-na-plet/'>DoplÅky stravy na pleÅ¥</a><a href='/kategorie/plet/doplnky/'>DoplÅky</a></div></div> 492 <div class='products-list-header'><div class='box-searchstorecardpropertiesfilter'></div><div class='sort-part'><strong>SeÅadit podle:</strong><select name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ddlSort" onchange="javascript:setTimeout('__doPostBack(\'ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ddlSort\',\'\')', 0)" id="ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_ddlSort" class="form-control"> 493 <option selected="selected" value="SC_X_NOVINKA_DATE DESC, SM_x_menu_global_posindex, SC_X_AKTIVNI_KARTA, ON_STORE, SC_NAME">NejnovÄjÅ¡í</option> 494 <option value="SC_NAME">Názvu</option> 495 <option value="SC_CODE">Kódu</option> 496 <option value="CENA_PO_SLEVE_SORT ASC">Od nejlevnÄjÅ¡ích</option> 497 <option value="CENA_PO_SLEVE_SORT DESC">Od nejdražších</option> 498 499 </select></div></div><div class='products-list categorygrid'><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-0' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-0','3L6J000101;0');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-book-collection-the-iconic-set-vyzivujici-pletove-kosmetiky---/'><img src='/userdata/cache_bk/158/SOYG100101.webp' alt='MARIA GALLAND Book Collection The Iconic set vyživující pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-book-collection-the-iconic-set-vyzivujici-pletove-kosmetiky---/'>MARIA GALLAND Book Collection The Iconic set vyživující pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 290 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-0' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-0','3L6J000101;0');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl01" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-1' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-1','YK6J000101;1');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-cleansing-ritual-kosmeticky-set-bonbon-pro-odliceni-pleti---/'><img src='/userdata/cache_bk/158/REYG100101.webp' alt='MARIA GALLAND Cleansing Ritual Kosmetický set bonbon pro odlíÄení pleti '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-cleansing-ritual-kosmeticky-set-bonbon-pro-odliceni-pleti---/'>MARIA GALLAND Cleansing Ritual Kosmetický set bonbon pro odlíÄení pleti </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>990 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-1' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-1','YK6J000101;1');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl02" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-2' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-2','XK6J000101;2');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-firming-kosmeticky-set-na-lifting-pleti---/'><img src='/userdata/cache_bk/158/KEYG100101.webp' alt='MARIA GALLAND Firming Kosmetický set na lifting pleti '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-firming-kosmeticky-set-na-lifting-pleti---/'>MARIA GALLAND Firming Kosmetický set na lifting pleti </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 690 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-2' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-2','XK6J000101;2');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl03" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-3' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-3','VK6J000101;3');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-illuminating-kosmeticky-set-pro-zarivou-a-hydratovanou-plet---/'><img src='/userdata/cache_bk/158/JEYG100101.webp' alt='MARIA GALLAND Illuminating Kosmetický set pro záÅivou a hydratovanou pleÅ¥ '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-illuminating-kosmeticky-set-pro-zarivou-a-hydratovanou-plet---/'>MARIA GALLAND Illuminating Kosmetický set pro záÅivou a hydratovanou pleÅ¥ </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 190 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-3' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-3','VK6J000101;3');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl04" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-4' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-4','WK6J000101;4');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-nourishing-kosmeticky-set-pro-vyzivu-pleti---/'><img src='/userdata/cache_bk/158/OEYG100101.webp' alt='MARIA GALLAND Nourishing Kosmetický set pro výživu pleti '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-nourishing-kosmeticky-set-pro-vyzivu-pleti---/'>MARIA GALLAND Nourishing Kosmetický set pro výživu pleti </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 390 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-4' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-4','WK6J000101;4');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl05" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-5' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-5','ZK6J000101;5');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-nourishing-ritual-kosmeticky-set-bonbon-pro-vyzivu-pleti---/'><img src='/userdata/cache_bk/158/WEYG100101.webp' alt='MARIA GALLAND Nourishing Ritual Kosmetický set bonbon pro výživu pleti '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-nourishing-ritual-kosmeticky-set-bonbon-pro-vyzivu-pleti---/'>MARIA GALLAND Nourishing Ritual Kosmetický set bonbon pro výživu pleti </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>590 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-5' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-5','ZK6J000101;5');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl06" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-6' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-6','RM6J000101;6');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>
499Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-cold-cream-marine-set-vyzivujici-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/RSYG100101.webp' alt='THALGO Cold Cream Marine set vyživující pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-cold-cream-marine-set-vyzivujici-pletove-kosmetiky--/'>THALGO Cold Cream Marine set vyživující pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>1 920 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-6' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-6','RM6J000101;6');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl07" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-7' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-7','MM6J000101;7');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-eveil-a-la-mer-skin-radiance-kosmeticky-set-pro-odliceni-pleti--/'><img src='/userdata/cache_bk/158/2TYG100101.webp' alt='THALGO Éveil à la Mer Skin Radiance kosmetický set pro odlíÄení pleti '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-eveil-a-la-mer-skin-radiance-kosmeticky-set-pro-odliceni-pleti--/'>THALGO Éveil à la Mer Skin Radiance kosmetický set pro odlíÄení pleti </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>1 170 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-7' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-7','MM6J000101;7');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl08" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-8' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-8','1N6J000101;8');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-exception-marine-set-zpevnujici-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/CTYG100101.webp' alt='THALGO Exception Marine set zpevÅující pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-exception-marine-set-zpevnujici-pletove-kosmetiky--/'>THALGO Exception Marine set zpevÅující pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>3 800 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-8' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-8','1N6J000101;8');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl09" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-9' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-9','OM6J000101;9');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>
499Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-express-beauty-kosmeticky-set-pletovych-masek--/'><img src='/userdata/cache_bk/158/ZSYG100101.webp' alt='THALGO Express Beauty kosmetický set pleÅ¥ových masek '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-express-beauty-kosmeticky-set-pletovych-masek--/'>THALGO Express Beauty kosmetický set pleÅ¥ových masek </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>990 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-9' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-9','OM6J000101;9');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl10" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-10' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-10','LM6J000101;10');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-hyalu-procollagene-secret-santa-kosmeticky-set-zpevnujici-na-plet--/'><img src='/userdata/cache_bk/158/QVYG100101.webp' alt='THALGO Hyalu-Procollagène Secret Santa kosmetický set zpevÅující na pleÅ¥ '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-hyalu-procollagene-secret-santa-kosmeticky-set-zpevnujici-na-plet--/'>THALGO Hyalu-Procollagène Secret Santa kosmetický set zpevÅující na pleÅ¥ </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>810 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-10' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-10','LM6J000101;10');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl11" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-11' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-11','TM6J000101;11');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-hyalu-procollagene-set-zpevnujici-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/OSYG100101.webp' alt='THALGO Hyalu-Procollagène set zpevÅující pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-hyalu-procollagene-set-zpevnujici-pletove-kosmetiky--/'>THALGO Hyalu-Procollagène set zpevÅující pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 720 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-11' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-11','TM6J000101;11');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl12" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-12' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-12','7N6J000101;12');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>
499Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-men-set-kosmetiky-pro-muze--/'><img src='/userdata/cache_bk/158/ATYG100101.webp' alt='THALGO Men set kosmetiky pro muže '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-men-set-kosmetiky-pro-muze--/'>THALGO Men set kosmetiky pro muže </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>1 790 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-12' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-12','7N6J000101;12');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl13" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-13' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-13','UM6J000101;13');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-prodige-des-oceans-set-vyzivujici-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/LSYG100101.webp' alt='THALGO Prodige des Océans set vyživující pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-prodige-des-oceans-set-vyzivujici-pletove-kosmetiky--/'>THALGO Prodige des Océans set vyživující pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>5 800 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-13' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-13','UM6J000101;13');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl14" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-14' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-14','0N6J000101;14');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-silicium-lift-set-liftingove-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/FTYG100101.webp' alt='THALGO Silicium Lift set liftingové pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-silicium-lift-set-liftingove-pletove-kosmetiky--/'>THALGO Silicium Lift set liftingové pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>3 030 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-14' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-14','0N6J000101;14');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl15" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-15' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-15','KM6J000101;15');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>
499Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-source-marine-secret-santa-kosmeticky-set-hydratacni-na-plet--/'><img src='/userdata/cache_bk/158/6TYG100101.webp' alt='THALGO Source Marine Secret Santa kosmetický set hydrataÄní na pleÅ¥ '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-source-marine-secret-santa-kosmeticky-set-hydratacni-na-plet--/'>THALGO Source Marine Secret Santa kosmetický set hydrataÄní na pleÅ¥ </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>810 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-15' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-15','KM6J000101;15');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl16" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-16' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-16','QM6J000101;16');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-source-marine-set-hydratacni-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/TSYG100101.webp' alt='THALGO Source Marine set hydrataÄní pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-source-marine-set-hydratacni-pletove-kosmetiky--/'>THALGO Source Marine set hydrataÄní pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>1 800 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-16' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-16','QM6J000101;16');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl17" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-17' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-17','SM6J000101;17');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/thalgo-spiruline-boost-set-vyhlazujici-pletove-kosmetiky--/'><img src='/userdata/cache_bk/158/PSYG100101.webp' alt='THALGO Spiruline Boost set vyhlazující pleÅ¥ové kosmetiky '></a></div><div class='category'><a href='/brand/thalgo/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/thalgo-spiruline-boost-set-vyhlazujici-pletove-kosmetiky--/'>THALGO Spiruline Boost set vyhlazující pleÅ¥ové kosmetiky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 300 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-17' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-17','SM6J000101;17');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl18" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-18' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-18','RK6J000101;18');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div></div><div class='product-image'><a href='/maria-galland-adventni-kalendar-s-pletovou-kosmetikou-vzorky-a-darky---/'><img src='/userdata/cache_bk/158/EEYG100101.webp' alt='MARIA GALLAND Adventní kalendáÅ s pleÅ¥ovou kosmetikou, vzorky a dárky '></a></div><div class='category'><a href='/brand/maria-galland/darkove-kazety/'>Dárkové kazety</a></div><h3><a href='/maria-galland-adventni-kalendar-s-pletovou-kosmetikou-vzorky-a-darky---/'>MARIA GALLAND Adventní kalendáÅ s pleÅ¥ovou kosmetikou, vzorky a dárky </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>3 290 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-18' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-18','RK6J000101;18');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl19" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-19' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-19','AL5J000101;19');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>
499Limitovaná edice</div></div><div class='product-image'><a href='/dr-hauschka-adventni-kalendar--/'><img src='/userdata/cache_bk/158/FRXG100101.webp' alt='DR. HAUSCHKA Adventní kalendáÅ '></a></div><div class='category'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><h3><a href='/dr-hauschka-adventni-kalendar--/'>DR. HAUSCHKA Adventní kalendáÅ </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>2 710 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-19' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-19','AL5J000101;19');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl20" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-20' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-20','CL5J000101;20');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/dr-hauschka-darkova-sada-cistota--cistici-ritual--/'><img src='/userdata/cache_bk/158/MRXG100101.webp' alt='DR. HAUSCHKA Dárková sada Äistota - Äistící rituál '></a></div><div class='category'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><h3><a href='/dr-hauschka-darkova-sada-cistota--cistici-ritual--/'>DR. HAUSCHKA Dárková sada Äistota - Äistící rituál </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>830 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-20' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-20','CL5J000101;20');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl21" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-21' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-21','BL5J000101;21');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/dr-hauschka-darkova-sada-klid--ritual-pro-dusevni-pohodu--/'><img src='/userdata/cache_bk/158/IRXG100101.webp' alt='DR. HAUSCHKA Dárková sada Klid - rituál pro duÅ¡evní pohodu '></a></div><div class='category'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><h3><a href='/dr-hauschka-darkova-sada-klid--ritual-pro-dusevni-pohodu--/'>DR. HAUSCHKA Dárková sada Klid - rituál pro duÅ¡evní pohodu </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>650 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-21' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-21','BL5J000101;21');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl22" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-22' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-22','EL5J000101;22');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>
499Limitovaná edice</div></div><div class='product-image'><a href='/dr-hauschka-darkova-sada-rozkvet--obnovujici-ritual--/'><img src='/userdata/cache_bk/158/RRXG100101.webp' alt='DR. HAUSCHKA Dárková sada RozkvÄt - obnovující rituál '></a></div><div class='category'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><h3><a href='/dr-hauschka-darkova-sada-rozkvet--obnovujici-ritual--/'>DR. HAUSCHKA Dárková sada RozkvÄt - obnovující rituál </a></h3><div class='availability'>Skladem: <span class='store1'>nad 5 ks</span><br/></span></div><div class='product-bottom'><div class='price'>1 350 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-22' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-22','EL5J000101;22');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl23" type="text" value="1" class="hide" aria-label="PoÄet" /></div><div class='product'><div class='product-inner'><div class='product-to-favourites'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToFavorites-23' class='btn btn-default' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToFavorites-23','DL5J000101;23');" title='PÅidat do oblÃbených'><img src='/images/heart-empty.svg' alt='PÅidat do oblÃbených'></a></div><div class='product-flags'><div class='flag new'>Novinka</div><div class='flag limitededition'>Limitovaná edice</div></div><div class='product-image'><a href='/dr-hauschka-darkova-sada-svezest--hydratacni-ritual--/'><img src='/userdata/cache_bk/158/PRXG100101.webp' alt='DR. HAUSCHKA Dárková sada SvÄžest - hydrataÄní rituál '></a></div><div class='category'><a href='/kategorie/plet/kosmeticke-sady/'>Kosmetické sady</a></div><h3><a href='/dr-hauschka-darkova-sada-svezest--hydratacni-ritual--/'>DR. HAUSCHKA Dárková sada SvÄžest - hydrataÄní rituál </a></h3><div class='availability'><span class='store0'>Na objednávku</span></span></div><div class='product-bottom'><div class='price'>1 060 KÄ</div><div class='add-to-cart'><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_bnAddToCart-23' href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$bnAddToCart-23','DL5J000101;23');" class='add-to-cart-btn'><img src='/images/to-cart.svg' alt='PÅidat do koÅ¡Ãku'></a></div></div></div><input name="ctl00$ewpz1$mainTemplateCtrl$CategoryGrid1$ctl24" type="text" value="1" class="hide" aria-label="PoÄet" /></div></div><div class='category-pagination'><div class='load-next-box'><a id='dalsi-produkty' class='load-next' rel='nofollow'>naÄÃst dalÅ¡Ã</a></div><div class='pagination-box'><ul><li><span>1</span></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-10' href="/kategorie/plet/?page=2" class='btn-sm'>2</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-20' href="/kategorie/plet/?page=3" class='btn-sm'>3</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-30' href="/kategorie/plet/?page=4" class='btn-sm'>4</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-40' href="/kategorie/plet/?page=5" class='btn-sm'>5</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-50' href="/kategorie/plet/?page=6" class='btn-sm'>6</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-60' href="/kategorie/plet/?page=7" class='btn-sm'>7</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-70' href="/kategorie/plet/?page=8" class='btn-sm'>8</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-80' href="/kategorie/plet/?page=9" class='btn-sm'>9</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_BnPage-90' href="/kategorie/plet/?page=10" class='btn-sm'>10</a></li><li><a id='ctl00_ewpz1_mainTemplateCtrl_CategoryGrid1_cgBnNext0' href="/kategorie/plet/?page=2">>></a></li></ul></div></div> 500 501 </div> 502 503 504 </main> 505 </div> 506</div> 507 508<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2"> 509 510 511<footer class="footer"> 512 <div class="container"> 513 <div class="row"> 514 <div class="col-sx-12 col-sm-6 col-lg-3 footer-box"> 515 <h3>sensualité</h3> 516 517 <ul> 518 <li><a href="/kategorie/">E-shop</a></li> 519 <li><a href="/magazin/">Blog</a></li> 520 <li><a href="/salony.aspx">Salony</a></li> 521 <li><a href="/znacky.aspx">ZnaÄky</a></li> 522 <li><a href="/proc-my.aspx">ProÄ my?</a></li> 523 <li><a href="/kontakt.aspx">Kontakty</a></li> 524 <li><a href="/press.aspx">Press</a></li> 525 <li><a href="/dokument/kariera/">Kariera</a></li> 526 </ul> 527 </div> 528 <div class="col-sx-12 col-sm-6 col-lg-3 footer-box"> 529 <h3>služby</h3> 530 531 <ul> 532 <li><a href="/nabidka-osetreni/kosmetika/sluzby/">Kosmetika</a></li> 533 <li><a href="/nabidka-osetreni/kadernictvi/sluzby/">KadeÅnictvÃ</a></li> 534 <li><a href="/nabidka-osetreni/manikura/sluzby/">Manikúra</a></li> 535 <li><a href="/nabidka-osetreni/pedikura/sluzby/">Pedikúra</a></li> 536 <li><a href="/nabidka-osetreni/liceni/sluzby/">LÃÄenÃ</a></li> 537 <li><a href="/nabidka-osetreni/masaze/sluzby/">Masáže</a></li> 538 <li><a href="/nabidka-osetreni/vyhodne-balicky/sluzby/">Výhodné balÃÄky</a></li> 539 <li><a href="/nabidka-osetreni/darkove-poukazy/sluzby/">Dárkové poukazy</a></li> 540 </ul> 541 </div> 542 <div class="col-sx-12 col-sm-6 col-lg-3 footer-box"> 543 <h3>o nákupu</h3> 544 545 <ul> 546 <li><a href="/dokument/doprava/">Doprava</a></li> 547 <li><a href="/dokument/platba/">Platba</a></li> 548 <li><a href="/dokument/reklamace/">Reklamace</a></li> 549 <li><a href="/dokument/vraceni-zbozi/">Vrácenà zbožÃ</a></li> 550 <li><a href="/dokument/podminky/">Obchodnà podmÃnky</a></li> 551 <li><a href="/dokument/ochrana-osobnich-udaju/">Ochrana osobnÃch údajů</a></li> 552 <li><a href="/dokument/do-kterych-zemi-prodavame/">
552Do kterých zemà prodáváme</a></li> 553 <li><a href="/dokument/vernostni-program/" target="_blank">VÄrnostnà program</a></li> 554 <li><a href="?cmsettings=true" rel="nofollow">Nastavenà soukromÃ</a></li> 555 </ul> 556 </div> 557 <div class="col-sx-12 col-sm-6 col-lg-3 footer-box"> 558 <h3>O nás</h3> 559 560 <p> 561 Sensualité<br> 562 Cejl 107<br> 563 602 00 Brno 564 </p> 565 566 <p class="mb-0">Tel.: +420 533 433 133, 727 875 291</p> 567 <p>E-mail: <a href="mailto:[email protected]" class="mail">[email protected]</a></p> 568 569<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_updatePanelENews"> 570 571 <p class='italic'>OdebÃrejte newsletter s novinkami a slevami</p><div class='newsletter'><input name="ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$ENews$TBEmail" type="text" id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_ENews_TBEmail" class="newsletter-input" placeholder="E-mail" aria-label="E-mail" autocomplete="off" /><a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_ENews_BnPridatEmail" class="search-button" aria-label="Odeslat" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$ENews$BnPridatEmail','')"></a><div class='form-group radio-icon brown'><input id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_ENews_cbAcceptTerms" type="checkbox" name="ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$ENews$cbAcceptTerms" /><span> 572 <label class='title' for='ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_ENews_cbAcceptTerms'> 573 SouhlasÃm se <a href='/dokument/ochrana-osobnich-udaju/' target='_blank'>zpracovánÃm osobnÃch údajů</a> 574 </label> 575 </span></div></div> 576 577 </div> 578 579 <div class="socials"> 580 <a href='https://www.instagram.com/sensualitecz/' target='_blank'><img src='/images/ig.svg' alt="Instagram"></a> 581 <a href='https://www.facebook.com/SenBrno' target='_blank'><img src='/images/fb.svg' alt="Facebook"></a> 582 <a href='https://www.youtube.com/channel/UC70YoT-R5M2GVUEybvmw0IQ' target='_blank'><img src='/images/yt.svg' alt="Youtube"></a> 583 </div> 584 </div> 585 </div> 586 </div> 587 <div class="footer-bottom"> 588 <div class="container"> 589 <p> 590 2023 © Sensualité, provozuje <strong>BK Kosmetika, s.r.o.</strong> 591 </p> 592 </div> 593 </div> 594</footer> 595 596<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_updatePanelAddToCart"> 597 598 <div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1"> 599 <div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_pnCmNavBar" class="navbar navbar-default navbar-fixed-bottom" style="z-index: 10000"> 600 601 <div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_pnCookiesManager" class="container"> 602 603 <div class="cookies-line"> 604 <div class="title"><img src="/images/cookie.svg" alt=''> PovolÃte nám cookies?</div> 605 <p> 606 Chceme vás rozmazlovat tou nejlepšà nabÃdkou. Cookies nám pomáhajà zajistit bezproblémové fungovánà stránek a pÅizpůsobit obsah i personalizované reklamy vaÅ¡im zájmům. DÄkujeme, že nám pomáháte zlepÅ¡ovat naÅ¡e služby. 607 </p> 608 <div class="buttons"> 609 <a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_BnCmSettings" class="button" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$BnCmSettings','')">NastavenÃ</a> 610 <a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_BnCmAccept" class="button brown" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$BnCmAccept','')">SouhlasÃm</a> 611 </div> 612 <p class="mt-4">Souhlas můžete odmÃtnout <a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_BnCmReject" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$BnCmReject','')">zde</a></p> 613 </div> 614 615 </div> 616 617 618 619<div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_pnCookiesManagerSettings" class="hide"> 620 621<div id="cookiesModal" class="modal fade show" tabindex="-1" role="dialog" style="padding-right: 16.9911px; display: block;"> 622 <div class="modal-dialog" role="document"> 623 <div class="modal-content"> 624 <div class="modal-header"> 625 <a href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$BnCmSave','')" class="close" > 626 <span aria-hidden="true">Ã</span> 627 </a> 628 </div> 629 <div class="modal-body"> 630 <div class="title"><img src="/images/cookie.svg" alt=''> Cookies</div> 631 632 <p> 633 Zde máte možnost pÅizpůsobit soubory cookie podle kategoriÃ, v souladu s vlastnÃmi preferencemi. 634 </p> 635 636 <div class="checkbox-line"> 637 <label for="check1"> 638 <strong>Technické cookies</strong> 639 <p> 640 Technické cookies jsou nezbytné pro správné fungovánà webu a vÅ¡ech funkcÃ, které nabÃzÃ. 641 Jsou odpovÄdné mj. za uchovávánà produktů v koÅ¡Ãku, zobrazovánà seznamu oblÃbených. 642 </p> 643 644 </label> 645 <input type="checkbox" id="check1" checked disabled> 646 </div> 647 648 <div class="checkbox-line"> 649 <label for="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_cbCmAnalytics"> 650 <strong>Analytické a reklamnà cookies</strong> 651 <p> 652 Analytické cookies nám umožÅujà mÄÅenà výkonu naÅ¡eho webu a naÅ¡ich reklamnÃch kampanÃ. Jejich pomocà urÄujeme poÄet návÅ¡tÄv a zdroje návÅ¡tÄv naÅ¡ich internetových stránek.<br/> 653 Reklamnà cookies použÃváme my nebo naÅ¡i partneÅi, abychom Vám mohli zobrazit vhodné obsahy nebo reklamy jak na naÅ¡ich stránkách, tak na stránkách tÅetÃch subjektů. 654 </p> 655 656 </label>
657 <span class="noborder"><input id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_cbCmAnalytics" type="checkbox" name="ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$cbCmAnalytics" class="noborder" /></span> 658 </div> 659 <div class="checkbox-line"> 660 <label for="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_cbCmCustom"> 661 <strong>Personalizované soubory cookie</strong> 662 <p> 663 PoužÃváme rovnÄž soubory cookie a dalšà technologie, abychom pÅizpůsobili náš obchod potÅebám a zájmům naÅ¡ich zákaznÃků a pÅipravili tak pro Vás výjimeÄné nákupnà zkuÅ¡enosti.? 664 </p> 665 666 </label> 667 <span class="noborder"><input id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_cbCmCustom" type="checkbox" name="ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$cbCmCustom" class="noborder" /></span> 668 </div> 669 <div class="checkbox-line"> 670 <label for="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_cbCmMarketing"> 671 <strong>Reklamnà cookies</strong> 672 <p> 673 Reklamnà cookies použÃváme my nebo naÅ¡i partneÅi, abychom Vám mohli zobrazit vhodné obsahy nebo reklamy jak na naÅ¡ich stránkách, tak na stránkách tÅetÃch subjektů. 674 </p> 675 <a href="/dokument/ochrana-osobnich-udaju/">vÃce informacÃ</a> 676 </label> 677 <span class="noborder"><input id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_cbCmMarketing" type="checkbox" name="ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$cbCmMarketing" class="noborder" /></span> 678 </div> 679 680 <p>Sensualite a partneÅi potÅebujà Váš souhlas k využità jednotlivých dat, aby Vám mimo jiné mohli ukazovat informace týkajÃcà se VaÅ¡ich zájmů.</p> 681 682 <div class="modal-buttons"> 683 <a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_BnCmBack" class="button" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$BnCmBack','')">ZpÄt</a> 684 <a id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FormCookiesManager1_BnCmSave" class="button brown" href="javascript:__doPostBack('ctl00$ewpz1$mainTemplateCtrl$TemplateCtrl2$FormCookiesManager1$BnCmSave','')">Uložit nastavenÃ</a> 685 </div> 686 </div> 687 </div> 688 </div> 689</div> 690</div> 691 692 </div> 693 694 </div> 695 </div> 696 <div id="ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl2_FacebookConversionApi1"> 697 698 </div> 699 700 </div> 701<div class='fixed-alerts'><div class='container'></div></div> 702 703 704 705
706<script src="/scripts/unbundled/jquery.fancybox.min.js"></script>
vendor: 2 bytes, line 706
706
707<script src="/scripts/unbundled/owl.carousel.min.js"></script>
707 708 709 710<!-- Start of Smartsupp Live Chat script -->
711<script type="text/javascript"> 712var _smartsupp = _smartsupp || {}; 713_smartsupp.key = '9a4fbbaafa088b08723c38c883db4032a6b526a5'; 714window.smartsupp||(function(d) { 715 var s,c,o=smartsupp=function(){ o._.push(arguments)};o._=[]; 716 s=d.getElementsByTagName('script')[0];c=d.createElement('script'); 717 c.type='text/javascript';c.charset='utf-8';c.async=true; 718 c.src='//www.smartsuppchat.com/loader.js?';s.parentNode.insertBefore(c,s); 719})(document); 720</script>
720 721 722 723 </div> 724</div> 725 726 727 728 729
730<script> 731 $(document).ready(function() { 732 $('.left-part.owl-carousel').owlCarousel({ 733 loop: true, 734 margin: 3, 735 nav: false, 736 responsive: { 737 0: { items: 1 } 738 } 739 }); 740 741 $('.right-part.mobile.owl-carousel').owlCarousel({ 742 loop: true, 743 margin: 3, 744 nav: false, 745 responsive: { 746 0: { items: 2 }, 747 600: { items: 2 }, 748 1000: { items: 3 } 749 } 750 }); 751 }); 752</script>
752 753</div> 754 755 756 </div> 757 </div> 758 759 <div id="boxprogress"> 760 <div></div><div></div><div></div><div></div> 761 </div> 762 763 <div id="ctl00_updatePanel1"> 764 765 766 <input name="ctl00$tbFloatPanelHidden" type="text" id="ctl00_tbFloatPanelHidden" aria-label="." style="display: none;" /> 767 768 <div id="ctl00_pnFloatPanel" class="pnfloatpanel pnfloatpanelmaster" style="display: none; max-width: 750px;"> 769 770 <div id="ctl00_pnFloatPanelTitle" class="pnfloatpaneltitle"> 771 772 <span id="ctl00_pnFloatPanelLabel" class="left"></span> 773 <a id="ctl00_bnFloatPanelOK" class="right" href="javascript:__doPostBack('ctl00$bnFloatPanelOK','')"> 774 <img alt="ZavÅÃt" src="/userdata/Images/butt-delete.gif"/> 775 </a> 776 <div style="clear: both"></div> 777 778 </div> 779 780 781 </div> 782 783</div> 784 785
786<script type="text/javascript"> 787//<![CDATA[ 788$(document).ready(function(){ 789var $btn = $('#ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_BnVyhledat1'); 790var $form = $('#ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_tbSearchText'); 791$form.keypress(function(e){ 792if (e.which == 13) { 793if ($btn != null && $btn[0].type == 'submit') 794$btn[0].click(); 795else 796eval($btn[0].href); 797return false; 798}});}); 799$('#ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_tbSearchText').focus(function(){$(this).one('mouseup', function() {$(this).select();});});var __wpmExportWarning='This Web Part Page has been personalized. As a result, one or more Web Part properties may contain confidential information. Make sure the properties contain information that is safe for others to read. After exporting this Web Part, view properties in the Web Part description file (.WebPart) by using a text editor such as Microsoft Notepad.';var __wpmCloseProviderWarning='You are about to close this Web Part. It is currently providing data to other Web Parts, and these connections will be deleted if this Web Part is closed. To close this Web Part, click OK. To keep this Web Part, click Cancel.';var __wpmDeleteWarning='You are about to permanently delete this Web Part. Are you sure you want to do this? To delete this Web Part, click OK. To keep this Web Part, click Cancel.';var options = { 800 801 url: function(phrase) { 802 return "/mainform.aspx/GetAutoCompleteSearchText"; 803 }, 804 805 listLocation: "d", 806 807 categories: [{ 808 listLocation: "products", 809 maxNumberOfElements: 20, 810 header: "Produkty" 811 }, { 812 listLocation: "categories", 813 maxNumberOfElements: 20, 814 header: "Kategorie" 815 }, { 816 listLocation: "phrases", 817 maxNumberOfElements: 5, 818 header: "Hledan� fr�ze" 819 }], 820 821 getValue: function(element) { 822 return element.name; 823 }, 824 825 template: { 826 type: "custom", 827 method: function(value, item) { 828 /*if (item.price == "")//Kategorie 829 { 830 return 831 "<div class='wh-category'>" + 832 "<div class='wh-category-subcategories'>" + 833 "<a href='" + item.link + "'>" + value + "</a>" + 834 "</div>" + 835 "</div>"; 836 } 837 else*/ 838 if (item.icon) { 839 var icon = "<img src='" + item.icon + "' alt=''>"; 840 } else { 841 icon = ""; 842 } 843 844 return 845 "<div class='product'>" + 846 "<div class='product-inner'>" + 847 "<div class='product-flags'>" + 848 "</div>" + 849 "<div class='product-image'>" + 850 "<a href='" + item.link + "'>" + icon + "</a>" + 851 "</div>" + 852 "<h3><a href='" + item.link + "'>" + value + "</a></h3>" + 853 "<div class='product-bottom'>" + 854 "<div class='price'>" + item.price + "</div>" + 855 "</div>" + 856 "</div>" + 857 "</div>"; 858 } 859 }, 860 861 list: { 862 maxNumberOfElements: 20, 863match: { 864 enabled: false, 865 method: function(element, phrase) 866{ 867 868 element = element.trim(); 869 phrase = phrase.trim(); 870 871 if (element.search(phrase) > -1) { 872 return true; 873 } 874else { 875 876return false; 877 878 } 879 } 880}, 881 sort: { 882 enabled: true 883 } 884 }, 885 886 887 888 ajaxSettings: { 889 url: "/mainform.aspx/GetAutoCompleteSearchText", 890 data: JSON.stringify({ prefixText: $('#ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_tbSearchText').val(), contextKey: 'SC_NAME;cs;N', count: -1 }), 891 dataType: "json", 892 type: "POST", 893 contentType: "application/json; charset=windows-1250", 894 success: function (dataresult) { 895 dataresult = dataresult.d; 896 }, 897 error: function (XMLHttpRequest, textStatus, errorThrown) { 898 var err = eval("(" + XMLHttpRequest.responseText + ")"); 899 alert(err.Message) 900 } 901 }, 902 preparePostData: function(data) { 903 data = JSON.stringify({ prefixText: $('#ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_tbSearchText').val(), contextKey: 'SC_NAME;cs;N', count: -1 }); 904 return data; 905 }, 906 907 requestDelay: 400, 908 minCharNumber: 3 909}; 910 911 912$("#ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_SearchNavBar20_tbSearchText").easyAutocomplete(options);
vendor: 23,216 bytes, lines 912-1858
912/** 913 * Owl Carousel v2.3.4 914 * Copyright 2013-2018 David Deutsch 915 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 916 */ 917/** 918 * Owl carousel 919 * @version 2.3.4 920 * @author Bartosz Wojciechowski 921 * @author David Deutsch 922 * @license The MIT License (MIT) 923 * @todo Lazy Load Icon 924 * @todo prevent animationend bubling 925 * @todo itemsScaleUp 926 * @todo Test Zepto 927 * @todo stagePadding calculate wrong active classes 928 */ 929;(function($, window, document, undefined) { 930 931 /** 932 * Creates a carousel. 933 * @class The Owl Carousel. 934 * @public 935 * @param {HTMLElement|jQuery} element - The element to create the carousel for. 936 * @param {Object} [options] - The options 937 */ 938 function Owl(element, options) { 939 940 /** 941 * Current settings for the carousel. 942 * @public 943 */ 944 this.settings = null; 945 946 /** 947 * Current options set by the caller including defaults. 948 * @public 949 */ 950 this.options = $.extend({}, Owl.Defaults, options); 951 952 /** 953 * Plugin element. 954 * @public 955 */ 956 this.$element = $(element); 957 958 /** 959 * Proxied event handlers. 960 * @protected 961 */ 962 this._handlers = {}; 963 964 /** 965 * References to the running plugins of this carousel. 966 * @protected 967 */ 968 this._plugins = {}; 969 970 /** 971 * Currently suppressed events to prevent them from being retriggered. 972 * @protected 973 */ 974 this._supress = {}; 975 976 /** 977 * Absolute current position. 978 * @protected 979 */ 980 this._current = null; 981 982 /** 983 * Animation speed in milliseconds. 984 * @protected 985 */ 986 this._speed = null; 987 988 /** 989 * Coordinates of all items in pixel. 990 * @todo The name of this member is missleading. 991 * @protected 992 */ 993 this._coordinates = []; 994 995 /** 996 * Current breakpoint. 997 * @todo Real media queries would be nice. 998 * @protected 999 */ 1000 this._breakpoint = null; 1001 1002 /** 1003 * Current width of the plugin element. 1004 */ 1005 this._width = null; 1006 1007 /** 1008 * All real items. 1009 * @protected 1010 */ 1011 this._items = []; 1012 1013 /** 1014 * All cloned items. 1015 * @protected 1016 */ 1017 this._clones = []; 1018 1019 /** 1020 * Merge values of all items. 1021 * @todo Maybe this could be part of a plugin. 1022 * @protected 1023 */ 1024 this._mergers = []; 1025 1026 /** 1027 * Widths of all items. 1028 */ 1029 this._widths = []; 1030 1031 /** 1032 * Invalidated parts within the update process. 1033 * @protected 1034 */ 1035 this._invalidated = {}; 1036 1037 /** 1038 * Ordered list of workers for the update process. 1039 * @protected 1040 */ 1041 this._pipe = []; 1042 1043 /** 1044 * Current state information for the drag operation. 1045 * @todo #261 1046 * @protected 1047 */ 1048 this._drag = { 1049 time: null, 1050 target: null, 1051 pointer: null, 1052 stage: { 1053 start: null, 1054 current: null 1055 }, 1056 direction: null 1057 }; 1058 1059 /** 1060 * Current state information and their tags. 1061 * @type {Object} 1062 * @protected 1063 */ 1064 this._states = { 1065 current: {}, 1066 tags: { 1067 'initializing': [ 'busy' ], 1068 'animating': [ 'busy' ], 1069 'dragging': [ 'interacting' ] 1070 } 1071 }; 1072 1073 $.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) { 1074 this._handlers[handler] = $.proxy(this[handler], this); 1075 }, this)); 1076 1077 $.each(Owl.Plugins, $.proxy(function(key, plugin) { 1078 this._plugins[key.charAt(0).toLowerCase() + key.slice(1)] 1079 = new plugin(this); 1080 }, this)); 1081 1082 $.each(Owl.Workers, $.proxy(function(priority, worker) { 1083 this._pipe.push({ 1084 'filter': worker.filter, 1085 'run': $.proxy(worker.run, this) 1086 }); 1087 }, this)); 1088 1089 this.setup(); 1090 this.initialize(); 1091 } 1092 1093 /** 1094 * Default options for the carousel. 1095 * @public 1096 */ 1097 Owl.Defaults = { 1098 items: 3, 1099 loop: false, 1100 center: false, 1101 rewind: false, 1102 checkVisibility: true, 1103 1104 mouseDrag: true, 1105 touchDrag: true, 1106 pullDrag: true, 1107 freeDrag: false, 1108 1109 margin: 0, 1110 stagePadding: 0, 1111 1112 merge: false, 1113 mergeFit: true, 1114 autoWidth: false, 1115 1116 startPosition: 0, 1117 rtl: false, 1118 1119 smartSpeed: 250, 1120 fluidSpeed: false, 1121 dragEndSpeed: false, 1122 1123 responsive: {}, 1124 responsiveRefreshRate: 200, 1125 responsiveBaseElement: window, 1126 1127 fallbackEasing: 'swing', 1128 slideTransition: '', 1129 1130 info: false, 1131 1132 nestedItemSelector: false, 1133 itemElement: 'div', 1134 stageElement: 'div', 1135 1136 refreshClass: 'owl-refresh', 1137 loadedClass: 'owl-loaded', 1138 loadingClass: 'owl-loading', 1139 rtlClass: 'owl-rtl', 1140 responsiveClass: 'owl-responsive', 1141 dragClass: 'owl-drag', 1142 itemClass: 'owl-item', 1143 stageClass: 'owl-stage', 1144 stageOuterClass: 'owl-stage-outer', 1145 grabClass: 'owl-grab' 1146 }; 1147 1148 /** 1149 * Enumeration for width. 1150 * @public 1151 * @readonly 1152 * @enum {String} 1153 */ 1154 Owl.Width = { 1155 Default: 'default', 1156 Inner: 'inner', 1157 Outer: 'outer' 1158 }; 1159 1160 /** 1161 * Enumeration for types. 1162 * @public 1163 * @readonly 1164 * @enum {String} 1165 */ 1166 Owl.Type = { 1167 Event: 'event', 1168 State: 'state' 1169 }; 1170 1171 /** 1172 * Contains all registered plugins. 1173 * @public 1174 */ 1175 Owl.Plugins = {}; 1176 1177 /** 1178 * List of workers involved in the update process. 1179 */ 1180 Owl.Workers = [ { 1181 filter: [ 'width', 'settings' ], 1182 run: function() { 1183 this._width = this.$element.width(); 1184 } 1185 }, { 1186 filter: [ 'width', 'items', 'settings' ], 1187 run: function(cache) { 1188 cache.current = this._items && this._items[this.relative(this._current)]; 1189 } 1190 }, { 1191 filter: [ 'items', 'settings' ], 1192 run: function() { 1193 this.$stage.children('.cloned').remove(); 1194 } 1195 }, { 1196 filter: [ 'width', 'items', 'settings' ], 1197 run: function(cache) { 1198 var margin = this.settings.margin || '', 1199 grid = !this.settings.autoWidth, 1200 rtl = this.settings.rtl, 1201 css = { 1202 'width': 'auto', 1203 'margin-left': rtl ? margin : '', 1204 'margin-right': rtl ? '' : margin 1205 }; 1206 1207 !grid && this.$stage.children().css(css); 1208 1209 cache.css = css; 1210 } 1211 }, { 1212 filter: [ 'width', 'items', 'settings' ], 1213 run: function(cache) { 1214 var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin, 1215 merge = null, 1216 iterator = this._items.length, 1217 grid = !this.settings.autoWidth, 1218 widths = []; 1219 1220 cache.items = { 1221 merge: false, 1222 width: width 1223 }; 1224 1225 while (iterator--) { 1226 merge = this._mergers[iterator]; 1227 merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge; 1228 1229 cache.items.merge = merge > 1 || cache.items.merge; 1230 1231 widths[iterator] = !grid ? this._items[iterator].width() : width * merge; 1232 } 1233 1234 this._widths = widths; 1235 } 1236 }, { 1237 filter: [ 'items', 'settings' ], 1238 run: function() { 1239 var clones = [], 1240 items = this._items, 1241 settings = this.settings, 1242 // TODO: Should be computed from number of min width items in stage 1243 view = Math.max(settings.items * 2, 4), 1244 size = Math.ceil(items.length / 2) * 2, 1245 repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0, 1246 append = '', 1247 prepend = ''; 1248 1249 repeat /= 2; 1250 1251 while (repeat > 0) { 1252 // Switch to only using appended clones 1253 clones.push(this.normalize(clones.length / 2, true)); 1254 append = append + items[clones[clones.length - 1]][0].outerHTML; 1255 clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true)); 1256 prepend = items[clones[clones.length - 1]][0].outerHTML + prepend; 1257 repeat -= 1; 1258 } 1259 1260 this._clones = clones; 1261 1262 $(append).addClass('cloned').appendTo(this.$stage); 1263 $(prepend).addClass('cloned').prependTo(this.$stage); 1264 } 1265 }, { 1266 filter: [ 'width', 'items', 'settings' ], 1267 run: function() { 1268 var rtl = this.settings.rtl ? 1 : -1, 1269 size = this._clones.length + this._items.length, 1270 iterator = -1, 1271 previous = 0, 1272 current = 0, 1273 coordinates = []; 1274 1275 while (++iterator < size) { 1276 previous = coordinates[iterator - 1] || 0; 1277 current = this._widths[this.relative(iterator)] + this.settings.margin; 1278 coordinates.push(previous + current * rtl); 1279 } 1280 1281 this._coordinates = coordinates; 1282 } 1283 }, { 1284 filter: [ 'width', 'items', 'settings' ], 1285 run: function() { 1286 var padding = this.settings.stagePadding, 1287 coordinates = this._coordinates, 1288 css = { 1289 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2, 1290 'padding-left': padding || '', 1291 'padding-right': padding || '' 1292 }; 1293 1294 this.$stage.css(css); 1295 } 1296 }, { 1297 filter: [ 'width', 'items', 'settings' ], 1298 run: function(cache) { 1299 var iterator = this._coordinates.length, 1300 grid = !this.settings.autoWidth, 1301 items = this.$stage.children(); 1302 1303 if (grid && cache.items.merge) { 1304 while (iterator--) { 1305 cache.css.width = this._widths[this.relative(iterator)]; 1306 items.eq(iterator).css(cache.css); 1307 } 1308 } else if (grid) { 1309 cache.css.width = cache.items.width; 1310 items.css(cache.css); 1311 } 1312 } 1313 }, { 1314 filter: [ 'items' ], 1315 run: function() { 1316 this._coordinates.length < 1 && this.$stage.removeAttr('style'); 1317 } 1318 }, { 1319 filter: [ 'width', 'items', 'settings' ], 1320 run: function(cache) { 1321 cache.current = cache.current ? this.$stage.children().index(cache.current) : 0; 1322 cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current)); 1323 this.reset(cache.current); 1324 } 1325 }, { 1326 filter: [ 'position' ], 1327 run: function() { 1328 this.animate(this.coordinates(this._current)); 1329 } 1330 }, { 1331 filter: [ 'width', 'position', 'items', 'settings' ], 1332 run: function() { 1333 var rtl = this.settings.rtl ? 1 : -1, 1334 padding = this.settings.stagePadding * 2, 1335 begin = this.coordinates(this.current()) + padding, 1336 end = begin + this.width() * rtl, 1337 inner, outer, matches = [], i, n; 1338 1339 for (i = 0, n = this._coordinates.length; i < n; i++) { 1340 inner = this._coordinates[i - 1] || 0; 1341 outer = Math.abs(this._coordinates[i]) + padding * rtl; 1342 1343 if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end))) 1344 || (this.op(outer, '<', begin) && this.op(outer, '>', end))) { 1345 matches.push(i); 1346 } 1347 } 1348 1349 this.$stage.children('.active').removeClass('active'); 1350 this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active'); 1351 1352 this.$stage.children('.center').removeClass('center'); 1353 if (this.settings.center) { 1354 this.$stage.children().eq(this.current()).addClass('center'); 1355 } 1356 } 1357 } ]; 1358 1359 /** 1360 * Create the stage DOM element 1361 */ 1362 Owl.prototype.initializeStage = function() { 1363 this.$stage = this.$element.find('.' + this.settings.stageClass); 1364 1365 // if the stage is already in the DOM, grab it and skip stage initialization 1366 if (this.$stage.length) { 1367 return; 1368 } 1369 1370 this.$element.addClass(this.options.loadingClass); 1371 1372 // create stage 1373 this.$stage = $('<' + this.settings.stageElement + '>', { 1374 "class": this.settings.stageClass 1375 }).wrap( $( '<div/>', { 1376 "class": this.settings.stageOuterClass 1377 })); 1378 1379 // append stage 1380 this.$element.append(this.$stage.parent()); 1381 }; 1382 1383 /** 1384 * Create item DOM elements 1385 */ 1386 Owl.prototype.initializeItems = function() { 1387 var $items = this.$element.find('.owl-item'); 1388 1389 // if the items are already in the DOM, grab them and skip item initialization 1390 if ($items.length) { 1391 this._items = $items.get().map(function(item) { 1392 return $(item); 1393 }); 1394 1395 this._mergers = this._items.map(function() { 1396 return 1; 1397 }); 1398 1399 this.refresh(); 1400 1401 return; 1402 } 1403 1404 // append content 1405 this.replace(this.$element.children().not(this.$stage.parent())); 1406 1407 // check visibility 1408 if (this.isVisible()) { 1409 // update view 1410 this.refresh(); 1411 } else { 1412 // invalidate width 1413 this.invalidate('width'); 1414 } 1415 1416 this.$element 1417 .removeClass(this.options.loadingClass) 1418 .addClass(this.options.loadedClass); 1419 }; 1420 1421 /** 1422 * Initializes the carousel. 1423 * @protected 1424 */ 1425 Owl.prototype.initialize = function() { 1426 this.enter('initializing'); 1427 this.trigger('initialize'); 1428 1429 this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl); 1430 1431 if (this.settings.autoWidth && !this.is('pre-loading')) { 1432 var imgs, nestedSelector, width; 1433 imgs = this.$element.find('img'); 1434 nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined; 1435 width = this.$element.children(nestedSelector).width(); 1436 1437 if (imgs.length && width <= 0) { 1438 this.preloadAutoWidthImages(imgs); 1439 } 1440 } 1441 1442 this.initializeStage(); 1443 this.initializeItems(); 1444 1445 // register event handlers 1446 this.registerEventHandlers(); 1447 1448 this.leave('initializing'); 1449 this.trigger('initialized'); 1450 }; 1451 1452 /** 1453 * @returns {Boolean} visibility of $element 1454 * if you know the carousel will always be visible you can set `checkVisibility` to `false` to 1455 * prevent the expensive browser layout forced reflow the $element.is(':visible') does 1456 */ 1457 Owl.prototype.isVisible = function() { 1458 return this.settings.checkVisibility 1459 ? this.$element.is(':visible') 1460 : true; 1461 }; 1462 1463 /** 1464 * Setups the current settings. 1465 * @todo Remove responsive classes. Why should adaptive designs be brought into IE8? 1466 * @todo Support for media queries by using `matchMedia` would be nice. 1467 * @public 1468 */ 1469 Owl.prototype.setup = function() { 1470 var viewport = this.viewport(), 1471 overwrites = this.options.responsive, 1472 match = -1, 1473 settings = null; 1474 1475 if (!overwrites) { 1476 settings = $.extend({}, this.options); 1477 } else { 1478 $.each(overwrites, function(breakpoint) { 1479 if (breakpoint <= viewport && breakpoint > match) { 1480 match = Number(breakpoint); 1481 } 1482 }); 1483 1484 settings = $.extend({}, this.options, overwrites[match]); 1485 if (typeof settings.stagePadding === 'function') { 1486 settings.stagePadding = settings.stagePadding(); 1487 } 1488 delete settings.responsive; 1489 1490 // responsive class 1491 if (settings.responsiveClass) { 1492 this.$element.attr('class', 1493 this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\S+\\s', 'g'), '$1' + match) 1494 ); 1495 } 1496 } 1497 1498 this.trigger('change', { property: { name: 'settings', value: settings } }); 1499 this._breakpoint = match; 1500 this.settings = settings; 1501 this.invalidate('settings'); 1502 this.trigger('changed', { property: { name: 'settings', value: this.settings } }); 1503 }; 1504 1505 /** 1506 * Updates option logic if necessery. 1507 * @protected 1508 */ 1509 Owl.prototype.optionsLogic = function() { 1510 if (this.settings.autoWidth) { 1511 this.settings.stagePadding = false; 1512 this.settings.merge = false; 1513 } 1514 }; 1515 1516 /** 1517 * Prepares an item before add. 1518 * @todo Rename event parameter `content` to `item`. 1519 * @protected 1520 * @returns {jQuery|HTMLElement} - The item container. 1521 */ 1522 Owl.prototype.prepare = function(item) { 1523 var event = this.trigger('prepare', { content: item }); 1524 1525 if (!event.data) { 1526 event.data = $('<' + this.settings.itemElement + '/>') 1527 .addClass(this.options.itemClass).append(item) 1528 } 1529 1530 this.trigger('prepared', { content: event.data }); 1531 1532 return event.data; 1533 }; 1534 1535 /** 1536 * Updates the view. 1537 * @public 1538 */ 1539 Owl.prototype.update = function() { 1540 var i = 0, 1541 n = this._pipe.length, 1542 filter = $.proxy(function(p) { return this[p] }, this._invalidated), 1543 cache = {}; 1544 1545 while (i < n) { 1546 if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) { 1547 this._pipe[i].run(cache); 1548 } 1549 i++; 1550 } 1551 1552 this._invalidated = {}; 1553 1554 !this.is('valid') && this.enter('valid'); 1555 }; 1556 1557 /** 1558 * Gets the width of the view. 1559 * @public 1560 * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return. 1561 * @returns {Number} - The width of the view in pixel. 1562 */ 1563 Owl.prototype.width = function(dimension) { 1564 dimension = dimension || Owl.Width.Default; 1565 switch (dimension) { 1566 case Owl.Width.Inner: 1567 case Owl.Width.Outer: 1568 return this._width; 1569 default: 1570 return this._width - this.settings.stagePadding * 2 + this.settings.margin; 1571 } 1572 }; 1573 1574 /** 1575 * Refreshes the carousel primarily for adaptive purposes. 1576 * @public 1577 */ 1578 Owl.prototype.refresh = function() { 1579 this.enter('refreshing'); 1580 this.trigger('refresh'); 1581 1582 this.setup(); 1583 1584 this.optionsLogic(); 1585 1586 this.$element.addClass(this.options.refreshClass); 1587 1588 this.update(); 1589 1590 this.$element.removeClass(this.options.refreshClass); 1591 1592 this.leave('refreshing'); 1593 this.trigger('refreshed'); 1594 }; 1595 1596 /** 1597 * Checks window `resize` event. 1598 * @protected 1599 */ 1600 Owl.prototype.onThrottledResize = function() { 1601 window.clearTimeout(this.resizeTimer); 1602 this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate); 1603 }; 1604 1605 /** 1606 * Checks window `resize` event. 1607 * @protected 1608 */ 1609 Owl.prototype.onResize = function() { 1610 if (!this._items.length) { 1611 return false; 1612 } 1613 1614 if (this._width === this.$element.width()) { 1615 return false; 1616 } 1617 1618 if (!this.isVisible()) { 1619 return false; 1620 } 1621 1622 this.enter('resizing'); 1623 1624 if (this.trigger('resize').isDefaultPrevented()) { 1625 this.leave('resizing'); 1626 return false; 1627 } 1628 1629 this.invalidate('width'); 1630 1631 this.refresh(); 1632 1633 this.leave('resizing'); 1634 this.trigger('resized'); 1635 }; 1636 1637 /** 1638 * Registers event handlers. 1639 * @todo Check `msPointerEnabled` 1640 * @todo #261 1641 * @protected 1642 */ 1643 Owl.prototype.registerEventHandlers = function() { 1644 if ($.support.transition) { 1645 this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this)); 1646 } 1647 1648 if (this.settings.responsive !== false) { 1649 this.on(window, 'resize', this._handlers.onThrottledResize); 1650 } 1651 1652 if (this.settings.mouseDrag) { 1653 this.$element.addClass(this.options.dragClass); 1654 this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this)); 1655 this.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false }); 1656 } 1657 1658 if (this.settings.touchDrag){ 1659 this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this)); 1660 this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this)); 1661 } 1662 }; 1663 1664 /** 1665 * Handles `touchstart` and `mousedown` events. 1666 * @todo Horizontal swipe threshold as option 1667 * @todo #261 1668 * @protected 1669 * @param {Event} event - The event arguments. 1670 */ 1671 Owl.prototype.onDragStart = function(event) { 1672 var stage = null; 1673 1674 if (event.which === 3) { 1675 return; 1676 } 1677 1678 if ($.support.transform) { 1679 stage = this.$stage.css('transform').replace(/.*\(|\)| /g, '').split(','); 1680 stage = { 1681 x: stage[stage.length === 16 ? 12 : 4], 1682 y: stage[stage.length === 16 ? 13 : 5] 1683 }; 1684 } else { 1685 stage = this.$stage.position(); 1686 stage = { 1687 x: this.settings.rtl ? 1688 stage.left + this.$stage.width() - this.width() + this.settings.margin : 1689 stage.left, 1690 y: stage.top 1691 }; 1692 } 1693 1694 if (this.is('animating')) { 1695 $.support.transform ? this.animate(stage.x) : this.$stage.stop() 1696 this.invalidate('position'); 1697 } 1698 1699 this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown'); 1700 1701 this.speed(0); 1702 1703 this._drag.time = new Date().getTime(); 1704 this._drag.target = $(event.target); 1705 this._drag.stage.start = stage; 1706 this._drag.stage.current = stage; 1707 this._drag.pointer = this.pointer(event); 1708 1709 $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this)); 1710 1711 $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) { 1712 var delta = this.difference(this._drag.pointer, this.pointer(event)); 1713 1714 $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this)); 1715 1716 if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) { 1717 return; 1718 } 1719 1720 event.preventDefault(); 1721 1722 this.enter('dragging'); 1723 this.trigger('drag'); 1724 }, this)); 1725 }; 1726 1727 /** 1728 * Handles the `touchmove` and `mousemove` events. 1729 * @todo #261 1730 * @protected 1731 * @param {Event} event - The event arguments. 1732 */ 1733 Owl.prototype.onDragMove = function(event) { 1734 var minimum = null, 1735 maximum = null, 1736 pull = null, 1737 delta = this.difference(this._drag.pointer, this.pointer(event)), 1738 stage = this.difference(this._drag.stage.start, delta); 1739 1740 if (!this.is('dragging')) { 1741 return; 1742 } 1743 1744 event.preventDefault(); 1745 1746 if (this.settings.loop) { 1747 minimum = this.coordinates(this.minimum()); 1748 maximum = this.coordinates(this.maximum() + 1) - minimum; 1749 stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum; 1750 } else { 1751 minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum()); 1752 maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum()); 1753 pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0; 1754 stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull); 1755 } 1756 1757 this._drag.stage.current = stage; 1758 1759 this.animate(stage.x); 1760 }; 1761 1762 /** 1763 * Handles the `touchend` and `mouseup` events. 1764 * @todo #261 1765 * @todo Threshold for click event 1766 * @protected 1767 * @param {Event} event - The event arguments. 1768 */ 1769 Owl.prototype.onDragEnd = function(event) { 1770 var delta = this.difference(this._drag.pointer, this.pointer(event)), 1771 stage = this._drag.stage.current, 1772 direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right'; 1773 1774 $(document).off('.owl.core'); 1775 1776 this.$element.removeClass(this.options.grabClass); 1777 1778 if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) { 1779 this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed); 1780 this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction)); 1781 this.invalidate('position'); 1782 this.update(); 1783 1784 this._drag.direction = direction; 1785 1786 if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) { 1787 this._drag.target.one('click.owl.core', function() { return false; }); 1788 } 1789 } 1790 1791 if (!this.is('dragging')) { 1792 return; 1793 } 1794 1795 this.leave('dragging'); 1796 this.trigger('dragged'); 1797 }; 1798 1799 /** 1800 * Gets absolute position of the closest item for a coordinate. 1801 * @todo Setting `freeDrag` makes `closest` not reusable. See #165. 1802 * @protected 1803 * @param {Number} coordinate - The coordinate in pixel. 1804 * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`. 1805 * @return {Number} - The absolute position of the closest item. 1806 */ 1807 Owl.prototype.closest = function(coordinate, direction) { 1808 var position = -1, 1809 pull = 30, 1810 width = this.width(), 1811 coordinates = this.coordinates(); 1812 1813 if (!this.settings.freeDrag) { 1814 // check closest item 1815 $.each(coordinates, $.proxy(function(index, value) { 1816 // on a left pull, check on current index 1817 if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) { 1818 position = index; 1819 // on a right pull, check on previous index 1820 // to do so, subtract width from value and set position = index + 1 1821 } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) { 1822 position = index + 1; 1823 } else if (this.op(coordinate, '<', value) 1824 && this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) { 1825 position = direction === 'left' ? index + 1 : index; 1826 } 1827 return position === -1; 1828 }, this)); 1829 } 1830 1831 if (!this.settings.loop) { 1832 // non loop boundries 1833 if (this.op(coordinate, '>', coordinates[this.minimum()])) { 1834 position = coordinate = this.minimum(); 1835 } else if (this.op(coordinate, '<', coordinates[this.maximum()])) { 1836 position = coordinate = this.maximum(); 1837 } 1838 } 1839 1840 return position; 1841 }; 1842 1843 /** 1844 * Animates the stage. 1845 * @todo #270 1846 * @public 1847 * @param {Number} coordinate - The coordinate in pixels. 1848 */ 1849 Owl.prototype.animate = function(coordinate) { 1850 var animate = this.speed() > 0; 1851 1852 this.is('animating') && this.onTransitionEnd(); 1853 1854 if (animate) { 1855 this.enter('animating'); 1856 this.trigger('translate'); 1857 } 1858
vendor: 10,524 bytes, lines 1859-2226
1859 if ($.support.transform3d && $.support.transition) { 1860 this.$stage.css({ 1861 transform: 'translate3d(' + coordinate + 'px,0px,0px)', 1862 transition: (this.speed() / 1000) + 's' + ( 1863 this.settings.slideTransition ? ' ' + this.settings.slideTransition : '' 1864 ) 1865 }); 1866 } else if (animate) { 1867 this.$stage.animate({ 1868 left: coordinate + 'px' 1869 }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this)); 1870 } else { 1871 this.$stage.css({ 1872 left: coordinate + 'px' 1873 }); 1874 } 1875 }; 1876 1877 /** 1878 * Checks whether the carousel is in a specific state or not. 1879 * @param {String} state - The state to check. 1880 * @returns {Boolean} - The flag which indicates if the carousel is busy. 1881 */ 1882 Owl.prototype.is = function(state) { 1883 return this._states.current[state] && this._states.current[state] > 0; 1884 }; 1885 1886 /** 1887 * Sets the absolute position of the current item. 1888 * @public 1889 * @param {Number} [position] - The new absolute position or nothing to leave it unchanged. 1890 * @returns {Number} - The absolute position of the current item. 1891 */ 1892 Owl.prototype.current = function(position) { 1893 if (position === undefined) { 1894 return this._current; 1895 } 1896 1897 if (this._items.length === 0) { 1898 return undefined; 1899 } 1900 1901 position = this.normalize(position); 1902 1903 if (this._current !== position) { 1904 var event = this.trigger('change', { property: { name: 'position', value: position } }); 1905 1906 if (event.data !== undefined) { 1907 position = this.normalize(event.data); 1908 } 1909 1910 this._current = position; 1911 1912 this.invalidate('position'); 1913 1914 this.trigger('changed', { property: { name: 'position', value: this._current } }); 1915 } 1916 1917 return this._current; 1918 }; 1919 1920 /** 1921 * Invalidates the given part of the update routine. 1922 * @param {String} [part] - The part to invalidate. 1923 * @returns {Array.<String>} - The invalidated parts. 1924 */ 1925 Owl.prototype.invalidate = function(part) { 1926 if ($.type(part) === 'string') { 1927 this._invalidated[part] = true; 1928 this.is('valid') && this.leave('valid'); 1929 } 1930 return $.map(this._invalidated, function(v, i) { return i }); 1931 }; 1932 1933 /** 1934 * Resets the absolute position of the current item. 1935 * @public 1936 * @param {Number} position - The absolute position of the new item. 1937 */ 1938 Owl.prototype.reset = function(position) { 1939 position = this.normalize(position); 1940 1941 if (position === undefined) { 1942 return; 1943 } 1944 1945 this._speed = 0; 1946 this._current = position; 1947 1948 this.suppress([ 'translate', 'translated' ]); 1949 1950 this.animate(this.coordinates(position)); 1951 1952 this.release([ 'translate', 'translated' ]); 1953 }; 1954 1955 /** 1956 * Normalizes an absolute or a relative position of an item. 1957 * @public 1958 * @param {Number} position - The absolute or relative position to normalize. 1959 * @param {Boolean} [relative=false] - Whether the given position is relative or not. 1960 * @returns {Number} - The normalized position. 1961 */ 1962 Owl.prototype.normalize = function(position, relative) { 1963 var n = this._items.length, 1964 m = relative ? 0 : this._clones.length; 1965 1966 if (!this.isNumeric(position) || n < 1) { 1967 position = undefined; 1968 } else if (position < 0 || position >= n + m) { 1969 position = ((position - m / 2) % n + n) % n + m / 2; 1970 } 1971 1972 return position; 1973 }; 1974 1975 /** 1976 * Converts an absolute position of an item into a relative one. 1977 * @public 1978 * @param {Number} position - The absolute position to convert. 1979 * @returns {Number} - The converted position. 1980 */ 1981 Owl.prototype.relative = function(position) { 1982 position -= this._clones.length / 2; 1983 return this.normalize(position, true); 1984 }; 1985 1986 /** 1987 * Gets the maximum position for the current item. 1988 * @public 1989 * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. 1990 * @returns {Number} 1991 */ 1992 Owl.prototype.maximum = function(relative) { 1993 var settings = this.settings, 1994 maximum = this._coordinates.length, 1995 iterator, 1996 reciprocalItemsWidth, 1997 elementWidth; 1998 1999 if (settings.loop) { 2000 maximum = this._clones.length / 2 + this._items.length - 1; 2001 } else if (settings.autoWidth || settings.merge) { 2002 iterator = this._items.length; 2003 if (iterator) { 2004 reciprocalItemsWidth = this._items[--iterator].width(); 2005 elementWidth = this.$element.width(); 2006 while (iterator--) { 2007 reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin; 2008 if (reciprocalItemsWidth > elementWidth) { 2009 break; 2010 } 2011 } 2012 } 2013 maximum = iterator + 1; 2014 } else if (settings.center) { 2015 maximum = this._items.length - 1; 2016 } else { 2017 maximum = this._items.length - settings.items; 2018 } 2019 2020 if (relative) { 2021 maximum -= this._clones.length / 2; 2022 } 2023 2024 return Math.max(maximum, 0); 2025 }; 2026 2027 /** 2028 * Gets the minimum position for the current item. 2029 * @public 2030 * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position. 2031 * @returns {Number} 2032 */ 2033 Owl.prototype.minimum = function(relative) { 2034 return relative ? 0 : this._clones.length / 2; 2035 }; 2036 2037 /** 2038 * Gets an item at the specified relative position. 2039 * @public 2040 * @param {Number} [position] - The relative position of the item. 2041 * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given. 2042 */ 2043 Owl.prototype.items = function(position) { 2044 if (position === undefined) { 2045 return this._items.slice(); 2046 } 2047 2048 position = this.normalize(position, true); 2049 return this._items[position]; 2050 }; 2051 2052 /** 2053 * Gets an item at the specified relative position. 2054 * @public 2055 * @param {Number} [position] - The relative position of the item. 2056 * @return {jQuery|Array.<jQuery>} - The item at the given position or all items if no position was given. 2057 */ 2058 Owl.prototype.mergers = function(position) { 2059 if (position === undefined) { 2060 return this._mergers.slice(); 2061 } 2062 2063 position = this.normalize(position, true); 2064 return this._mergers[position]; 2065 }; 2066 2067 /** 2068 * Gets the absolute positions of clones for an item. 2069 * @public 2070 * @param {Number} [position] - The relative position of the item. 2071 * @returns {Array.<Number>} - The absolute positions of clones for the item or all if no position was given. 2072 */ 2073 Owl.prototype.clones = function(position) { 2074 var odd = this._clones.length / 2, 2075 even = odd + this._items.length, 2076 map = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 }; 2077 2078 if (position === undefined) { 2079 return $.map(this._clones, function(v, i) { return map(i) }); 2080 } 2081 2082 return $.map(this._clones, function(v, i) { return v === position ? map(i) : null }); 2083 }; 2084 2085 /** 2086 * Sets the current animation speed. 2087 * @public 2088 * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged. 2089 * @returns {Number} - The current animation speed in milliseconds. 2090 */ 2091 Owl.prototype.speed = function(speed) { 2092 if (speed !== undefined) { 2093 this._speed = speed; 2094 } 2095 2096 return this._speed; 2097 }; 2098 2099 /** 2100 * Gets the coordinate of an item. 2101 * @todo The name of this method is missleanding. 2102 * @public 2103 * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`. 2104 * @returns {Number|Array.<Number>} - The coordinate of the item in pixel or all coordinates. 2105 */ 2106 Owl.prototype.coordinates = function(position) { 2107 var multiplier = 1, 2108 newPosition = position - 1, 2109 coordinate; 2110 2111 if (position === undefined) { 2112 return $.map(this._coordinates, $.proxy(function(coordinate, index) { 2113 return this.coordinates(index); 2114 }, this)); 2115 } 2116 2117 if (this.settings.center) { 2118 if (this.settings.rtl) { 2119 multiplier = -1; 2120 newPosition = position + 1; 2121 } 2122 2123 coordinate = this._coordinates[position]; 2124 coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier; 2125 } else { 2126 coordinate = this._coordinates[newPosition] || 0; 2127 } 2128 2129 coordinate = Math.ceil(coordinate); 2130 2131 return coordinate; 2132 }; 2133 2134 /** 2135 * Calculates the speed for a translation. 2136 * @protected 2137 * @param {Number} from - The absolute position of the start item. 2138 * @param {Number} to - The absolute position of the target item. 2139 * @param {Number} [factor=undefined] - The time factor in milliseconds. 2140 * @returns {Number} - The time in milliseconds for the translation. 2141 */ 2142 Owl.prototype.duration = function(from, to, factor) { 2143 if (factor === 0) { 2144 return 0; 2145 } 2146 2147 return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed)); 2148 }; 2149 2150 /** 2151 * Slides to the specified item. 2152 * @public 2153 * @param {Number} position - The position of the item. 2154 * @param {Number} [speed] - The time in milliseconds for the transition. 2155 */ 2156 Owl.prototype.to = function(position, speed) { 2157 var current = this.current(), 2158 revert = null, 2159 distance = position - this.relative(current), 2160 direction = (distance > 0) - (distance < 0), 2161 items = this._items.length, 2162 minimum = this.minimum(), 2163 maximum = this.maximum(); 2164 2165 if (this.settings.loop) { 2166 if (!this.settings.rewind && Math.abs(distance) > items / 2) { 2167 distance += direction * -1 * items; 2168 } 2169 2170 position = current + distance; 2171 revert = ((position - minimum) % items + items) % items + minimum; 2172 2173 if (revert !== position && revert - distance <= maximum && revert - distance > 0) { 2174 current = revert - distance; 2175 position = revert; 2176 this.reset(current); 2177 } 2178 } else if (this.settings.rewind) { 2179 maximum += 1; 2180 position = (position % maximum + maximum) % maximum; 2181 } else { 2182 position = Math.max(minimum, Math.min(maximum, position)); 2183 } 2184 2185 this.speed(this.duration(current, position, speed)); 2186 this.current(position); 2187 2188 if (this.isVisible()) { 2189 this.update(); 2190 } 2191 }; 2192 2193 /** 2194 * Slides to the next item. 2195 * @public 2196 * @param {Number} [speed] - The time in milliseconds for the transition. 2197 */ 2198 Owl.prototype.next = function(speed) { 2199 speed = speed || false; 2200 this.to(this.relative(this.current()) + 1, speed); 2201 }; 2202 2203 /** 2204 * Slides to the previous item. 2205 * @public 2206 * @param {Number} [speed] - The time in milliseconds for the transition. 2207 */ 2208 Owl.prototype.prev = function(speed) { 2209 speed = speed || false; 2210 this.to(this.relative(this.current()) - 1, speed); 2211 }; 2212 2213 /** 2214 * Handles the end of an animation. 2215 * @protected 2216 * @param {Event} event - The event arguments. 2217 */ 2218 Owl.prototype.onTransitionEnd = function(event) { 2219 2220 // if css2 animation then event object is undefined 2221 if (event !== undefined) { 2222 event.stopPropagation(); 2223 2224 // Catch only owl-stage transitionEnd event 2225 if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) { 2226 return false;
vendor: 22,957 bytes, lines 2227-3075
2227 } 2228 } 2229 2230 this.leave('animating'); 2231 this.trigger('translated'); 2232 }; 2233 2234 /** 2235 * Gets viewport width. 2236 * @protected 2237 * @return {Number} - The width in pixel. 2238 */ 2239 Owl.prototype.viewport = function() { 2240 var width; 2241 if (this.options.responsiveBaseElement !== window) { 2242 width = $(this.options.responsiveBaseElement).width(); 2243 } else if (window.innerWidth) { 2244 width = window.innerWidth; 2245 } else if (document.documentElement && document.documentElement.clientWidth) { 2246 width = document.documentElement.clientWidth; 2247 } else { 2248 console.warn('Can not detect viewport width.'); 2249 } 2250 return width; 2251 }; 2252 2253 /** 2254 * Replaces the current content. 2255 * @public 2256 * @param {HTMLElement|jQuery|String} content - The new content. 2257 */ 2258 Owl.prototype.replace = function(content) { 2259 this.$stage.empty(); 2260 this._items = []; 2261 2262 if (content) { 2263 content = (content instanceof jQuery) ? content : $(content); 2264 } 2265 2266 if (this.settings.nestedItemSelector) { 2267 content = content.find('.' + this.settings.nestedItemSelector); 2268 } 2269 2270 content.filter(function() { 2271 return this.nodeType === 1; 2272 }).each($.proxy(function(index, item) { 2273 item = this.prepare(item); 2274 this.$stage.append(item); 2275 this._items.push(item); 2276 this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); 2277 }, this)); 2278 2279 this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0); 2280 2281 this.invalidate('items'); 2282 }; 2283 2284 /** 2285 * Adds an item. 2286 * @todo Use `item` instead of `content` for the event arguments. 2287 * @public 2288 * @param {HTMLElement|jQuery|String} content - The item content to add. 2289 * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end. 2290 */ 2291 Owl.prototype.add = function(content, position) { 2292 var current = this.relative(this._current); 2293 2294 position = position === undefined ? this._items.length : this.normalize(position, true); 2295 content = content instanceof jQuery ? content : $(content); 2296 2297 this.trigger('add', { content: content, position: position }); 2298 2299 content = this.prepare(content); 2300 2301 if (this._items.length === 0 || position === this._items.length) { 2302 this._items.length === 0 && this.$stage.append(content); 2303 this._items.length !== 0 && this._items[position - 1].after(content); 2304 this._items.push(content); 2305 this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); 2306 } else { 2307 this._items[position].before(content); 2308 this._items.splice(position, 0, content); 2309 this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1); 2310 } 2311 2312 this._items[current] && this.reset(this._items[current].index()); 2313 2314 this.invalidate('items'); 2315 2316 this.trigger('added', { content: content, position: position }); 2317 }; 2318 2319 /** 2320 * Removes an item by its position. 2321 * @todo Use `item` instead of `content` for the event arguments. 2322 * @public 2323 * @param {Number} position - The relative position of the item to remove. 2324 */ 2325 Owl.prototype.remove = function(position) { 2326 position = this.normalize(position, true); 2327 2328 if (position === undefined) { 2329 return; 2330 } 2331 2332 this.trigger('remove', { content: this._items[position], position: position }); 2333 2334 this._items[position].remove(); 2335 this._items.splice(position, 1); 2336 this._mergers.splice(position, 1); 2337 2338 this.invalidate('items'); 2339 2340 this.trigger('removed', { content: null, position: position }); 2341 }; 2342 2343 /** 2344 * Preloads images with auto width. 2345 * @todo Replace by a more generic approach 2346 * @protected 2347 */ 2348 Owl.prototype.preloadAutoWidthImages = function(images) { 2349 images.each($.proxy(function(i, element) { 2350 this.enter('pre-loading'); 2351 element = $(element); 2352 $(new Image()).one('load', $.proxy(function(e) { 2353 element.attr('src', e.target.src); 2354 element.css('opacity', 1); 2355 this.leave('pre-loading'); 2356 !this.is('pre-loading') && !this.is('initializing') && this.refresh(); 2357 }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina')); 2358 }, this)); 2359 }; 2360 2361 /** 2362 * Destroys the carousel. 2363 * @public 2364 */ 2365 Owl.prototype.destroy = function() { 2366 2367 this.$element.off('.owl.core'); 2368 this.$stage.off('.owl.core'); 2369 $(document).off('.owl.core'); 2370 2371 if (this.settings.responsive !== false) { 2372 window.clearTimeout(this.resizeTimer); 2373 this.off(window, 'resize', this._handlers.onThrottledResize); 2374 } 2375 2376 for (var i in this._plugins) { 2377 this._plugins[i].destroy(); 2378 } 2379 2380 this.$stage.children('.cloned').remove(); 2381 2382 this.$stage.unwrap(); 2383 this.$stage.children().contents().unwrap(); 2384 this.$stage.children().unwrap(); 2385 this.$stage.remove(); 2386 this.$element 2387 .removeClass(this.options.refreshClass) 2388 .removeClass(this.options.loadingClass) 2389 .removeClass(this.options.loadedClass) 2390 .removeClass(this.options.rtlClass) 2391 .removeClass(this.options.dragClass) 2392 .removeClass(this.options.grabClass) 2393 .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\S+\\s', 'g'), '')) 2394 .removeData('owl.carousel'); 2395 }; 2396 2397 /** 2398 * Operators to calculate right-to-left and left-to-right. 2399 * @protected 2400 * @param {Number} [a] - The left side operand. 2401 * @param {String} [o] - The operator. 2402 * @param {Number} [b] - The right side operand. 2403 */ 2404 Owl.prototype.op = function(a, o, b) { 2405 var rtl = this.settings.rtl; 2406 switch (o) { 2407 case '<': 2408 return rtl ? a > b : a < b; 2409 case '>': 2410 return rtl ? a < b : a > b; 2411 case '>=': 2412 return rtl ? a <= b : a >= b; 2413 case '<=': 2414 return rtl ? a >= b : a <= b; 2415 default: 2416 break; 2417 } 2418 }; 2419 2420 /** 2421 * Attaches to an internal event. 2422 * @protected 2423 * @param {HTMLElement} element - The event source. 2424 * @param {String} event - The event name. 2425 * @param {Function} listener - The event handler to attach. 2426 * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not. 2427 */ 2428 Owl.prototype.on = function(element, event, listener, capture) { 2429 if (element.addEventListener) { 2430 element.addEventListener(event, listener, capture); 2431 } else if (element.attachEvent) { 2432 element.attachEvent('on' + event, listener); 2433 } 2434 }; 2435 2436 /** 2437 * Detaches from an internal event. 2438 * @protected 2439 * @param {HTMLElement} element - The event source. 2440 * @param {String} event - The event name. 2441 * @param {Function} listener - The attached event handler to detach. 2442 * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not. 2443 */ 2444 Owl.prototype.off = function(element, event, listener, capture) { 2445 if (element.removeEventListener) { 2446 element.removeEventListener(event, listener, capture); 2447 } else if (element.detachEvent) { 2448 element.detachEvent('on' + event, listener); 2449 } 2450 }; 2451 2452 /** 2453 * Triggers a public event. 2454 * @todo Remove `status`, `relatedTarget` should be used instead. 2455 * @protected 2456 * @param {String} name - The event name. 2457 * @param {*} [data=null] - The event data. 2458 * @param {String} [namespace=carousel] - The event namespace. 2459 * @param {String} [state] - The state which is associated with the event. 2460 * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not. 2461 * @returns {Event} - The event arguments. 2462 */ 2463 Owl.prototype.trigger = function(name, data, namespace, state, enter) { 2464 var status = { 2465 item: { count: this._items.length, index: this.current() } 2466 }, handler = $.camelCase( 2467 $.grep([ 'on', name, namespace ], function(v) { return v }) 2468 .join('-').toLowerCase() 2469 ), event = $.Event( 2470 [ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(), 2471 $.extend({ relatedTarget: this }, status, data) 2472 ); 2473 2474 if (!this._supress[name]) { 2475 $.each(this._plugins, function(name, plugin) { 2476 if (plugin.onTrigger) { 2477 plugin.onTrigger(event); 2478 } 2479 }); 2480 2481 this.register({ type: Owl.Type.Event, name: name }); 2482 this.$element.trigger(event); 2483 2484 if (this.settings && typeof this.settings[handler] === 'function') { 2485 this.settings[handler].call(this, event); 2486 } 2487 } 2488 2489 return event; 2490 }; 2491 2492 /** 2493 * Enters a state. 2494 * @param name - The state name. 2495 */ 2496 Owl.prototype.enter = function(name) { 2497 $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { 2498 if (this._states.current[name] === undefined) { 2499 this._states.current[name] = 0; 2500 } 2501 2502 this._states.current[name]++; 2503 }, this)); 2504 }; 2505 2506 /** 2507 * Leaves a state. 2508 * @param name - The state name. 2509 */ 2510 Owl.prototype.leave = function(name) { 2511 $.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) { 2512 this._states.current[name]--; 2513 }, this)); 2514 }; 2515 2516 /** 2517 * Registers an event or state. 2518 * @public 2519 * @param {Object} object - The event or state to register. 2520 */ 2521 Owl.prototype.register = function(object) { 2522 if (object.type === Owl.Type.Event) { 2523 if (!$.event.special[object.name]) { 2524 $.event.special[object.name] = {}; 2525 } 2526 2527 if (!$.event.special[object.name].owl) { 2528 var _default = $.event.special[object.name]._default; 2529 $.event.special[object.name]._default = function(e) { 2530 if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) { 2531 return _default.apply(this, arguments); 2532 } 2533 return e.namespace && e.namespace.indexOf('owl') > -1; 2534 }; 2535 $.event.special[object.name].owl = true; 2536 } 2537 } else if (object.type === Owl.Type.State) { 2538 if (!this._states.tags[object.name]) { 2539 this._states.tags[object.name] = object.tags; 2540 } else { 2541 this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags); 2542 } 2543 2544 this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) { 2545 return $.inArray(tag, this._states.tags[object.name]) === i; 2546 }, this)); 2547 } 2548 }; 2549 2550 /** 2551 * Suppresses events. 2552 * @protected 2553 * @param {Array.<String>} events - The events to suppress. 2554 */ 2555 Owl.prototype.suppress = function(events) { 2556 $.each(events, $.proxy(function(index, event) { 2557 this._supress[event] = true; 2558 }, this)); 2559 }; 2560 2561 /** 2562 * Releases suppressed events. 2563 * @protected 2564 * @param {Array.<String>} events - The events to release. 2565 */ 2566 Owl.prototype.release = function(events) { 2567 $.each(events, $.proxy(function(index, event) { 2568 delete this._supress[event]; 2569 }, this)); 2570 }; 2571 2572 /** 2573 * Gets unified pointer coordinates from event. 2574 * @todo #261 2575 * @protected 2576 * @param {Event} - The `mousedown` or `touchstart` event. 2577 * @returns {Object} - Contains `x` and `y` coordinates of current pointer position. 2578 */ 2579 Owl.prototype.pointer = function(event) { 2580 var result = { x: null, y: null }; 2581 2582 event = event.originalEvent || event || window.event; 2583 2584 event = event.touches && event.touches.length ? 2585 event.touches[0] : event.changedTouches && event.changedTouches.length ? 2586 event.changedTouches[0] : event; 2587 2588 if (event.pageX) { 2589 result.x = event.pageX; 2590 result.y = event.pageY; 2591 } else { 2592 result.x = event.clientX; 2593 result.y = event.clientY; 2594 } 2595 2596 return result; 2597 }; 2598 2599 /** 2600 * Determines if the input is a Number or something that can be coerced to a Number 2601 * @protected 2602 * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested 2603 * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number 2604 */ 2605 Owl.prototype.isNumeric = function(number) { 2606 return !isNaN(parseFloat(number)); 2607 }; 2608 2609 /** 2610 * Gets the difference of two vectors. 2611 * @todo #261 2612 * @protected 2613 * @param {Object} - The first vector. 2614 * @param {Object} - The second vector. 2615 * @returns {Object} - The difference. 2616 */ 2617 Owl.prototype.difference = function(first, second) { 2618 return { 2619 x: first.x - second.x, 2620 y: first.y - second.y 2621 }; 2622 }; 2623 2624 /** 2625 * The jQuery Plugin for the Owl Carousel 2626 * @todo Navigation plugin `next` and `prev` 2627 * @public 2628 */ 2629 $.fn.owlCarousel = function(option) { 2630 var args = Array.prototype.slice.call(arguments, 1); 2631 2632 return this.each(function() { 2633 var $this = $(this), 2634 data = $this.data('owl.carousel'); 2635 2636 if (!data) { 2637 data = new Owl(this, typeof option == 'object' && option); 2638 $this.data('owl.carousel', data); 2639 2640 $.each([ 2641 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove' 2642 ], function(i, event) { 2643 data.register({ type: Owl.Type.Event, name: event }); 2644 data.$element.on(event + '.owl.carousel.core', $.proxy(function(e) { 2645 if (e.namespace && e.relatedTarget !== this) { 2646 this.suppress([ event ]); 2647 data[event].apply(this, [].slice.call(arguments, 1)); 2648 this.release([ event ]); 2649 } 2650 }, data)); 2651 }); 2652 } 2653 2654 if (typeof option == 'string' && option.charAt(0) !== '_') { 2655 data[option].apply(data, args); 2656 } 2657 }); 2658 }; 2659 2660 /** 2661 * The constructor for the jQuery Plugin 2662 * @public 2663 */ 2664 $.fn.owlCarousel.Constructor = Owl; 2665 2666})(window.Zepto || window.jQuery, window, document); 2667 2668/** 2669 * AutoRefresh Plugin 2670 * @version 2.3.4 2671 * @author Artus Kolanowski 2672 * @author David Deutsch 2673 * @license The MIT License (MIT) 2674 */ 2675;(function($, window, document, undefined) { 2676 2677 /** 2678 * Creates the auto refresh plugin. 2679 * @class The Auto Refresh Plugin 2680 * @param {Owl} carousel - The Owl Carousel 2681 */ 2682 var AutoRefresh = function(carousel) { 2683 /** 2684 * Reference to the core. 2685 * @protected 2686 * @type {Owl} 2687 */ 2688 this._core = carousel; 2689 2690 /** 2691 * Refresh interval. 2692 * @protected 2693 * @type {number} 2694 */ 2695 this._interval = null; 2696 2697 /** 2698 * Whether the element is currently visible or not. 2699 * @protected 2700 * @type {Boolean} 2701 */ 2702 this._visible = null; 2703 2704 /** 2705 * All event handlers. 2706 * @protected 2707 * @type {Object} 2708 */ 2709 this._handlers = { 2710 'initialized.owl.carousel': $.proxy(function(e) { 2711 if (e.namespace && this._core.settings.autoRefresh) { 2712 this.watch(); 2713 } 2714 }, this) 2715 }; 2716 2717 // set default options 2718 this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options); 2719 2720 // register event handlers 2721 this._core.$element.on(this._handlers); 2722 }; 2723 2724 /** 2725 * Default options. 2726 * @public 2727 */ 2728 AutoRefresh.Defaults = { 2729 autoRefresh: true, 2730 autoRefreshInterval: 500 2731 }; 2732 2733 /** 2734 * Watches the element. 2735 */ 2736 AutoRefresh.prototype.watch = function() { 2737 if (this._interval) { 2738 return; 2739 } 2740 2741 this._visible = this._core.isVisible(); 2742 this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval); 2743 }; 2744 2745 /** 2746 * Refreshes the element. 2747 */ 2748 AutoRefresh.prototype.refresh = function() { 2749 if (this._core.isVisible() === this._visible) { 2750 return; 2751 } 2752 2753 this._visible = !this._visible; 2754 2755 this._core.$element.toggleClass('owl-hidden', !this._visible); 2756 2757 this._visible && (this._core.invalidate('width') && this._core.refresh()); 2758 }; 2759 2760 /** 2761 * Destroys the plugin. 2762 */ 2763 AutoRefresh.prototype.destroy = function() { 2764 var handler, property; 2765 2766 window.clearInterval(this._interval); 2767 2768 for (handler in this._handlers) { 2769 this._core.$element.off(handler, this._handlers[handler]); 2770 } 2771 for (property in Object.getOwnPropertyNames(this)) { 2772 typeof this[property] != 'function' && (this[property] = null); 2773 } 2774 }; 2775 2776 $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh; 2777 2778})(window.Zepto || window.jQuery, window, document); 2779 2780/** 2781 * Lazy Plugin 2782 * @version 2.3.4 2783 * @author Bartosz Wojciechowski 2784 * @author David Deutsch 2785 * @license The MIT License (MIT) 2786 */ 2787;(function($, window, document, undefined) { 2788 2789 /** 2790 * Creates the lazy plugin. 2791 * @class The Lazy Plugin 2792 * @param {Owl} carousel - The Owl Carousel 2793 */ 2794 var Lazy = function(carousel) { 2795 2796 /** 2797 * Reference to the core. 2798 * @protected 2799 * @type {Owl} 2800 */ 2801 this._core = carousel; 2802 2803 /** 2804 * Already loaded items. 2805 * @protected 2806 * @type {Array.<jQuery>} 2807 */ 2808 this._loaded = []; 2809 2810 /** 2811 * Event handlers. 2812 * @protected 2813 * @type {Object} 2814 */ 2815 this._handlers = { 2816 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) { 2817 if (!e.namespace) { 2818 return; 2819 } 2820 2821 if (!this._core.settings || !this._core.settings.lazyLoad) { 2822 return; 2823 } 2824 2825 if ((e.property && e.property.name == 'position') || e.type == 'initialized') { 2826 var settings = this._core.settings, 2827 n = (settings.center && Math.ceil(settings.items / 2) || settings.items), 2828 i = ((settings.center && n * -1) || 0), 2829 position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i, 2830 clones = this._core.clones().length, 2831 load = $.proxy(function(i, v) { this.load(v) }, this); 2832 //TODO: Need documentation for this new option 2833 if (settings.lazyLoadEager > 0) { 2834 n += settings.lazyLoadEager; 2835 // If the carousel is looping also preload images that are to the "left" 2836 if (settings.loop) { 2837 position -= settings.lazyLoadEager; 2838 n++; 2839 } 2840 } 2841 2842 while (i++ < n) { 2843 this.load(clones / 2 + this._core.relative(position)); 2844 clones && $.each(this._core.clones(this._core.relative(position)), load); 2845 position++; 2846 } 2847 } 2848 }, this) 2849 }; 2850 2851 // set the default options 2852 this._core.options = $.extend({}, Lazy.Defaults, this._core.options); 2853 2854 // register event handler 2855 this._core.$element.on(this._handlers); 2856 }; 2857 2858 /** 2859 * Default options. 2860 * @public 2861 */ 2862 Lazy.Defaults = { 2863 lazyLoad: false, 2864 lazyLoadEager: 0 2865 }; 2866 2867 /** 2868 * Loads all resources of an item at the specified position. 2869 * @param {Number} position - The absolute position of the item. 2870 * @protected 2871 */ 2872 Lazy.prototype.load = function(position) { 2873 var $item = this._core.$stage.children().eq(position), 2874 $elements = $item && $item.find('.owl-lazy'); 2875 2876 if (!$elements || $.inArray($item.get(0), this._loaded) > -1) { 2877 return; 2878 } 2879 2880 $elements.each($.proxy(function(index, element) { 2881 var $element = $(element), image, 2882 url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset'); 2883 2884 this._core.trigger('load', { element: $element, url: url }, 'lazy'); 2885 2886 if ($element.is('img')) { 2887 $element.one('load.owl.lazy', $.proxy(function() { 2888 $element.css('opacity', 1); 2889 this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); 2890 }, this)).attr('src', url); 2891 } else if ($element.is('source')) { 2892 $element.one('load.owl.lazy', $.proxy(function() { 2893 this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); 2894 }, this)).attr('srcset', url); 2895 } else { 2896 image = new Image(); 2897 image.onload = $.proxy(function() { 2898 $element.css({ 2899 'background-image': 'url("' + url + '")', 2900 'opacity': '1' 2901 }); 2902 this._core.trigger('loaded', { element: $element, url: url }, 'lazy'); 2903 }, this); 2904 image.src = url; 2905 } 2906 }, this)); 2907 2908 this._loaded.push($item.get(0)); 2909 }; 2910 2911 /** 2912 * Destroys the plugin. 2913 * @public 2914 */ 2915 Lazy.prototype.destroy = function() { 2916 var handler, property; 2917 2918 for (handler in this.handlers) { 2919 this._core.$element.off(handler, this.handlers[handler]); 2920 } 2921 for (property in Object.getOwnPropertyNames(this)) { 2922 typeof this[property] != 'function' && (this[property] = null); 2923 } 2924 }; 2925 2926 $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy; 2927 2928})(window.Zepto || window.jQuery, window, document); 2929 2930/** 2931 * AutoHeight Plugin 2932 * @version 2.3.4 2933 * @author Bartosz Wojciechowski 2934 * @author David Deutsch 2935 * @license The MIT License (MIT) 2936 */ 2937;(function($, window, document, undefined) { 2938 2939 /** 2940 * Creates the auto height plugin. 2941 * @class The Auto Height Plugin 2942 * @param {Owl} carousel - The Owl Carousel 2943 */ 2944 var AutoHeight = function(carousel) { 2945 /** 2946 * Reference to the core. 2947 * @protected 2948 * @type {Owl} 2949 */ 2950 this._core = carousel; 2951 2952 this._previousHeight = null; 2953 2954 /** 2955 * All event handlers. 2956 * @protected 2957 * @type {Object} 2958 */ 2959 this._handlers = { 2960 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) { 2961 if (e.namespace && this._core.settings.autoHeight) { 2962 this.update(); 2963 } 2964 }, this), 2965 'changed.owl.carousel': $.proxy(function(e) { 2966 if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position'){ 2967 this.update(); 2968 } 2969 }, this), 2970 'loaded.owl.lazy': $.proxy(function(e) { 2971 if (e.namespace && this._core.settings.autoHeight 2972 && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) { 2973 this.update(); 2974 } 2975 }, this) 2976 }; 2977 2978 // set default options 2979 this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options); 2980 2981 // register event handlers 2982 this._core.$element.on(this._handlers); 2983 this._intervalId = null; 2984 var refThis = this; 2985 2986 // These changes have been taken from a PR by gavrochelegnou proposed in #1575 2987 // and have been made compatible with the latest jQuery version 2988 $(window).on('load', function() { 2989 if (refThis._core.settings.autoHeight) { 2990 refThis.update(); 2991 } 2992 }); 2993 2994 // Autoresize the height of the carousel when window is resized 2995 // When carousel has images, the height is dependent on the width 2996 // and should also change on resize 2997 $(window).resize(function() { 2998 if (refThis._core.settings.autoHeight) { 2999 if (refThis._intervalId != null) { 3000 clearTimeout(refThis._intervalId); 3001 } 3002 3003 refThis._intervalId = setTimeout(function() { 3004 refThis.update(); 3005 }, 250); 3006 } 3007 }); 3008 3009 }; 3010 3011 /** 3012 * Default options. 3013 * @public 3014 */ 3015 AutoHeight.Defaults = { 3016 autoHeight: false, 3017 autoHeightClass: 'owl-height' 3018 }; 3019 3020 /** 3021 * Updates the view. 3022 */ 3023 AutoHeight.prototype.update = function() { 3024 var start = this._core._current, 3025 end = start + this._core.settings.items, 3026 lazyLoadEnabled = this._core.settings.lazyLoad, 3027 visible = this._core.$stage.children().toArray().slice(start, end), 3028 heights = [], 3029 maxheight = 0; 3030 3031 $.each(visible, function(index, item) { 3032 heights.push($(item).height()); 3033 }); 3034 3035 maxheight = Math.max.apply(null, heights); 3036 3037 if (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) { 3038 maxheight = this._previousHeight; 3039 } 3040 3041 this._previousHeight = maxheight; 3042 3043 this._core.$stage.parent() 3044 .height(maxheight) 3045 .addClass(this._core.settings.autoHeightClass); 3046 }; 3047 3048 AutoHeight.prototype.destroy = function() { 3049 var handler, property; 3050 3051 for (handler in this._handlers) { 3052 this._core.$element.off(handler, this._handlers[handler]); 3053 } 3054 for (property in Object.getOwnPropertyNames(this)) { 3055 typeof this[property] !== 'function' && (this[property] = null); 3056 } 3057 }; 3058 3059 $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight; 3060 3061})(window.Zepto || window.jQuery, window, document); 3062 3063/** 3064 * Video Plugin 3065 * @version 2.3.4 3066 * @author Bartosz Wojciechowski 3067 * @author David Deutsch 3068 * @license The MIT License (MIT) 3069 */ 3070;(function($, window, document, undefined) { 3071 3072 /** 3073 * Creates the video plugin. 3074 * @class The Video Plugin 3075 * @param {Owl} carousel - The Owl Carousel
vendor: 5,347 bytes, lines 3076-3273
3076 */ 3077 var Video = function(carousel) { 3078 /** 3079 * Reference to the core. 3080 * @protected 3081 * @type {Owl} 3082 */ 3083 this._core = carousel; 3084 3085 /** 3086 * Cache all video URLs. 3087 * @protected 3088 * @type {Object} 3089 */ 3090 this._videos = {}; 3091 3092 /** 3093 * Current playing item. 3094 * @protected 3095 * @type {jQuery} 3096 */ 3097 this._playing = null; 3098 3099 /** 3100 * All event handlers. 3101 * @todo The cloned content removale is too late 3102 * @protected 3103 * @type {Object} 3104 */ 3105 this._handlers = { 3106 'initialized.owl.carousel': $.proxy(function(e) { 3107 if (e.namespace) { 3108 this._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] }); 3109 } 3110 }, this), 3111 'resize.owl.carousel': $.proxy(function(e) { 3112 if (e.namespace && this._core.settings.video && this.isInFullScreen()) { 3113 e.preventDefault(); 3114 } 3115 }, this), 3116 'refreshed.owl.carousel': $.proxy(function(e) { 3117 if (e.namespace && this._core.is('resizing')) { 3118 this._core.$stage.find('.cloned .owl-video-frame').remove(); 3119 } 3120 }, this), 3121 'changed.owl.carousel': $.proxy(function(e) { 3122 if (e.namespace && e.property.name === 'position' && this._playing) { 3123 this.stop(); 3124 } 3125 }, this), 3126 'prepared.owl.carousel': $.proxy(function(e) { 3127 if (!e.namespace) { 3128 return; 3129 } 3130 3131 var $element = $(e.content).find('.owl-video'); 3132 3133 if ($element.length) { 3134 $element.css('display', 'none'); 3135 this.fetch($element, $(e.content)); 3136 } 3137 }, this) 3138 }; 3139 3140 // set default options 3141 this._core.options = $.extend({}, Video.Defaults, this._core.options); 3142 3143 // register event handlers 3144 this._core.$element.on(this._handlers); 3145 3146 this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) { 3147 this.play(e); 3148 }, this)); 3149 }; 3150 3151 /** 3152 * Default options. 3153 * @public 3154 */ 3155 Video.Defaults = { 3156 video: false, 3157 videoHeight: false, 3158 videoWidth: false 3159 }; 3160 3161 /** 3162 * Gets the video ID and the type (YouTube/Vimeo/vzaar only). 3163 * @protected 3164 * @param {jQuery} target - The target containing the video data. 3165 * @param {jQuery} item - The item containing the video. 3166 */ 3167 Video.prototype.fetch = function(target, item) { 3168 var type = (function() { 3169 if (target.attr('data-vimeo-id')) { 3170 return 'vimeo'; 3171 } else if (target.attr('data-vzaar-id')) { 3172 return 'vzaar' 3173 } else { 3174 return 'youtube'; 3175 } 3176 })(), 3177 id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'), 3178 width = target.attr('data-width') || this._core.settings.videoWidth, 3179 height = target.attr('data-height') || this._core.settings.videoHeight, 3180 url = target.attr('href'); 3181 3182 if (url) { 3183 3184 /* 3185 Parses the id's out of the following urls (and probably more): 3186 https://www.youtube.com/watch?v=:id 3187 https://youtu.be/:id 3188 https://vimeo.com/:id 3189 https://vimeo.com/channels/:channel/:id 3190 https://vimeo.com/groups/:group/videos/:id 3191 https://app.vzaar.com/videos/:id 3192 3193 Visual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F 3194 */ 3195 3196 id = url.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/); 3197 3198 if (id[3].indexOf('youtu') > -1) { 3199 type = 'youtube'; 3200 } else if (id[3].indexOf('vimeo') > -1) { 3201 type = 'vimeo'; 3202 } else if (id[3].indexOf('vzaar') > -1) { 3203 type = 'vzaar'; 3204 } else { 3205 throw new Error('Video URL not supported.'); 3206 } 3207 id = id[6]; 3208 } else { 3209 throw new Error('Missing video URL.'); 3210 } 3211 3212 this._videos[url] = { 3213 type: type, 3214 id: id, 3215 width: width, 3216 height: height 3217 }; 3218 3219 item.attr('data-video', url); 3220 3221 this.thumbnail(target, this._videos[url]); 3222 }; 3223 3224 /** 3225 * Creates video thumbnail. 3226 * @protected 3227 * @param {jQuery} target - The target containing the video data. 3228 * @param {Object} info - The video info object. 3229 * @see `fetch` 3230 */ 3231 Video.prototype.thumbnail = function(target, video) { 3232 var tnLink, 3233 icon, 3234 path, 3235 dimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '', 3236 customTn = target.find('img'), 3237 srcType = 'src', 3238 lazyClass = '', 3239 settings = this._core.settings, 3240 create = function(path) { 3241 icon = '<div class="owl-video-play-icon"></div>'; 3242 3243 if (settings.lazyLoad) { 3244 tnLink = $('<div/>',{ 3245 "class": 'owl-video-tn ' + lazyClass, 3246 "srcType": path 3247 }); 3248 } else { 3249 tnLink = $( '<div/>', { 3250 "class": "owl-video-tn", 3251 "style": 'opacity:1;background-image:url(' + path + ')' 3252 }); 3253 } 3254 target.after(tnLink); 3255 target.after(icon); 3256 }; 3257 3258 // wrap video content into owl-video-wrapper div 3259 target.wrap( $( '<div/>', { 3260 "class": "owl-video-wrapper", 3261 "style": dimensions 3262 })); 3263 3264 if (this._core.settings.lazyLoad) { 3265 srcType = 'data-src'; 3266 lazyClass = 'owl-lazy'; 3267 } 3268 3269 // custom thumbnail 3270 if (customTn.length) { 3271 create(customTn.attr(srcType)); 3272 customTn.remove(); 3273 return false;
vendor: 15,908 bytes, lines 3274-3911
3274 } 3275 3276 if (video.type === 'youtube') { 3277 path = "//img.youtube.com/vi/" + video.id + "/hqdefault.jpg"; 3278 create(path); 3279 } else if (video.type === 'vimeo') { 3280 $.ajax({ 3281 type: 'GET', 3282 url: '//vimeo.com/api/v2/video/' + video.id + '.json', 3283 jsonp: 'callback', 3284 dataType: 'jsonp', 3285 success: function(data) { 3286 path = data[0].thumbnail_large; 3287 create(path); 3288 } 3289 }); 3290 } else if (video.type === 'vzaar') { 3291 $.ajax({ 3292 type: 'GET', 3293 url: '//vzaar.com/api/videos/' + video.id + '.json', 3294 jsonp: 'callback', 3295 dataType: 'jsonp', 3296 success: function(data) { 3297 path = data.framegrab_url; 3298 create(path); 3299 } 3300 }); 3301 } 3302 }; 3303 3304 /** 3305 * Stops the current video. 3306 * @public 3307 */ 3308 Video.prototype.stop = function() { 3309 this._core.trigger('stop', null, 'video'); 3310 this._playing.find('.owl-video-frame').remove(); 3311 this._playing.removeClass('owl-video-playing'); 3312 this._playing = null; 3313 this._core.leave('playing'); 3314 this._core.trigger('stopped', null, 'video'); 3315 }; 3316 3317 /** 3318 * Starts the current video. 3319 * @public 3320 * @param {Event} event - The event arguments. 3321 */ 3322 Video.prototype.play = function(event) { 3323 var target = $(event.target), 3324 item = target.closest('.' + this._core.settings.itemClass), 3325 video = this._videos[item.attr('data-video')], 3326 width = video.width || '100%', 3327 height = video.height || this._core.$stage.height(), 3328 html, 3329 iframe; 3330 3331 if (this._playing) { 3332 return; 3333 } 3334 3335 this._core.enter('playing'); 3336 this._core.trigger('play', null, 'video'); 3337 3338 item = this._core.items(this._core.relative(item.index())); 3339 3340 this._core.reset(item.index()); 3341 3342 html = $( '<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>' ); 3343 html.attr( 'height', height ); 3344 html.attr( 'width', width ); 3345 if (video.type === 'youtube') { 3346 html.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id ); 3347 } else if (video.type === 'vimeo') { 3348 html.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' ); 3349 } else if (video.type === 'vzaar') { 3350 html.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' ); 3351 } 3352 3353 iframe = $(html).wrap( '<div class="owl-video-frame" />' ).insertAfter(item.find('.owl-video')); 3354 3355 this._playing = item.addClass('owl-video-playing'); 3356 }; 3357 3358 /** 3359 * Checks whether an video is currently in full screen mode or not. 3360 * @todo Bad style because looks like a readonly method but changes members. 3361 * @protected 3362 * @returns {Boolean} 3363 */ 3364 Video.prototype.isInFullScreen = function() { 3365 var element = document.fullscreenElement || document.mozFullScreenElement || 3366 document.webkitFullscreenElement; 3367 3368 return element && $(element).parent().hasClass('owl-video-frame'); 3369 }; 3370 3371 /** 3372 * Destroys the plugin. 3373 */ 3374 Video.prototype.destroy = function() { 3375 var handler, property; 3376 3377 this._core.$element.off('click.owl.video'); 3378 3379 for (handler in this._handlers) { 3380 this._core.$element.off(handler, this._handlers[handler]); 3381 } 3382 for (property in Object.getOwnPropertyNames(this)) { 3383 typeof this[property] != 'function' && (this[property] = null); 3384 } 3385 }; 3386 3387 $.fn.owlCarousel.Constructor.Plugins.Video = Video; 3388 3389})(window.Zepto || window.jQuery, window, document); 3390 3391/** 3392 * Animate Plugin 3393 * @version 2.3.4 3394 * @author Bartosz Wojciechowski 3395 * @author David Deutsch 3396 * @license The MIT License (MIT) 3397 */ 3398;(function($, window, document, undefined) { 3399 3400 /** 3401 * Creates the animate plugin. 3402 * @class The Navigation Plugin 3403 * @param {Owl} scope - The Owl Carousel 3404 */ 3405 var Animate = function(scope) { 3406 this.core = scope; 3407 this.core.options = $.extend({}, Animate.Defaults, this.core.options); 3408 this.swapping = true; 3409 this.previous = undefined; 3410 this.next = undefined; 3411 3412 this.handlers = { 3413 'change.owl.carousel': $.proxy(function(e) { 3414 if (e.namespace && e.property.name == 'position') { 3415 this.previous = this.core.current(); 3416 this.next = e.property.value; 3417 } 3418 }, this), 3419 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) { 3420 if (e.namespace) { 3421 this.swapping = e.type == 'translated'; 3422 } 3423 }, this), 3424 'translate.owl.carousel': $.proxy(function(e) { 3425 if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) { 3426 this.swap(); 3427 } 3428 }, this) 3429 }; 3430 3431 this.core.$element.on(this.handlers); 3432 }; 3433 3434 /** 3435 * Default options. 3436 * @public 3437 */ 3438 Animate.Defaults = { 3439 animateOut: false, 3440 animateIn: false 3441 }; 3442 3443 /** 3444 * Toggles the animation classes whenever an translations starts. 3445 * @protected 3446 * @returns {Boolean|undefined} 3447 */ 3448 Animate.prototype.swap = function() { 3449 3450 if (this.core.settings.items !== 1) { 3451 return; 3452 } 3453 3454 if (!$.support.animation || !$.support.transition) { 3455 return; 3456 } 3457 3458 this.core.speed(0); 3459 3460 var left, 3461 clear = $.proxy(this.clear, this), 3462 previous = this.core.$stage.children().eq(this.previous), 3463 next = this.core.$stage.children().eq(this.next), 3464 incoming = this.core.settings.animateIn, 3465 outgoing = this.core.settings.animateOut; 3466 3467 if (this.core.current() === this.previous) { 3468 return; 3469 } 3470 3471 if (outgoing) { 3472 left = this.core.coordinates(this.previous) - this.core.coordinates(this.next); 3473 previous.one($.support.animation.end, clear) 3474 .css( { 'left': left + 'px' } ) 3475 .addClass('animated owl-animated-out') 3476 .addClass(outgoing); 3477 } 3478 3479 if (incoming) { 3480 next.one($.support.animation.end, clear) 3481 .addClass('animated owl-animated-in') 3482 .addClass(incoming); 3483 } 3484 }; 3485 3486 Animate.prototype.clear = function(e) { 3487 $(e.target).css( { 'left': '' } ) 3488 .removeClass('animated owl-animated-out owl-animated-in') 3489 .removeClass(this.core.settings.animateIn) 3490 .removeClass(this.core.settings.animateOut); 3491 this.core.onTransitionEnd(); 3492 }; 3493 3494 /** 3495 * Destroys the plugin. 3496 * @public 3497 */ 3498 Animate.prototype.destroy = function() { 3499 var handler, property; 3500 3501 for (handler in this.handlers) { 3502 this.core.$element.off(handler, this.handlers[handler]); 3503 } 3504 for (property in Object.getOwnPropertyNames(this)) { 3505 typeof this[property] != 'function' && (this[property] = null); 3506 } 3507 }; 3508 3509 $.fn.owlCarousel.Constructor.Plugins.Animate = Animate; 3510 3511})(window.Zepto || window.jQuery, window, document); 3512 3513/** 3514 * Autoplay Plugin 3515 * @version 2.3.4 3516 * @author Bartosz Wojciechowski 3517 * @author Artus Kolanowski 3518 * @author David Deutsch 3519 * @author Tom De Caluwé 3520 * @license The MIT License (MIT) 3521 */ 3522;(function($, window, document, undefined) { 3523 3524 /** 3525 * Creates the autoplay plugin. 3526 * @class The Autoplay Plugin 3527 * @param {Owl} scope - The Owl Carousel 3528 */ 3529 var Autoplay = function(carousel) { 3530 /** 3531 * Reference to the core. 3532 * @protected 3533 * @type {Owl} 3534 */ 3535 this._core = carousel; 3536 3537 /** 3538 * The autoplay timeout id. 3539 * @type {Number} 3540 */ 3541 this._call = null; 3542 3543 /** 3544 * Depending on the state of the plugin, this variable contains either 3545 * the start time of the timer or the current timer value if it's 3546 * paused. Since we start in a paused state we initialize the timer 3547 * value. 3548 * @type {Number} 3549 */ 3550 this._time = 0; 3551 3552 /** 3553 * Stores the timeout currently used. 3554 * @type {Number} 3555 */ 3556 this._timeout = 0; 3557 3558 /** 3559 * Indicates whenever the autoplay is paused. 3560 * @type {Boolean} 3561 */ 3562 this._paused = true; 3563 3564 /** 3565 * All event handlers. 3566 * @protected 3567 * @type {Object} 3568 */ 3569 this._handlers = { 3570 'changed.owl.carousel': $.proxy(function(e) { 3571 if (e.namespace && e.property.name === 'settings') { 3572 if (this._core.settings.autoplay) { 3573 this.play(); 3574 } else { 3575 this.stop(); 3576 } 3577 } else if (e.namespace && e.property.name === 'position' && this._paused) { 3578 // Reset the timer. This code is triggered when the position 3579 // of the carousel was changed through user interaction. 3580 this._time = 0; 3581 } 3582 }, this), 3583 'initialized.owl.carousel': $.proxy(function(e) { 3584 if (e.namespace && this._core.settings.autoplay) { 3585 this.play(); 3586 } 3587 }, this), 3588 'play.owl.autoplay': $.proxy(function(e, t, s) { 3589 if (e.namespace) { 3590 this.play(t, s); 3591 } 3592 }, this), 3593 'stop.owl.autoplay': $.proxy(function(e) { 3594 if (e.namespace) { 3595 this.stop(); 3596 } 3597 }, this), 3598 'mouseover.owl.autoplay': $.proxy(function() { 3599 if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { 3600 this.pause(); 3601 } 3602 }, this), 3603 'mouseleave.owl.autoplay': $.proxy(function() { 3604 if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { 3605 this.play(); 3606 } 3607 }, this), 3608 'touchstart.owl.core': $.proxy(function() { 3609 if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) { 3610 this.pause(); 3611 } 3612 }, this), 3613 'touchend.owl.core': $.proxy(function() { 3614 if (this._core.settings.autoplayHoverPause) { 3615 this.play(); 3616 } 3617 }, this) 3618 }; 3619 3620 // register event handlers 3621 this._core.$element.on(this._handlers); 3622 3623 // set default options 3624 this._core.options = $.extend({}, Autoplay.Defaults, this._core.options); 3625 }; 3626 3627 /** 3628 * Default options. 3629 * @public 3630 */ 3631 Autoplay.Defaults = { 3632 autoplay: false, 3633 autoplayTimeout: 5000, 3634 autoplayHoverPause: false, 3635 autoplaySpeed: false 3636 }; 3637 3638 /** 3639 * Transition to the next slide and set a timeout for the next transition. 3640 * @private 3641 * @param {Number} [speed] - The animation speed for the animations. 3642 */ 3643 Autoplay.prototype._next = function(speed) { 3644 this._call = window.setTimeout( 3645 $.proxy(this._next, this, speed), 3646 this._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read() 3647 ); 3648 3649 if (this._core.is('interacting') || document.hidden) { 3650 return; 3651 } 3652 this._core.next(speed || this._core.settings.autoplaySpeed); 3653 } 3654 3655 /** 3656 * Reads the current timer value when the timer is playing. 3657 * @public 3658 */ 3659 Autoplay.prototype.read = function() { 3660 return new Date().getTime() - this._time; 3661 }; 3662 3663 /** 3664 * Starts the autoplay. 3665 * @public 3666 * @param {Number} [timeout] - The interval before the next animation starts. 3667 * @param {Number} [speed] - The animation speed for the animations. 3668 */ 3669 Autoplay.prototype.play = function(timeout, speed) { 3670 var elapsed; 3671 3672 if (!this._core.is('rotating')) { 3673 this._core.enter('rotating'); 3674 } 3675 3676 timeout = timeout || this._core.settings.autoplayTimeout; 3677 3678 // Calculate the elapsed time since the last transition. If the carousel 3679 // wasn't playing this calculation will yield zero. 3680 elapsed = Math.min(this._time % (this._timeout || timeout), timeout); 3681 3682 if (this._paused) { 3683 // Start the clock. 3684 this._time = this.read(); 3685 this._paused = false; 3686 } else { 3687 // Clear the active timeout to allow replacement. 3688 window.clearTimeout(this._call); 3689 } 3690 3691 // Adjust the origin of the timer to match the new timeout value. 3692 this._time += this.read() % timeout - elapsed; 3693 3694 this._timeout = timeout; 3695 this._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed); 3696 }; 3697 3698 /** 3699 * Stops the autoplay. 3700 * @public 3701 */ 3702 Autoplay.prototype.stop = function() { 3703 if (this._core.is('rotating')) { 3704 // Reset the clock. 3705 this._time = 0; 3706 this._paused = true; 3707 3708 window.clearTimeout(this._call); 3709 this._core.leave('rotating'); 3710 } 3711 }; 3712 3713 /** 3714 * Pauses the autoplay. 3715 * @public 3716 */ 3717 Autoplay.prototype.pause = function() { 3718 if (this._core.is('rotating') && !this._paused) { 3719 // Pause the clock. 3720 this._time = this.read(); 3721 this._paused = true; 3722 3723 window.clearTimeout(this._call); 3724 } 3725 }; 3726 3727 /** 3728 * Destroys the plugin. 3729 */ 3730 Autoplay.prototype.destroy = function() { 3731 var handler, property; 3732 3733 this.stop(); 3734 3735 for (handler in this._handlers) { 3736 this._core.$element.off(handler, this._handlers[handler]); 3737 } 3738 for (property in Object.getOwnPropertyNames(this)) { 3739 typeof this[property] != 'function' && (this[property] = null); 3740 } 3741 }; 3742 3743 $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay; 3744 3745})(window.Zepto || window.jQuery, window, document); 3746 3747/** 3748 * Navigation Plugin 3749 * @version 2.3.4 3750 * @author Artus Kolanowski 3751 * @author David Deutsch 3752 * @license The MIT License (MIT) 3753 */ 3754;(function($, window, document, undefined) { 3755 'use strict'; 3756 3757 /** 3758 * Creates the navigation plugin. 3759 * @class The Navigation Plugin 3760 * @param {Owl} carousel - The Owl Carousel. 3761 */ 3762 var Navigation = function(carousel) { 3763 /** 3764 * Reference to the core. 3765 * @protected 3766 * @type {Owl} 3767 */ 3768 this._core = carousel; 3769 3770 /** 3771 * Indicates whether the plugin is initialized or not. 3772 * @protected 3773 * @type {Boolean} 3774 */ 3775 this._initialized = false; 3776 3777 /** 3778 * The current paging indexes. 3779 * @protected 3780 * @type {Array} 3781 */ 3782 this._pages = []; 3783 3784 /** 3785 * All DOM elements of the user interface. 3786 * @protected 3787 * @type {Object} 3788 */ 3789 this._controls = {}; 3790 3791 /** 3792 * Markup for an indicator. 3793 * @protected 3794 * @type {Array.<String>} 3795 */ 3796 this._templates = []; 3797 3798 /** 3799 * The carousel element. 3800 * @type {jQuery} 3801 */ 3802 this.$element = this._core.$element; 3803 3804 /** 3805 * Overridden methods of the carousel. 3806 * @protected 3807 * @type {Object} 3808 */ 3809 this._overrides = { 3810 next: this._core.next, 3811 prev: this._core.prev, 3812 to: this._core.to 3813 }; 3814 3815 /** 3816 * All event handlers. 3817 * @protected 3818 * @type {Object} 3819 */ 3820 this._handlers = { 3821 'prepared.owl.carousel': $.proxy(function(e) { 3822 if (e.namespace && this._core.settings.dotsData) { 3823 this._templates.push('<div class="' + this._core.settings.dotClass + '">' + 3824 $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '</div>'); 3825 } 3826 }, this), 3827 'added.owl.carousel': $.proxy(function(e) { 3828 if (e.namespace && this._core.settings.dotsData) { 3829 this._templates.splice(e.position, 0, this._templates.pop()); 3830 } 3831 }, this), 3832 'remove.owl.carousel': $.proxy(function(e) { 3833 if (e.namespace && this._core.settings.dotsData) { 3834 this._templates.splice(e.position, 1); 3835 } 3836 }, this), 3837 'changed.owl.carousel': $.proxy(function(e) { 3838 if (e.namespace && e.property.name == 'position') { 3839 this.draw(); 3840 } 3841 }, this), 3842 'initialized.owl.carousel': $.proxy(function(e) { 3843 if (e.namespace && !this._initialized) { 3844 this._core.trigger('initialize', null, 'navigation'); 3845 this.initialize(); 3846 this.update(); 3847 this.draw(); 3848 this._initialized = true; 3849 this._core.trigger('initialized', null, 'navigation'); 3850 } 3851 }, this), 3852 'refreshed.owl.carousel': $.proxy(function(e) { 3853 if (e.namespace && this._initialized) { 3854 this._core.trigger('refresh', null, 'navigation'); 3855 this.update(); 3856 this.draw(); 3857 this._core.trigger('refreshed', null, 'navigation'); 3858 } 3859 }, this) 3860 }; 3861 3862 // set default options 3863 this._core.options = $.extend({}, Navigation.Defaults, this._core.options); 3864 3865 // register event handlers 3866 this.$element.on(this._handlers); 3867 }; 3868 3869 /** 3870 * Default options. 3871 * @public 3872 * @todo Rename `slideBy` to `navBy` 3873 */ 3874 Navigation.Defaults = { 3875 nav: false, 3876 navText: [ 3877 '<span aria-label="' + 'Previous' + '">‹</span>', 3878 '<span aria-label="' + 'Next' + '">›</span>' 3879 ], 3880 navSpeed: false, 3881 navElement: 'button type="button" role="presentation"', 3882 navContainer: false, 3883 navContainerClass: 'owl-nav', 3884 navClass: [ 3885 'owl-prev', 3886 'owl-next' 3887 ], 3888 slideBy: 1, 3889 dotClass: 'owl-dot', 3890 dotsClass: 'owl-dots', 3891 dots: true, 3892 dotsEach: false, 3893 dotsData: false, 3894 dotsSpeed: false, 3895 dotsContainer: false 3896 }; 3897 3898 /** 3899 * Initializes the layout of the plugin and extends the carousel. 3900 * @protected 3901 */ 3902 Navigation.prototype.initialize = function() { 3903 var override, 3904 settings = this._core.settings; 3905 3906 // create DOM structure for relative navigation 3907 this._controls.$relative = (settings.navContainer ? $(settings.navContainer) 3908 : $('<div>').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled'); 3909 3910 this._controls.$previous = $('<' + settings.navElement + '>') 3911 .addClass(settings.navClass[0])
vendor: 4,756 bytes, lines 3912-4073
3912 .html(settings.navText[0]) 3913 .prependTo(this._controls.$relative) 3914 .on('click', $.proxy(function(e) { 3915 this.prev(settings.navSpeed); 3916 }, this)); 3917 this._controls.$next = $('<' + settings.navElement + '>') 3918 .addClass(settings.navClass[1]) 3919 .html(settings.navText[1]) 3920 .appendTo(this._controls.$relative) 3921 .on('click', $.proxy(function(e) { 3922 this.next(settings.navSpeed); 3923 }, this)); 3924 3925 // create DOM structure for absolute navigation 3926 if (!settings.dotsData) { 3927 this._templates = [ $('<button role="button">') 3928 .addClass(settings.dotClass) 3929 .append($('<span>')) 3930 .prop('outerHTML') ]; 3931 } 3932 3933 this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer) 3934 : $('<div>').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled'); 3935 3936 this._controls.$absolute.on('click', 'button', $.proxy(function(e) { 3937 var index = $(e.target).parent().is(this._controls.$absolute) 3938 ? $(e.target).index() : $(e.target).parent().index(); 3939 3940 e.preventDefault(); 3941 3942 this.to(index, settings.dotsSpeed); 3943 }, this)); 3944 3945 /*$el.on('focusin', function() { 3946 $(document).off(".carousel"); 3947 3948 $(document).on('keydown.carousel', function(e) { 3949 if(e.keyCode == 37) { 3950 $el.trigger('prev.owl') 3951 } 3952 if(e.keyCode == 39) { 3953 $el.trigger('next.owl') 3954 } 3955 }); 3956 });*/ 3957 3958 // override public methods of the carousel 3959 for (override in this._overrides) { 3960 this._core[override] = $.proxy(this[override], this); 3961 } 3962 }; 3963 3964 /** 3965 * Destroys the plugin. 3966 * @protected 3967 */ 3968 Navigation.prototype.destroy = function() { 3969 var handler, control, property, override, settings; 3970 settings = this._core.settings; 3971 3972 for (handler in this._handlers) { 3973 this.$element.off(handler, this._handlers[handler]); 3974 } 3975 for (control in this._controls) { 3976 if (control === '$relative' && settings.navContainer) { 3977 this._controls[control].html(''); 3978 } else { 3979 this._controls[control].remove(); 3980 } 3981 } 3982 for (override in this.overides) { 3983 this._core[override] = this._overrides[override]; 3984 } 3985 for (property in Object.getOwnPropertyNames(this)) { 3986 typeof this[property] != 'function' && (this[property] = null); 3987 } 3988 }; 3989 3990 /** 3991 * Updates the internal state. 3992 * @protected 3993 */ 3994 Navigation.prototype.update = function() { 3995 var i, j, k, 3996 lower = this._core.clones().length / 2, 3997 upper = lower + this._core.items().length, 3998 maximum = this._core.maximum(true), 3999 settings = this._core.settings, 4000 size = settings.center || settings.autoWidth || settings.dotsData 4001 ? 1 : settings.dotsEach || settings.items; 4002 4003 if (settings.slideBy !== 'page') { 4004 settings.slideBy = Math.min(settings.slideBy, settings.items); 4005 } 4006 4007 if (settings.dots || settings.slideBy == 'page') { 4008 this._pages = []; 4009 4010 for (i = lower, j = 0, k = 0; i < upper; i++) { 4011 if (j >= size || j === 0) { 4012 this._pages.push({ 4013 start: Math.min(maximum, i - lower), 4014 end: i - lower + size - 1 4015 }); 4016 if (Math.min(maximum, i - lower) === maximum) { 4017 break; 4018 } 4019 j = 0, ++k; 4020 } 4021 j += this._core.mergers(this._core.relative(i)); 4022 } 4023 } 4024 }; 4025 4026 /** 4027 * Draws the user interface. 4028 * @todo The option `dotsData` wont work. 4029 * @protected 4030 */ 4031 Navigation.prototype.draw = function() { 4032 var difference, 4033 settings = this._core.settings, 4034 disabled = this._core.items().length <= settings.items, 4035 index = this._core.relative(this._core.current()), 4036 loop = settings.loop || settings.rewind; 4037 4038 this._controls.$relative.toggleClass('disabled', !settings.nav || disabled); 4039 4040 if (settings.nav) { 4041 this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true)); 4042 this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true)); 4043 } 4044 4045 this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled); 4046 4047 if (settings.dots) { 4048 difference = this._pages.length - this._controls.$absolute.children().length; 4049 4050 if (settings.dotsData && difference !== 0) { 4051 this._controls.$absolute.html(this._templates.join('')); 4052 } else if (difference > 0) { 4053 this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0])); 4054 } else if (difference < 0) { 4055 this._controls.$absolute.children().slice(difference).remove(); 4056 } 4057 4058 this._controls.$absolute.find('.active').removeClass('active'); 4059 this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active'); 4060 } 4061 }; 4062 4063 /** 4064 * Extends event data. 4065 * @protected 4066 * @param {Event} event - The event object which gets thrown. 4067 */ 4068 Navigation.prototype.onTrigger = function(event) { 4069 var settings = this._core.settings; 4070 4071 event.page = { 4072 index: $.inArray(this.current(), this._pages), 4073 count: this._pages.length,
vendor: 7,284 bytes, lines 4074-4359
4074 size: settings && (settings.center || settings.autoWidth || settings.dotsData 4075 ? 1 : settings.dotsEach || settings.items) 4076 }; 4077 }; 4078 4079 /** 4080 * Gets the current page position of the carousel. 4081 * @protected 4082 * @returns {Number} 4083 */ 4084 Navigation.prototype.current = function() { 4085 var current = this._core.relative(this._core.current()); 4086 return $.grep(this._pages, $.proxy(function(page, index) { 4087 return page.start <= current && page.end >= current; 4088 }, this)).pop(); 4089 }; 4090 4091 /** 4092 * Gets the current succesor/predecessor position. 4093 * @protected 4094 * @returns {Number} 4095 */ 4096 Navigation.prototype.getPosition = function(successor) { 4097 var position, length, 4098 settings = this._core.settings; 4099 4100 if (settings.slideBy == 'page') { 4101 position = $.inArray(this.current(), this._pages); 4102 length = this._pages.length; 4103 successor ? ++position : --position; 4104 position = this._pages[((position % length) + length) % length].start; 4105 } else { 4106 position = this._core.relative(this._core.current()); 4107 length = this._core.items().length; 4108 successor ? position += settings.slideBy : position -= settings.slideBy; 4109 } 4110 4111 return position; 4112 }; 4113 4114 /** 4115 * Slides to the next item or page. 4116 * @public 4117 * @param {Number} [speed=false] - The time in milliseconds for the transition. 4118 */ 4119 Navigation.prototype.next = function(speed) { 4120 $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed); 4121 }; 4122 4123 /** 4124 * Slides to the previous item or page. 4125 * @public 4126 * @param {Number} [speed=false] - The time in milliseconds for the transition. 4127 */ 4128 Navigation.prototype.prev = function(speed) { 4129 $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed); 4130 }; 4131 4132 /** 4133 * Slides to the specified item or page. 4134 * @public 4135 * @param {Number} position - The position of the item or page. 4136 * @param {Number} [speed] - The time in milliseconds for the transition. 4137 * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not. 4138 */ 4139 Navigation.prototype.to = function(position, speed, standard) { 4140 var length; 4141 4142 if (!standard && this._pages.length) { 4143 length = this._pages.length; 4144 $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed); 4145 } else { 4146 $.proxy(this._overrides.to, this._core)(position, speed); 4147 } 4148 }; 4149 4150 $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation; 4151 4152})(window.Zepto || window.jQuery, window, document); 4153 4154/** 4155 * Hash Plugin 4156 * @version 2.3.4 4157 * @author Artus Kolanowski 4158 * @author David Deutsch 4159 * @license The MIT License (MIT) 4160 */ 4161;(function($, window, document, undefined) { 4162 'use strict'; 4163 4164 /** 4165 * Creates the hash plugin. 4166 * @class The Hash Plugin 4167 * @param {Owl} carousel - The Owl Carousel 4168 */ 4169 var Hash = function(carousel) { 4170 /** 4171 * Reference to the core. 4172 * @protected 4173 * @type {Owl} 4174 */ 4175 this._core = carousel; 4176 4177 /** 4178 * Hash index for the items. 4179 * @protected 4180 * @type {Object} 4181 */ 4182 this._hashes = {}; 4183 4184 /** 4185 * The carousel element. 4186 * @type {jQuery} 4187 */ 4188 this.$element = this._core.$element; 4189 4190 /** 4191 * All event handlers. 4192 * @protected 4193 * @type {Object} 4194 */ 4195 this._handlers = { 4196 'initialized.owl.carousel': $.proxy(function(e) { 4197 if (e.namespace && this._core.settings.startPosition === 'URLHash') { 4198 $(window).trigger('hashchange.owl.navigation'); 4199 } 4200 }, this), 4201 'prepared.owl.carousel': $.proxy(function(e) { 4202 if (e.namespace) { 4203 var hash = $(e.content).find('[data-hash]').addBack('[data-hash]').attr('data-hash'); 4204 4205 if (!hash) { 4206 return; 4207 } 4208 4209 this._hashes[hash] = e.content; 4210 } 4211 }, this), 4212 'changed.owl.carousel': $.proxy(function(e) { 4213 if (e.namespace && e.property.name === 'position') { 4214 var current = this._core.items(this._core.relative(this._core.current())), 4215 hash = $.map(this._hashes, function(item, hash) { 4216 return item === current ? hash : null; 4217 }).join(); 4218 4219 if (!hash || window.location.hash.slice(1) === hash) { 4220 return; 4221 } 4222 4223 window.location.hash = hash; 4224 } 4225 }, this) 4226 }; 4227 4228 // set default options 4229 this._core.options = $.extend({}, Hash.Defaults, this._core.options); 4230 4231 // register the event handlers 4232 this.$element.on(this._handlers); 4233 4234 // register event listener for hash navigation 4235 $(window).on('hashchange.owl.navigation', $.proxy(function(e) { 4236 var hash = window.location.hash.substring(1), 4237 items = this._core.$stage.children(), 4238 position = this._hashes[hash] && items.index(this._hashes[hash]); 4239 4240 if (position === undefined || position === this._core.current()) { 4241 return; 4242 } 4243 4244 this._core.to(this._core.relative(position), false, true); 4245 }, this)); 4246 }; 4247 4248 /** 4249 * Default options. 4250 * @public 4251 */ 4252 Hash.Defaults = { 4253 URLhashListener: false 4254 }; 4255 4256 /** 4257 * Destroys the plugin. 4258 * @public 4259 */ 4260 Hash.prototype.destroy = function() { 4261 var handler, property; 4262 4263 $(window).off('hashchange.owl.navigation'); 4264 4265 for (handler in this._handlers) { 4266 this._core.$element.off(handler, this._handlers[handler]); 4267 } 4268 for (property in Object.getOwnPropertyNames(this)) { 4269 typeof this[property] != 'function' && (this[property] = null); 4270 } 4271 }; 4272 4273 $.fn.owlCarousel.Constructor.Plugins.Hash = Hash; 4274 4275})(window.Zepto || window.jQuery, window, document); 4276 4277/** 4278 * Support Plugin 4279 * 4280 * @version 2.3.4 4281 * @author Vivid Planet Software GmbH 4282 * @author Artus Kolanowski 4283 * @author David Deutsch 4284 * @license The MIT License (MIT) 4285 */ 4286;(function($, window, document, undefined) { 4287 4288 var style = $('<support>').get(0).style, 4289 prefixes = 'Webkit Moz O ms'.split(' '), 4290 events = { 4291 transition: { 4292 end: { 4293 WebkitTransition: 'webkitTransitionEnd', 4294 MozTransition: 'transitionend', 4295 OTransition: 'oTransitionEnd', 4296 transition: 'transitionend' 4297 } 4298 }, 4299 animation: { 4300 end: { 4301 WebkitAnimation: 'webkitAnimationEnd', 4302 MozAnimation: 'animationend', 4303 OAnimation: 'oAnimationEnd', 4304 animation: 'animationend' 4305 } 4306 } 4307 }, 4308 tests = { 4309 csstransforms: function() { 4310 return !!test('transform'); 4311 }, 4312 csstransforms3d: function() { 4313 return !!test('perspective'); 4314 }, 4315 csstransitions: function() { 4316 return !!test('transition'); 4317 }, 4318 cssanimations: function() { 4319 return !!test('animation'); 4320 } 4321 }; 4322 4323 function test(property, prefixed) { 4324 var result = false, 4325 upper = property.charAt(0).toUpperCase() + property.slice(1); 4326 4327 $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) { 4328 if (style[property] !== undefined) { 4329 result = prefixed ? property : true; 4330 return false; 4331 } 4332 }); 4333 4334 return result; 4335 } 4336 4337 function prefixed(property) { 4338 return test(property, true); 4339 } 4340 4341 if (tests.csstransitions()) { 4342 /* jshint -W053 */ 4343 $.support.transition = new String(prefixed('transition')) 4344 $.support.transition.end = events.transition.end[ $.support.transition ]; 4345 } 4346 4347 if (tests.cssanimations()) { 4348 /* jshint -W053 */ 4349 $.support.animation = new String(prefixed('animation')) 4350 $.support.animation.end = events.animation.end[ $.support.animation ]; 4351 } 4352 4353 if (tests.csstransforms()) { 4354 /* jshint -W053 */ 4355 $.support.transform = new String(prefixed('transform')); 4356 $.support.transform3d = tests.csstransforms3d(); 4357 } 4358 4359})(window.Zepto || window.jQuery, window, document);
4360 4361$('select.custom').each(function () { 4362 4363 // Cache the number of options 4364 var $this = $(this), 4365 numberOfOptions = $(this).children('option').length; 4366 4367 // Hides the select element 4368 $this.addClass('s-hidden'); 4369 4370 // Wrap the select element in a div 4371 $this.wrap('<div class="select-custom"></div>'); 4372 4373 // Insert a styled div to sit over the top of the hidden select element 4374 $this.after('<div class="styledSelect"></div>'); 4375 4376 // Cache the styled div 4377 var $styledSelect = $this.next('div.styledSelect'); 4378 4379 // Show the first select option in the styled div 4380 if ($(this).find('option:selected')) { 4381 $styledSelect.text($(this).find('option:selected').text()); 4382 } else { 4383 $styledSelect.text($this.children('option').eq(0).text()); 4384 } 4385 4386 // Insert an unordered list after the styled div and also cache the list 4387 var $list = $('<ul />', { 4388 'class': 'options' 4389 }).insertAfter($styledSelect); 4390 4391 // Insert a list item into the unordered list for each select option 4392 for (var i = 0; i < numberOfOptions; i++) { 4393 $('<li />', { 4394 text: $this.children('option').eq(i).text(), 4395 rel: $this.children('option').eq(i).val() 4396 }).appendTo($list); 4397 } 4398 4399 if ($(this).find('option:selected')) { 4400 var selectedItemIndex = $(this).find('option:selected').index(); 4401 /*$list.find('li').eq(selectedItemIndex).remove();*/ 4402 } 4403 4404 // Cache the list items 4405 var $listItems = $list.children('li'); 4406 4407 // Show the unordered list when the styled div is clicked (also hides it if the div is clicked again) 4408 $styledSelect.click(function (e) { 4409 e.stopPropagation(); 4410 $('div.styledSelect.active').each(function () { 4411 $(this).removeClass('active').next('ul.options').hide(); 4412 }); 4413 $(this).toggleClass('active').next('ul.options').toggle(); 4414 }); 4415 4416 // Hides the unordered list when a list item is clicked and updates the styled div to show the selected list item 4417 // Updates the select element to have the value of the equivalent option 4418 $listItems.click(function (e) { 4419 /*e.stopPropagation();*/ 4420 $styledSelect.text($(this).text()).removeClass('active'); 4421 $this.val($(this).attr('rel')); 4422 $list.hide(); 4423 /* alert($this.val()); Uncomment this for demonstration! */ 4424 }); 4425 4426 // Hides the unordered list when clicking outside of it 4427 $(document).click(function () { 4428 $styledSelect.removeClass('active'); 4429 $list.hide(); 4430 }); 4431 4432}); 4433(function ($, window, document) { 4434 4435 $(function () { 4436 /*$('.mobile-search-btn').click(function () { 4437 $('.head-search').fadeToggle(); 4438 });*/ 4439 4440 /*$('#navbarMain').on('hide.bs.dropdown', function (e) { 4441 if (e.clickEvent) { 4442 e.preventDefault(); 4443 } 4444 });*/ 4445 4446 $(document).on("click", function (event) { 4447 if (event.target === $(".dropdown-menu")) { 4448 event.stopPropagation(); 4449 event.preventDefault(); 4450 } 4451 }); 4452 4453 if ($('#content.ordering-process').length && $('.gift-choose-box').length && $(window).width() <= 768) { 4454 $('.gift-choose-list').addClass('owl-carousel'); 4455 $('.gift-choose-list').owlCarousel({ 4456 margin: 10, 4457 loop: true, 4458 autoWidth: false, 4459 dots: false, 4460 nav: true, 4461 autoplay: false, 4462 items: 1.2 4463 }); 4464 } 4465 if ($('#content.ordering-process').length && $('header .head-action-message').length) { 4466 if ($(window).width() <= 768) { 4467 $('body').addClass('mobile-ordering-process'); 4468 } 4469 } 4470 4471 $('header .head-search-btn').click(function () { 4472 $('header .head-search').toggleClass('open'); 4473 }); 4474 4475 $('header .head-search .search-close').click(function () { 4476 $('header .head-search').toggleClass('open'); 4477 }); 4478 4479 var variantsFunction = function () { 4480 if ($('.product-variants').length && $(window).width() < 767) { 4481 $('.product-variants').addClass('owl-carousel'); 4482 setTimeout(function () { 4483 $('.product-variants').owlCarousel({ 4484 margin: 10, 4485 loop: false, 4486 autoWidth: true, 4487 dots: false, 4488 nav: true, 4489 items: 4, 4490 4491 responsive: { 4492 0: { 4493 items: 3, 4494 }, 4495 480: { 4496 items: 4, 4497 }, 4498 } 4499 }); 4500 }, 300); 4501 } else { 4502 $('.product-variants').owlCarousel('destroy'); 4503 } 4504 }; 4505 4506 variantsFunction(); 4507 4508 $(window).resize(function () { 4509 variantsFunction(); 4510 }); 4511 4512 if ($(window).width() <= 992) { 4513 if ($('header .navigation').length) { 4514 if ($('header .navigation .mobile-classic-nav').length) { 4515 $('header .navigation .dropdown.eshop .dropdown-menu .mobile-classic-nav > a').insertBefore($('header .navigation .dropdown.eshop .dropdown-menu .mobile-classic-nav')); 4516 $('header .navigation .dropdown.eshop .dropdown-menu a.salons').insertBefore($('header .navigation .dropdown.eshop .dropdown-menu .mobile-classic-nav')); 4517 $('header .navigation .dropdown.normal .dropdown-menu .dropdown-section').insertBefore($('header .navigation .dropdown.eshop .dropdown-menu .mobile-classic-nav')); 4518 $('header .navigation .dropdown.eshop').addClass('in-eshop'); 4519 4520 } else { 4521 $('header .navigation .dropdown.eshop .dropdown-menu .container').append($('header .navigation .dropdown.eshop').nextAll()); 4522 $('header .navigation .dropdown.eshop .dropdown-menu .container').append($('.dropdown.eshop li.salons .dropdown-menu .dropdown-section')); 4523 } 4524 } 4525 4526 var windowWidth = $(window).width(); 4527 4528 $(window).resize(function () { 4529 var windowWidthNew = $(window).width(); 4530 4531 if (windowWidthNew > windowWidth + 10) { 4532 this.location.reload(false); 4533 } else if (windowWidthNew < windowWidth - 10) { 4534 this.location.reload(false); 4535 } 4536 }); 4537 4538 } 4539 4540 if ($('.persons-toggle-wrap').length) { 4541 $('.persons-toggle-wrap').each(function () { 4542 var $thisTitle = $(this).find('.person-toggle-title'); 4543 var $thisContent = $(this).find('.person-toggle-content'); 4544 4545 if ($(this).find('.person-toggle-title.active + .person-toggle-content').length) { 4546 $(this).find('.person-toggle-title.active + .person-toggle-content').slideDown(); 4547 } 4548 4549 $thisTitle.click(function () { 4550 $(this).toggleClass('active'); 4551 $thisContent.slideToggle(); 4552 }); 4553 }); 4554 } 4555 4556 /*if ($(window).width() <= 992) { 4557 $('#navbarMain').on('hide.bs.collapse', function () { 4558 $('header .head-action-bar ul li .head-search').hide(); 4559 }); 4560 $('#navbarMain').on('show.bs.collapse', function () { 4561 $('header .head-action-bar ul li .head-search').show(); 4562 }); 4563 }*/ 4564 4565 /* $('header .navbar-nav li.dropdown').each(function () { 4566 $(this).hover(function (e) { 4567 $(this).find('.dropdown-menu').addClass('open'); 4568 }); 4569 4570 $(this).mouseout(function (e) { 4571 $(this).find('.dropdown-menu').removeClass('open'); 4572 }); 4573 }); 4574 4575 4576 4577 $('header .navbar-nav .dropdown-close').click(function (e) { 4578 e.preventDefault(); 4579 e.stopImmediatePropagation(); 4580 $(this).parents('.dropdown-menu').removeClass('open'); 4581 });*/ 4582 4583 4584 // Eshop 4585 4586 $('.product-top-right .product-manufacturer-line').click(function () { 4587 $('a[id="recenze-tab"]').click(); 4588 4589 $('html, body').animate({ 4590 scrollTop: $('.product-tabs-part').offset().top - 100 4591 }, 500); 4592 4593 $('#recenze .rating-button .button').click(); 4594 }); 4595 4596 4597 $('.added-to-cart-popup .popup-right-side .popup-close').click(function () { 4598 $('.added-to-cart-popup').fadeOut(); 4599 }); 4600 4601 $('.added-to-cart-popup .button.eshop-back').click(function (e) { 4602 e.preventDefault(); 4603 $('.added-to-cart-popup').fadeOut(); 4604 }); 4605 4606 $('header .head-action-bar .head-cart').click(function () { 4607 $('.added-to-cart-popup').fadeToggle(); 4608 }); 4609 4610 $('.added-to-cart-popup').click(function(e){ 4611 if ($('.added-to-cart-popup').length) { 4612 if ($(e.target).closest('.cart-popup-inner').length === 0) { 4613 $('.added-to-cart-popup').fadeOut(); 4614 } 4615 } 4616 }); 4617 4618 $('#category-filter .filter-section').each(function () { 4619 if (!$(this).hasClass('toggle-disabled')) { 4620 var $title = $(this).find('.section-title'); 4621 var $section = $(this).find('.section-content'); 4622 4623 if (!$(this).hasClass('categories')) { 4624 if (!$(this).hasClass('open')) {
4625 if ($section.find('input:checked').length) { 4626 $section.slideDown(); 4627 $title.addClass('open'); 4628 } else { 4629 $section.slideUp(); 4630 $title.addClass('remove'); 4631 } 4632 } 4633 } 4634 4635 $title.click(function () { 4636 $section.slideToggle(); 4637 $title.toggleClass('open'); 4638 }); 4639 } 4640 }); 4641 4642 $('.filters-btn').click(function () { 4643 $('#category-filter').toggleClass('show'); 4644 }); 4645 4646 $('.sm-filters-toggle-btn').click(function () { 4647 $('#category-filter').toggleClass('show'); 4648 4649 $('#category-filter .close').click(function (e) { 4650 e.preventDefault(); 4651 e.stopImmediatePropagation(); 4652 $('#category-filter').removeClass('show'); 4653 $("nav .navbar-collapse").collapse('hide'); 4654 $('header').removeClass('mobile-menu-show'); 4655 4656 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop').removeClass('show'); 4657 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop .dropdown-menu').removeClass('show'); 4658 }); 4659 }); 4660 4661 $("form#category-filter").submit(function (e) { 4662 e.preventDefault(); 4663 4664 var form = $(this); 4665 var url = form.attr('action'); 4666 4667 $.ajax({ 4668 type: "POST", 4669 url: url, 4670 data: form.serialize(), 4671 success: function (data) { 4672 $('#category-filter').removeClass('show'); 4673 } 4674 }); 4675 4676 4677 }); 4678 // 4679 4680 $(window).scroll(function () { 4681 var sctollTop = $(window).scrollTop(); 4682 4683 if (sctollTop > 60) { 4684 $('body').addClass('nav-scroll'); 4685 } else { 4686 $('body').removeClass('nav-scroll'); 4687 } 4688 }); 4689 4690 $('input[type="file"]').each(function () { 4691 // Refs 4692 var $file = $(this), 4693 $label = $file.next('label'), 4694 $labelText = $label.find('span'), 4695 labelDefault = $labelText.text(); 4696 4697 // When a new file is selected 4698 $file.on('change', function (event) { 4699 var fileName = $file.val().split('\\').pop(), 4700 tmppath = URL.createObjectURL(event.target.files[0]); 4701 //Check successfully selection 4702 if (fileName) { 4703 $label 4704 .addClass('file-ok'); 4705 $labelText.text(fileName); 4706 } else { 4707 $label.removeClass('file-ok'); 4708 $labelText.text(labelDefault); 4709 } 4710 }); 4711 }); 4712 4713 $(function () { 4714 var show = 'show'; 4715 4716 $('form input, form textarea').on('checkval', function () { 4717 var label = $(this).next('label'); 4718 if (this.value !== '') { 4719 label.addClass(show); 4720 } else { 4721 label.removeClass(show); 4722 } 4723 }).on('keyup', function () { 4724 $(this).trigger('checkval'); 4725 }); 4726 }); 4727 4728 if ($('.top-products-tabs .products-list.owl-carousel').length) { 4729 setTimeout(function () { 4730 $('.top-products-tabs .products-list.owl-carousel').owlCarousel({ 4731 margin: 10, 4732 loop: true, 4733 autoWidth: false, 4734 dots: false, 4735 nav: true, 4736 autoplay: true, 4737 items: 3.6, 4738 4739 responsive: { 4740 0: { 4741 items: 1.3, 4742 margin: 15 4743 }, 4744 480: { 4745 items: 1.5, 4746 }, 4747 768: { 4748 items: 1.75, 4749 }, 4750 992: { 4751 items: 2.5, 4752 }, 4753 1200: { 4754 items: 3.5, 4755 }, 4756 } 4757 }); 4758 }, 200); 4759 } 4760 /*$('.filter-section .dropdown-tags .tag-item.toggle').each(function () { 4761 var $thisTag = $(this);
4762 if ($(this).find('input:checked').length) { 4763 $(this).addClass('active'); 4764 } 4765 4766 $(this).find('.tag-title').click(function () { 4767 $thisTag.toggleClass('active'); 4768 }); 4769 }); 4770*/ 4771 $('.cart-form-title.toggle').click(function () { 4772 $(this).toggleClass('open'); 4773 $(this).next('.toggle-form-content').slideToggle(); 4774 }); 4775 4776 $('.user-account-head .nav-part .mobile-toggle').click(function () { 4777 $('.user-account-head .nav-part .user-nav').slideToggle(); 4778 }); 4779 4780 if ($('.another-products-box .products-list.owl-carousel').length) { 4781 setTimeout(function () { 4782 $('.another-products-box .products-list.owl-carousel').owlCarousel({ 4783 margin: 10, 4784 loop: true, 4785 autoWidth: false, 4786 dots: false, 4787 nav: true, 4788 autoplay: true, 4789 items: 5, 4790 4791 responsive: { 4792 0: { 4793 items: 1.5, 4794 }, 4795 400: { 4796 items: 2, 4797 }, 4798 768: { 4799 items: 3, 4800 }, 4801 992: { 4802 items: 4, 4803 }, 4804 1300: { 4805 items: 5, 4806 }, 4807 } 4808 }); 4809 }, 200); 4810 } 4811 4812 if ($('.detail-catalogue.owl-carousel').length) { 4813 setTimeout(function () { 4814 $('.detail-catalogue.owl-carousel').owlCarousel({ 4815 margin: 0, 4816 loop: false, 4817 autoWidth: false, 4818 dots: false, 4819 nav: true, 4820 autoplay: false, 4821 items: 1, 4822 }); 4823 }, 200); 4824 } 4825 4826 $('.address-roll-button').click(function () { 4827 $(this).toggleClass('active'); 4828 }); 4829 4830 if ($(window).height() < 800 && $(window).width() >= 768) { 4831 if ($('.eshop .sidebar').length) { 4832 $('.eshop .sidebar').css('position', 'relative'); 4833 $('.eshop .sidebar').css('top', '0'); 4834 } 4835 } 4836 4837 var mobileNav = function () { 4838 if ($(window).width() < 992) { 4839 if ($('nav').hasClass('eshop-nav')) { 4840 var openMenu = function () { 4841 setTimeout(function () { 4842 $('header').addClass('mobile-menu-show'); 4843 $('header').addClass('eshop'); 4844 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop').addClass('show'); 4845 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop .dropdown-menu').addClass('show'); 4846 $("nav .navbar-collapse").collapse('show'); 4847 }, 2); 4848 }; 4849 4850 var closeMenu = function () { 4851 $("nav .navbar-collapse").collapse('hide'); 4852 $('header').removeClass('mobile-menu-show'); 4853 4854 setTimeout(function () { 4855 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop').removeClass('show'); 4856 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop .dropdown-menu').removeClass('show'); 4857 }, 2); 4858 }; 4859 4860 $('#category-filter .mobile-buttons button').click(function () { 4861 setTimeout(function () { 4862 closeMenu(); 4863 }, 2); 4864 }); 4865 4866 $('.navbar-light .navbar-toggler').click(function () { 4867 openMenu(); 4868 }); 4869 4870 $('.dropdown.eshop .nav-link.dropdown-toggle').click(function (e) { 4871 closeMenu(); 4872 }); 4873 4874 $('.dropdown.eshop .nav-link').click(function (e) { 4875 closeMenu(); 4876 }); 4877 4878 $('#category-filter .mobile-buttons .close').click(function () { 4879 $('#category-filter').removeClass('show'); 4880 setTimeout(function () { 4881 openMenu(); 4882 }, 2); 4883 }); 4884 4885 4886 } else { 4887 $('#category-filter .mobile-buttons .button.apply').click(function () { 4888 setTimeout(function () { 4889 $('.navbar-light .navbar-toggler').click(); 4890 }, 10); 4891 }); 4892 4893 $('.navbar-light .navbar-toggler').click(function () { 4894 if ($(this).attr('aria-expanded') === 'true') { 4895 $('header').removeClass('mobile-menu-show'); 4896 } else { 4897 $('header').addClass('mobile-menu-show'); 4898 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.eshop').addClass(); 4899 } 4900 4901 /*setTimeout(function () { 4902 if ($('.navbar-light').hasClass('eshop-nav')) { 4903 $('nav.navbar-expand-lg .navbar-nav .dropdown.eshop .dropdown-toggle').click(); 4904 } 4905 }, 3);*/ 4906 4907 $('header nav.navbar-expand-lg .navbar-nav li.dropdown.show .filters-btn + .nav-link.dropdown-toggle').click(function (e) { 4908 if ($('.navbar-light .navbar-toggler').attr('aria-expanded') === 'true') { 4909 4910 } else { 4911 $("nav .navbar-collapse").collapse('hide'); 4912 $('header').removeClass('mobile-menu-show'); 4913 } 4914 }); 4915 }); 4916 4917 } 4918 4919 $('header .navigation.classic-nav nav.navbar.navbar-light .nav-link.mobile-redirect').click(function (e) { 4920 e.preventDefault(); 4921 e.stopImmediatePropagation(); 4922 window.location.href = $(this).attr('href'); 4923 }); 4924 4925 } else { 4926 $('.dropdown').each(function () { 4927 var $thisItem = $(this); 4928 4929 $thisItem.hover(function () { 4930 $thisItem.addClass('show'); 4931 $thisItem.find('> .dropdown-menu').addClass('show'); 4932 $thisItem.find('> .dropdown-toggle').attr('aria-expanded', 'true'); 4933 }); 4934 4935 $thisItem.mouseleave(function () { 4936 $thisItem.removeClass('show'); 4937 $thisItem.find('> .dropdown-menu').removeClass('show'); 4938 $thisItem.find('> .dropdown-toggle').attr('aria-expanded', 'false'); 4939 }); 4940 4941 $thisItem.find('> .nav-link').click(function (e) { 4942 e.preventDefault(); 4943 e.stopImmediatePropagation(); 4944 window.location.href = $(this).attr('href'); 4945 }); 4946 4947 $thisItem.find('.dd-close').click(function () { 4948 $thisItem.removeClass('show'); 4949 $thisItem.find('> .dropdown-menu').removeClass('show'); 4950 $thisItem.find('> .dropdown-toggle').attr('aria-expanded', 'false'); 4951 }); 4952 }); 4953 4954 4955 } 4956 }; 4957 4958 mobileNav(); 4959 4960 4961/* GALERIE - verze 2021 */ 4962 if ($('.product-top-left .product-thumbs').length) { 4963 setTimeout(function () { 4964 $('.product-top-left .product-thumbs').owlCarousel({ 4965 margin: 25, 4966 loop: false, 4967 autoWidth: false, 4968 dots: false, 4969 nav: true, 4970 autoplay: false, 4971 items: 4, 4972 4973 responsive: { 4974 0: { 4975 items: 4, 4976 }, 4977 480: { 4978 items: 4, 4979 }, 4980 } 4981 }); 4982 }, 200); 4983 } 4984 4985/* GALERIE - verze 2022 */ 4986/* $(window).resize(function () { 4987 mobileNav(); 4988 }); 4989 4990 var productsThumbs = function () { 4991 if ($('.product-top-left .product-thumbs').length) { 4992 if ($(window).width() >= 767) { 4993 if (!$('.product-top-left .product-thumbs').hasClass('desktop')) { 4994 $('.product-top-left .product-thumbs').owlCarousel('destroy'); 4995 $('.product-top-left .product-thumbs').addClass('desktop'); 4996 $('.product-top-left .product-thumbs').removeClass('mobile'); 4997 setTimeout(function () { 4998 if ($('.product-top-left .product-thumbs .first-img').length) { 4999 $('.product-top-left .main-photo').append($('.product-top-left .first-img')); 5000 } 5001 5002 $('.product-top-left .product-thumbs').owlCarousel({ 5003 margin: 25, 5004 loop: false, 5005 autoWidth: false, 5006 dots: false, 5007 nav: true, 5008 autoplay: false, 5009 items: 3, 5010 5011 responsive: { 5012 0: { 5013 items: 2, 5014 }, 5015 480: { 5016 items: 3, 5017 }, 5018 } 5019 }); 5020 5021 $('.product-top-left .product-thumbs .owl-prev').click(function (e) { 5022 $('.product-top-left .product-thumbs').trigger('to.owl.carousel', [0, 500, true]); 5023 }); 5024 }, 200); 5025 } 5026 } else { 5027 if (!$('.product-top-left .product-thumbs').hasClass('mobile')) { 5028 $('.product-top-left .product-thumbs').owlCarousel('destroy'); 5029 $('.product-top-left .product-thumbs').prepend($('.product-top-left .first-img')); 5030 $('.product-top-left .product-thumbs').addClass('mobile'); 5031 $('.product-top-left .product-thumbs').removeClass('desktop'); 5032 5033 setTimeout(function () { 5034 $('.product-top-left .product-thumbs').owlCarousel({ 5035 margin: 25, 5036 loop: false, 5037 autoWidth: false, 5038 dots: false, 5039 nav: true, 5040 autoplay: false, 5041 items: 1, 5042 }); 5043 5044 }, 200); 5045 } 5046 } 5047 } 5048 }; 5049 5050 productsThumbs(); 5051 5052 $(window).resize(function () { 5053 productsThumbs(); 5054 });*/ 5055 5056 5057 /*var quantityChange = function () { 5058 $('.quantity .plus').click(function () { 5059 var $input = $(this).parent().find('input'); 5060 $input.val(+$input.val() + 1); 5061 }); 5062 $('.quantity .minus').click(function () { 5063 var $input = $(this).parent().find('input'); 5064 5065 if ($input.val() > 1) { 5066 $input.val($input.val() - 1); 5067 } 5068 }); 5069 }; 5070 5071 quantityChange();*/ 5072 5073 if ($(window).width() >= 768) { 5074 $('.gift-choose-box .gift-choose-title').click(function () { 5075 $('.gift-choose-box .gift-choose-title .arrow').toggleClass('rotate'); 5076 $('.gift-choose-box .gift-choose-list').slideToggle(); 5077 }); 5078 } else { 5079 $('.gift-choose-box .gift-choose-title .arrow-mobile').click(function () { 5080 $('.gift-choose-box .owl-nav .owl-next').click(); 5081 }); 5082 } 5083 5084 if ($('#recenze .new-rating-btn').length) { 5085 $('#recenze .new-rating-btn').click(function (e) { 5086 e.preventDefault(); 5087 $('#recenze .new-rating-form').slideToggle(); 5088 }); 5089 5090 if ($('#recenze .ratings-list .rating-item').length > 3) { 5091 $('#recenze .ratings-list').addClass('short'); 5092 $('#recenze .ratings-list .load-more').show(); 5093 5094 $('#recenze .ratings-list .load-more').click(function (ev) { 5095 ev.preventDefault(); 5096 $('#recenze .ratings-list').removeClass('short'); 5097 $(this).remove(); 5098 }); 5099 } 5100 } 5101 5102 $(".rating-stars label").click(function () { 5103 $(this).parent().find("label").css({ 5104 "background": "url(/images/star.svg) no-repeat center top 4px", 5105 "background-size": "20px" 5106 }); 5107 $(this).css({ 5108 "background": "url(/images/star-full.svg) no-repeat center top 4px", 5109 "background-size": "20px" 5110 }); 5111 $(this).nextAll().css({ 5112 "background": "url(/images/star-full.svg) no-repeat center top 4px", 5113 "background-size": "20px" 5114 }); 5115 }); 5116 5117 if ($('.brands.slider').length) { 5118 setTimeout(function () { 5119 $('.brands.slider').owlCarousel({ 5120 margin: 10, 5121 loop: true, 5122 autoWidth: true, 5123 dots: false, 5124 nav: true, 5125 items: 4, 5126 5127 responsive: { 5128 0: { 5129 items: 1, 5130 }, 5131 480: { 5132 items: 2, 5133 }, 5134 768: { 5135 items: 3, 5136 } 5137 } 5138 }); 5139 }, 800); 5140 } 5141 5142 if ($('.search-wh-partners .search-partners-box').length) { 5143 setTimeout(function () { 5144 $('.search-wh-partners .search-partners-box').owlCarousel({ 5145 margin: 10, 5146 loop: true, 5147 autoWidth: false, 5148 dots: false, 5149 nav: true, 5150 items: 6, 5151 5152 responsive: { 5153 0: { 5154 items: 1, 5155 }, 5156 480: { 5157 items: 2, 5158 }, 5159 768: { 5160 items: 3, 5161 }, 5162 1200: { 5163 items: 4, 5164 }, 5165 1500: { 5166 items: 5, 5167 } 5168 } 5169 }); 5170 }, 700); 5171 } 5172 5173 /*if ($('#map-canvas').length) { 5174 var salonsMap = function () { 5175 var locations = [ 5176 ['<h3 class="mb-1">Salon 1</h3><br>Palackého 238<br>Pà â¢ÃÂbram<br>Telefon: 123 456 789', 49.694190, 13.993245, '../../images/marker-gold.svg'], 5177 ['<h3 class="mb-1">Salon 2</h3><br>U trati 9<br>Pardubice<br>Telefon: 123 456 789', 50.055597, 15.776071, '../../images/marker-silver.svg'], 5178 ['<h3 class="mb-1">Salon 3</h3><br>NámÃâºstàrepubliky 16<br>Tià ¡nov<br>Telefon: 123 456 789', 49.855597, 16.776071, '../../images/marker-bronze.svg'], 5179 ]; 5180 5181 var map = new google.maps.Map(document.getElementById('map-canvas'), { 5182 zoom: 7, 5183 center: new google.maps.LatLng(49.875232, 15.035319), 5184 styles: [{ 5185 stylers: [{ 5186 saturation: -100 5187 }]
5187 5188 }], 5189 mapTypeId: google.maps.MapTypeId.ROADMAP 5190 }); 5191 5192 var infowindow = new google.maps.InfoWindow(); 5193 5194 var marker, i; 5195 5196 for (i = 0; i < locations.length; i++) { 5197 marker = new google.maps.Marker({ 5198 position: new google.maps.LatLng(locations[i][1], locations[i][2]), 5199 icon: locations[i][3], 5200 map: map 5201 }); 5202 5203 google.maps.event.addListener(marker, 'click', (function (marker, i) { 5204 return function () { 5205 infowindow.setContent(locations[i][0]); 5206 infowindow.open(map, marker); 5207 } 5208 })(marker, i)); 5209 } 5210 }; 5211 5212 salonsMap(); 5213 }*/ 5214 5215 if ($('#map-canvas-branches').length) { 5216 $('#branchesModal .modal-dialog .modal-content .modal-body .modal-main .branches-list .branch-item').each(function () { 5217 var thisBranch = $(this); 5218 var thisTopPart = $(this).find('.branch-top'); 5219 5220 thisTopPart.click(function () { 5221 $('#branchesModal .modal-dialog .modal-content .modal-body .modal-main .branches-list .branch-item').removeClass('active'); 5222 thisBranch.addClass('active'); 5223 }); 5224 }); 5225 5226 var branchesMap = function () { 5227 var branchesLocations = [ 5228 ['<h4 class="mb-1">PoboÄka 1</h4>', 49.694190, 13.993245, '/images/eshop/pin-prodejna.svg'], 5229 ['<h4 class="mb-1">PoboÄka 2</h4>', 50.055597, 15.776071, '/images/eshop/pin-zasilkovna.svg'], 5230 ['<h4 class="mb-1">PoboÄka 3</h4>', 49.855597, 16.776071, '/images/eshop/pin-ppl.svg'], 5231 ['<h4 class="mb-1">PoboÄka 4</h4>', 49.77206491142731, 14.677948066196063, '/images/eshop/pin-posta.svg'], 5232 ]; 5233 5234 var branchesMap = new google.maps.Map(document.getElementById('map-canvas-branches'), { 5235 zoom: 8, 5236 /* Zoom level of your map */ 5237 center: new google.maps.LatLng(49.875232, 15.035319), 5238 /*styles: [{ 5239 stylers: [{ 5240 saturation: -100 5241 }] 5242 }],*/ 5243 /* coordinates for the center of your map */ 5244 mapTypeId: google.maps.MapTypeId.ROADMAP 5245 }); 5246 5247 var branchInfowindow = new google.maps.InfoWindow(); 5248 5249 var branchMarker, i; 5250 5251 for (i = 0; i < branchesLocations.length; i++) { 5252 branchMarker = new google.maps.Marker({ 5253 position: new google.maps.LatLng(branchesLocations[i][1], branchesLocations[i][2]), 5254 icon: { 5255 url: branchesLocations[i][3], 5256 size: new google.maps.Size(18, 25), 5257 scaledSize: new google.maps.Size(18, 25), 5258 anchor: new google.maps.Point(0, 50) 5259 }, 5260 map: branchesMap 5261 }); 5262 5263 google.maps.event.addListener(branchMarker, 'click', (function (marker, i) { 5264 return function () { 5265 branchInfowindow.setContent(branchesLocations[i][0]); 5266 branchInfowindow.open(branchesMap, marker); 5267 } 5268 })(branchMarker, i)); 5269 } 5270 }; 5271 5272 branchesMap(); 5273 } 5274 }); 5275 5276}(window.jQuery, window, document)); 5277$(document).on('click', function (e) { 5278 if ($(e.target).closest(".form.head-search.open").length === 0 && $(e.target).closest(".head-search-btn").length === 0) { 5279 $(".form.head-search.open").removeClass("open"); 5280 } 5281}); 5282 5283jQuery(document).ready(function($) { 5284 // preklik z bezregistracie na registraciu 5285 if ($('#make-account-1').length) { 5286 $('#make-account-1').on('click', function(event) { 5287 //event.preventDefault(); 5288 $('.order-info-panel-nonregistred').toggle(); 5289 $('.btn-newregistration').removeClass('hide'); 5290 $('.btn-order').addClass('hide'); 5291 $('#make-account-2').prop('checked',this.checked); 5292 copyDataEnumerator(false); 5293 });
5294 } 5295 5296 // preklik z registracie na bezregistraciu 5297 if ($('#make-account-2').length) { 5298 $('#make-account-2').on('click', function(event) { 5299 //event.preventDefault(); 5300 $('.order-info-panel-nonregistred').toggle(); 5301 $('#make-account-1').prop('checked',this.checked); 5302 $('.btn-order').removeClass('hide'); 5303 $('.btn-newregistration').addClass('hide'); 5304 copyDataEnumerator(true); 5305 5306 }); 5307 } 5308 5309 // if ($('.js-form__registration').length) { 5310 // $('.js-form__registration').on('click', function(event) { 5311 // //event.preventDefault(); 5312 // $('.order-info-panel-nonregistred').toggle(); 5313 // }); 5314 // } 5315}); 5316 5317function copyDataEnumerator(switch_){ 5318 //jmeno 5319 copyData( 5320 switch_, 5321 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox7'), 5322 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox19')); 5323 5324 //prijmeni 5325 copyData( 5326 switch_, 5327 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox8'), 5328 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox20')); 5329 5330 //ulice 5331 copyData( 5332 switch_, 5333 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox4'), 5334 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox4'));
5335 5336 //mesto 5337 copyData( 5338 switch_, 5339 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox3'), 5340 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox5')); 5341 5342 //psc 5343 copyData( 5344 switch_, 5345 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox6'), 5346 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox12')); 5347 5348 //telefon 5349 copyData( 5350 switch_, 5351 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox12'), 5352 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox7')); 5353 5354 //email 5355 copyData( 5356 switch_, 5357 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox13'), 5358 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox8')); 5359 5360 //firma 5361 copyData( 5362 switch_, 5363 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox10'), 5364 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox1')); 5365 5366 //ico 5367 copyData( 5368 switch_, 5369 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox15'), 5370 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox13')); 5371 5372 //dic 5373 copyData( 5374 switch_, 5375 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox14'), 5376 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox14')); 5377 5378 //alt. ulice 5379 copyData( 5380 switch_, 5381 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox19'), 5382 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox6')); 5383 5384 //alt. mesto 5385 copyData( 5386 switch_, 5387 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox17'), 5388 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox11')); 5389 5390 //alt. psc 5391 copyData( 5392 switch_, 5393 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox18'), 5394 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox15')); 5395 5396 //alt. telefon 5397 copyData( 5398 switch_, 5399 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox20'), 5400 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox18')); 5401 5402 //poznamka 5403 copyData( 5404 switch_, 5405 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_TextBox5'), 5406 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_TextBox16')); 5407 5408 //obch. podmienky 5409 copyCheck( 5410 switch_, 5411 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_cbBusinessConditions'), 5412 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_cbBusinessConditions')); 5413 5414 //emaily 5415 copyCheck( 5416 switch_, 5417 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_cbNewsletter'), 5418 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_CheckBoxEmailNews')); 5419/* 5420 //gdpr 5421 copyCheck( 5422 switch_, 5423 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_cbGDPR'), 5424 $('#cbGDPR')); 5425 5426 //heureka 5427 copyCheck( 5428 switch_, 5429 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormOverview_cbHeureka'), 5430 $('#ctl00_ewpz1_mainTemplateCtrl_FormDeliveryInformation_FormRegistration_cbHeureka')); 5431*/ 5432} 5433 5434 5435function copyData(switch_, from_, to_){ 5436 if (switch_){ 5437 from_.val(to_.val()); 5438 } 5439 else{ 5440 to_.val(from_.val()); 5441 } 5442} 5443 5444function copyCheck(switch_, from_, to_){ 5445 if (switch_){ 5446 from_.prop("checked", to_[0].checked); 5447 } 5448 else{ 5449 to_.prop("checked", from_[0].checked); 5450 } 5451 5452} 5453 5454function htmlEncode(s) { 5455 return s.replace(/&/g, '&') 5456 .replace(/</g, '<') 5457 .replace(/>/g, '>') 5458 .replace(/'/g, ''') 5459 .replace(/"/g, '"'); 5460} if (typeof searchstorecardpropertiesfilter != 'undefined') { 5461 $('.box-searchstorecardpropertiesfilter').replaceWith(searchstorecardpropertiesfilter); 5462 }var currpage = 24; 5463 5464$(document).ready(function () { 5465 $( "#dalsi-produkty" ).click(function() { 5466 lastPostFunc(); 5467 return false; 5468 }); 5469 }); 5470 5471 function lastPostFunc() { 5472 $.ajax({
5473 type: "POST", 5474 url: "/mainform.aspx/CategoryGridGetRows" + (window.location.href.indexOf('?') > 0 ? window.location.href.slice(window.location.href.indexOf('?')) : ''), 5475 data: '{currpage: ' + currpage + ', pagerows: 24}', 5476 contentType: "application/json; charset=utf-8", 5477 dataType: "json", 5478 beforeSend: function() { 5479 InitializeRequest(null,null); 5480 }, 5481 complete: function() { 5482 EndRequest(null, null); 5483 }, 5484 success: function (data) { 5485 5486 if (data != "") { 5487 $('.categorygrid .product:last').after(data.d.renderOutput); 5488 currpage = data.d.currpage; 5489 setPage("page",(data.d.currpagesum)); 5490 if (!data.d.nextPage) 5491 { 5492 $( "#dalsi-produkty" ).hide(); 5493 } 5494 $('.pagination-box').hide(); 5495 } 5496 }, 5497 failure: function (response) { 5498 alert('failure: ' + response.d); 5499 }, 5500 error: function (response) { 5501 alert('error: ' + response.d); 5502 } 5503 5504 }) 5505 }; 5506 5507function setPage(paramName, paramValue) 5508{ 5509 $(".pagination").hide(); 5510 var url = window.location.href; 5511 if (url.indexOf(paramName + "=") >= 0) 5512 { 5513 var prefix = url.substring(0, url.indexOf(paramName)); 5514 var suffix = url.substring(url.indexOf(paramName)); 5515 suffix = suffix.substring(suffix.indexOf("=") + 1); 5516 suffix = (suffix.indexOf("&") >= 0) ? suffix.substring(suffix.indexOf("&")) : ""; 5517 url = prefix + paramName + "=" + paramValue + suffix; 5518 } 5519 else 5520 { 5521 if (url.indexOf("?") < 0) 5522 url += "?" + paramName + "=" + paramValue; 5523 else 5524 url += "&" + paramName + "=" + paramValue; 5525 } 5526 window.history.pushState({}, document.title, url.substring(url.indexOf('/'))); 5527}//]]> 5528</script>
5528 5529
5530<script src="/ScriptResource.axd?d=BDDtS0pUwzF3goOAYR34gJso21udvVslA7YeNnP9IVVuw6YNSOstaRyWxnFdpOlCyYjc1dhMNEOJjlSEfz10RmB4N5yvCrrjpxUAeIQmTBzIk9IZPZVClDDTZYT4bN4fedtlm2VmqoxAy5zja2o8KV7Z7c41&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5530
5530
5531<script src="/ScriptResource.axd?d=wFv4COAj5_QqwM9R4rvOZuXlY7ucoZXHrH-pNoVr52wBCZkVppaZvnwzfZnwY0HpvIIhARwvWMwyUj2Qb5SevRerr6BvqRqFo_9KtVB6B6ViZFzvKuldCUqFJ20jR5UcR1qaDMbaeaqRyvT_g9vqAyMXY5U1&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5531
5531
5532<script src="/ScriptResource.axd?d=RXu79p9lum-mA0WllqFUqSXAzElIyf40cllQ8CBcwGWbwQPEkj94mmnhC0OXw1Nvk99ORNTppw_r8uHnb6aZ_eo1vJ_SNXKnUzz1RKT6vDx0O443VspJ5gSKCBOnQlGU4ZXKlrx-IJZpTRIwVwkKWgqPHV41&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5532
5532
5533<script src="/ScriptResource.axd?d=wG9MX0yr4oE7-U1i-DHLVtb1M2c5_gaSVRzvX2o6ApySFvL7TMyBLVwSc-qBjY9pGckVcBeDD2q_xUNACmZDtFGadrDMyTNu71WK49ahdvVownX6bz1am42RcRi-L_wmmMQXD1IIrWgY3s5IhXlMJt3IS4W8HYMhV6qAG_NELcfwdA2y0&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5533
5533
5534<script src="/ScriptResource.axd?d=XsNwF_AaQWW3_EmOHsnpC0wnkESxzE8FxV6WaIeVy9pQ9e2emaA6LhdMyZFYg_sQnDt_iXkcSF7q3gGSI2p0WBP6wFR39Dk4f1Lezoe-fCS2RCpFxOhcRKSVUvFbjsdWD8cQwX4SM64qFU8-iSQnYcx4pKY1&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5534
5534
5535<script src="/ScriptResource.axd?d=I9NfeLy1ORJANFWdOnvNZytSIGUYzlzB-LHVayD-6F2veXQ7lYD-XakdKG9PrjzliKUQ6YPHg8Hccfm8UNvcL2p3kE46k0A7tWR1UKLPGPOMvUxBbzwua1nfCfwxq-pY58qc8UF8okgnmTya9Za06c526Xg1&t=498cd988" type="text/javascript"></script>
vendor: 2 bytes, line 5535
5535
5536<script src="/ScriptResource.axd?d=ho-CIiRbME0YWiIs36Obx8-58C2ti6oRpG4S61HeY7SivOpFDMrfdv0rhz2DXqmNZ2El-qtNDnxyKTQSxPqfiqOmrzDH9XzI486O80zaW1OixSJ1AM11AzHa47gnnzYH-Lrfdw2nRo75Hw1P_Th831raPj8E2rsbHeF3KVHWaD78lGkf0&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5536
5536
5537<script src="/ScriptResource.axd?d=GgbHNdFiZEEdMyy0ZJgYnRmO_VnhhOdkhga5pzhT5cHtUGgyfP5QFtamP46oFuizkbCoCBNLzAjPY_xbs8k0drypen2tseAGVaD2TNGvB3ZgLko_iJ71XO6f6B0eGX2b2rPEkun0NPKdtsXdmxJQxadbvPBZdmYv1-ZgL642cpjbdqVh0&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5537
5537
5538<script src="/ScriptResource.axd?d=BIM2dWdwNuj43bRw2dYCVrcz71UfGIyIUfeL35YU9Hovxoy1LmAsCzL0DRCQke6ADlx5i1rAcj7LUOs71vsEDz3yoi0Se3BvbL2ZNpPGL39pceYDXIxyyqeqOVNFylVqtm5M_572qXYGqjxGyIAoprsT3-224yNRE-RUv99aBOjYn5oP0&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5538
5538
5539<script src="/ScriptResource.axd?d=iCukk3nb4k48TMY6JPfNM74pANlvrIig6F3BGdImqWM7El-0EM4EGd4j5jBExmB1rCnskWt-a1v-71GMGCirrarBx6UbhUMeY7oUE1KFwBHkDf-3iVDVB6xCOUdky-hdWxnK_YJWALmivRMecHjAUlt_axrUW-gKKE-F4kQOfSPE7Ivp0&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5539
5539
5540<script src="/ScriptResource.axd?d=Iz4_nIClZKW13T1pZQIAbSCP9AP5QoyYpJYvxKK-qiuL0L6RAMxnLAMJerphf1US-n31xsqPxkIZsS_lZYhxV0Iosr-_-DEZlIh6u82pPsvHUW7JwWtBVcUwiz22dHW_tWyUVILiWO_3fL8fFRnhVfZB49I1&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5540
5540
5541<script src="/ScriptResource.axd?d=d8SqZrw9vEcGggfUNur2_EiRMrWr-ZKKdwmcuxAlQ47pte5r_51zQltfY_cROxXNwt8kG20ppFXjnRiGRfRK61x1O1PiaY_XKLHHghEAHTTf5zM3aU7CKwFCjxSv50Y6Hs80a_f0EF_GkU4itJnRixS7Rd9A5ynkqbIpGpeR1FnmRg6E0&t=ffffffff87636c38" type="text/javascript"></script>
vendor: 2 bytes, line 5541
5541
5542<script type="text/javascript"> 5543//<![CDATA[ 5544Sys.Application.add_init(function() { 5545 $create(WebCtrlLib.TFR.Web.WebPartManagerBehavior, {"enableDragDrop":false,"id":"ctl00_WebPartManagerExtender","zonesIds":["ctl00_ewpz1_mainTemplateCtrl_TemplateCtrl1_TCWebPartZone1","ctl00_ewpz1_mainTemplateCtrl_TCWebPartZone1b"]}, null, null, $get("ctl00_webPartManager1")); 5546}); 5547Sys.Application.add_init(function() { 5548 $create(AjaxControlToolkit.ModalPopupBehavior, {"BackgroundCssClass":"pnfloatpanelback","Drag":true,"PopupControlID":"ctl00_pnFloatPanel","PopupDragHandleControlID":"ctl00_pnFloatPanelTitle","dynamicServicePath":"/kategorie/plet/","id":"ctl00_modalPopupExtender1"}, null, null, $get("ctl00_tbFloatPanelHidden")); 5549}); 5550//]]> 5551</script>
5551 5552</form> 5553</body> 5554</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.