(function ($) { "use strict"; var modelApp = { /* --------------------------------------------- Menu --------------------------------------------- */ menu: function() { var $combinedmenu = $("#main-nav .menu-list").clone(); $combinedmenu.appendTo("#mobile-main-nav #main-mobile-container"); var $submenu = $("#mobile-main-nav .menu-list li, .overlay .overlay-menu").has(".sub-menu"), $submenuSelector = $(".sub-menu"), $mobileNavSelector = $("#main-mobile-container .main-navigation"), $mobileNavOverlay = $(".mobile-menu-main .menucontent.overlaybg, .mobile-menu-main .slideLeft"), $mobileMenuContent = $(".mobile-menu-main .menucontent"), $mobileNavBar = $("#navtoggole-main"), $mobileNav = $(".menu-mobile"), $menuWrap = $(".menu-list"); if ($submenu) { var $hasSubmenuIcon = $(""); $submenuSelector.prev().append($hasSubmenuIcon); } // Main Navigation Mobile // -------------------------------- $mobileNavSelector.addClass("slideLeft"); var menuopen_main = function() { $mobileNavOverlay.removeClass("menuclose").addClass("menuopen"); }, menuclose_main = function() { $mobileNavOverlay.removeClass("menuopen").addClass("menuclose"); }; $mobileNavBar.on("click", function() { if ($mobileMenuContent.hasClass("menuopen")) { $(menuclose_main); } else { $(menuopen_main); } }); $mobileMenuContent.on("click", function() { if ($mobileMenuContent.hasClass("menuopen")) { $(menuclose_main); } }); // Sub Menu // -------------------------------- var $mobileExtendBtn = $(""); $submenu.prepend($mobileExtendBtn); $mobileNav.on("click", function() { $menuWrap.slideToggle("slow"); }); var $mobileSubMenuOpen = $(".menu-click"); $mobileSubMenuOpen.on("click", function() { var $this = $(this); $this.siblings(".sub-menu").slideToggle("slow"); $this.children(".menu-arrow").toggleClass("menu-extend"); }); var $mobileSubMenuOpen2 = $(".overlay .overlay-menu .fa-angle-down"); $mobileSubMenuOpen2.on("click", function() { var $this = $(this); $this.parent().next(".sub-menu").slideToggle("slow"); $this.toggleClass("menu-extend"); }); // For Last menu // -------------------------------- var $fullMenuElement = $(".navigation .mainmenu li"); $fullMenuElement.on("mouseenter mouseleave", function(e) { var $this = $(this); if ($("ul", $this).length) { var elm = $("ul:first", $this), off = elm.offset(), l = off.left, w = elm.width(), docW = $(".header-bottom > .container").width(), isEntirelyVisible = (l + w <= docW); if (!isEntirelyVisible) { $this.addClass("right-side-menu"); } else { $this.removeClass("right-side-menu"); } } }); var $dropdownSelector = $(".dropdown-menu input, .dropdown-menu label, .dropdown-menu select"); $dropdownSelector.click(function(e) { e.stopPropagation(); }); }, /* --------------------------------------------- Magnifying Pop-up --------------------------------------------- */ popup_window: function() { var $videoPopUp = $(".video-pop-up"), $imagePopUp = $(".image-pop-up"); $videoPopUp.magnificPopup({ disableOn: 700, type: "iframe", mainClass: "mfp-fade", preloader: false, removalDelay: 300, fixedContentPos: false }); $imagePopUp.magnificPopup({ type: "image", mainClass: "mfp-fade" }); }, /* --------------------------------------------- Header Overlay --------------------------------------------- */ header_overlay: function() { var overlay = document.querySelector( 'div.overlay' ), closeBttn = overlay.querySelector( 'button.overlay-close' ), transEndEventNames = { 'WebkitTransition': 'webkitTransitionEnd', 'MozTransition': 'transitionend', 'OTransition': 'oTransitionEnd', 'msTransition': 'MSTransitionEnd', 'transition': 'transitionend' }, transEndEventName = transEndEventNames[ Modernizr.prefixed( 'transition' ) ], support = { transitions : Modernizr.csstransitions }; function toggleOverlay() { if( classie.has( overlay, 'open' ) ) { classie.remove( overlay, 'open' ); var onEndTransitionFn = function( ev ) { if( support.transitions ) { if( ev.propertyName !== 'visibility' ) return; this.removeEventListener( transEndEventName, onEndTransitionFn ); } classie.remove( overlay, 'close' ); }; if( support.transitions ) { overlay.addEventListener( transEndEventName, onEndTransitionFn ); } else { onEndTransitionFn(); } } else if( !classie.has( overlay, 'close' ) ) { classie.add( overlay, 'open' ); } } var $triggerOverlay = $(".trigger-overlay"); $triggerOverlay.on("click", function() { toggleOverlay(); }); closeBttn.addEventListener( 'click', toggleOverlay ); var $mainSearch = $(".main-search"); $mainSearch.on("click", function(e) { e.preventDefault(); var $searchOverlay = $(".overlay-search"); $searchOverlay.addClass("open"); }); var $overlayClose = $(".overlay-search .overlay-close"); $overlayClose.on("click", function(e) { e.preventDefault(); var $searchOverlay = $(".overlay-search"); $searchOverlay.removeClass("open"); }); }, /* --------------------------------------------- Gallery Style Two Carousel --------------------------------------------- */ gallary: function () { var $sync1 = $(".full-view"), $sync2 = $(".list-view"), duration = 300; $sync1 .owlCarousel({ items: 1, nav : false, owl2row: "true", owl2rowTarget: "item" }) .on("changed.owl.carousel", function (e) { var syncedPosition = syncPosition(e.item.index); if ( syncedPosition !== "stayStill" ) { $sync2.trigger("to.owl.carousel", [syncedPosition, duration, true]); } }); $sync2 .owlCarousel({ margin: 15, items: 6, nav: false, center: false, dots: false, responsive:{ 280:{ items: 2 }, 500:{ items: 2 }, 600:{ items: 3 }, 800:{ items: 4 }, 1000:{ items: 6 }, 1200:{ items: 6 }, 1400:{ items: 6 }, } }) .on("initialized.owl.carousel", function() { addClassCurrent(0); }) .on("click", ".owl-item", function () { $sync1.trigger("to.owl.carousel", [$(this).index(), duration, true]); }); function addClassCurrent( index ) { $sync2 .find(".owl-item.active") .removeClass("current") .eq( index ) .addClass("current"); } addClassCurrent(0); function syncPosition( index ) { addClassCurrent( index ); var itemsNo = $sync2.find(".owl-item").length; var visibleItemsNo = $sync2.find(".owl-item.active").length; if (itemsNo === visibleItemsNo) { return "stayStill"; } var visibleCurrentIndex = $sync2.find(".owl-item.active").index( $sync2.find(".owl-item.current") ); if (visibleCurrentIndex === 0 && index !== 0) { return index - 1; } if (visibleCurrentIndex === (visibleItemsNo - 1) && index !== (itemsNo - 1)) { return index - visibleItemsNo + 2; } return "stayStill"; } }, /* --------------------------------------------- Gallery slider --------------------------------------------- */ gallery: function() { var $gallerySlider = $(".gallery-slider"); $gallerySlider.owlCarousel({ loop:true, items: 3, nav: true, margin: 15, navText: ['', ''], responsive:{ 280:{ items:2 }, 480 : { items: 2 }, 768 : { items: 2 }, 1200 : { items: 3 } } }); }, /* --------------------------------------------- Brand slider --------------------------------------------- */ brand: function() { var $brandSlider = $(".brand-slider"); $brandSlider.owlCarousel({ loop: false, items: 7, margin: 30, nav: false, responsive:{ 280:{ items: 2 }, 480 : { items: 3 }, 768 : { items: 5 }, 1200 : { items: 7 }, 1400 : { items: 7 } } }); }, /* --------------------------------------------- Count To --------------------------------------------- */ count: function() { var $countSelector = $(".stat-count"); if($countSelector.length) { $countSelector.countTo(); } }, /* --------------------------------------------- Mobile Select --------------------------------------------- */ mobileSelect: function() { var $selectSelector = $(".apartment-menu-mobile, .blog-menu-mobile, .about-mobile"); $selectSelector.on("change", function (e) { var url = $(this).val(); if($.isNumeric(url) === true) { var $tabNav = $(".apartment-menu li a, .post-filter-area li a, .about-tab li a"); $tabNav.eq(url).tab('show'); } else { window.location = url; } }); }, /* --------------------------------------------- text-slider --------------------------------------------- */ pogoSlider: function() { var $sliderSelector = $(".pogoSlider"); $sliderSelector.pogoSlider({ autoplay: false, autoplayTimeout: 5000, displayProgess: true, preserveTargetSize: true, targetWidth: 1000, targetHeight: 400, responsive: true, generateNav: false }).data('plugin_pogoSlider'); }, /* --------------------------------------------- slider --------------------------------------------- */ category: function() { var $categorySlider = $(".category-slider"); $categorySlider.owlCarousel({ loop: true, items: 12, nav: true, navText: ['', ''], responsiveClass: true, responsiveRefreshRate: true, responsive:{ 280:{ items: 2 }, 500:{ items: 3 }, 600:{ items: 4 }, 800:{ items: 6 }, 1000:{ items: 6 }, 1200: { items: 9 }, 1400: { items: 12 } } }); }, /* --------------------------------------------- slider --------------------------------------------- */ category_seven: function() { var $categorySliderSeven = $(".category-slider-seven"); $categorySliderSeven.owlCarousel({ loop: true, margin: 0, items: 5, nav: true, navText: ['', ''], responsive:{ 280:{ items:2 }, 480 : { items: 3 }, 768 : { items: 4 }, 1200 : { items: 5 } } }) }, /* --------------------------------------------- testimonial-slider --------------------------------------------- */ testimonial: function() { var $testimonialSlider = $(".testimonial-slider"); $testimonialSlider.owlCarousel({ loop: true, margin: 30, items: 3, responsive:{ 280:{ items: 1 }, 500:{ items: 1 }, 600:{ items: 2 }, 800:{ items: 2 }, 1000:{ items: 3 }, 1200:{ items: 3 }, 1400:{ items: 3 } } }); }, /* --------------------------------------------- Time Count For Coming Soon --------------------------------------------- */ time_count: function() { var $selector = $('.commingsoon-count'); $selector.each(function(){ var $this = $(this), data_year = $this.attr('data-year'), data_month = $this.attr('data-month'), data_day = $this.attr('data-day'), data_hour = $this.attr('data-hour'), data_minutes = $this.attr('data-minutes'); $this.syotimer({ year: data_year, month: data_month, day: data_day, hour: data_hour, minute: data_minutes }); }); }, /* --------------------------------------------- Widget Mobile fix --------------------------------------------- */ widget_mobile: function () { function debouncer(func, timeout) { var timeoutID, timeout = timeout || 500; return function () { var scope = this, args = arguments; clearTimeout(timeoutID); timeoutID = setTimeout(function () { func.apply(scope, Array.prototype.slice.call(args)); }, timeout); }; } function resized() { var $getWidgetTitle = $(".widget .widget-title"), $getWidgetTitleContent, $windowWidthlocal = $(window).width(); if ($windowWidthlocal <= 991) { $getWidgetTitleContent = $getWidgetTitle.parent().nextAll().hide(); $getWidgetTitle.addClass("expand-margin"); $getWidgetTitle.on("click", function(e) { e.stopImmediatePropagation(); var $selfLocal = $(this); $selfLocal.toggleClass("expand"); $selfLocal.parent().nextAll().slideToggle(); return false; }); $getWidgetTitle.each(function(){ var $selfLocal = $(this); $selfLocal.parent().addClass("mb-widget"); }); } else { $getWidgetTitleContent = $getWidgetTitle.parent().nextAll().show(); $getWidgetTitle.removeClass("expand-margin"); $getWidgetTitle.each(function(){ var $selfLocal = $(this); $selfLocal.parent().removeClass("mb-widget"); }); } } resized(); var $windowWidth = $(window).width(), $window = $(window); var prevW = window.innerWidth || $windowWidth; $window.resize(debouncer(function (e) { var currentW = window.innerWidth || $windowWidth; if (currentW !== prevW) { resized(); } prevW = window.innerWidth || $windowWidth; })); //Mobile Responsive var $extendBtn = $(".extend-btn .extend-icon"); $extendBtn.on("click", function(e) { e.preventDefault(); var $self = $(this); $self.parent().prev().toggleClass("mobile-extend"); $self.parent().toggleClass("extend-btn"); $self.toggleClass("up"); }); }, /* --------------------------------------------- IPad Parallax Issue --------------------------------------------- */ ipad_parallax: function() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream || /android/i.test(userAgent) || /windows phone/i.test(userAgent)) { $(".jarallax").each(function(){ var $self = $(this); var $getImage = $self.attr("data-jarallax"); var $objImage = $.parseJSON( $getImage ); $self.css({ "background-image": "url("+ $objImage.imgSrc +")", "background-size": "cover", "background-repeat": "no-repeat", "background-position": "center center" }); }); } }, /* --------------------------------------------- Other Function --------------------------------------------- */ othersFunction: function() { var $apartmentDropdown = $(".apartment-menu .dropdown"); $apartmentDropdown.append(""); var $abailityAreaTwo = $(".availability-area.two table th"); $abailityAreaTwo.append(""); var $mapIframe = $(".map-content, .map-left-content"); $mapIframe .click(function() { var $self = $(this); $self.find("iframe").addClass("clicked"); }) .mouseleave(function(){ var $self = $(this); $self.find("iframe").removeClass("clicked"); }); }, /* --------------------------------------------- Scroll top --------------------------------------------- */ scroll_top: function () { var $bodyElement = $("body"), $window = $(window), $scrollHtml = $(""); $bodyElement.append($scrollHtml); var $scrolltop = $("#scroll-top"); $window.on("scroll", function() { if ($(this).scrollTop() > $(this).height()) { $scrolltop .addClass("btn-show") .removeClass("btn-hide"); } else { $scrolltop .addClass("btn-hide") .removeClass("btn-show"); } }); var $selectorAnchor = $("a[href='#top']"); $selectorAnchor.on("click", function() { $("html, body").animate({ scrollTop: 0 }, "normal"); return false; }); }, /* --------------------------------------------- function initializ --------------------------------------------- */ initializ: function() { modelApp.menu(); modelApp.popup_window(); modelApp.header_overlay(); modelApp.gallary(); modelApp.brand(); modelApp.category(); modelApp.testimonial(); modelApp.mobileSelect(); modelApp.pogoSlider(); modelApp.gallery(); modelApp.count(); modelApp.category_seven(); modelApp.time_count(); modelApp.widget_mobile(); modelApp.ipad_parallax(); modelApp.othersFunction(); modelApp.scroll_top(); } }; /* --------------------------------------------- Document ready function --------------------------------------------- */ $(function() { modelApp.initializ(); }); })(jQuery);