jquery.sliderPro.min.js 131.8 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768
/*!
*  - v1.0.2
* Homepage: http://sucaijiayuan.com/
* Author: bqworks
*/

!

function(a, b) {
    "use strict";
    b.SliderPro = {
        modules: [],
        addModule: function(a, c) {
            this.modules.push(a),
            b.extend(d.prototype, c)
        }
    };
    var c = b.SliderPro.namespace = "SliderPro",
    d = function(a, c) {
        this.instance = a,
        this.$slider = b(this.instance),
        this.$slides = null,
        this.$slidesMask = null,
        this.$slidesContainer = null,
        this.slides = [],
        this.slidesOrder = [],
        this.options = c,
        this.settings = {},
        this.originalSettings = {},
        this.originalGotoSlide = null,
        this.selectedSlideIndex = 0,
        this.previousSlideIndex = 0,
        this.middleSlidePosition = 0,
        this.supportedAnimation = null,
        this.vendorPrefix = null,
        this.transitionEvent = null,
        this.positionProperty = null,
        this.slidesPosition = 0,
        this.slideWidth = 0,
        this.slideHeight = 0,
        this.slideSize = 0,
        this.previousSlideWidth = 0,
        this.previousSlideHeight = 0,
        this.previousWindowWidth = 0,
        this.previousWindowHeight = 0,
        this.visibleOffset = 0,
        this.allowResize = !0,
        this.uniqueId = (new Date).valueOf(),
        this.breakpoints = [],
        this.currentBreakpoint = -1,
        this.shuffledIndexes = [],
        this._init()
    };
    d.prototype = {
        _init: function() {
            var d = this;
            this.settings = b.extend({},
            this.defaults, this.options),
            this.supportedAnimation = f.getSupportedAnimation(),
            this.vendorPrefix = f.getVendorPrefix(),
            this.transitionEvent = f.getTransitionEvent(),
            this.$slider.removeClass("sp-no-js"),
            a.navigator.userAgent.match(/(iPad|iPhone|iPod)/g) && this.$slider.addClass("ios");
            var e = /(msie) ([\w.]+)/,
            g = e.exec(a.navigator.userAgent.toLowerCase());
            if (null !== g && this.$slider.addClass("ie ie" + parseInt(g[2], 10)), this.$slidesContainer = b('<div class="sp-slides-container"></div>').appendTo(this.$slider), this.$slidesMask = b('<div class="sp-mask"></div>').appendTo(this.$slidesContainer), this.$slides = this.$slider.find(".sp-slides").appendTo(this.$slidesMask), this.$slider.find(".sp-slide").appendTo(this.$slides), this.settings.shuffle === !0) {
                var h = this.$slides.find(".sp-slide"),
                i = [];
                h.each(function(a) {
                    d.shuffledIndexes.push(a)
                }),
                this.shuffledIndexes = this.shuffledIndexes.sort(function() {
                    return.5 - Math.random()
                }),
                b.each(this.shuffledIndexes,
                function(a, b) {
                    i.push(h[b])
                }),
                this.$slides.empty().append(i)
            }
            var j = b.SliderPro.modules;
            if ("undefined" != typeof j) for (var k in j) {
                var l = j[k].substring(0, 1).toLowerCase() + j[k].substring(1) + "Defaults";
                "undefined" != typeof this[l] && b.extend(this.settings, this[l])
            }
            if (b.extend(this.settings, this.options), "undefined" != typeof j) for (var m in j)"undefined" != typeof this["init" + j[m]] && this["init" + j[m]]();
            if (this.originalSettings = b.extend({},
            this.settings), this.originalGotoSlide = this.gotoSlide, null !== this.settings.breakpoints) {
                for (var n in this.settings.breakpoints) this.breakpoints.push({
                    size: parseInt(n, 10),
                    properties: this.settings.breakpoints[n]
                });
                this.breakpoints = this.breakpoints.sort(function(a, b) {
                    return a.size >= b.size ? 1 : -1
                })
            }
            this.selectedSlideIndex = this.settings.startSlide,
            b(a).on("resize." + this.uniqueId + "." + c,
            function() {
                var c = b(a).width(),
                e = b(a).height();
                d.allowResize === !1 || d.previousWindowWidth === c && d.previousWindowHeight === e || (d.previousWindowWidth = c, d.previousWindowHeight = e, d.allowResize = !1, setTimeout(function() {
                    d.resize(),
                    d.allowResize = !0
                },
                200))
            }),
            this.on("update." + c,
            function() {
                d.previousSlideWidth = 0,
                d.resize()
            }),
            this.update(),
            this.trigger({
                type: "init"
            }),
            b.isFunction(this.settings.init) && this.settings.init.call(this, {
                type: "init"
            })
        },
        update: function() {
            var a = this;
            "horizontal" === this.settings.orientation ? (this.$slider.removeClass("sp-vertical").addClass("sp-horizontal"), this.$slider.css({
                height: "",
                "max-height": ""
            }), this.$slides.find(".sp-slide").css("top", "")) : "vertical" === this.settings.orientation && (this.$slider.removeClass("sp-horizontal").addClass("sp-vertical"), this.$slides.find(".sp-slide").css("left", "")),
            this.positionProperty = "horizontal" === this.settings.orientation ? "left": "top",
            this.gotoSlide = this.originalGotoSlide;
            for (var c = this.slides.length - 1; c >= 0; c--) if (0 === this.$slider.find('.sp-slide[data-index="' + c + '"]').length) {
                var d = this.slides[c];
                d.destroy(),
                this.slides.splice(c, 1)
            }
            this.slidesOrder.length = 0,
            this.$slider.find(".sp-slide").each(function(c) {
                var d = b(this);
                "undefined" == typeof d.attr("data-init") ? a._createSlide(c, d) : a.slides[c].setIndex(c),
                a.slidesOrder.push(c)
            }),
            this.middleSlidePosition = parseInt((a.slidesOrder.length - 1) / 2, 10),
            this.settings.loop === !0 && this._updateSlidesOrder(),
            this.trigger({
                type: "update"
            }),
            b.isFunction(this.settings.update) && this.settings.update.call(this, {
                type: "update"
            })
        },
        _createSlide: function(a, c) {
            var d = new e(b(c), a, this.settings);
            this.slides.splice(a, 0, d)
        },
        _updateSlidesOrder: function() {
            var a, c, d = b.inArray(this.selectedSlideIndex, this.slidesOrder) - this.middleSlidePosition;
            if (0 > d) for (a = this.slidesOrder.splice(d, Math.abs(d)), c = a.length - 1; c >= 0; c--) this.slidesOrder.unshift(a[c]);
            else if (d > 0) for (a = this.slidesOrder.splice(0, d), c = 0; c <= a.length - 1; c++) this.slidesOrder.push(a[c])
        },
        _updateSlidesPosition: function() {
            var a = parseInt(this.$slides.find(".sp-slide").eq(this.selectedSlideIndex).css(this.positionProperty), 10);
            for (var b in this.slidesOrder) {
                var c = this.$slides.find(".sp-slide").eq(this.slidesOrder[b]);
                c.css(this.positionProperty, a + (b - this.middleSlidePosition) * (this.slideSize + this.settings.slideDistance))
            }
        },
        _resetSlidesPosition: function() {
            for (var a in this.slidesOrder) {
                var b = this.$slides.find(".sp-slide").eq(this.slidesOrder[a]);
                b.css(this.positionProperty, a * (this.slideSize + this.settings.slideDistance))
            }
            var c = -parseInt(this.$slides.find(".sp-slide").eq(this.selectedSlideIndex).css(this.positionProperty), 10) + this.visibleOffset;
            this._moveTo(c, !0)
        },
        resize: function() {
            var c = this;
            if (null !== this.settings.breakpoints && this.breakpoints.length > 0) if (b(a).width() > this.breakpoints[this.breakpoints.length - 1].size && -1 !== this.currentBreakpoint) this.currentBreakpoint = -1,
            this._setProperties(this.originalSettings, !1);
            else for (var d = 0,
            e = this.breakpoints.length; e > d; d++) if (b(a).width() <= this.breakpoints[d].size) {
                if (this.currentBreakpoint !== this.breakpoints[d].size) {
                    var f = {
                        type: "breakpointReach",
                        size: this.breakpoints[d].size,
                        settings: this.breakpoints[d].properties
                    };
                    this.trigger(f),
                    b.isFunction(this.settings.breakpointReach) && this.settings.breakpointReach.call(this, f),
                    this.currentBreakpoint = this.breakpoints[d].size;
                    var g = b.extend({},
                    this.originalSettings, this.breakpoints[d].properties);
                    return void this._setProperties(g, !1)
                }
                break
            }
            this.settings.responsive === !0 ? "fullWidth" !== this.settings.forceSize && "fullWindow" !== this.settings.forceSize || "auto" !== this.settings.visibleSize && ("auto" === this.settings.visibleSize || "vertical" !== this.settings.orientation) ? this.$slider.css({
                width: "100%",
                "max-width": this.settings.width,
                marginLeft: ""
            }) : (this.$slider.css("margin", 0), this.$slider.css({
                width: b(a).width(),
                "max-width": "",
                marginLeft: -this.$slider.offset().left
            })) : this.$slider.css({
                width: this.settings.width
            }),
            -1 === this.settings.aspectRatio && (this.settings.aspectRatio = this.settings.width / this.settings.height),
            this.slideWidth = this.$slider.width(),
            this.slideHeight = "fullWindow" === this.settings.forceSize ? b(a).height() : isNaN(this.settings.aspectRatio) ? this.settings.height: this.slideWidth / this.settings.aspectRatio,
            (this.previousSlideWidth !== this.slideWidth || this.previousSlideHeight !== this.slideHeight || "auto" !== this.settings.visibleSize || this.$slider.outerWidth() > this.$slider.parent().width() || this.$slider.width() !== this.$slidesMask.width()) && (this.previousSlideWidth = this.slideWidth, this.previousSlideHeight = this.slideHeight, this.slideSize = "horizontal" === this.settings.orientation ? this.slideWidth: this.slideHeight, this.visibleSlidesSize = this.slideSize, this.visibleOffset = 0, b.each(this.slides,
            function(a, b) {
                b.setSize(c.slideWidth, c.slideHeight)
            }), this.$slidesMask.css({
                width: this.slideWidth,
                height: this.slideHeight
            }), this.settings.autoHeight === !0 ? setTimeout(function() {
                c._resizeHeight()
            },
            1) : this.$slidesMask.css(this.vendorPrefix + "transition", ""), "auto" !== this.settings.visibleSize && ("horizontal" === this.settings.orientation ? ("fullWidth" === this.settings.forceSize || "fullWindow" === this.settings.forceSize ? (this.$slider.css("margin", 0), this.$slider.css({
                width: b(a).width(),
                "max-width": "",
                marginLeft: -this.$slider.offset().left
            })) : this.$slider.css({
                width: this.settings.visibleSize,
                "max-width": "100%",
                marginLeft: 0
            }), this.$slidesMask.css("width", this.$slider.width()), this.visibleSlidesSize = this.$slidesMask.width(), this.visibleOffset = Math.round((this.$slider.width() - this.slideWidth) / 2)) : (this.$slider.css("fullWindow" === this.settings.forceSize ? {
                height: b(a).height(),
                "max-height": ""
            }: {
                height: this.settings.visibleSize,
                "max-height": "100%"
            }), this.$slidesMask.css("height", this.$slider.height()), this.visibleSlidesSize = this.$slidesMask.height(), this.visibleOffset = Math.round((this.$slider.height() - this.slideHeight) / 2))), this._resetSlidesPosition(), this.trigger({
                type: "sliderResize"
            }), b.isFunction(this.settings.sliderResize) && this.settings.sliderResize.call(this, {
                type: "sliderResize"
            }))
        },
        _resizeHeight: function() {
            var a = this,
            b = this.getSlideAt(this.selectedSlideIndex),
            d = b.getSize();
            b.off("imagesLoaded." + c),
            b.on("imagesLoaded." + c,
            function(c) {
                if (c.index === a.selectedSlideIndex) {
                    var d = b.getSize();
                    a._resizeHeightTo(d.height)
                }
            }),
            "loading" !== d && this._resizeHeightTo(d.height)
        },
        gotoSlide: function(a) {
            if (a !== this.selectedSlideIndex && "undefined" != typeof this.slides[a]) {
                var c = this;
                this.previousSlideIndex = this.selectedSlideIndex,
                this.selectedSlideIndex = a,
                this.$slides.find(".sp-selected").removeClass("sp-selected"),
                this.$slides.find(".sp-slide").eq(this.selectedSlideIndex).addClass("sp-selected"),
                this.settings.loop === !0 && (this._updateSlidesOrder(), this._updateSlidesPosition()),
                this.settings.autoHeight === !0 && this._resizeHeight();
                var d = -parseInt(this.$slides.find(".sp-slide").eq(this.selectedSlideIndex).css(this.positionProperty), 10) + this.visibleOffset;
                this._moveTo(d, !1,
                function() {
                    c.settings.loop === !0 && c._resetSlidesPosition(),
                    c.trigger({
                        type: "gotoSlideComplete",
                        index: a,
                        previousIndex: c.previousSlideIndex
                    }),
                    b.isFunction(c.settings.gotoSlideComplete) && c.settings.gotoSlideComplete.call(c, {
                        type: "gotoSlideComplete",
                        index: a,
                        previousIndex: c.previousSlideIndex
                    })
                }),
                this.trigger({
                    type: "gotoSlide",
                    index: a,
                    previousIndex: this.previousSlideIndex
                }),
                b.isFunction(this.settings.gotoSlide) && this.settings.gotoSlide.call(this, {
                    type: "gotoSlide",
                    index: a,
                    previousIndex: this.previousSlideIndex
                })
            }
        },
        nextSlide: function() {
            var a = this.selectedSlideIndex >= this.getTotalSlides() - 1 ? 0 : this.selectedSlideIndex + 1;
            this.gotoSlide(a)
        },
        previousSlide: function() {
            var a = this.selectedSlideIndex <= 0 ? this.getTotalSlides() - 1 : this.selectedSlideIndex - 1;
            this.gotoSlide(a)
        },
        _moveTo: function(a, b, c) {
            var d = this,
            e = {};
            if (a !== this.slidesPosition) if (this.slidesPosition = a, "css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation) {
                var f, g = "horizontal" === this.settings.orientation ? a: 0,
                h = "horizontal" === this.settings.orientation ? 0 : a;
                e[this.vendorPrefix + "transform"] = "css-3d" === this.supportedAnimation ? "translate3d(" + g + "px, " + h + "px, 0)": "translate(" + g + "px, " + h + "px)",
                "undefined" != typeof b && b === !0 ? f = "": (this.$slides.addClass("sp-animated"), f = this.vendorPrefix + "transform " + this.settings.slideAnimationDuration / 1e3 + "s", this.$slides.on(this.transitionEvent,
                function(a) {
                    a.target === a.currentTarget && (d.$slides.off(d.transitionEvent), d.$slides.removeClass("sp-animated"), "function" == typeof c && c())
                })),
                e[this.vendorPrefix + "transition"] = f,
                this.$slides.css(e)
            } else e["margin-" + this.positionProperty] = a,
            "undefined" != typeof b && b === !0 ? this.$slides.css(e) : (this.$slides.addClass("sp-animated"), this.$slides.animate(e, this.settings.slideAnimationDuration,
            function() {
                d.$slides.removeClass("sp-animated"),
                "function" == typeof c && c()
            }))
        },
        _stopMovement: function() {
            var a = {};
            if ("css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation) {
                var b = this.$slides.css(this.vendorPrefix + "transform"),
                c = -1 !== b.indexOf("matrix3d") ? "matrix3d": "matrix",
                d = b.replace(c, "").match(/-?[0-9\.]+/g),
                e = "matrix3d" === c ? parseInt(d[12], 10) : parseInt(d[4], 10),
                f = "matrix3d" === c ? parseInt(d[13], 10) : parseInt(d[5], 10);
                a[this.vendorPrefix + "transform"] = "css-3d" === this.supportedAnimation ? "translate3d(" + e + "px, " + f + "px, 0)": "translate(" + e + "px, " + f + "px)",
                a[this.vendorPrefix + "transition"] = "",
                this.$slides.css(a),
                this.$slides.off(this.transitionEvent),
                this.slidesPosition = "horizontal" === this.settings.orientation ? e: f
            } else this.$slides.stop(),
            this.slidesPosition = parseInt(this.$slides.css("margin-" + this.positionProperty), 10);
            this.$slides.removeClass("sp-animated")
        },
        _resizeHeightTo: function(a) {
            var b = {
                height: a
            };
            "css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation ? (b[this.vendorPrefix + "transition"] = "height " + this.settings.heightAnimationDuration / 1e3 + "s", this.$slidesMask.css(b)) : this.$slidesMask.animate(b, this.settings.heightAnimationDuration)
        },
        destroy: function() {
            this.$slider.removeData("sliderPro"),
            this.$slider.removeAttr("style"),
            this.$slides.removeAttr("style"),
            this.off("update." + c),
            b(a).off("resize." + this.uniqueId + "." + c);
            var d = b.SliderPro.modules;
            if ("undefined" != typeof d) for (var e in d)"undefined" != typeof this["destroy" + d[e]] && this["destroy" + d[e]]();
            b.each(this.slides,
            function(a, b) {
                b.destroy()
            }),
            this.slides.length = 0,
            this.$slides.prependTo(this.$slider),
            this.$slidesContainer.remove()
        },
        _setProperties: function(a, b) {
            for (var c in a) this.settings[c] = a[c],
            b !== !1 && (this.originalSettings[c] = a[c]);
            this.update()
        },
        on: function(a, b) {
            return this.$slider.on(a, b)
        },
        off: function(a) {
            return this.$slider.off(a)
        },
        trigger: function(a) {
            return this.$slider.triggerHandler(a)
        },
        getSlideAt: function(a) {
            return this.slides[a]
        },
        getSelectedSlide: function() {
            return this.selectedSlideIndex
        },
        getTotalSlides: function() {
            return this.slides.length
        },
        defaults: {
            width: 500,
            height: 300,
            responsive: !0,
            aspectRatio: -1,
            imageScaleMode: "cover",
            centerImage: !0,
            autoHeight: !1,
            startSlide: 0,
            shuffle: !1,
            orientation: "horizontal",
            forceSize: "none",
            loop: !0,
            slideDistance: 10,
            slideAnimationDuration: 700,
            heightAnimationDuration: 700,
            visibleSize: "auto",
            breakpoints: null,
            init: function() {},
            update: function() {},
            sliderResize: function() {},
            gotoSlide: function() {},
            gotoSlideComplete: function() {},
            breakpointReach: function() {}
        }
    };
    var e = function(a, b, c) {
        this.$slide = a,
        this.$mainImage = null,
        this.$imageContainer = null,
        this.hasMainImage = !1,
        this.isMainImageLoaded = !1,
        this.isMainImageLoading = !1,
        this.hasImages = !1,
        this.areImagesLoaded = !1,
        this.width = 0,
        this.height = 0,
        this.settings = c,
        this.setIndex(b),
        this._init()
    };
    e.prototype = {
        _init: function() {
            this.$slide.attr("data-init", !0),
            this.$mainImage = 0 !== this.$slide.find(".sp-image").length ? this.$slide.find(".sp-image") : null,
            null !== this.$mainImage && (this.hasMainImage = !0, this.$imageContainer = b('<div class="sp-image-container"></div>').prependTo(this.$slide), 0 !== this.$mainImage.parent("a").length ? this.$mainImage.parent("a").appendTo(this.$imageContainer) : this.$mainImage.appendTo(this.$imageContainer)),
            this.hasImages = 0 !== this.$slide.find("img").length ? !0 : !1
        },
        setSize: function(a, b) {
            this.width = a,
            this.height = this.settings.autoHeight === !0 ? "auto": b,
            this.$slide.css({
                width: this.width,
                height: this.height
            }),
            this.hasMainImage === !0 && (this.$imageContainer.css({
                width: this.width,
                height: this.height
            }), "undefined" == typeof this.$mainImage.attr("data-src") && this.resizeMainImage())
        },
        getSize: function() {
            var a, b = this;
            if (this.hasImages === !0 && this.areImagesLoaded === !1 && "undefined" == typeof this.$slide.attr("data-loading")) {
                this.$slide.attr("data-loading", !0);
                var d = f.checkImagesComplete(this.$slide,
                function() {
                    b.areImagesLoaded = !0,
                    b.$slide.removeAttr("data-loading"),
                    b.trigger({
                        type: "imagesLoaded." + c,
                        index: b.index
                    })
                });
                return "complete" === d ? (a = this.calculateSize(), {
                    width: a.width,
                    height: a.height
                }) : "loading"
            }
            return a = this.calculateSize(),
            {
                width: a.width,
                height: a.height
            }
        },
        calculateSize: function() {
            var a = this.$slide.width(),
            c = this.$slide.height();
            return this.$slide.children().each(function(d, e) {
                var f = b(e),
                g = e.getBoundingClientRect(),
                h = f.position().top + (g.bottom - g.top),
                i = f.position().left + (g.right - g.left);
                h > c && (c = h),
                i > a && (a = i)
            }),
            {
                width: a,
                height: c
            }
        },
        resizeMainImage: function(a) {
            var b = this;
            return a === !0 && (this.isMainImageLoaded = !1, this.isMainImageLoading = !1),
            this.isMainImageLoaded === !1 && this.isMainImageLoading === !1 ? (this.isMainImageLoading = !0, void f.checkImagesComplete(this.$mainImage,
            function() {
                b.isMainImageLoaded = !0,
                b.isMainImageLoading = !1,
                b.resizeMainImage(),
                b.trigger({
                    type: "imagesLoaded." + c,
                    index: b.index
                })
            })) : void(this.settings.autoHeight === !0 ? this.$mainImage.css({
                width: "100%",
                height: "auto",
                marginLeft: "",
                marginTop: ""
            }) : ("cover" === this.settings.imageScaleMode ? this.$mainImage.css(this.$mainImage.width() / this.$mainImage.height() <= this.width / this.height ? {
                width: "100%",
                height: "auto"
            }: {
                width: "auto",
                height: "100%"
            }) : "contain" === this.settings.imageScaleMode ? this.$mainImage.css(this.$mainImage.width() / this.$mainImage.height() >= this.width / this.height ? {
                width: "100%",
                height: "auto"
            }: {
                width: "auto",
                height: "100%"
            }) : "exact" === this.settings.imageScaleMode && this.$mainImage.css({
                width: "100%",
                height: "100%"
            }), this.settings.centerImage === !0 && this.$mainImage.css({
                marginLeft: .5 * (this.$imageContainer.width() - this.$mainImage.width()),
                marginTop: .5 * (this.$imageContainer.height() - this.$mainImage.height())
            })))
        },
        destroy: function() {
            this.$slide.removeAttr("style"),
            this.$slide.removeAttr("data-init"),
            this.$slide.removeAttr("data-index"),
            this.$slide.removeAttr("data-loaded"),
            this.hasMainImage === !0 && (this.$slide.find(".sp-image").removeAttr("style").appendTo(this.$slide), this.$slide.find(".sp-image-container").remove())
        },
        getIndex: function() {
            return this.index
        },
        setIndex: function(a) {
            this.index = a,
            this.$slide.attr("data-index", this.index)
        },
        on: function(a, b) {
            return this.$slide.on(a, b)
        },
        off: function(a) {
            return this.$slide.off(a)
        },
        trigger: function(a) {
            return this.$slide.triggerHandler(a)
        }
    },
    a.SliderPro = d,
    a.SliderProSlide = e,
    b.fn.sliderPro = function(a) {
        var c = Array.prototype.slice.call(arguments, 1);
        return this.each(function() {
            if ("undefined" == typeof b(this).data("sliderPro")) {
                var e = new d(this, a);
                b(this).data("sliderPro", e)
            } else if ("undefined" != typeof a) {
                var f = b(this).data("sliderPro");
                if ("function" == typeof f[a]) f[a].apply(f, c);
                else if ("undefined" != typeof f.settings[a]) {
                    var g = {};
                    g[a] = c[0],
                    f._setProperties(g)
                } else "object" == typeof a ? f._setProperties(a) : b.error(a + " does not exist in sliderPro.")
            }
        })
    };
    var f = {
        supportedAnimation: null,
        vendorPrefix: null,
        transitionEvent: null,
        getSupportedAnimation: function() {
            if (null !== this.supportedAnimation) return this.supportedAnimation;
            var a = document.body || document.documentElement,
            b = a.style,
            c = "undefined" != typeof b.transition || "undefined" != typeof b.WebkitTransition || "undefined" != typeof b.MozTransition || "undefined" != typeof b.OTransition;
            if (c === !0) {
                var d = document.createElement("div");
                if (("undefined" != typeof d.style.WebkitPerspective || "undefined" != typeof d.style.perspective) && (this.supportedAnimation = "css-3d"), "css-3d" === this.supportedAnimation && "undefined" != typeof d.styleWebkitPerspective) {
                    var e = document.createElement("style");
                    e.textContent = "@media (transform-3d),(-webkit-transform-3d){#test-3d{left:9px;position:absolute;height:5px;margin:0;padding:0;border:0;}}",
                    document.getElementsByTagName("head")[0].appendChild(e),
                    d.id = "test-3d",
                    document.body.appendChild(d),
                    (9 !== d.offsetLeft || 5 !== d.offsetHeight) && (this.supportedAnimation = null),
                    e.parentNode.removeChild(e),
                    d.parentNode.removeChild(d)
                }
                null !== this.supportedAnimation || "undefined" == typeof d.style["-webkit-transform"] && "undefined" == typeof d.style.transform || (this.supportedAnimation = "css-2d")
            } else this.supportedAnimation = "javascript";
            return this.supportedAnimation
        },
        getVendorPrefix: function() {
            if (null !== this.vendorPrefix) return this.vendorPrefix;
            var a = document.createElement("div"),
            b = ["Webkit", "Moz", "ms", "O"];
            if ("transform" in a.style) return this.vendorPrefix = "",
            this.vendorPrefix;
            for (var c = 0; c < b.length; c++) if (b[c] + "Transform" in a.style) {
                this.vendorPrefix = "-" + b[c].toLowerCase() + "-";
                break
            }
            return this.vendorPrefix
        },
        getTransitionEvent: function() {
            if (null !== this.transitionEvent) return this.transitionEvent;
            var a = document.createElement("div"),
            b = {
                transition: "transitionend",
                WebkitTransition: "webkitTransitionEnd",
                MozTransition: "transitionend",
                OTransition: "oTransitionEnd"
            };
            for (var c in b) if (c in a.style) {
                this.transitionEvent = b[c];
                break
            }
            return this.transitionEvent
        },
        checkImagesComplete: function(a, b) {
            var c = this,
            d = this.checkImagesStatus(a);
            if ("loading" === d) var e = setInterval(function() {
                d = c.checkImagesStatus(a),
                "complete" === d && (clearInterval(e), "function" == typeof b && b())
            },
            100);
            else "function" == typeof b && b();
            return d
        },
        checkImagesStatus: function(a) {
            var c = "complete";
            return a.is("img") && a[0].complete === !1 ? c = "loading": a.find("img").each(function() {
                var a = b(this)[0];
                a.complete === !1 && (c = "loading")
            }),
            c
        }
    };
    a.SliderProUtils = f
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Thumbnails." + b.SliderPro.namespace,
    d = {
        $thumbnails: null,
        $thumbnailsContainer: null,
        thumbnails: [],
        selectedThumbnailIndex: 0,
        thumbnailsSize: 0,
        thumbnailsContainerSize: 0,
        thumbnailsPosition: 0,
        thumbnailsOrientation: null,
        thumbnailsPositionProperty: null,
        isThumbnailScroller: !1,
        initThumbnails: function() {
            var a = this;
            this.on("update." + c, b.proxy(this._thumbnailsOnUpdate, this)),
            this.on("sliderResize." + c, b.proxy(this._thumbnailsOnResize, this)),
            this.on("gotoSlide." + c,
            function(b) {
                a._gotoThumbnail(b.index)
            })
        },
        _thumbnailsOnUpdate: function() {
            var a = this;
            if (0 === this.$slider.find(".sp-thumbnail").length && 0 === this.thumbnails.length) return void(this.isThumbnailScroller = !1);
            if (this.isThumbnailScroller = !0, null === this.$thumbnailsContainer && (this.$thumbnailsContainer = b('<div class="sp-thumbnails-container"></div>').insertAfter(this.$slidesContainer), this.$thumbnails = this.$slider.find(".sp-thumbnails").appendTo(this.$thumbnailsContainer), this.settings.shuffle === !0)) {
                var c = this.$thumbnails.find(".sp-thumbnail"),
                d = [];
                b.each(this.shuffledIndexes,
                function(a, e) {
                    var f = b(c[e]);
                    0 !== f.parent("a").length && (f = f.parent("a")),
                    d.push(f)
                }),
                this.$thumbnails.empty().append(d)
            }
            for (var e = this.thumbnails.length - 1; e >= 0; e--) if (0 === this.$thumbnails.find('.sp-thumbnail[data-index="' + e + '"]').length) {
                var f = this.thumbnails[e];
                f.destroy(),
                this.thumbnails.splice(e, 1)
            }
            this.$thumbnails.find(".sp-thumbnail").each(function(c) {
                var d = b(this);
                "undefined" == typeof d.attr("data-init") ? a._createThumbnail(d, c) : a.thumbnails[c].setIndex(c)
            }),
            this.$thumbnailsContainer.removeClass("sp-top-thumbnails sp-bottom-thumbnails sp-left-thumbnails sp-right-thumbnails"),
            "top" === this.settings.thumbnailsPosition ? (this.$thumbnailsContainer.addClass("sp-top-thumbnails"), this.thumbnailsOrientation = "horizontal") : "bottom" === this.settings.thumbnailsPosition ? (this.$thumbnailsContainer.addClass("sp-bottom-thumbnails"), this.thumbnailsOrientation = "horizontal") : "left" === this.settings.thumbnailsPosition ? (this.$thumbnailsContainer.addClass("sp-left-thumbnails"), this.thumbnailsOrientation = "vertical") : "right" === this.settings.thumbnailsPosition && (this.$thumbnailsContainer.addClass("sp-right-thumbnails"), this.thumbnailsOrientation = "vertical"),
            this.settings.thumbnailPointer === !0 ? this.$thumbnailsContainer.addClass("sp-has-pointer") : this.$thumbnailsContainer.removeClass("sp-has-pointer"),
            this.selectedThumbnailIndex = this.selectedSlideIndex,
            this.$thumbnails.find(".sp-thumbnail-container").eq(this.selectedThumbnailIndex).addClass("sp-selected-thumbnail"),
            this.thumbnailsSize = 0,
            b.each(this.thumbnails,
            function(b, c) {
                c.setSize(a.settings.thumbnailWidth, a.settings.thumbnailHeight),
                a.thumbnailsSize += "horizontal" === a.thumbnailsOrientation ? c.getSize().width: c.getSize().height
            }),
            "horizontal" === this.thumbnailsOrientation ? (this.$thumbnails.css({
                width: this.thumbnailsSize,
                height: this.settings.thumbnailHeight
            }), this.$thumbnailsContainer.css("height", ""), this.thumbnailsPositionProperty = "left") : (this.$thumbnails.css({
                width: this.settings.thumbnailWidth,
                height: this.thumbnailsSize
            }), this.$thumbnailsContainer.css("width", ""), this.thumbnailsPositionProperty = "top"),
            this.trigger({
                type: "thumbnailsUpdate"
            }),
            b.isFunction(this.settings.thumbnailsUpdate) && this.settings.thumbnailsUpdate.call(this, {
                type: "thumbnailsUpdate"
            })
        },
        _createThumbnail: function(a, b) {
            var d = this,
            f = new e(a, this.$thumbnails, b);
            f.on("thumbnailClick." + c,
            function(a) {
                d.gotoSlide(a.index)
            }),
            this.thumbnails.splice(b, 0, f)
        },
        _thumbnailsOnResize: function() {
            if (this.isThumbnailScroller !== !1) {
                var c, d = this;
                "horizontal" === this.thumbnailsOrientation ? (this.thumbnailsContainerSize = Math.min(this.$slidesMask.width(), this.thumbnailsSize), this.$thumbnailsContainer.css("width", this.thumbnailsContainerSize), "fullWindow" === this.settings.forceSize && (this.$slidesMask.css("height", this.$slidesMask.height() - this.$thumbnailsContainer.outerHeight(!0)), this.slideHeight = this.$slidesMask.height(), b.each(this.slides,
                function(a, b) {
                    b.setSize(d.slideWidth, d.slideHeight)
                }))) : "vertical" === this.thumbnailsOrientation && (this.$slidesMask.width() + this.$thumbnailsContainer.outerWidth(!0) > this.$slider.parent().width() && ("fullWidth" === this.settings.forceSize || "fullWindow" === this.settings.forceSize ? this.$slider.css("max-width", b(a).width() - this.$thumbnailsContainer.outerWidth(!0)) : this.$slider.css("max-width", this.$slider.parent().width() - this.$thumbnailsContainer.outerWidth(!0)), this.$slidesMask.css("width", this.$slider.width()), "horizontal" === this.settings.orientation ? (this.visibleOffset = Math.round((this.$slider.width() - this.slideSize) / 2), this.visibleSlidesSize = this.$slidesMask.width()) : "vertical" === this.settings.orientation && (this.slideWidth = this.$slider.width(), b.each(this.slides,
                function(a, b) {
                    b.setSize(d.slideWidth, d.slideHeight)
                })), this._resetSlidesPosition()), this.thumbnailsContainerSize = Math.min(this.$slidesMask.height(), this.thumbnailsSize), this.$thumbnailsContainer.css("height", this.thumbnailsContainerSize)),
                c = this.thumbnailsSize <= this.thumbnailsContainerSize || 0 === this.$thumbnails.find(".sp-selected-thumbnail").length ? 0 : Math.max( - this.thumbnails[this.selectedThumbnailIndex].getPosition()[this.thumbnailsPositionProperty], this.thumbnailsContainerSize - this.thumbnailsSize),
                "top" === this.settings.thumbnailsPosition ? this.$slider.css({
                    paddingTop: this.$thumbnailsContainer.outerHeight(!0),
                    paddingLeft: "",
                    paddingRight: ""
                }) : "bottom" === this.settings.thumbnailsPosition ? this.$slider.css({
                    paddingTop: "",
                    paddingLeft: "",
                    paddingRight: ""
                }) : "left" === this.settings.thumbnailsPosition ? this.$slider.css({
                    paddingTop: "",
                    paddingLeft: this.$thumbnailsContainer.outerWidth(!0),
                    paddingRight: ""
                }) : "right" === this.settings.thumbnailsPosition && this.$slider.css({
                    paddingTop: "",
                    paddingLeft: "",
                    paddingRight: this.$thumbnailsContainer.outerWidth(!0)
                }),
                this._moveThumbnailsTo(c, !0)
            }
        },
        _gotoThumbnail: function(a) {
            if (this.isThumbnailScroller !== !1 && "undefined" != typeof this.thumbnails[a]) {
                var c = this.selectedThumbnailIndex,
                d = this.thumbnailsPosition;
                if (this.selectedThumbnailIndex = a, this.$thumbnails.find(".sp-selected-thumbnail").removeClass("sp-selected-thumbnail"), this.$thumbnails.find(".sp-thumbnail-container").eq(this.selectedThumbnailIndex).addClass("sp-selected-thumbnail"), this.selectedThumbnailIndex >= c) {
                    var e = this.selectedThumbnailIndex === this.thumbnails.length - 1 ? this.selectedThumbnailIndex: this.selectedThumbnailIndex + 1,
                    f = this.thumbnails[e],
                    g = "horizontal" === this.thumbnailsOrientation ? f.getPosition().right: f.getPosition().bottom,
                    h = -this.thumbnailsPosition + this.thumbnailsContainerSize;
                    g > h && (d = this.thumbnailsPosition - (g - h))
                } else if (this.selectedThumbnailIndex < c) {
                    var i = 0 === this.selectedThumbnailIndex ? this.selectedThumbnailIndex: this.selectedThumbnailIndex - 1,
                    j = this.thumbnails[i],
                    k = "horizontal" === this.thumbnailsOrientation ? j.getPosition().left: j.getPosition().top;
                    k < -this.thumbnailsPosition && (d = -k)
                }
                this._moveThumbnailsTo(d),
                this.trigger({
                    type: "gotoThumbnail"
                }),
                b.isFunction(this.settings.gotoThumbnail) && this.settings.gotoThumbnail.call(this, {
                    type: "gotoThumbnail"
                })
            }
        },
        _moveThumbnailsTo: function(a, c, d) {
            var e = this,
            f = {};
            if (a !== this.thumbnailsPosition) if (this.thumbnailsPosition = a, "css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation) {
                var g, h = "horizontal" === this.thumbnailsOrientation ? a: 0,
                i = "horizontal" === this.thumbnailsOrientation ? 0 : a;
                f[this.vendorPrefix + "transform"] = "css-3d" === this.supportedAnimation ? "translate3d(" + h + "px, " + i + "px, 0)": "translate(" + h + "px, " + i + "px)",
                "undefined" != typeof c && c === !0 ? g = "": (this.$thumbnails.addClass("sp-animated"), g = this.vendorPrefix + "transform 0.7s", this.$thumbnails.on(this.transitionEvent,
                function(a) {
                    a.target === a.currentTarget && (e.$thumbnails.off(e.transitionEvent), e.$thumbnails.removeClass("sp-animated"), "function" == typeof d && d(), e.trigger({
                        type: "thumbnailsMoveComplete"
                    }), b.isFunction(e.settings.thumbnailsMoveComplete) && e.settings.thumbnailsMoveComplete.call(e, {
                        type: "thumbnailsMoveComplete"
                    }))
                })),
                f[this.vendorPrefix + "transition"] = g,
                this.$thumbnails.css(f)
            } else f["margin-" + this.thumbnailsPositionProperty] = a,
            "undefined" != typeof c && c === !0 ? this.$thumbnails.css(f) : this.$thumbnails.addClass("sp-animated").animate(f, 700,
            function() {
                e.$thumbnails.removeClass("sp-animated"),
                "function" == typeof d && d(),
                e.trigger({
                    type: "thumbnailsMoveComplete"
                }),
                b.isFunction(e.settings.thumbnailsMoveComplete) && e.settings.thumbnailsMoveComplete.call(e, {
                    type: "thumbnailsMoveComplete"
                })
            })
        },
        _stopThumbnailsMovement: function() {
            var a = {};
            if ("css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation) {
                var b = this.$thumbnails.css(this.vendorPrefix + "transform"),
                c = -1 !== b.indexOf("matrix3d") ? "matrix3d": "matrix",
                d = b.replace(c, "").match(/-?[0-9\.]+/g),
                e = "matrix3d" === c ? parseInt(d[12], 10) : parseInt(d[4], 10),
                f = "matrix3d" === c ? parseInt(d[13], 10) : parseInt(d[5], 10);
                a[this.vendorPrefix + "transform"] = "css-3d" === this.supportedAnimation ? "translate3d(" + e + "px, " + f + "px, 0)": "translate(" + e + "px, " + f + "px)",
                a[this.vendorPrefix + "transition"] = "",
                this.$thumbnails.css(a),
                this.$thumbnails.off(this.transitionEvent),
                this.thumbnailsPosition = "horizontal" === this.thumbnailsOrientation ? parseInt(d[4], 10) : parseInt(d[5], 10)
            } else this.$thumbnails.stop(),
            this.thumbnailsPosition = parseInt(this.$thumbnails.css("margin-" + this.thumbnailsPositionProperty), 10);
            this.$thumbnails.removeClass("sp-animated")
        },
        destroyThumbnails: function() {
            var d = this;
            this.off("update." + c),
            this.isThumbnailScroller !== !1 && (this.off("sliderResize." + c), this.off("gotoSlide." + c), b(a).off("resize." + this.uniqueId + "." + c), this.$thumbnails.find(".sp-thumbnail").each(function() {
                var a = b(this),
                e = parseInt(a.attr("data-index"), 10),
                f = d.thumbnails[e];
                f.off("thumbnailClick." + c),
                f.destroy()
            }), this.thumbnails.length = 0, this.$thumbnails.appendTo(this.$slider), this.$thumbnailsContainer.remove(), this.$slider.css({
                paddingTop: "",
                paddingLeft: "",
                paddingRight: ""
            }))
        },
        thumbnailsDefaults: {
            thumbnailWidth: 100,
            thumbnailHeight: 80,
            thumbnailsPosition: "bottom",
            thumbnailPointer: !1,
            thumbnailsUpdate: function() {},
            gotoThumbnail: function() {},
            thumbnailsMoveComplete: function() {}
        }
    },
    e = function(a, b, c) {
        this.$thumbnail = a,
        this.$thumbnails = b,
        this.$thumbnailContainer = null,
        this.width = 0,
        this.height = 0,
        this.isImageLoaded = !1,
        this.setIndex(c),
        this._init()
    };
    e.prototype = {
        _init: function() {
            var a = this;
            this.$thumbnail.attr("data-init", !0),
            this.$thumbnailContainer = b('<div class="sp-thumbnail-container"></div>').appendTo(this.$thumbnails),
            0 !== this.$thumbnail.parent("a").length ? this.$thumbnail.parent("a").appendTo(this.$thumbnailContainer) : this.$thumbnail.appendTo(this.$thumbnailContainer),
            this.$thumbnailContainer.on("click." + c,
            function() {
                a.trigger({
                    type: "thumbnailClick." + c,
                    index: a.index
                })
            })
        },
        setSize: function(a, b) {
            this.width = a,
            this.height = b,
            this.$thumbnailContainer.css({
                width: this.width,
                height: this.height
            }),
            this.$thumbnail.is("img") && "undefined" == typeof this.$thumbnail.attr("data-src") && this.resizeImage()
        },
        getSize: function() {
            return {
                width: this.$thumbnailContainer.outerWidth(!0),
                height: this.$thumbnailContainer.outerHeight(!0)
            }
        },
        getPosition: function() {
            return {
                left: this.$thumbnailContainer.position().left + parseInt(this.$thumbnailContainer.css("marginLeft"), 10),
                right: this.$thumbnailContainer.position().left + parseInt(this.$thumbnailContainer.css("marginLeft"), 10) + this.$thumbnailContainer.outerWidth(),
                top: this.$thumbnailContainer.position().top + parseInt(this.$thumbnailContainer.css("marginTop"), 10),
                bottom: this.$thumbnailContainer.position().top + parseInt(this.$thumbnailContainer.css("marginTop"), 10) + this.$thumbnailContainer.outerHeight()
            }
        },
        setIndex: function(a) {
            this.index = a,
            this.$thumbnail.attr("data-index", this.index)
        },
        resizeImage: function() {
            var a = this;
            if (this.isImageLoaded === !1) return void SliderProUtils.checkImagesComplete(this.$thumbnailContainer,
            function() {
                a.isImageLoaded = !0,
                a.resizeImage()
            });
            this.$thumbnail = this.$thumbnailContainer.find(".sp-thumbnail");
            var b = this.$thumbnail.width(),
            c = this.$thumbnail.height();
            this.$thumbnail.css(b / c <= this.width / this.height ? {
                width: "100%",
                height: "auto"
            }: {
                width: "auto",
                height: "100%"
            }),
            this.$thumbnail.css({
                marginLeft: .5 * (this.$thumbnailContainer.width() - this.$thumbnail.width()),
                marginTop: .5 * (this.$thumbnailContainer.height() - this.$thumbnail.height())
            })
        },
        destroy: function() {
            this.$thumbnailContainer.off("click." + c),
            this.$thumbnail.removeAttr("data-init"),
            this.$thumbnail.removeAttr("data-index"),
            0 !== this.$thumbnail.parent("a").length ? this.$thumbnail.parent("a").insertBefore(this.$thumbnailContainer) : this.$thumbnail.insertBefore(this.$thumbnailContainer),
            this.$thumbnailContainer.remove()
        },
        on: function(a, b) {
            return this.$thumbnailContainer.on(a, b)
        },
        off: function(a) {
            return this.$thumbnailContainer.off(a)
        },
        trigger: function(a) {
            return this.$thumbnailContainer.triggerHandler(a)
        }
    },
    b.SliderPro.addModule("Thumbnails", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "ConditionalImages." + b.SliderPro.namespace,
    d = {
        previousImageSize: null,
        currentImageSize: null,
        initConditionalImages: function() {
            this.currentImageSize = this.previousImageSize = "default",
            this.on("update." + c, b.proxy(this._conditionalImagesOnUpdate, this)),
            this.on("sliderResize." + c, b.proxy(this._conditionalImagesOnResize, this))
        },
        _conditionalImagesOnUpdate: function() {
            b.each(this.slides,
            function(a, c) {
                var d = c.$slide;
                d.find("img:not([ data-default ])").each(function() {
                    var a = b(this);
                    "undefined" != typeof a.attr("data-src") ? a.attr("data-default", a.attr("data-src")) : a.attr("data-default", a.attr("src"))
                })
            })
        },
        _conditionalImagesOnResize: function() {
            if (this.currentImageSize = this.slideWidth <= this.settings.smallSize ? "small": this.slideWidth <= this.settings.mediumSize ? "medium": this.slideWidth <= this.settings.largeSize ? "large": "default", this.previousImageSize !== this.currentImageSize) {
                var a = this;
                b.each(this.slides,
                function(c, d) {
                    var e = d.$slide;
                    e.find("img").each(function() {
                        var c = b(this),
                        e = c.attr("data-" + a.currentImageSize);
                        "undefined" != typeof e && ("undefined" != typeof c.attr("data-src") ? c.attr("data-src", e) : a._loadConditionalImage(c, e,
                        function(a) {
                            a.hasClass("sp-image") && (d.$mainImage = a, d.resizeMainImage(!0))
                        }))
                    })
                }),
                this.previousImageSize = this.currentImageSize
            }
        },
        _loadConditionalImage: function(a, c, d) {
            var e = b(new Image);
            e.attr("class", a.attr("class")),
            e.attr("style", a.attr("style")),
            b.each(a.data(),
            function(a, b) {
                e.attr("data-" + a, b)
            }),
            "undefined" != typeof a.attr("width") && e.attr("width", a.attr("width")),
            "undefined" != typeof a.attr("height") && e.attr("height", a.attr("height")),
            "undefined" != typeof a.attr("alt") && e.attr("alt", a.attr("alt")),
            "undefined" != typeof a.attr("title") && e.attr("title", a.attr("title")),
            e.attr("src", c),
            e.insertAfter(a),
            a.remove(),
            a = null,
            "function" == typeof d && d(e)
        },
        destroyConditionalImages: function() {
            this.off("update." + c),
            this.off("sliderResize." + c)
        },
        conditionalImagesDefaults: {
            smallSize: 480,
            mediumSize: 768,
            largeSize: 1024
        }
    };
    b.SliderPro.addModule("ConditionalImages", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "LazyLoading." + b.SliderPro.namespace,
    d = {
        allowLazyLoadingCheck: !0,
        initLazyLoading: function() {
            this.on("sliderResize." + c, b.proxy(this._lazyLoadingOnResize, this)),
            this.on("gotoSlide." + c, b.proxy(this._checkAndLoadVisibleImages, this)),
            this.on("thumbnailsUpdate." + c + " thumbnailsMoveComplete." + c, b.proxy(this._checkAndLoadVisibleThumbnailImages, this))
        },
        _lazyLoadingOnResize: function() {
            var a = this;
            this.allowLazyLoadingCheck !== !1 && (this.allowLazyLoadingCheck = !1, this._checkAndLoadVisibleImages(), 0 !== this.$slider.find(".sp-thumbnail").length && this._checkAndLoadVisibleThumbnailImages(), setTimeout(function() {
                a.allowLazyLoadingCheck = !0
            },
            500))
        },
        _checkAndLoadVisibleImages: function() {
            if (0 !== this.$slider.find(".sp-slide:not([ data-loaded ])").length) {
                var a = this,
                c = this.settings.loop === !0 ? this.middleSlidePosition: this.selectedSlideIndex,
                d = Math.ceil((this.visibleSlidesSize - this.slideSize) / 2 / this.slideSize),
                e = c - d - 1 > 0 ? c - d - 1 : 0,
                f = c + d + 1 < this.getTotalSlides() - 1 ? c + d + 1 : this.getTotalSlides() - 1,
                g = this.slidesOrder.slice(e, f + 1);
                b.each(g,
                function(c, d) {
                    var e = a.slides[d],
                    f = e.$slide;
                    "undefined" == typeof f.attr("data-loaded") && (f.attr("data-loaded", !0), f.find("img[ data-src ]").each(function() {
                        var c = b(this);
                        a._loadImage(c,
                        function(a) {
                            a.hasClass("sp-image") && (e.$mainImage = a, e.resizeMainImage(!0))
                        })
                    }))
                })
            }
        },
        _checkAndLoadVisibleThumbnailImages: function() {
            if (0 !== this.$slider.find(".sp-thumbnail-container:not([ data-loaded ])").length) {
                var a = this,
                c = this.thumbnailsSize / this.thumbnails.length,
                d = Math.floor(Math.abs(this.thumbnailsPosition / c)),
                e = Math.floor(( - this.thumbnailsPosition + this.thumbnailsContainerSize) / c),
                f = this.thumbnails.slice(d, e + 1);
                b.each(f,
                function(c, d) {
                    var e = d.$thumbnailContainer;
                    "undefined" == typeof e.attr("data-loaded") && (e.attr("data-loaded", !0), e.find("img[ data-src ]").each(function() {
                        var c = b(this);
                        a._loadImage(c,
                        function() {
                            d.resizeImage()
                        })
                    }))
                })
            }
        },
        _loadImage: function(a, c) {
            var d = b(new Image);
            d.attr("class", a.attr("class")),
            d.attr("style", a.attr("style")),
            b.each(a.data(),
            function(a, b) {
                d.attr("data-" + a, b)
            }),
            "undefined" != typeof a.attr("width") && d.attr("width", a.attr("width")),
            "undefined" != typeof a.attr("height") && d.attr("height", a.attr("height")),
            "undefined" != typeof a.attr("alt") && d.attr("alt", a.attr("alt")),
            "undefined" != typeof a.attr("title") && d.attr("title", a.attr("title")),
            d.attr("src", a.attr("data-src")),
            d.removeAttr("data-src"),
            d.insertAfter(a),
            a.remove(),
            a = null,
            "function" == typeof c && c(d)
        },
        destroyLazyLoading: function() {
            this.off("update." + c),
            this.off("gotoSlide." + c),
            this.off("sliderResize." + c),
            this.off("thumbnailsUpdate." + c),
            this.off("thumbnailsMoveComplete." + c)
        }
    };
    b.SliderPro.addModule("LazyLoading", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Retina." + b.SliderPro.namespace,
    d = {
        initRetina: function() {
            this._isRetina() !== !1 && ("undefined" != typeof this._loadImage ? this._loadImage = this._loadRetinaImage: (this.on("update." + c, b.proxy(this._checkRetinaImages, this)), 0 !== this.$slider.find(".sp-thumbnail").length && this.on("update.Thumbnails." + c, b.proxy(this._checkRetinaThumbnailImages, this))))
        },
        _isRetina: function() {
            return a.devicePixelRatio >= 2 ? !0 : a.matchMedia && a.matchMedia("(-webkit-min-device-pixel-ratio: 2),(min-resolution: 2dppx)").matches ? !0 : !1
        },
        _checkRetinaImages: function() {
            var a = this;
            b.each(this.slides,
            function(c, d) {
                var e = d.$slide;
                "undefined" == typeof e.attr("data-loaded") && (e.attr("data-loaded", !0), e.find("img").each(function() {
                    var c = b(this);
                    a._loadRetinaImage(c,
                    function(a) {
                        a.hasClass("sp-image") && (d.$mainImage = a, d.resizeMainImage(!0))
                    })
                }))
            })
        },
        _checkRetinaThumbnailImages: function() {
            var a = this;
            this.$thumbnails.find(".sp-thumbnail-container").each(function() {
                var c = b(this);
                "undefined" == typeof c.attr("data-loaded") && (c.attr("data-loaded", !0), a._loadRetinaImage(c.find("img")))
            })
        },
        _loadRetinaImage: function(a, c) {
            var d = !1,
            e = "";
            if ("undefined" != typeof a.attr("data-retina") && (d = !0, e = a.attr("data-retina"), a.removeAttr("data-retina")), "undefined" != typeof a.attr("data-src") && (d === !1 && (e = a.attr("data-src")), a.removeAttr("data-src")), "" !== e) {
                var f = b(new Image);
                f.attr("class", a.attr("class")),
                f.attr("style", a.attr("style")),
                b.each(a.data(),
                function(a, b) {
                    f.attr("data-" + a, b)
                }),
                "undefined" != typeof a.attr("width") && f.attr("width", a.attr("width")),
                "undefined" != typeof a.attr("height") && f.attr("height", a.attr("height")),
                "undefined" != typeof a.attr("alt") && f.attr("alt", a.attr("alt")),
                "undefined" != typeof a.attr("title") && f.attr("title", a.attr("title")),
                f.insertAfter(a),
                a.remove(),
                a = null,
                f.attr("src", e),
                "function" == typeof c && c(f)
            }
        },
        destroyRetina: function() {
            this.off("update." + c),
            this.off("update.Thumbnails." + c)
        }
    };
    b.SliderPro.addModule("Retina", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Layers." + b.SliderPro.namespace,
    d = {
        layersGotoSlideReference: null,
        waitForLayersTimer: null,
        initLayers: function() {
            this.on("update." + c, b.proxy(this._layersOnUpdate, this)),
            this.on("sliderResize." + c, b.proxy(this._layersOnResize, this)),
            this.on("gotoSlide." + c, b.proxy(this._layersOnGotoSlide, this))
        },
        _layersOnUpdate: function() {
            var a = this;
            b.each(this.slides,
            function(a, c) {
                var d = c.$slide;
                this.$slide.find(".sp-layer:not([ data-init ])").each(function() {
                    var a = new f(b(this));
                    "undefined" == typeof c.layers && (c.layers = []),
                    c.layers.push(a),
                    b(this).hasClass("sp-static") === !1 && ("undefined" == typeof c.animatedLayers && (c.animatedLayers = []), c.animatedLayers.push(a)),
                    b(this).appendTo(d)
                })
            }),
            this.settings.waitForLayers === !0 && (clearTimeout(this.waitForLayersTimer), this.waitForLayersTimer = setTimeout(function() {
                a.layersGotoSlideReference = a.gotoSlide,
                a.gotoSlide = a._layersGotoSlide
            },
            1))
        },
        _layersOnResize: function() {
            var a, c, d = this,
            e = this.settings.autoScaleLayers;
            return this.settings.autoScaleLayers === !1 ? void this.showLayers(this.selectedSlideIndex) : ( - 1 === this.settings.autoScaleReference ? "string" == typeof this.settings.width && -1 !== this.settings.width.indexOf("%") ? e = !1 : a = parseInt(this.settings.width, 10) : a = this.settings.autoScaleReference, c = e === !0 && this.slideWidth < a ? d.slideWidth / a: 1, b.each(this.slides,
            function(a, d) {
                "undefined" != typeof d.layers && b.each(d.layers,
                function(a, b) {
                    b.scale(c)
                })
            }), void this.showLayers(this.selectedSlideIndex))
        },
        _layersGotoSlide: function(a) {
            var b = this,
            d = this.slides[this.selectedSlideIndex].animatedLayers;
            this.$slider.hasClass("sp-swiping") || "undefined" == typeof d || 0 === d.length ? this.layersGotoSlideReference(a) : (this.on("hideLayersComplete." + c,
            function() {
                b.off("hideLayersComplete." + c),
                b.layersGotoSlideReference(a)
            }), this.hideLayers(this.selectedSlideIndex))
        },
        _layersOnGotoSlide: function() {
            this.previousSlideIndex !== this.selectedSlideIndex && this.hideLayers(this.previousSlideIndex),
            this.showLayers(this.selectedSlideIndex)
        },
        showLayers: function(a) {
            var c = this,
            d = this.slides[a].animatedLayers,
            e = 0;
            "undefined" != typeof d && b.each(d,
            function(a, f) {
                f.isVisible() === !0 ? (e++, e === d.length && (c.trigger({
                    type: "showLayersComplete",
                    index: a
                }), b.isFunction(c.settings.showLayersComplete) && c.settings.showLayersComplete.call(c, {
                    type: "showLayersComplete",
                    index: a
                }))) : f.show(function() {
                    e++,
                    e === d.length && (c.trigger({
                        type: "showLayersComplete",
                        index: a
                    }), b.isFunction(c.settings.showLayersComplete) && c.settings.showLayersComplete.call(c, {
                        type: "showLayersComplete",
                        index: a
                    }))
                })
            })
        },
        hideLayers: function(a) {
            var c = this,
            d = this.slides[a].animatedLayers,
            e = 0;
            "undefined" != typeof d && b.each(d,
            function(a, f) {
                f.isVisible() === !1 ? (e++, e === d.length && (c.trigger({
                    type: "hideLayersComplete",
                    index: a
                }), b.isFunction(c.settings.hideLayersComplete) && c.settings.hideLayersComplete.call(c, {
                    type: "hideLayersComplete",
                    index: a
                }))) : f.hide(function() {
                    e++,
                    e === d.length && (c.trigger({
                        type: "hideLayersComplete",
                        index: a
                    }), b.isFunction(c.settings.hideLayersComplete) && c.settings.hideLayersComplete.call(c, {
                        type: "hideLayersComplete",
                        index: a
                    }))
                })
            })
        },
        destroyLayers: function() {
            this.off("update." + c),
            this.off("resize." + c),
            this.off("gotoSlide." + c),
            this.off("hideLayersComplete." + c)
        },
        layersDefaults: {
            waitForLayers: !1,
            autoScaleLayers: !0,
            autoScaleReference: -1,
            showLayersComplete: function() {},
            hideLayersComplete: function() {}
        }
    },
    e = a.SliderProSlide.prototype.destroy;
    a.SliderProSlide.prototype.destroy = function() {
        "undefined" != typeof this.layers && (b.each(this.layers,
        function(a, b) {
            b.destroy()
        }), this.layers.length = 0),
        "undefined" != typeof this.animatedLayers && (this.animatedLayers.length = 0),
        e.apply(this)
    };
    var f = function(a) {
        this.$layer = a,
        this.visible = !1,
        this.styled = !1,
        this.data = null,
        this.position = null,
        this.horizontalProperty = null,
        this.verticalProperty = null,
        this.horizontalPosition = null,
        this.verticalPosition = null,
        this.scaleRatio = 1,
        this.supportedAnimation = SliderProUtils.getSupportedAnimation(),
        this.vendorPrefix = SliderProUtils.getVendorPrefix(),
        this.transitionEvent = SliderProUtils.getTransitionEvent(),
        this.stayTimer = null,
        this._init()
    };
    f.prototype = {
        _init: function() {
            this.$layer.attr("data-init", !0),
            this.$layer.hasClass("sp-static") ? this._setStyle() : this.$layer.css({
                visibility: "hidden",
                display: "none"
            })
        },
        _setStyle: function() {
            this.styled = !0,
            this.$layer.css("display", ""),
            this.data = this.$layer.data(),
            "undefined" != typeof this.data.width && this.$layer.css("width", this.data.width),
            "undefined" != typeof this.data.height && this.$layer.css("height", this.data.height),
            "undefined" != typeof this.data.depth && this.$layer.css("z-index", this.data.depth),
            this.position = this.data.position ? this.data.position.toLowerCase() : "topleft",
            this.horizontalProperty = -1 !== this.position.indexOf("right") ? "right": -1 !== this.position.indexOf("left") ? "left": "center",
            this.verticalProperty = -1 !== this.position.indexOf("bottom") ? "bottom": -1 !== this.position.indexOf("top") ? "top": "center",
            this._setPosition(),
            this.scale(this.scaleRatio)
        },
        _setPosition: function() {
            var a = this.$layer.attr("style");
            this.horizontalPosition = "undefined" != typeof this.data.horizontal ? this.data.horizontal: 0,
            this.verticalPosition = "undefined" != typeof this.data.vertical ? this.data.vertical: 0,
            "center" === this.horizontalProperty ? (("undefined" == typeof a || "undefined" != typeof a && -1 === a.indexOf("width")) && (this.$layer.css("white-space", "nowrap"), this.$layer.css("width", this.$layer.outerWidth(!0))), this.$layer.css({
                marginLeft: "auto",
                marginRight: "auto",
                left: this.horizontalPosition,
                right: 0
            })) : this.$layer.css(this.horizontalProperty, this.horizontalPosition),
            "center" === this.verticalProperty ? (("undefined" == typeof a || "undefined" != typeof a && -1 === a.indexOf("height")) && (this.$layer.css("white-space", "nowrap"), this.$layer.css("height", this.$layer.outerHeight(!0))), this.$layer.css({
                marginTop: "auto",
                marginBottom: "auto",
                top: this.verticalPosition,
                bottom: 0
            })) : this.$layer.css(this.verticalProperty, this.verticalPosition)
        },
        scale: function(a) {
            if (!this.$layer.hasClass("sp-no-scale") && (this.scaleRatio = a, this.styled !== !1)) {
                var b = "center" === this.horizontalProperty ? "left": this.horizontalProperty,
                c = "center" === this.verticalProperty ? "top": this.verticalProperty,
                d = {};
                d[this.vendorPrefix + "transform-origin"] = this.horizontalProperty + " " + this.verticalProperty,
                d[this.vendorPrefix + "transform"] = "scale(" + this.scaleRatio + ")",
                "string" != typeof this.horizontalPosition && (d[b] = this.horizontalPosition * this.scaleRatio),
                "string" != typeof this.verticalPosition && (d[c] = this.verticalPosition * this.scaleRatio),
                "string" == typeof this.data.width && -1 !== this.data.width.indexOf("%") && (d.width = (parseInt(this.data.width, 10) / this.scaleRatio).toString() + "%"),
                "string" == typeof this.data.height && -1 !== this.data.height.indexOf("%") && (d.height = (parseInt(this.data.height, 10) / this.scaleRatio).toString() + "%"),
                this.$layer.css(d)
            }
        },
        show: function(a) {
            if (this.visible !== !0) {
                this.visible = !0,
                this.styled === !1 && this._setStyle();
                var b = this,
                c = "undefined" != typeof this.data.showOffset ? this.data.showOffset: 50,
                d = "undefined" != typeof this.data.showDuration ? this.data.showDuration / 1e3: .4,
                e = "undefined" != typeof this.data.showDelay ? this.data.showDelay: 10,
                f = "undefined" != typeof b.data.stayDuration ? parseInt(b.data.stayDuration, 10) : -1;
                if ("javascript" === this.supportedAnimation) this.$layer.stop().delay(e).css({
                    opacity: 0,
                    visibility: "visible"
                }).animate({
                    opacity: 1
                },
                1e3 * d,
                function() { - 1 !== f && (b.stayTimer = setTimeout(function() {
                        b.hide(),
                        b.stayTimer = null
                    },
                    f)),
                    "undefined" != typeof a && a()
                });
                else {
                    var g = {
                        opacity: 0,
                        visibility: "visible"
                    },
                    h = {
                        opacity: 1
                    },
                    i = "";
                    g[this.vendorPrefix + "transform"] = "scale(" + this.scaleRatio + ")",
                    h[this.vendorPrefix + "transform"] = "scale(" + this.scaleRatio + ")",
                    h[this.vendorPrefix + "transition"] = "opacity " + d + "s",
                    "undefined" != typeof this.data.showTransition && ("left" === this.data.showTransition ? i = c + "px, 0": "right" === this.data.showTransition ? i = "-" + c + "px, 0": "up" === this.data.showTransition ? i = "0, " + c + "px": "down" === this.data.showTransition && (i = "0, -" + c + "px"), g[this.vendorPrefix + "transform"] += "css-3d" === this.supportedAnimation ? " translate3d(" + i + ", 0)": " translate(" + i + ")", h[this.vendorPrefix + "transform"] += "css-3d" === this.supportedAnimation ? " translate3d(0, 0, 0)": " translate(0, 0)", h[this.vendorPrefix + "transition"] += ", " + this.vendorPrefix + "transform " + d + "s"),
                    this.$layer.on(this.transitionEvent,
                    function(c) {
                        c.target === c.currentTarget && (b.$layer.off(b.transitionEvent).css(b.vendorPrefix + "transition", ""), -1 !== f && (b.stayTimer = setTimeout(function() {
                            b.hide(),
                            b.stayTimer = null
                        },
                        f)), "undefined" != typeof a && a())
                    }),
                    this.$layer.css(g),
                    setTimeout(function() {
                        b.$layer.css(h)
                    },
                    e)
                }
            }
        },
        hide: function(a) {
            if (this.visible !== !1) {
                var c = this,
                d = "undefined" != typeof this.data.hideOffset ? this.data.hideOffset: 50,
                e = "undefined" != typeof this.data.hideDuration ? this.data.hideDuration / 1e3: .4,
                f = "undefined" != typeof this.data.hideDelay ? this.data.hideDelay: 10;
                if (this.visible = !1, null !== this.stayTimer && clearTimeout(this.stayTimer), "javascript" === this.supportedAnimation) this.$layer.stop().delay(f).animate({
                    opacity: 0
                },
                1e3 * e,
                function() {
                    b(this).css("visibility", "hidden"),
                    "undefined" != typeof a && a()
                });
                else {
                    var g = "",
                    h = {
                        opacity: 0
                    };
                    h[this.vendorPrefix + "transform"] = "scale(" + this.scaleRatio + ")",
                    h[this.vendorPrefix + "transition"] = "opacity " + e + "s",
                    "undefined" != typeof this.data.hideTransition && ("left" === this.data.hideTransition ? g = "-" + d + "px, 0": "right" === this.data.hideTransition ? g = d + "px, 0": "up" === this.data.hideTransition ? g = "0, -" + d + "px": "down" === this.data.hideTransition && (g = "0, " + d + "px"), h[this.vendorPrefix + "transform"] += "css-3d" === this.supportedAnimation ? " translate3d(" + g + ", 0)": " translate(" + g + ")", h[this.vendorPrefix + "transition"] += ", " + this.vendorPrefix + "transform " + e + "s"),
                    this.$layer.on(this.transitionEvent,
                    function(b) {
                        b.target === b.currentTarget && (c.$layer.off(c.transitionEvent).css(c.vendorPrefix + "transition", ""), c.visible === !1 && c.$layer.css("visibility", "hidden"), "undefined" != typeof a && a())
                    }),
                    setTimeout(function() {
                        c.$layer.css(h)
                    },
                    f)
                }
            }
        },
        isVisible: function() {
            return this.visible === !1 || this.$layer.is(":hidden") ? !1 : !0
        },
        destroy: function() {
            this.$layer.removeAttr("style"),
            this.$layer.removeAttr("data-init")
        }
    },
    b.SliderPro.addModule("Layers", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Fade." + b.SliderPro.namespace,
    d = {
        fadeGotoSlideReference: null,
        initFade: function() {
            this.on("update." + c, b.proxy(this._fadeOnUpdate, this))
        },
        _fadeOnUpdate: function() {
            this.settings.fade === !0 && (this.fadeGotoSlideReference = this.gotoSlide, this.gotoSlide = this._fadeGotoSlide)
        },
        _fadeGotoSlide: function(a) {
            if (a !== this.selectedSlideIndex) if (this.$slider.hasClass("sp-swiping")) this.fadeGotoSlideReference(a);
            else {
                var c, d, e = this,
                f = a;
                b.each(this.slides,
                function(a, b) {
                    var g = b.getIndex(),
                    h = b.$slide;
                    g === f ? (h.css({
                        opacity: 0,
                        left: 0,
                        top: 0,
                        "z-index": 20
                    }), c = h) : g === e.selectedSlideIndex ? (h.css({
                        opacity: 1,
                        left: 0,
                        top: 0,
                        "z-index": 10
                    }), d = h) : h.css("visibility", "hidden")
                }),
                this.previousSlideIndex = this.selectedSlideIndex,
                this.selectedSlideIndex = a,
                e.settings.loop === !0 && e._updateSlidesOrder(),
                this._moveTo(this.visibleOffset, !0),
                this.settings.fadeOutPreviousSlide === !0 && this._fadeSlideTo(d, 0),
                this._fadeSlideTo(c, 1,
                function() {
                    b.each(e.slides,
                    function(a, b) {
                        var c = b.$slide;
                        c.css({
                            visibility: "",
                            opacity: "",
                            "z-index": ""
                        })
                    }),
                    e._resetSlidesPosition(),
                    e.trigger({
                        type: "gotoSlideComplete",
                        index: a,
                        previousIndex: e.previousSlideIndex
                    }),
                    b.isFunction(e.settings.gotoSlideComplete) && e.settings.gotoSlideComplete.call(e, {
                        type: "gotoSlideComplete",
                        index: a,
                        previousIndex: e.previousSlideIndex
                    })
                }),
                this.settings.autoHeight === !0 && this._resizeHeight(),
                this.trigger({
                    type: "gotoSlide",
                    index: a,
                    previousIndex: this.previousSlideIndex
                }),
                b.isFunction(this.settings.gotoSlide) && this.settings.gotoSlide.call(this, {
                    type: "gotoSlide",
                    index: a,
                    previousIndex: this.previousSlideIndex
                })
            }
        },
        _fadeSlideTo: function(a, b, c) {
            var d = this;
            "css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation ? (setTimeout(function() {
                var c = {
                    opacity: b
                };
                c[d.vendorPrefix + "transition"] = "opacity " + d.settings.fadeDuration / 1e3 + "s",
                a.css(c)
            },
            1), a.on(this.transitionEvent,
            function(b) {
                b.target === b.currentTarget && (a.off(d.transitionEvent), a.css(d.vendorPrefix + "transition", ""), "function" == typeof c && c())
            })) : a.stop().animate({
                opacity: b
            },
            this.settings.fadeDuration,
            function() {
                "function" == typeof c && c()
            })
        },
        destroyFade: function() {
            this.off("update." + c),
            null !== this.fadeGotoSlideReference && (this.gotoSlide = this.fadeGotoSlideReference)
        },
        fadeDefaults: {
            fade: !1,
            fadeOutPreviousSlide: !0,
            fadeDuration: 500
        }
    };
    b.SliderPro.addModule("Fade", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "TouchSwipe." + b.SliderPro.namespace,
    d = {
        isTouchSupport: !1,
        touchStartPoint: {
            x: 0,
            y: 0
        },
        touchEndPoint: {
            x: 0,
            y: 0
        },
        touchDistance: {
            x: 0,
            y: 0
        },
        touchStartPosition: 0,
        isTouchMoving: !1,
        touchSwipeEvents: {
            startEvent: "",
            moveEvent: "",
            endEvent: ""
        },
        initTouchSwipe: function() {
            this.settings.touchSwipe !== !1 && (this.isTouchSupport = "ontouchstart" in a, this.isTouchSupport === !0 ? (this.touchSwipeEvents.startEvent = "touchstart", this.touchSwipeEvents.moveEvent = "touchmove", this.touchSwipeEvents.endEvent = "touchend") : (this.touchSwipeEvents.startEvent = "mousedown", this.touchSwipeEvents.moveEvent = "mousemove", this.touchSwipeEvents.endEvent = "mouseup"), this.$slidesMask.on(this.touchSwipeEvents.startEvent + "." + c, b.proxy(this._onTouchStart, this)), this.$slidesMask.on("dragstart." + c,
            function(a) {
                a.preventDefault()
            }), this.$slidesMask.addClass("sp-grab"))
        },
        _onTouchStart: function(a) {
            if (! (b(a.target).closest(".sp-selectable").length >= 1)) {
                var d = this.isTouchSupport ? a.originalEvent.touches[0] : a.originalEvent;
                this.isTouchSupport === !1 && a.preventDefault(),
                b(a.target).parents(".sp-slide").find("a").one("click." + c,
                function(a) {
                    a.preventDefault()
                }),
                this.touchStartPoint.x = d.pageX || d.clientX,
                this.touchStartPoint.y = d.pageY || d.clientY,
                this.touchStartPosition = this.slidesPosition,
                this.touchDistance.x = this.touchDistance.y = 0,
                this.$slides.hasClass("sp-animated") && (this.isTouchMoving = !0, this._stopMovement(), this.touchStartPosition = this.slidesPosition),
                this.$slidesMask.on(this.touchSwipeEvents.moveEvent + "." + c, b.proxy(this._onTouchMove, this)),
                b(document).on(this.touchSwipeEvents.endEvent + "." + this.uniqueId + "." + c, b.proxy(this._onTouchEnd, this)),
                this.$slidesMask.removeClass("sp-grab").addClass("sp-grabbing"),
                this.$slider.addClass("sp-swiping")
            }
        },
        _onTouchMove: function(a) {
            var b = this.isTouchSupport ? a.originalEvent.touches[0] : a.originalEvent;
            this.isTouchMoving = !0,
            this.touchEndPoint.x = b.pageX || b.clientX,
            this.touchEndPoint.y = b.pageY || b.clientY,
            this.touchDistance.x = this.touchEndPoint.x - this.touchStartPoint.x,
            this.touchDistance.y = this.touchEndPoint.y - this.touchStartPoint.y;
            var c = "horizontal" === this.settings.orientation ? this.touchDistance.x: this.touchDistance.y,
            d = "horizontal" === this.settings.orientation ? this.touchDistance.y: this.touchDistance.x;
            Math.abs(c) > Math.abs(d) && (a.preventDefault(), this.settings.loop === !1 && (this.slidesPosition > this.touchStartPosition && 0 === this.selectedSlideIndex || this.slidesPosition < this.touchStartPosition && this.selectedSlideIndex === this.getTotalSlides() - 1) && (c = .2 * c), this._moveTo(this.touchStartPosition + c, !0))
        },
        _onTouchEnd: function(a) {
            var d = this,
            e = "horizontal" === this.settings.orientation ? this.touchDistance.x: this.touchDistance.y;
            if (this.$slidesMask.off(this.touchSwipeEvents.moveEvent + "." + c), b(document).off(this.touchSwipeEvents.endEvent + "." + this.uniqueId + "." + c), this.$slidesMask.removeClass("sp-grabbing").addClass("sp-grab"), (this.isTouchMoving === !1 || this.isTouchMoving === !0 && Math.abs(this.touchDistance.x) < 10 && Math.abs(this.touchDistance.y) < 10) && (b(a.target).parents(".sp-slide").find("a").off("click." + c), this.$slider.removeClass("sp-swiping")), setTimeout(function() {
                d.$slider.removeClass("sp-swiping")
            },
            1), this.isTouchMoving !== !1) {
                this.isTouchMoving = !1,
                b(a.target).parents(".sp-slide").one("click",
                function(a) {
                    a.preventDefault()
                });
                var f = -parseInt(this.$slides.find(".sp-slide").eq(this.selectedSlideIndex).css(this.positionProperty), 10) + this.visibleOffset;
                if (Math.abs(e) < this.settings.touchSwipeThreshold) this._moveTo(f);
                else {
                    var g = e / (this.slideSize + this.settings.slideDistance);
                    g = parseInt(g, 10) + (g > 0 ? 1 : -1);
                    var h = this.slidesOrder[b.inArray(this.selectedSlideIndex, this.slidesOrder) - g];
                    this.settings.loop === !0 ? this.gotoSlide(h) : "undefined" != typeof h ? this.gotoSlide(h) : this._moveTo(f)
                }
            }
        },
        destroyTouchSwipe: function() {
            this.$slidesMask.off(this.touchSwipeEvents.startEvent + "." + c),
            this.$slidesMask.off(this.touchSwipeEvents.moveEvent + "." + c),
            this.$slidesMask.off("dragstart." + c),
            b(document).off(this.touchSwipeEvents.endEvent + "." + this.uniqueId + "." + c),
            this.$slidesMask.removeClass("sp-grab")
        },
        touchSwipeDefaults: {
            touchSwipe: !0,
            touchSwipeThreshold: 50
        }
    };
    b.SliderPro.addModule("TouchSwipe", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Caption." + b.SliderPro.namespace,
    d = {
        $captionContainer: null,
        captionContent: "",
        initCaption: function() {
            this.on("update." + c, b.proxy(this._captionOnUpdate, this)),
            this.on("gotoSlide." + c, b.proxy(this._updateCaptionContent, this))
        },
        _captionOnUpdate: function() {
            this.$captionContainer = this.$slider.find(".sp-caption-container"),
            this.$slider.find(".sp-caption").length && 0 === this.$captionContainer.length && (this.$captionContainer = b('<div class="sp-caption-container"></div>').appendTo(this.$slider), this._updateCaptionContent()),
            this.$slides.find(".sp-caption").each(function() {
                b(this).css("display", "none")
            })
        },
        _updateCaptionContent: function() {
            var a = this,
            b = this.$slider.find(".sp-slide").eq(this.selectedSlideIndex).find(".sp-caption"),
            c = 0 !== b.length ? b.html() : "";
            this.settings.fadeCaption === !0 ? "" !== this.captionContent ? (0 === parseFloat(this.$captionContainer.css("opacity"), 10) && (this.$captionContainer.css(this.vendorPrefix + "transition", ""), this.$captionContainer.css("opacity", 1)), this._fadeCaptionTo(0,
            function() {
                a.captionContent = c,
                "" !== c ? (a.$captionContainer.html(a.captionContent), a._fadeCaptionTo(1)) : a.$captionContainer.empty()
            })) : (this.captionContent = c, this.$captionContainer.html(this.captionContent), this.$captionContainer.css("opacity", 0), this._fadeCaptionTo(1)) : (this.captionContent = c, this.$captionContainer.html(this.captionContent))
        },
        _fadeCaptionTo: function(a, b) {
            var c = this;
            "css-3d" === this.supportedAnimation || "css-2d" === this.supportedAnimation ? (setTimeout(function() {
                var b = {
                    opacity: a
                };
                b[c.vendorPrefix + "transition"] = "opacity " + c.settings.captionFadeDuration / 1e2 + "s",
                c.$captionContainer.css(b)
            },
            1), this.$captionContainer.on(this.transitionEvent,
            function(a) {
                a.target === a.currentTarget && (c.$captionContainer.off(c.transitionEvent), c.$captionContainer.css(c.vendorPrefix + "transition", ""), "function" == typeof b && b())
            })) : this.$captionContainer.stop().animate({
                opacity: a
            },
            this.settings.captionFadeDuration,
            function() {
                "function" == typeof b && b()
            })
        },
        destroyCaption: function() {
            this.off("update." + c),
            this.off("gotoSlide." + c),
            this.$captionContainer.remove(),
            this.$slider.find(".sp-caption").each(function() {
                b(this).css("display", "")
            })
        },
        captionDefaults: {
            fadeCaption: !0,
            captionFadeDuration: 500
        }
    };
    b.SliderPro.addModule("Caption", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "DeepLinking." + b.SliderPro.namespace,
    d = {
        initDeepLinking: function() {
            var d = this,
            e = !0;
            this.on("init." + c,
            function() {
                d._gotoHash(a.location.hash)
            }),
            this.on("gotoSlide." + c,
            function(b) {
                e = !1,
                d.settings.updateHash === !0 && (a.location.hash = d.$slider.attr("id") + "/" + b.index)
            }),
            b(a).on("hashchange." + this.uniqueId + "." + c,
            function() {
                e === !0 && d._gotoHash(a.location.hash),
                e = !0
            })
        },
        _parseHash: function(a) {
            if ("" !== a) {
                a = a.substring(1);
                var b = a.split("/"),
                c = b.pop(),
                d = a.slice(0, -c.toString().length - 1);
                if (this.$slider.attr("id") === d) return {
                    sliderID: d,
                    slideId: c
                }
            }
            return ! 1
        },
        _gotoHash: function(a) {
            var b = this._parseHash(a);
            if (b !== !1) {
                var c = b.slideId,
                d = parseInt(c, 10);
                if (isNaN(d)) {
                    var e = this.$slider.find(".sp-slide#" + c).index(); - 1 !== e && this.gotoSlide(e)
                } else this.gotoSlide(d)
            }
        },
        destroyDeepLinking: function() {
            this.off("init." + c),
            this.off("gotoSlide." + c),
            b(a).off("hashchange." + this.uniqueId + "." + c)
        },
        deepLinkingDefaults: {
            updateHash: !1
        }
    };
    b.SliderPro.addModule("DeepLinking", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Autoplay." + b.SliderPro.namespace,
    d = {
        autoplayTimer: null,
        isTimerRunning: !1,
        isTimerPaused: !1,
        initAutoplay: function() {
            this.on("update." + c, b.proxy(this._autoplayOnUpdate, this))
        },
        _autoplayOnUpdate: function() {
            this.settings.autoplay === !0 ? (this.on("gotoSlide." + c, b.proxy(this._autoplayOnGotoSlide, this)), this.on("mouseenter." + c, b.proxy(this._autoplayOnMouseEnter, this)), this.on("mouseleave." + c, b.proxy(this._autoplayOnMouseLeave, this)), this.startAutoplay()) : (this.off("gotoSlide." + c), this.off("mouseenter." + c), this.off("mouseleave." + c), this.stopAutoplay())
        },
        _autoplayOnGotoSlide: function() {
            this.isTimerRunning === !0 && this.stopAutoplay(),
            this.isTimerPaused === !1 && this.startAutoplay()
        },
        _autoplayOnMouseEnter: function() { ! this.isTimerRunning || "pause" !== this.settings.autoplayOnHover && "stop" !== this.settings.autoplayOnHover || (this.stopAutoplay(), this.isTimerPaused = !0)
        },
        _autoplayOnMouseLeave: function() {
            this.settings.autoplay === !0 && this.isTimerRunning === !1 && "stop" !== this.settings.autoplayOnHover && (this.startAutoplay(), this.isTimerPaused = !1)
        },
        startAutoplay: function() {
            var a = this;
            this.isTimerRunning = !0,
            this.autoplayTimer = setTimeout(function() {
                "normal" === a.settings.autoplayDirection ? a.nextSlide() : "backwards" === a.settings.autoplayDirection && a.previousSlide()
            },
            this.settings.autoplayDelay)
        },
        stopAutoplay: function() {
            this.isTimerRunning = !1,
            clearTimeout(this.autoplayTimer)
        },
        destroyAutoplay: function() {
            clearTimeout(this.autoplayTimer),
            this.off("update." + c),
            this.off("gotoSlide." + c),
            this.off("mouseenter." + c),
            this.off("mouseleave." + c)
        },
        autoplayDefaults: {
            autoplay: !0,
            autoplayDelay: 5e3,
            autoplayDirection: "normal",
            autoplayOnHover: "pause"
        }
    };
    b.SliderPro.addModule("Autoplay", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Keyboard." + b.SliderPro.namespace,
    d = {
        initKeyboard: function() {
            var a = this,
            d = !1;
            this.settings.keyboard !== !1 && (this.$slider.on("focus." + c,
            function() {
                d = !0
            }), this.$slider.on("blur." + c,
            function() {
                d = !1
            }), b(document).on("keydown." + this.uniqueId + "." + c,
            function(b) { (a.settings.keyboardOnlyOnFocus !== !0 || d !== !1) && (37 === b.which ? a.previousSlide() : 39 === b.which ? a.nextSlide() : 13 === b.which && a.$slider.find(".sp-slide").eq(a.selectedSlideIndex).find(".sp-image-container a")[0].click())
            }))
        },
        destroyKeyboard: function() {
            this.$slider.off("focus." + c),
            this.$slider.off("blur." + c),
            b(document).off("keydown." + this.uniqueId + "." + c)
        },
        keyboardDefaults: {
            keyboard: !0,
            keyboardOnlyOnFocus: !1
        }
    };
    b.SliderPro.addModule("Keyboard", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "FullScreen." + b.SliderPro.namespace,
    d = {
        isFullScreen: !1,
        $fullScreenButton: null,
        sizeBeforeFullScreen: {},
        initFullScreen: function() { (document.fullscreenEnabled || document.webkitFullscreenEnabled || document.mozFullScreenEnabled || document.msFullscreenEnabled) && this.on("update." + c, b.proxy(this._fullScreenOnUpdate, this))
        },
        _fullScreenOnUpdate: function() {
            this.settings.fullScreen === !0 && null === this.$fullScreenButton ? this._addFullScreen() : this.settings.fullScreen === !1 && null !== this.$fullScreenButton && this._removeFullScreen(),
            this.settings.fullScreen === !0 && (this.settings.fadeFullScreen === !0 ? this.$fullScreenButton.addClass("sp-fade-full-screen") : this.settings.fadeFullScreen === !1 && this.$fullScreenButton.removeClass("sp-fade-full-screen"))
        },
        _addFullScreen: function() {
            this.$fullScreenButton = b('<div class="sp-full-screen-button"></div>').appendTo(this.$slider),
            this.$fullScreenButton.on("click." + c, b.proxy(this._onFullScreenButtonClick, this)),
            document.addEventListener("fullscreenchange", b.proxy(this._onFullScreenChange, this)),
            document.addEventListener("mozfullscreenchange", b.proxy(this._onFullScreenChange, this)),
            document.addEventListener("webkitfullscreenchange", b.proxy(this._onFullScreenChange, this)),
            document.addEventListener("MSFullscreenChange", b.proxy(this._onFullScreenChange, this))
        },
        _removeFullScreen: function() {
            null !== this.$fullScreenButton && (this.$fullScreenButton.off("click." + c), this.$fullScreenButton.remove(), this.$fullScreenButton = null, document.removeEventListener("fullscreenchange", this._onFullScreenChange), document.removeEventListener("mozfullscreenchange", this._onFullScreenChange), document.removeEventListener("webkitfullscreenchange", this._onFullScreenChange), document.removeEventListener("MSFullscreenChange", this._onFullScreenChange))
        },
        _onFullScreenButtonClick: function() {
            this.isFullScreen === !1 ? this.instance.requestFullScreen ? this.instance.requestFullScreen() : this.instance.mozRequestFullScreen ? this.instance.mozRequestFullScreen() : this.instance.webkitRequestFullScreen ? this.instance.webkitRequestFullScreen() : this.instance.msRequestFullscreen && this.instance.msRequestFullscreen() : document.exitFullScreen ? document.exitFullScreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitCancelFullScreen ? document.webkitCancelFullScreen() : document.msExitFullscreen && document.msExitFullscreen()
        },
        _onFullScreenChange: function() {
            this.isFullScreen = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement ? !0 : !1,
            this.isFullScreen === !0 ? (this.sizeBeforeFullScreen = {
                forceSize: this.settings.forceSize,
                autoHeight: this.settings.autoHeight
            },
            this.$slider.addClass("sp-full-screen"), this.settings.forceSize = "fullWindow", this.settings.autoHeight = !1) : (this.$slider.removeClass("sp-full-screen"), this.settings.forceSize = this.sizeBeforeFullScreen.forceSize, this.settings.autoHeight = this.sizeBeforeFullScreen.autoHeight),
            this.resize()
        },
        destroyFullScreen: function() {
            this.off("update." + c),
            this._removeFullScreen()
        },
        fullScreenDefaults: {
            fullScreen: !1,
            fadeFullScreen: !0
        }
    };
    b.SliderPro.addModule("FullScreen", d)
} (window, jQuery),

function(a, b) {
    "use strict";
    var c = "Arrows." + b.SliderPro.namespace,
    d = {
        $arrows: null,
        $previousArrow: null,
        $nextArrow: null,
        initArrows: function() {
            this.on("update." + c, b.proxy(this._arrowsOnUpdate, this)),
            this.on("gotoSlide." + c, b.proxy(this._checkArrowsVisibility, this))
        },
        _arrowsOnUpdate: function() {
            var a = this;
            this.settings.arrows === !0 && null === this.$arrows ? (this.$arrows = b('<div class="sp-arrows"></div>').appendTo(this.$slidesContainer), this.$previousArrow = b('<div class="sp-arrow sp-previous-arrow"></div>').appendTo(this.$arrows), this.$nextArrow = b('<div class="sp-arrow sp-next-arrow"></div>').appendTo(this.$arrows), this.$previousArrow.on("click." + c,
            function() {
                a.previousSlide()
            }), this.$nextArrow.on("click." + c,
            function() {
                a.nextSlide()
            }), this._checkArrowsVisibility()) : this.settings.arrows === !1 && null !== this.$arrows && this._removeArrows(),
            this.settings.arrows === !0 && (this.settings.fadeArrows === !0 ? this.$arrows.addClass("sp-fade-arrows") : this.settings.fadeArrows === !1 && this.$arrows.removeClass("sp-fade-arrows"))
        },
        _checkArrowsVisibility: function() {
            this.settings.arrows !== !1 && this.settings.loop !== !0 && (0 === this.selectedSlideIndex ? this.$previousArrow.css("display", "none") : this.$previousArrow.css("display", "block"), this.selectedSlideIndex === this.getTotalSlides() - 1 ? this.$nextArrow.css("display", "none") : this.$nextArrow.css("display", "block"))
        },
        _removeArrows: function() {
            null !== this.$arrows && (this.$previousArrow.off("click." + c), this.$nextArrow.off("click." + c), this.$arrows.remove(), this.$arrows = null)
        },
        destroyArrows: function() {
            this._removeArrows(),
            this.off("update." + c),
            this.off("gotoSlide." + c)
        },
        arrowsDefaults: {
            arrows: !1,
            fadeArrows: !0
        }
    };
    b.SliderPro.addModule("Arrows", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "ThumbnailTouchSwipe." + b.SliderPro.namespace,
    d = {
        isThumbnailTouchSupport: !1,
        thumbnailTouchStartPoint: {
            x: 0,
            y: 0
        },
        thumbnailTouchEndPoint: {
            x: 0,
            y: 0
        },
        thumbnailTouchDistance: {
            x: 0,
            y: 0
        },
        thumbnailTouchStartPosition: 0,
        isThumbnailTouchMoving: !1,
        isThumbnailTouchSwipe: !1,
        thumbnailTouchSwipeEvents: {
            startEvent: "",
            moveEvent: "",
            endEvent: ""
        },
        initThumbnailTouchSwipe: function() {
            this.on("update." + c, b.proxy(this._thumbnailTouchSwipeOnUpdate, this))
        },
        _thumbnailTouchSwipeOnUpdate: function() {
            this.isThumbnailScroller !== !1 && (this.settings.thumbnailTouchSwipe === !0 && this.isThumbnailTouchSwipe === !1 && (this.isThumbnailTouchSwipe = !0, this.isThumbnailTouchSupport = "ontouchstart" in a, this.isThumbnailTouchSupport === !0 ? (this.thumbnailTouchSwipeEvents.startEvent = "touchstart", this.thumbnailTouchSwipeEvents.moveEvent = "touchmove", this.thumbnailTouchSwipeEvents.endEvent = "touchend") : (this.thumbnailTouchSwipeEvents.startEvent = "mousedown", this.thumbnailTouchSwipeEvents.moveEvent = "mousemove", this.thumbnailTouchSwipeEvents.endEvent = "mouseup"), this.$thumbnails.on(this.thumbnailTouchSwipeEvents.startEvent + "." + c, b.proxy(this._onThumbnailTouchStart, this)), this.$thumbnails.on("dragstart." + c,
            function(a) {
                a.preventDefault()
            }), this.$thumbnails.addClass("sp-grab")), b.each(this.thumbnails,
            function(a, b) {
                b.off("thumbnailClick")
            }))
        },
        _onThumbnailTouchStart: function(a) {
            if (! (b(a.target).closest(".sp-selectable").length >= 1)) {
                var d = this.isThumbnailTouchSupport ? a.originalEvent.touches[0] : a.originalEvent;
                this.isThumbnailTouchSupport === !1 && a.preventDefault(),
                b(a.target).parents(".sp-thumbnail-container").find("a").one("click." + c,
                function(a) {
                    a.preventDefault()
                }),
                this.thumbnailTouchStartPoint.x = d.pageX || d.clientX,
                this.thumbnailTouchStartPoint.y = d.pageY || d.clientY,
                this.thumbnailTouchStartPosition = this.thumbnailsPosition,
                this.thumbnailTouchDistance.x = this.thumbnailTouchDistance.y = 0,
                this.$thumbnails.hasClass("sp-animated") && (this.isThumbnailTouchMoving = !0, this._stopThumbnailsMovement(), this.thumbnailTouchStartPosition = this.thumbnailsPosition),
                this.$thumbnails.on(this.thumbnailTouchSwipeEvents.moveEvent + "." + c, b.proxy(this._onThumbnailTouchMove, this)),
                b(document).on(this.thumbnailTouchSwipeEvents.endEvent + "." + this.uniqueId + "." + c, b.proxy(this._onThumbnailTouchEnd, this)),
                this.$thumbnails.removeClass("sp-grab").addClass("sp-grabbing"),
                this.$thumbnailsContainer.addClass("sp-swiping")
            }
        },
        _onThumbnailTouchMove: function(a) {
            var b = this.isThumbnailTouchSupport ? a.originalEvent.touches[0] : a.originalEvent;
            this.isThumbnailTouchMoving = !0,
            this.thumbnailTouchEndPoint.x = b.pageX || b.clientX,
            this.thumbnailTouchEndPoint.y = b.pageY || b.clientY,
            this.thumbnailTouchDistance.x = this.thumbnailTouchEndPoint.x - this.thumbnailTouchStartPoint.x,
            this.thumbnailTouchDistance.y = this.thumbnailTouchEndPoint.y - this.thumbnailTouchStartPoint.y;
            var c = "horizontal" === this.thumbnailsOrientation ? this.thumbnailTouchDistance.x: this.thumbnailTouchDistance.y,
            d = "horizontal" === this.thumbnailsOrientation ? this.thumbnailTouchDistance.y: this.thumbnailTouchDistance.x;
            if (Math.abs(c) > Math.abs(d)) {
                if (a.preventDefault(), this.thumbnailsPosition >= 0) {
                    var e = -this.thumbnailTouchStartPosition;
                    c = e + .2 * (c - e)
                } else if (this.thumbnailsPosition <= -this.thumbnailsSize + this.thumbnailsContainerSize) {
                    var f = this.thumbnailsSize - this.thumbnailsContainerSize + this.thumbnailTouchStartPosition;
                    c = -f + .2 * (c + f)
                }
                this._moveThumbnailsTo(this.thumbnailTouchStartPosition + c, !0)
            }
        },
        _onThumbnailTouchEnd: function(a) {
            {
                var d = this;
                "horizontal" === this.thumbnailsOrientation ? this.thumbnailTouchDistance.x: this.thumbnailTouchDistance.y
            }
            if (this.$thumbnails.off(this.thumbnailTouchSwipeEvents.moveEvent + "." + c), b(document).off(this.thumbnailTouchSwipeEvents.endEvent + "." + this.uniqueId + "." + c), this.$thumbnails.removeClass("sp-grabbing").addClass("sp-grab"), this.isThumbnailTouchMoving === !1 || this.isThumbnailTouchMoving === !0 && Math.abs(this.thumbnailTouchDistance.x) < 10 && Math.abs(this.thumbnailTouchDistance.y) < 10) {
                var e = b(a.target).hasClass("sp-thumbnail-container") ? b(a.target) : b(a.target).parents(".sp-thumbnail-container"),
                f = e.index();
                return void(0 !== b(a.target).parents("a").length ? (b(a.target).parents("a").off("click." + c), this.$thumbnailsContainer.removeClass("sp-swiping")) : f !== this.selectedThumbnailIndex && -1 !== f && this.gotoSlide(f))
            }
            this.isThumbnailTouchMoving = !1,
            b(a.target).parents(".sp-thumbnail").one("click",
            function(a) {
                a.preventDefault()
            }),
            setTimeout(function() {
                d.$thumbnailsContainer.removeClass("sp-swiping")
            },
            1),
            this.thumbnailsPosition > 0 ? this._moveThumbnailsTo(0) : this.thumbnailsPosition < this.thumbnailsContainerSize - this.thumbnailsSize && this._moveThumbnailsTo(this.thumbnailsContainerSize - this.thumbnailsSize),
            this.trigger({
                type: "thumbnailsMoveComplete"
            }),
            b.isFunction(this.settings.thumbnailsMoveComplete) && this.settings.thumbnailsMoveComplete.call(this, {
                type: "thumbnailsMoveComplete"
            })
        },
        destroyThumbnailTouchSwipe: function() {
            this.off("update." + c),
            this.isThumbnailScroller !== !1 && (this.$thumbnails.off(this.thumbnailTouchSwipeEvents.startEvent + "." + c), this.$thumbnails.off(this.thumbnailTouchSwipeEvents.moveEvent + "." + c), this.$thumbnails.off("dragstart." + c), b(document).off(this.thumbnailTouchSwipeEvents.endEvent + "." + this.uniqueId + "." + c), this.$thumbnails.removeClass("sp-grab"))
        },
        thumbnailTouchSwipeDefaults: {
            thumbnailTouchSwipe: !0
        }
    };
    b.SliderPro.addModule("ThumbnailTouchSwipe", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "ThumbnailArrows." + b.SliderPro.namespace,
    d = {
        $thumbnailArrows: null,
        $previousThumbnailArrow: null,
        $nextThumbnailArrow: null,
        initThumbnailArrows: function() {
            var a = this;
            this.on("update." + c, b.proxy(this._thumbnailArrowsOnUpdate, this)),
            this.on("sliderResize." + c + " thumbnailsMoveComplete." + c,
            function() {
                a.isThumbnailScroller === !0 && a.settings.thumbnailArrows === !0 && a._checkThumbnailArrowsVisibility()
            })
        },
        _thumbnailArrowsOnUpdate: function() {
            var a = this;
            this.isThumbnailScroller !== !1 && (this.settings.thumbnailArrows === !0 && null === this.$thumbnailArrows ? (this.$thumbnailArrows = b('<div class="sp-thumbnail-arrows"></div>').appendTo(this.$thumbnailsContainer), this.$previousThumbnailArrow = b('<div class="sp-thumbnail-arrow sp-previous-thumbnail-arrow"></div>').appendTo(this.$thumbnailArrows), this.$nextThumbnailArrow = b('<div class="sp-thumbnail-arrow sp-next-thumbnail-arrow"></div>').appendTo(this.$thumbnailArrows), this.$previousThumbnailArrow.on("click." + c,
            function() {
                var b = Math.min(0, a.thumbnailsPosition + a.thumbnailsContainerSize);
                a._moveThumbnailsTo(b)
            }), this.$nextThumbnailArrow.on("click." + c,
            function() {
                var b = Math.max(a.thumbnailsContainerSize - a.thumbnailsSize, a.thumbnailsPosition - a.thumbnailsContainerSize);
                a._moveThumbnailsTo(b)
            })) : this.settings.thumbnailArrows === !1 && null !== this.$thumbnailArrows && this._removeThumbnailArrows(), this.settings.thumbnailArrows === !0 && (this.settings.fadeThumbnailArrows === !0 ? this.$thumbnailArrows.addClass("sp-fade-thumbnail-arrows") : this.settings.fadeThumbnailArrows === !1 && this.$thumbnailArrows.removeClass("sp-fade-thumbnail-arrows"), this._checkThumbnailArrowsVisibility()))
        },
        _checkThumbnailArrowsVisibility: function() {
            0 === this.thumbnailsPosition ? this.$previousThumbnailArrow.css("display", "none") : this.$previousThumbnailArrow.css("display", "block"),
            this.thumbnailsPosition === this.thumbnailsContainerSize - this.thumbnailsSize ? this.$nextThumbnailArrow.css("display", "none") : this.$nextThumbnailArrow.css("display", "block")
        },
        _removeThumbnailArrows: function() {
            null !== this.$thumbnailArrows && (this.$previousThumbnailArrow.off("click." + c), this.$nextThumbnailArrow.off("click." + c), this.$thumbnailArrows.remove(), this.$thumbnailArrows = null)
        },
        destroyThumbnailArrows: function() {
            this._removeThumbnailArrows(),
            this.off("update." + c),
            this.off("sliderResize." + c),
            this.off("thumbnailsMoveComplete." + c)
        },
        thumbnailArrowsDefaults: {
            thumbnailArrows: !1,
            fadeThumbnailArrows: !0
        }
    };
    b.SliderPro.addModule("ThumbnailArrows", d)
} (window, jQuery),
function(a, b) {
    "use strict";
    var c = "Video." + b.SliderPro.namespace,
    d = {
        initVideo: function() {
            this.on("update." + c, b.proxy(this._videoOnUpdate, this)),
            this.on("gotoSlideComplete." + c, b.proxy(this._videoOnGotoSlideComplete, this))
        },
        _videoOnUpdate: function() {
            var a = this;
            this.$slider.find(".sp-video").not("a, [data-init]").each(function() {
                var c = b(this);
                a._initVideo(c)
            }),
            this.$slider.find("a.sp-video").not("[data-preinit]").each(function() {
                var c = b(this);
                a._preinitVideo(c)
            })
        },
        _initVideo: function(a) {
            var d = this;
            a.attr("data-init", !0).videoController(),
            a.on("videoPlay." + c,
            function() {
                "stopAutoplay" === d.settings.playVideoAction && "undefined" != typeof d.stopAutoplay && (d.stopAutoplay(), d.settings.autoplay = !1);
                var c = {
                    type: "videoPlay",
                    video: a
                };
                d.trigger(c),
                b.isFunction(d.settings.videoPlay) && d.settings.videoPlay.call(d, c)
            }),
            a.on("videoPause." + c,
            function() {
                "startAutoplay" === d.settings.pauseVideoAction && "undefined" != typeof d.startAutoplay && (d.startAutoplay(), d.settings.autoplay = !0);
                var c = {
                    type: "videoPause",
                    video: a
                };
                d.trigger(c),
                b.isFunction(d.settings.videoPause) && d.settings.videoPause.call(d, c)
            }),
            a.on("videoEnded." + c,
            function() {
                "startAutoplay" === d.settings.endVideoAction && "undefined" != typeof d.startAutoplay ? (d.startAutoplay(), d.settings.autoplay = !0) : "nextSlide" === d.settings.endVideoAction ? d.nextSlide() : "replayVideo" === d.settings.endVideoAction && a.videoController("replay");
                var c = {
                    type: "videoEnd",
                    video: a
                };
                d.trigger(c),
                b.isFunction(d.settings.videoEnd) && d.settings.videoEnd.call(d, c)
            })
        },
        _preinitVideo: function(a) {
            var d = this;
            a.attr("data-preinit", !0),
            a.on("click." + c,
            function(c) {
                if (!d.$slider.hasClass("sp-swiping")) {
                    c.preventDefault();
                    var e, f, g, h, i, j, k, l = a.attr("href"),
                    m = a.children("img").attr("width"),
                    n = a.children("img").attr("height"); - 1 !== l.indexOf("youtube") || -1 !== l.indexOf("youtu.be") ? f = "youtube": -1 !== l.indexOf("vimeo") && (f = "vimeo"),
                    g = "youtube" === f ? /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/: /http:\/\/(www\.)?vimeo.com\/(\d+)/,
                    h = l.match(g),
                    i = h[2],
                    j = "youtube" === f ? "http://www.youtube.com/embed/" + i + "?enablejsapi=1&wmode=opaque": "http://player.vimeo.com/video/" + i + "?api=1",
                    k = l.split("?")[1],
                    "undefined" != typeof k && (k = k.split("&"), b.each(k,
                    function(a, b) { - 1 === b.indexOf(i) && (j += "&" + b)
                    })),
                    e = b("<iframe></iframe>").attr({
                        src: j,
                        width: m,
                        height: n,
                        "class": a.attr("class"),
                        frameborder: 0
                    }).insertBefore(a),
                    d._initVideo(e),
                    e.videoController("play"),
                    a.css("display", "none")
                }
            })
        },
        _videoOnGotoSlideComplete: function(a) {
            var b = this.$slides.find(".sp-slide").eq(a.previousIndex).find(".sp-video[data-init]");
            if ( - 1 !== a.previousIndex && 0 !== b.length && ("stopVideo" === this.settings.leaveVideoAction ? b.videoController("stop") : "pauseVideo" === this.settings.leaveVideoAction ? b.videoController("pause") : "removeVideo" === this.settings.leaveVideoAction && (0 !== b.siblings("a.sp-video").length ? (b.siblings("a.sp-video").css("display", ""), b.videoController("destroy"), b.remove()) : b.videoController("stop"))), "playVideo" === this.settings.reachVideoAction) {
                var d = this.$slides.find(".sp-slide").eq(a.index).find(".sp-video[data-init]"),
                e = this.$slides.find(".sp-slide").eq(a.index).find(".sp-video[data-preinit]");
                0 !== d.length ? d.videoController("play") : 0 !== e.length && e.trigger("click." + c)
            }
        },
        destroyVideo: function() {
            this.$slider.find(".sp-video[ data-preinit ]").each(function() {
                var a = b(this);
                a.removeAttr("data-preinit"),
                a.off("click." + c)
            }),
            this.$slider.find(".sp-video[ data-init ]").each(function() {
                var a = b(this);
                a.removeAttr("data-init"),
                a.off("Video"),
                a.videoController("destroy")
            }),
            this.off("update." + c),
            this.off("gotoSlideComplete." + c)
        },
        videoDefaults: {
            reachVideoAction: "none",
            leaveVideoAction: "pauseVideo",
            playVideoAction: "stopAutoplay",
            pauseVideoAction: "none",
            endVideoAction: "none",
            videoPlay: function() {},
            videoPause: function() {},
            videoEnd: function() {}
        }
    };
    b.SliderPro.addModule("Video", d)
} (window, jQuery),
function(a) {
    "use strict";
    var b = window.navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? !0 : !1,
    c = function(b, c) {
        this.$video = a(b),
        this.options = c,
        this.settings = {},
        this.player = null,
        this._init()
    };
    c.prototype = {
        _init: function() {
            this.settings = a.extend({},
            this.defaults, this.options);
            var b = this,
            c = a.VideoController.players,
            d = this.$video.attr("id");
            for (var e in c) if ("undefined" != typeof c[e] && c[e].isType(this.$video)) {
                this.player = new c[e](this.$video);
                break
            }
            if (null !== this.player) {
                var f = ["ready", "start", "play", "pause", "ended"];
                a.each(f,
                function(c, e) {
                    var f = "video" + e.charAt(0).toUpperCase() + e.slice(1);
                    b.player.on(e,
                    function() {
                        b.trigger({
                            type: f,
                            video: d
                        }),
                        a.isFunction(b.settings[f]) && b.settings[f].call(b, {
                            type: f,
                            video: d
                        })
                    })
                })
            }
        },
        play: function() {
            b === !0 && this.player.isStarted() === !1 || "playing" === this.player.getState() || this.player.play()
        },
        stop: function() {
            b === !0 && this.player.isStarted() === !1 || "stopped" === this.player.getState() || this.player.stop()
        },
        pause: function() {
            b === !0 && this.player.isStarted() === !1 || "paused" === this.player.getState() || this.player.pause()
        },
        replay: function() { (b !== !0 || this.player.isStarted() !== !1) && this.player.replay()
        },
        on: function(a, b) {
            return this.$video.on(a, b)
        },
        off: function(a) {
            return this.$video.off(a)
        },
        trigger: function(a) {
            return this.$video.triggerHandler(a)
        },
        destroy: function() {
            this.player.isStarted() === !0 && this.stop(),
            this.player.off("ready"),
            this.player.off("start"),
            this.player.off("play"),
            this.player.off("pause"),
            this.player.off("ended"),
            this.$video.removeData("videoController")
        },
        defaults: {
            videoReady: function() {},
            videoStart: function() {},
            videoPlay: function() {},
            videoPause: function() {},
            videoEnded: function() {}
        }
    },
    a.VideoController = {
        players: {},
        addPlayer: function(a, b) {
            this.players[a] = b
        }
    },
    a.fn.videoController = function(b) {
        var d = Array.prototype.slice.call(arguments, 1);
        return this.each(function() {
            if ("undefined" == typeof a(this).data("videoController")) {
                var e = new c(this, b);
                a(this).data("videoController", e)
            } else if ("undefined" != typeof b) {
                var f = a(this).data("videoController");
                "function" == typeof f[b] ? f[b].apply(f, d) : a.error(b + " does not exist in videoController.")
            }
        })
    };
    var d = function(b) {
        this.$video = b,
        this.player = null,
        this.ready = !1,
        this.started = !1,
        this.state = "",
        this.events = a({}),
        this._init()
    };
    d.prototype = {
        _init: function() {},
        play: function() {},
        pause: function() {},
        stop: function() {},
        replay: function() {},
        isType: function() {},
        isReady: function() {
            return this.ready
        },
        isStarted: function() {
            return this.started
        },
        getState: function() {
            return this.state
        },
        on: function(a, b) {
            return this.events.on(a, b)
        },
        off: function(a) {
            return this.events.off(a)
        },
        trigger: function(a) {
            return this.events.triggerHandler(a)
        }
    };
    var e = {
        youtubeAPIAdded: !1,
        youtubeVideos: []
    },
    f = function(b) {
        this.init = !1;
        var c = window.YT && window.YT.Player;
        if ("undefined" != typeof c) d.call(this, b);
        else if (e.youtubeVideos.push({
            video: b,
            scope: this
        }), e.youtubeAPIAdded === !1) {
            e.youtubeAPIAdded = !0;
            var f = document.createElement("script");
            f.src = "http://www.youtube.com/player_api";
            var g = document.getElementsByTagName("script")[0];
            g.parentNode.insertBefore(f, g),
            window.onYouTubePlayerAPIReady = function() {
                a.each(e.youtubeVideos,
                function(a, b) {
                    d.call(b.scope, b.video)
                })
            }
        }
    };
    f.prototype = new d,
    f.prototype.constructor = f,
    a.VideoController.addPlayer("YoutubeVideo", f),
    f.isType = function(a) {
        if (a.is("iframe")) {
            var b = a.attr("src");
            if ( - 1 !== b.indexOf("youtube.com") || -1 !== b.indexOf("youtu.be")) return ! 0
        }
        return ! 1
    },
    f.prototype._init = function() {
        this.init = !0,
        this._setup()
    },
    f.prototype._setup = function() {
        var a = this;
        this.player = new YT.Player(this.$video[0], {
            events: {
                onReady: function() {
                    a.trigger({
                        type: "ready"
                    }),
                    a.ready = !0
                },
                onStateChange: function(b) {
                    switch (b.data) {
                    case YT.PlayerState.PLAYING:
                        a.started === !1 && (a.started = !0, a.trigger({
                            type: "start"
                        })),
                        a.state = "playing",
                        a.trigger({
                            type: "play"
                        });
                        break;
                    case YT.PlayerState.PAUSED:
                        a.state = "paused",
                        a.trigger({
                            type: "pause"
                        });
                        break;
                    case YT.PlayerState.ENDED:
                        a.state = "ended",
                        a.trigger({
                            type: "ended"
                        })
                    }
                }
            }
        })
    },
    f.prototype.play = function() {
        var a = this;
        if (this.ready === !0) this.player.playVideo();
        else var b = setInterval(function() {
            a.ready === !0 && (clearInterval(b), a.player.playVideo())
        },
        100)
    },
    f.prototype.pause = function() {
        b === !0 ? this.stop() : this.player.pauseVideo()
    },
    f.prototype.stop = function() {
        this.player.seekTo(1),
        this.player.stopVideo(),
        this.state = "stopped"
    },
    f.prototype.replay = function() {
        this.player.seekTo(1),
        this.player.playVideo()
    },
    f.prototype.on = function(a, b) {
        var c = this;
        if (this.init === !0) d.prototype.on.call(this, a, b);
        else var e = setInterval(function() {
            c.init === !0 && (clearInterval(e), d.prototype.on.call(c, a, b))
        },
        100)
    };
    var g = {
        vimeoAPIAdded: !1,
        vimeoVideos: []
    },
    h = function(b) {
        if (this.init = !1, "undefined" != typeof window.Froogaloop) d.call(this, b);
        else if (g.vimeoVideos.push({
            video: b,
            scope: this
        }), g.vimeoAPIAdded === !1) {
            g.vimeoAPIAdded = !0;
            var c = document.createElement("script");
            c.src = "http://a.vimeocdn.com/js/froogaloop2.min.js";
            var e = document.getElementsByTagName("script")[0];
            e.parentNode.insertBefore(c, e);
            var f = setInterval(function() {
                "undefined" != typeof window.Froogaloop && (clearInterval(f), a.each(g.vimeoVideos,
                function(a, b) {
                    d.call(b.scope, b.video)
                }))
            },
            100)
        }
    };
    h.prototype = new d,
    h.prototype.constructor = h,
    a.VideoController.addPlayer("VimeoVideo", h),
    h.isType = function(a) {
        if (a.is("iframe")) {
            var b = a.attr("src");
            if ( - 1 !== b.indexOf("vimeo.com")) return ! 0
        }
        return ! 1
    },
    h.prototype._init = function() {
        this.init = !0,
        this._setup()
    },
    h.prototype._setup = function() {
        var a = this;
        this.player = $f(this.$video[0]),
        this.player.addEvent("ready",
        function() {
            a.ready = !0,
            a.trigger({
                type: "ready"
            }),
            a.player.addEvent("play",
            function() {
                a.started === !1 && (a.started = !0, a.trigger({
                    type: "start"
                })),
                a.state = "playing",
                a.trigger({
                    type: "play"
                })
            }),
            a.player.addEvent("pause",
            function() {
                a.state = "paused",
                a.trigger({
                    type: "pause"
                })
            }),
            a.player.addEvent("finish",
            function() {
                a.state = "ended",
                a.trigger({
                    type: "ended"
                })
            })
        })
    },
    h.prototype.play = function() {
        var a = this;
        if (this.ready === !0) this.player.api("play");
        else var b = setInterval(function() {
            a.ready === !0 && (clearInterval(b), a.player.api("play"))
        },
        100)
    },
    h.prototype.pause = function() {
        this.player.api("pause")
    },
    h.prototype.stop = function() {
        this.player.api("seekTo", 0),
        this.player.api("pause"),
        this.state = "stopped"
    },
    h.prototype.replay = function() {
        this.player.api("seekTo", 0),
        this.player.api("play")
    },
    h.prototype.on = function(a, b) {
        var c = this;
        if (this.init === !0) d.prototype.on.call(this, a, b);
        else var e = setInterval(function() {
            c.init === !0 && (clearInterval(e), d.prototype.on.call(c, a, b))
        },
        100)
    };
    var i = function(a) {
        d.call(this, a)
    };
    i.prototype = new d,
    i.prototype.constructor = i,
    a.VideoController.addPlayer("HTML5Video", i),
    i.isType = function(a) {
        return a.is("video") && a.hasClass("video-js") === !1 && a.hasClass("sublime") === !1 ? !0 : !1
    },
    i.prototype._init = function() {
        var a = this;
        this.player = this.$video[0],
        this.ready = !0,
        this.player.addEventListener("play",
        function() {
            a.started === !1 && (a.started = !0, a.trigger({
                type: "start"
            })),
            a.state = "playing",
            a.trigger({
                type: "play"
            })
        }),
        this.player.addEventListener("pause",
        function() {
            a.state = "paused",
            a.trigger({
                type: "pause"
            })
        }),
        this.player.addEventListener("ended",
        function() {
            a.state = "ended",
            a.trigger({
                type: "ended"
            })
        })
    },
    i.prototype.play = function() {
        this.player.play()
    },
    i.prototype.pause = function() {
        this.player.pause()
    },
    i.prototype.stop = function() {
        this.player.currentTime = 0,
        this.player.pause(),
        this.state = "stopped"
    },
    i.prototype.replay = function() {
        this.player.currentTime = 0,
        this.player.play()
    };
    var j = function(a) {
        d.call(this, a)
    };
    j.prototype = new d,
    j.prototype.constructor = j,
    a.VideoController.addPlayer("VideoJSVideo", j),
    j.isType = function(a) {
        return "undefined" == typeof a.attr("data-videojs-id") && !a.hasClass("video-js") || "undefined" == typeof videojs ? !1 : !0
    },
    j.prototype._init = function() {
        var a = this,
        b = this.$video.attr(this.$video.hasClass("video-js") ? "id": "data-videojs-id");
        this.player = videojs(b),
        this.player.ready(function() {
            a.ready = !0,
            a.trigger({
                type: "ready"
            }),
            a.player.on("play",
            function() {
                a.started === !1 && (a.started = !0, a.trigger({
                    type: "start"
                })),
                a.state = "playing",
                a.trigger({
                    type: "play"
                })
            }),
            a.player.on("pause",
            function() {
                a.state = "paused",
                a.trigger({
                    type: "pause"
                })
            }),
            a.player.on("ended",
            function() {
                a.state = "ended",
                a.trigger({
                    type: "ended"
                })
            })
        })
    },
    j.prototype.play = function() {
        this.player.play()
    },
    j.prototype.pause = function() {
        this.player.pause()
    },
    j.prototype.stop = function() {
        this.player.currentTime(0),
        this.player.pause(),
        this.state = "stopped"
    },
    j.prototype.replay = function() {
        this.player.currentTime(0),
        this.player.play()
    };
    var k = function(a) {
        d.call(this, a)
    };
    k.prototype = new d,
    k.prototype.constructor = k,
    a.VideoController.addPlayer("SublimeVideo", k),
    k.isType = function(a) {
        return a.hasClass("sublime") && "undefined" != typeof sublime ? !0 : !1
    },
    k.prototype._init = function() {
        var a = this;
        sublime.ready(function() {
            a.player = sublime.player(a.$video.attr("id")),
            a.ready = !0,
            a.trigger({
                type: "ready"
            }),
            a.player.on("play",
            function() {
                a.started === !1 && (a.started = !0, a.trigger({
                    type: "start"
                })),
                a.state = "playing",
                a.trigger({
                    type: "play"
                })
            }),
            a.player.on("pause",
            function() {
                a.state = "paused",
                a.trigger({
                    type: "pause"
                })
            }),
            a.player.on("stop",
            function() {
                a.state = "stopped",
                a.trigger({
                    type: "stop"
                })
            }),
            a.player.on("end",
            function() {
                a.state = "ended",
                a.trigger({
                    type: "ended"
                })
            })
        })
    },
    k.prototype.play = function() {
        this.player.play()
    },
    k.prototype.pause = function() {
        this.player.pause()
    },
    k.prototype.stop = function() {
        this.player.stop()
    },
    k.prototype.replay = function() {
        this.player.stop(),
        this.player.play()
    };
    var l = function(a) {
        d.call(this, a)
    };
    l.prototype = new d,
    l.prototype.constructor = l,
    a.VideoController.addPlayer("JWPlayerVideo", l),
    l.isType = function(a) {
        return "undefined" == typeof a.attr("data-jwplayer-id") && !a.hasClass("jwplayer") && 0 === a.find("object[data*='jwplayer']").length || "undefined" == typeof jwplayer ? !1 : !0
    },
    l.prototype._init = function() {
        var a, b = this;
        this.$video.hasClass("jwplayer") ? a = this.$video.attr("id") : "undefined" != typeof this.$video.attr("data-jwplayer-id") ? a = this.$video.attr("data-jwplayer-id") : 0 !== this.$video.find("object[data*='jwplayer']").length && (a = this.$video.find("object").attr("id")),
        this.player = jwplayer(a),
        this.player.onReady(function() {
            b.ready = !0,
            b.trigger({
                type: "ready"
            }),
            b.player.onPlay(function() {
                b.started === !1 && (b.started = !0, b.trigger({
                    type: "start"
                })),
                b.state = "playing",
                b.trigger({
                    type: "play"
                })
            }),
            b.player.onPause(function() {
                b.state = "paused",
                b.trigger({
                    type: "pause"
                })
            }),
            b.player.onComplete(function() {
                b.state = "ended",
                b.trigger({
                    type: "ended"
                })
            })
        })
    },
    l.prototype.play = function() {
        this.player.play(!0)
    },
    l.prototype.pause = function() {
        this.player.pause(!0)
    },
    l.prototype.stop = function() {
        this.player.stop(),
        this.state = "stopped"
    },
    l.prototype.replay = function() {
        this.player.seek(0),
        this.player.play(!0)
    }
} (jQuery);