1/* 2 3[Main Script] 4 5Project : CloudSky - Multipurpose Domain, Hosting and WHMCS Template 6Version : 1.5 7Author : ThemeLooks 8Author URI : https://themeforest.net/user/themelooks 9 10*/ 11 12;(function ($) { 13 'use strict'; 14 15 /* ------------------------------------------------------------------------- * 16 * COMMON VARIABLES 17 * ------------------------------------------------------------------------- */ 18 var $wn = $(window), 19 $document = $(document), 20 $body = $('body'), 21 isRTL = $('html').attr('dir') === 'rtl' ? true : false; 22 23 /* ------------------------------------------------------------------------- * 24 * CHECK DATA 25 * ------------------------------------------------------------------------- */ 26 var checkData = function (data, value) { 27 return typeof data === 'undefined' ? value : data; 28 }; 29 30 $(function () { 31 /* ------------------------------------------------------------------------- * 32 * BACKGROUND IMAGE 33 * ------------------------------------------------------------------------- */ 34 var $bgImg = $('[data-bg-img]'); 35 36 $bgImg.css('background-image', function () { 37 return 'url("' + $(this).data('bg-img') + '")'; 38 }).addClass('bg--img').removeAttr('data-bg-img').attr('data-rjs', 2); 39 40 /* ------------------------------------------------------------------------- * 41 * RETINAJS 42 * ------------------------------------------------------------------------- */ 43 $('img').attr('data-rjs', 2); 44 45 retinajs(); 46 47 /* ------------------------------------------------------------------------- * 48 * STICKY 49 * ------------------------------------------------------------------------- */ 50 var $sticky = $('[data-trigger="sticky"]'); 51 52 $sticky.each(function () { 53 $sticky.sticky({ 54 zIndex: 999 55 }); 56 }); 57 58 /* ------------------------------------------------------------------------- * 59 * FORM VALIDATION 60 * ------------------------------------------------------------------------- */ 61 var $formValidation = $('[data-form="validate"]'); 62 63 $formValidation.each(function () { 64 var $t = $(this); 65 66 $t.validate({ 67 errorPlacement: function () { 68 return true; 69 } 70 }); 71 }); 72 73 /* ------------------------------------------------------------------------- * 74 * AJAX FORM 75 * ------------------------------------------------------------------------- */ 76 var $ajaxForm = $('[data-form="ajax"]'); 77 78 $ajaxForm.each(function () { 79 var $form = $(this), 80 $formStatus = $form.find('.status'); 81 82 $form.validate({ 83 errorPlacement: function () { 84 return true; 85 }, 86 submitHandler: function (el) { 87 var $form = $(el), 88 formUrl = $form.attr('action'), 89 formData = $form.serialize(); 90 91 $.post(formUrl, formData, function (res) { 92 $formStatus.show().html(res).delay(3000).fadeOut('show'); 93 }); 94 } 95 }); 96 }); 97 98 /* ------------------------------------------------------------------------- * 99 * COUNTER UP 100 * ------------------------------------------------------------------------- */ 101 var $counterUp = $('[data-trigger="counterUp"]'); 102 103 if ( $counterUp.length ) { 104 $counterUp.counterUp({ 105 delay: 10, 106 time: 1000 107 }); 108 } 109 110 /* -------------------------------------------------------------------------* 111 * COUNTDOWN 112 * -------------------------------------------------------------------------*/ 113 var $countDown = $('[data-countdown]'); 114 115 $countDown.each(function () { 116 var $t = $(this); 117 118 $t.countdown($t.data('countdown'), function(e) { 119 $(this).html( '<ul>' + e.strftime('<li><strong>%D</strong><span>Days</span></li><li><strong>%H</strong><span>Hours</span></li><li><strong>%M</strong><span>Minutes</span></li><li><strong>%S</strong><span>Secounds</span></li>') + '</ul>' ); 120 }); 121 }); 122 123 /* ------------------------------------------------------------------------- * 124 * ZOOM IMAGE 125 * ------------------------------------------------------------------------- */ 126 var $zoomImg = $('[data-trigger="zoom"]'); 127 128 if ( $zoomImg.length ) { 129 $zoomImg.zoom(); 130 } 131 132 /* ------------------------------------------------------------------------- * 133 * SPINNER 134 * ------------------------------------------------------------------------- */ 135 var $spinner = $('[data-trigger="spinner"]'); 136 137 if ( $spinner.length ) { 138 $spinner.spinner(); 139 } 140 141 /* ------------------------------------------------------------------------- * 142 * PRODUCTS SECTION 143 * ------------------------------------------------------------------------- */ 144 var $productRatingSelect = $('#productRatingSelect'); 145 146 if ( $productRatingSelect.length ) { 147 $productRatingSelect.barrating({ 148 theme: 'fontawesome-stars-o', 149 hoverState: false 150 }); 151 } 152 153 var $productImgGallery = $('.product--img-gallery'); 154 155 $productImgGallery.on('shown.bs.tab', '[data-toggle="tab"]', function () { 156 var $t = $(this); 157 158 $t.parents('.owl-carousel').find('a').removeClass('current'); 159 $t.addClass('current'); 160 }); 161 162 /* ------------------------------------------------------------------------- * 163 * CART SECTION 164 * ------------------------------------------------------------------------- */ 165 var $cartItems = $('.cart--items'); 166 167 $cartItems.on('click', '.remove', function (e) { 168 e.preventDefault(); 169 170 e.$el = $(this); 171 e.$parents = e.$el.parent('td').parent('tr'); 172 173 e.$el.fadeOut(function () { 174 if ( e.$parents.index() === 0 && e.$parents.next().length === 0 ) { 175 e.$parents.html('<td colspan="6" class="empty">No products in cart.</td>'); 176 } else { 177 e.$parents.remove(); 178 } 179 }); 180 }); 181 182 /* ------------------------------------------------------------------------- * 183 * CHECKOUT SECTION 184 * ------------------------------------------------------------------------- */ 185 var $checkoutPayment = $('#checkoutPayment'); 186 187 $checkoutPayment.on('click', '[data-toggle="collapse"]', function (e) { 188 if ( !$(this).hasClass('collapsed') ) { 189 e.stopPropagation(); 190 } 191 }); 192 193 /* ------------------------------------------------------------------------- * 194 * OWL CAROUSEL 195 * ------------------------------------------------------------------------- */ 196 var $owlCarousel = $('.owl-carousel'); 197 198 $owlCarousel.each(function () { 199 var $t = $(this); 200 201 $t.owlCarousel({ 202 rtl: isRTL, 203 items: checkData( $t.data('owl-items'), 1 ), 204 margin: checkData( $t.data('owl-margin'), 0 ), 205 loop: checkData( $t.data('owl-loop'), true ), 206 autoplay: checkData( $t.data('owl-autoplay'), true ), 207 smartSpeed: checkData( $t.data('owl-speed'), 2500 ), 208 autoplaySpeed: checkData( $t.data('owl-speed'), 2500 ), 209 mouseDrag: checkData( $t.data('owl-drag'), true ), 210 nav: checkData( $t.data('owl-nav'), false ), 211 navText: ['<i class="fa fa-angle-left"></i>', '<i class="fa fa-angle-right"></i>'], 212 dots: checkData( $t.data('owl-dots'), false ), 213 responsive: checkData( $t.data('owl-responsive'), {} ) 214 }); 215 }); 216 217 /* ------------------------------------------------------------------------- * 218 * DROPDOWN MENU 219 * ------------------------------------------------------------------------- */ 220 var $dropdownMenu = $('.dropdown-menu'); 221 222 $dropdownMenu.on('click', '.dropdown-toggle', function (e) { 223 e.stopPropagation(); 224 e.preventDefault(); 225 226 $(this).parent('.dropdown').toggleClass('open').siblings().removeClass('open'); 227 }); 228 229 /* ------------------------------------------------------------------------- * 230 * HEADER SECTION 231 * ------------------------------------------------------------------------- */ 232 var $header = $('.header--section'), 233 headerAdjust = function () { 234 $header.next().css('padding-top', function (i, value) { 235 var $t = $(this), 236 data = $t.data('padding-top'); 237 238 if ( typeof data === 'undefined' ) { 239 $t.data('padding-top', value); 240 value = parseInt( value, 10 ) + $header.outerHeight(); 241 } else { 242 value = data + $header.outerHeight(); 243 } 244 245 return value; 246 }); 247 }; 248 249 headerAdjust(); 250 $wn.on('resize', headerAdjust); 251 252 /* ------------------------------------------------------------------------- * 253 * BANNER SECTION 254 * ------------------------------------------------------------------------- */ 255 var $banner = $('.banner--section'), 256 bannerHeight = function () { 257 $banner.css('height', function (wn, bn) { 258 wn = $wn.outerHeight(); 259 bn = parseInt( bn, 10 ); 260 261 return wn > bn ? wn : bn; 262 }); 263 }, 264 $bannerItem = $('.banner--item'), 265 bannerItemHeight = function () { 266 $bannerItem.css( 'padding-top', $banner.css('padding-top') ); 267 $banner.css( 'padding-top', 0 ); 268 }; 269 270 bannerHeight(); 271 $wn.on('resize', bannerHeight); 272 273 bannerItemHeight(); 274 $wn.on('resize', bannerItemHeight); 275 276 window.mobilecheck = function () { 277 var check = false;
278 (function (a) { 279 if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) check = true; 280 })(navigator.userAgent || navigator.vendor || window.opera); 281 return check; 282 }; 283 let is_mobile = mobilecheck(); 284 285 if (is_mobile) { 286 //$banner.css('height', $wn.outerHeight() - 1000); 287 } 288 289 /* ------------------------------------------------------------------------- * 290 * FAQ SECTION 291 * ------------------------------------------------------------------------- */ 292 var $faqItems = $('.faq--items'); 293 294 $faqItems.on('click', '[data-toggle="collapse"]', function () { 295 return !$(this).hasClass('collapsed') ? false : ''; 296 }); 297 298 /* ------------------------------------------------------------------------- * 299 * PRICING SECTION 300 * ------------------------------------------------------------------------- */ 301 var $pricingItem = $('.pricing--item'); 302 303 $pricingItem.css('margin-top', function () { 304 var $t = $(this), $parent; 305 306 if ( $t.children('.features').is(':first-child') ) { 307 $parent = $t.parent(); 308 309 $t.addClass('pricing--heading'); 310 $parent.parent().addClass('features--striped'); 311 312 return $parent.siblings().find('.features').position().top - 20; 313 } 314 }); 315 316 /* ------------------------------------------------------------------------- * 317 * VPS PRICING SECTION 318 * ------------------------------------------------------------------------- */ 319 var $vpsPricingSlider = $('.vps--pricing-slider'), 320 $vpsPricingSliderHandle = $vpsPricingSlider.children('.ui-slider-handle'), 321 $vpsPricingFeatureValue = $('.vps--pricing-feature-value'), 322 $vpsPricingPrice = $('.vps--pricing-price span'), 323 $vpsPricingPriceM = $vpsPricingPrice.next(), 324 $vpsPricingOrder = $('.vps--pricing-action .order'), 325 $vpsPricingView = $('.vps--pricing-action .view'), 326 changingVpsPlans; 327 328 changingVpsPlans = function ( res, indx ) { 329 $vpsPricingFeatureValue.empty(); 330 331 for ( var i = 0; i < $vpsPricingFeatureValue.length; i++ ) { 332 $vpsPricingFeatureValue.eq(i).text( res[ indx ][1][i] ); 333 } 334 335 $vpsPricingSliderHandle.html( '<span>' + res[ indx ][0] + '</span>' ); 336 337 $vpsPricingPrice.text( res[ indx ][2] ); 338 $vpsPricingPriceM.text( res[ indx ][3] ); 339 $vpsPricingOrder.attr( 'href', res[ indx ][4] ); 340 $vpsPricingView.attr( 'href', res[ indx ][5] ); 341 }; 342 343 if ( $vpsPricingSlider.length ) { 344 $.getJSON('json/vps-plans.json', function (res) { 345 var vpsData = res; 346 347 $vpsPricingSlider.slider({ 348 range: 'min', 349 min: 0, 350 max: vpsData.vps_plans.length - 1, 351 step: 1, 352 value: vpsData.vps_default_plan, 353 create: function () { 354 changingVpsPlans( vpsData.vps_plans, 1 ); 355 }, 356 slide: function (e, ui) { 357 changingVpsPlans( vpsData.vps_plans, ui.value ); 358 } 359 }); 360 }); 361 } 362 363 $vpsPricingSlider.siblings('.ui-slider-nav').on('click', function () { 364 var $t = $(this), 365 value = $vpsPricingSlider.slider('value'); 366 367 if ( $t.hasClass('ui-slider-next') ) { 368 value++; 369 } else { 370 value--; 371 } 372 373 $vpsPricingSlider.slider('value', value); 374 }); 375 376 /* ------------------------------------------------------------------------- * 377 * MAP 378 * ------------------------------------------------------------------------- */ 379 var $map = $('[data-trigger="map"]'); 380 381 $.fn.initMap = function () { 382 var $el = this, 383 map; 384 385 if ( typeof google !== 'undefined' ) { 386 map = new google.maps.Map($el[0], { 387 center: {lat: $el.data('map-latitude'), lng: $el.data('map-longitude')}, 388 zoom: $el.data('map-zoom'), 389 scrollwheel: false, 390 disableDefaultUI: true, 391 zoomControl: true 392 }); 393 394 if ( typeof $el.data('map-marker') !== 'undefined' ) { 395 var data = $el.data('map-marker'), 396 i = 0; 397 398 for ( i; i < data.length; i++ ) { 399 new google.maps.Marker({ 400 position: {lat: data[i][0], lng: data[i][1]}, 401 map: map, 402 animation: google.maps.Animation.DROP, 403 draggable: true 404 }); 405 } 406 } 407 } 408 }; 409 410 $map.each(function () { 411 $(this).css('min-height', '350px').initMap(); 412 }); 413 414 /* ------------------------------------------------------------------------- * 415 * COOKIE 416 * ------------------------------------------------------------------------- */ 417 var $cookieNotify = $('#cookieNotify'), 418 cookieNotifyString = document.cookie, 419 cookieNotifyRegex = new RegExp('cookieNotify'); 420 421 if ( $cookieNotify.length && !cookieNotifyRegex.test(cookieNotifyString) ) { 422 $cookieNotify.removeClass('hidden'); 423 } 424 425 $cookieNotify.on('click', '[data-dismiss]', function (e) { 426 e.stopPropagation(); 427 e.preventDefault(); 428 $cookieNotify.slideUp('slow'); 429 document.cookie = 'cookieNotify=true';
430 }); 431 432 /* ------------------------------------------------------------------------- * 433 * BACK TO TOP BUTTON 434 * ------------------------------------------------------------------------- */ 435 var $backToTop = $('#backToTop'); 436 437 $backToTop.on('click', 'a', function (e) { 438 e.preventDefault(); 439 440 $('html, body').animate({ 441 scrollTop: 0 442 }, 1200); 443 }); 444 445 /* ------------------------------------------------------------------------- * 446 * COLOR SWITCHER 447 * ------------------------------------------------------------------------- */ 448 if ( typeof $.cColorSwitcher !== "undefined" ) { 449 $.cColorSwitcher({ 450 'switcherTitle': 'Main Colors', 451 'switcherColors': [{ 452 bgColor: '#ff5252', 453 filepath: 'css/colors/theme-color-1.css' 454 }, { 455 bgColor: '#82b440', 456 filepath: 'css/colors/theme-color-2.css' 457 }, { 458 bgColor: '#2683ff', 459 filepath: 'css/colors/theme-color-3.css' 460 }, { 461 bgColor: '#e91e63', 462 filepath: 'css/colors/theme-color-4.css' 463 }, { 464 bgColor: '#f69323', 465 filepath: 'css/colors/theme-color-5.css' 466 }, { 467 bgColor: '#ffcb1a', 468 filepath: 'css/colors/theme-color-6.css' 469 }, { 470 bgColor: '#00b249', 471 filepath: 'css/colors/theme-color-7.css' 472 }, { 473 bgColor: '#d48b91', 474 filepath: 'css/colors/theme-color-8.css' 475 }, { 476 bgColor: '#179ea8', 477 filepath: 'css/colors/theme-color-9.css' 478 }, { 479 bgColor: '#8cbeb2', 480 filepath: 'css/colors/theme-color-10.css' 481 }], 482 'switcherTarget': $('#changeColorScheme') 483 }); 484 } 485 }); 486 487 $wn.on('load', function () { 488 /* ------------------------------------------------------------------------- * 489 * BODY SCROLLING 490 * ------------------------------------------------------------------------- */ 491 var isBodyScrolling = function () { 492 if ( $wn.scrollTop() > 1 ) { 493 $body.addClass('isScrolling'); 494 } else { 495 $body.removeClass('isScrolling'); 496 } 497 }; 498 499 isBodyScrolling(); 500 $wn.on('scroll', isBodyScrolling); 501 502 /* ------------------------------------------------------------------------- * 503 * ADJUST ROW 504 * ------------------------------------------------------------------------- */ 505 var $adjustRow = $('.AdjustRow'); 506 507 if ( $adjustRow.length ) { 508 // $adjustRow.isotope({ 509 // originLeft: isRTL ? false : true, 510 // layoutMode: 'fitRows' 511 // }); 512 } 513 514 /* ------------------------------------------------------------------------- * 515 * GALLERY SECTION 516 * ------------------------------------------------------------------------- */ 517 var $portfolioItems = $('.portfolio--items'), 518 $portfolioFilterMenu = $('.portfolio--filter-menu'); 519 520 if ( $portfolioItems.length ) { 521 $portfolioItems.isotope({ 522 animationEngine: 'best-available', 523 itemSelector: '.portfolio--item', 524 originLeft: isRTL ? false : true, 525 masonry: { 526 columnWidth: '.portfolio--item' 527 } 528 }); 529 } 530 531 $portfolioFilterMenu.on('click', 'li', function (e) { 532 e.preventDefault(); 533 534 var $t = $(this), 535 f = $t.data('target'), 536 s = (f !== '*') ? '[data-cat~="'+ f +'"]' : f; 537 538 $portfolioItems.isotope({ 539 filter: s 540 }); 541 542 $t.addClass('active').siblings().removeClass('active'); 543 }); 544 545 /* ------------------------------------------------------------------------- * 546 * PRELOADER 547 * ------------------------------------------------------------------------- */ 548 var $bodyPreloader = $('#preloader'); 549 550 if ( $bodyPreloader.length ) { 551 $bodyPreloader.fadeOut('slow'); 552 } 553 554 /* ------------------------------------------------------------------------- * 555 * SCROLLING ANIMATIONS 556 * ------------------------------------------------------------------------- */ 557 var $scrollRevealGroup = $('[data-scroll-reveal="group"]'), 558 scrollReveal = ''; 559 560 if ( typeof ScrollReveal === "function" ) { 561 scrollReveal = ScrollReveal(); 562 563 scrollReveal.reveal('[data-scroll-reveal="left"]', {origin: 'left', mobile: false, duration: 8
56300}) 564 scrollReveal.reveal('[data-scroll-reveal="right"]', {origin: 'right', mobile: false, duration: 800}) 565 scrollReveal.reveal('[data-scroll-reveal="bottom"]', {duration: 800}); 566 567 $scrollRevealGroup.each(function () { 568 scrollReveal.reveal($(this).children(), {duration: 800}, 150); 569 }); 570 } 571 }); 572 573})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.