// Avoid `console` errors in browsers that lack a console. (function () { var method; var noop = function () { }; var methods = [ 'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error', 'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log', 'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd', 'timeStamp', 'trace', 'warn' ]; var length = methods.length; var console = (window.console = window.console || {}); while (length--) { method = methods[length]; // Only stub undefined methods. if (!console[method]) { console[method] = noop; } } }()); var isMobile = { Android: function () { return navigator.userAgent.match(/Android/i); }, BlackBerry: function () { return navigator.userAgent.match(/BlackBerry/i); }, iOS: function () { return navigator.userAgent.match(/iPhone|iPad|iPod/i); }, Opera: function () { return navigator.userAgent.match(/Opera Mini/i); }, Windows: function () { return navigator.userAgent.match(/IEMobile/i); }, any: function () { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); } }; /* ===================================================== */ /* Accordian Plugin /* ===================================================== */ (function ($) { $.fn.accordian = function () { $(this).each(function () { var CreateAccordian = new Accordian($(this)); }); }; var Accordian = function (accordian) { var btnWrap = accordian.find('.trigger'), content = accordian.find('.content'); var fullWidth = content.outerWidth(true); btnWrap.wrapInner(""); var button = btnWrap.find('a'); button.append('+'); content.hide().first().show(); button.first().toggleClass('current'); button.css({'cursor': 'pointer'}); button.mouseup(function () { $(this).blur(); }); // Styling for ipad hover button.on('touchstart', function () { $(this).addClass('touch-hover'); }); button.click(function () { $(this).parent().siblings().find('a').removeClass('current'); $(this).parent().siblings('.content').slideUp('normal'); $(this).addClass('current').parent().next().slideDown('normal'); return false; }); return this; }; })(jQuery); // ---------------------------------- // -- Alerts -- // ---------------------------------- (function ($) { $.fn.alerts = function () { var button = $(this).prepend('') $('.alert-button').click(function () { $(this).parent().animate({ opacity: "toggle" }); return false; }); }; })(jQuery); /* ===================================================== */ /* Countdown */ /* ===================================================== */ (function ($) { $.fn.countdownTimer = function () { $(this).each(function () { var count_down_date = $(this).data('date'); var countdownTimerObj = new countdownTimer(count_down_date, this); }); }; function countdownTimer(time, counter) { var end = new Date(time); var _second = 1000; var _minute = _second * 60; var _hour = _minute * 60; var _day = _hour * 24; var timer; $(counter).prepend(':::'); function interval() { var now = new Date(); var distance = end - now; if (distance < 0) { clearInterval(timer); $(counter).text('Very Soon'); return; } var days = Math.floor(distance / _day); var hours = Math.floor((distance % _day) / _hour); var minutes = Math.floor((distance % _hour) / _minute); var seconds = Math.floor((distance % _minute) / _second); $(counter).find('.days').text(("00" + days).slice(-3)); $(counter).find('.hours').text(("0" + hours).slice(-2)); $(counter).find('.minutes').text(("0" + minutes).slice(-2)); $(counter).find('.seconds').text(("0" + seconds).slice(-2)); } return setInterval(interval, 1000); } })(jQuery); (function ($) { $.fn.newsletter = function (options) { $(this).each(function () { var defaults = { inlineErrors: true, formName: $(this) }, options_set = $.extend(defaults, options), newsletter = new newsletterFnc(options_set); }); }; var newsletterFnc = function (options) { var formName = options.formName; // Add spinner var email = $(formName.find('.newsletter-email')); // Validate Email function IsEmail(email) { var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; return regex.test(email); } // Validation on keyup function keyupval() { if (IsEmail(email.val())) { // Validation pass // remove error and keybinding email.parent().children('span').remove('.inline-error'); email.removeClass("error"); email.unbind('keyup'); } } // Keyup var emailErrorMsg = 'Your email is not valid'; // Submit, validate then send to php formName.submit(function () { formName.find('.alert').remove(); // Remove previous php msg email = formName.find('.newsletter-email'); if (!IsEmail(email.val())) { // Validation fail // Add error class email.addClass("error"); // If inline error msg span has not been appended, add it if (email.parent().find(".inline-error").length === 0 && options.inlineErrors) { email.parent().append('' + emailErrorMsg + ''); } email.keyup(keyupval); // Add keyup validation } else { var data = { 'action': 'newsletter', // Callbackname 'formData': formName.serializeArray(), }; // Add spinner and disable button formName.find('.subscribe').prop('disabled', true); formName.find('.subscribe').prepend(''); formName.find('.subscribe i').css({ 'margin-right': '5px' }); if( !plugins_ajax_object.ajax_url ) { console.error('Url is not defined'); return; } $.ajax({ type: "POST", url: plugins_ajax_object.ajax_url, data: data, success: function (html) { // Prepend returned msg formName.after(html); formName.remove('.icon-spinner-6'); formName.slideUp(1000); } // Success }); // Ajax } // Else return false; }); // Submit }; // Validation })(jQuery); /* ===================================================== */ /* Smooth Scrolling */ /* ===================================================== */ (function ($) { "use strict"; /** * * @param { options } * scrollSpeed * offset * func */ $.smooth = function (options) { var defaults = { scrollSpeed: 2000, offset: 0, func: function () {} }; // Merge options var settings = $.extend({}, defaults, options); var pos; // Get scroll to position if ($.isNumeric(settings.elem)) { pos = settings.elem; } else { // Exit if we can't find the element if ( 0 === $(settings.elem).length ) { console.warn( 'Cannot find Item with ID', settings.elem ); return; } pos = $(settings.elem).offset().top; } // Animate $('html, body').animate({ scrollTop: pos + settings.offset }, settings.scrollSpeed, function () { settings.func(); }); }; })(jQuery); /* ===================================================== */ /* Tabs Pluin /* ===================================================== */ (function ($) { $.fn.tabs = function (options) { $(this).each(function () { var CreateTabs = new Tabs($(this), options); }); }; var Tabs = function (container, options) { var contents = $(container.find('.content')); var btnWrap = $(container.find('.trigger')); this.container = container; container.prepend(btnWrap); if (btnWrap.find("a").length < 1) { btnWrap.wrapInner(""); } if (options.type === 'side') { btnWrap.wrapAll("
"); contents.wrapAll(""); } var btn = btnWrap.find('a'); btnWrap.last().css('margin-right', '0'); btn.first().addClass('current'); // Hide content, show first contents.hide().first().show(); btn.data('container', container); // Remove focus after click, keyboard accessibility uneffected btn.mouseup(function () { $(this).blur(); }); btn.click(function () { var container = $(this).data('container'); container = $(container); var tabNum = $(this).parent().index(); container.find('a').removeClass('current'); $(this).addClass('current'); container.css('minHeight', container.height()); container.find('.content').fadeOut().hide(); container.find('.tab' + tabNum).fadeIn(function () { container.css('minHeight', '0'); }); // container.css( 'height', 'auto' ); return false; }); return this; }; })(jQuery); /* ===================================================== */ /* Toggle Plugin /* ===================================================== */ (function ($) { $.fn.toggle = function () { $(this).each(function () { var createToggles = new Toggle($(this)); }); }; var Toggle = function (accordian) { var toggleContent = accordian.find('.content'), btnWrap = accordian.find('.trigger'); var fullWidth = toggleContent.innerWidth(true); btnWrap.wrapInner(""); var btn = btnWrap.find('a'); btn.append('+'); toggleContent.css('width', fullWidth).hide().first().show(); btn.first().toggleClass('current'); // Remove focus after click, keyboard accessibility uneffected btn.mouseup(function () { $(this).blur(); }); // Styling for ipad hover btn.on('touchstart', function () { $(this).addClass('touch-hover'); }); btn.click(function (e) { if (e.which == 13) { } $(this).toggleClass('current').parent().next().slideToggle('normal'); return false; }); }; })(jQuery);