// source --> https://www.wecom.tn/wp-content/plugins/woocommerce/assets/js/frontend/woocommerce.min.js?ver=10.0.3 
function on_keydown_remove_from_cart(e){" "===e.key&&(e.preventDefault(),e.currentTarget.click())}function focus_populate_live_region(){var e=["woocommerce-message","woocommerce-error","wc-block-components-notice-banner"].map(function(e){return"."+e+'[role="alert"]'}).join(", "),o=document.querySelectorAll(e);if(0!==o.length){var t=o[0];t.setAttribute("tabindex","-1");var n=setTimeout(function(){t.focus(),clearTimeout(n)},500)}}function refresh_sorted_by_live_region(){var e=document.querySelector(".woocommerce-result-count");if(e){var o=e.innerHTML;e.setAttribute("aria-hidden","true");var t=setTimeout(function(){e.setAttribute("aria-hidden","false"),e.innerHTML="",e.innerHTML=o,clearTimeout(t)},2e3)}}function on_document_ready(){focus_populate_live_region(),refresh_sorted_by_live_region()}jQuery(function(e){e(".woocommerce-ordering").on("change","select.orderby",function(){e(this).closest("form").trigger("submit")}),e("input.qty:not(.product-quantity input.qty)").each(function(){var o=parseFloat(e(this).attr("min"));o>=0&&parseFloat(e(this).val())<o&&e(this).val(o)});var o="store_notice"+(e(".woocommerce-store-notice").data("noticeId")||"");if("hidden"===Cookies.get(o))e(".woocommerce-store-notice").hide();else{function t(o){["Enter"," "].includes(o.key)&&(o.preventDefault(),e(".woocommerce-store-notice__dismiss-link").click())}e(".woocommerce-store-notice").show(),e(".woocommerce-store-notice__dismiss-link").on("click",function n(r){Cookies.set(o,"hidden",{path:"/"}),e(".woocommerce-store-notice").hide(),r.preventDefault(),e(".woocommerce-store-notice__dismiss-link").off("click",n).off("keydown",t)}).on("keydown",t)}e(".woocommerce-input-wrapper span.description").length&&e(document.body).on("click",function(){e(".woocommerce-input-wrapper span.description:visible").prop("aria-hidden",!0).slideUp(250)}),e(".woocommerce-input-wrapper").on("click",function(e){e.stopPropagation()}),e(".woocommerce-input-wrapper :input").on("keydown",function(o){var t=e(this).parent().find("span.description");if(27===o.which&&t.length&&t.is(":visible"))return t.prop("aria-hidden",!0).slideUp(250),o.preventDefault(),!1}).on("click focus",function(){var o=e(this).parent(),t=o.find("span.description");o.addClass("currentTarget"),e(".woocommerce-input-wrapper:not(.currentTarget) span.description:visible").prop("aria-hidden",!0).slideUp(250),t.length&&t.is(":hidden")&&t.prop("aria-hidden",!1).slideDown(250),o.removeClass("currentTarget")}),e.scroll_to_notices=function(o){o.length&&e("html, body").animate({scrollTop:o.offset().top-100},1e3)},e('.woocommerce form .woocommerce-Input[type="password"]').wrap('<span class="password-input"></span>'),e(".woocommerce form input").filter(":password").parent("span").addClass("password-input"),e(".password-input").each(function(){const o=e(this).find("input").attr("id");e(this).append('<button type="button" class="show-password-input" aria-label="'+woocommerce_params.i18n_password_show+'" aria-describedBy="'+o+'"></button>')}),e(".show-password-input").on("click",function(o){o.preventDefault(),e(this).hasClass("display-password")?(e(this).removeClass("display-password"),e(this).attr("aria-label",woocommerce_params.i18n_password_show)):(e(this).addClass("display-password"),e(this).attr("aria-label",woocommerce_params.i18n_password_hide)),e(this).hasClass("display-password")?e(this).siblings(['input[type="password"]']).prop("type","text"):e(this).siblings('input[type="text"]').prop("type","password"),e(this).siblings("input").focus()}),e("a.coming-soon-footer-banner-dismiss").on("click",function(o){var t=e(o.target);e.ajax({type:"post",url:t.data("rest-url"),data:{woocommerce_meta:{coming_soon_banner_dismissed:"yes"}},beforeSend:function(e){e.setRequestHeader("X-WP-Nonce",t.data("rest-nonce"))},complete:function(){e("#coming-soon-footer-banner").hide()}})}),"undefined"==typeof wc_add_to_cart_params&&e(document.body).on("keydown",".remove_from_cart_button",on_keydown_remove_from_cart),e(document.body).on("item_removed_from_classic_cart updated_wc_div",focus_populate_live_region)}),document.addEventListener("DOMContentLoaded",on_document_ready);
// source --> https://www.wecom.tn/wp-content/plugins/js_composer/assets/js/vendors/woocommerce-add-to-cart.js?ver=7.8 
(function ( $ ) {
	'use strict';

	$( document ).ready( function () {
		$( 'body' ).on( 'adding_to_cart', function ( event, $button, data ) {
			if ( $button && $button.hasClass( 'vc_gitem-link' ) ) {
				$button
					.addClass( 'vc-gitem-add-to-cart-loading-btn' )
					.parents( '.vc_grid-item-mini' )
					.addClass( 'vc-woocommerce-add-to-cart-loading' )
					.append( $( '<div class="vc_wc-load-add-to-loader-wrapper"><div class="vc_wc-load-add-to-loader"></div></div>' ) );
			}
		} ).on( 'added_to_cart', function ( event, fragments, cart_hash, $button ) {
			if ( 'undefined' === typeof ($button) ) {
				$button = $( '.vc-gitem-add-to-cart-loading-btn' );
			}
			if ( $button && $button.hasClass( 'vc_gitem-link' ) ) {
				$button
					.removeClass( 'vc-gitem-add-to-cart-loading-btn' )
					.parents( '.vc_grid-item-mini' )
					.removeClass( 'vc-woocommerce-add-to-cart-loading' )
					.find( '.vc_wc-load-add-to-loader-wrapper' ).remove();
			}
		} );
	} );
})( window.jQuery );
// source --> https://www.wecom.tn/wp-content/plugins/cws-essentials/render_vc_shortcodes/../assets/js/cws-portfolio.js?ver=6.9.4 
( function( jQuery ) {
	"use strict";

/* ===========> Helper scripts <=========== */
function is_mobile_device(){
	if ( navigator.userAgent.match( /(Android|iPhone|iPod|iPad|Phone|DROID|webOS|BlackBerry|Windows Phone|ZuneWP7|IEMobile|Tablet|Kindle|Playbook|Nexus|Xoom|SM-N900T|GT-N7100|SAMSUNG-SGH-I717|SM-T330NU)/ ) ) {
		return true;
	} else {
		return false;
	}
}
function not_desktop(){
	if( (window.innerWidth < 1367 && is_mobile_device()) || window.innerWidth < 1200 ){
		return true;
	} else {
		return false;
	}
}
function is_mobile () {
	if ( window.innerWidth < 768 ){
		return true;
	} else {
		return false;
	}
}
function is_mobile_portrait () {
	if ( window.innerWidth < 480 ){
		return true;
	} else {
		return false;
	}
}
function cws_destroy_masonry(){
	if( is_mobile_portrait() && jQuery('.layout_masonry').length != 0 ){
		jQuery('.layout_masonry').find('.cws_portfolio_items').isotope( 'destroy' );
	}
}

/* ===========> Scripts Init <=========== */
window.addEventListener( "load", function() {
	cws_portfolio_types();
	cws_portfolio_isotope();
	cws_portfolio_loadmore();
	cws_portfolio_asymmetric();
	cws_carousel_wide();
	cws_motion_category_fix();
	cws_portfolio_hover_on_devices();
	cws_motion_category_mobile();
});

jQuery(window).on('resize', function(){
	cws_destroy_masonry();
});

/* ===========> cws_portfolio_asymmetric() variables prepare <=========== */
var lFollowY = 0;
var y = 0;
var friction = 1 / 30;

/* ===========> Scripts Declaration <=========== */

function cws_portfolio_types(){
	setTimeout(function(){
		var el = jQuery('.portfolio-single-content');

		if( el.hasClass('type_small_images') || el.hasClass('type_small_slider') || el.hasClass('type_small_masonry') ){
			jQuery('.portfolio-content-wrapper').stickySidebar({ 
				topSpacing: 180,
				bottomSpacing: 60,
				minWidth: 767
			});
		}
	}, 400);
}
function cws_potfolio_get_columns( element ){
	var windowWidth = jQuery(window).width();
	var columns = element.data('columns');

	if( windowWidth < 1200 && windowWidth > 991 && columns > 4 ){
		columns = 4;
	} else if( windowWidth < 768 && windowWidth > 479 && columns > 2 ){
		columns = 3;
	} else if( windowWidth < 480 && columns > 1 ){
		columns = 1;
	}

	return columns;
}
function cws_masonry_elements_set_size(element, spacings){
	element.each(function(i, el){
		var columns = jQuery(el).closest('.cws_portfolio_module').data('columns');
		var currentWidth = (jQuery(el).closest('.cws_portfolio_items').width() / columns) - spacings;

		var masonryWidth = jQuery(el).data('masonry-width') > 0 ? jQuery(el).data('masonry-width') : 1;
		var masonryHeight = jQuery(el).data('masonry-height') > 0 ? jQuery(el).data('masonry-height') : 1;

		var widthSpace = spacings * jQuery(el).data('masonry-width') - spacings;
		var heightSpace = spacings * jQuery(el).data('masonry-height') - spacings;

		jQuery(el).width(masonryWidth * currentWidth + widthSpace);
		jQuery(el).height(masonryHeight * currentWidth + heightSpace);
	});

	if( is_mobile_portrait() ){
		element.width('100%');
		element.height('100%');
	}
}
function cws_portfolio_isotope(){
	if( jQuery('.layout_grid_filter').length != 0 ){
		jQuery('.layout_grid_filter').each(function(i, el){
			jQuery(el).find('.cws_portfolio_items').isotope({
				filter: '.all'
			});

			jQuery(el).find('.portfolio-filter-trigger').off();
			jQuery(el).find('.portfolio-filter-trigger').on('click', function(){
				var filter = jQuery(this).data('value');

				jQuery(el).find('.portfolio-filter-trigger').removeClass('active');
				jQuery(this).addClass('active');

				jQuery(el).find('.cws_portfolio_items').isotope({
					filter: '.'+filter,
					masonry: {
						columnWidth: '.cws_portfolio_item'
					}
				});
			});
		});
	}

	if( jQuery('.layout_masonry').length != 0 ){
		jQuery('.layout_masonry').each(function(i, el){

			if( jQuery(el).data('spacings') ){
				var spacings = 30;
			} else {
				var spacings = 0;
			}

			cws_masonry_elements_set_size(jQuery(el).find('.cws_portfolio_items .cws_portfolio_item'), spacings);

			jQuery(window).resize( function(){
				cws_masonry_elements_set_size(jQuery(el).find('.cws_portfolio_items .cws_portfolio_item'), spacings);
			});

			if( !is_mobile_portrait() ){
				setTimeout(function(){
					jQuery(el).find('.cws_portfolio_items').isotope({
						itemSelector: ".cws_portfolio_item",
						percentPosition: true,
						layoutMode: 'masonry',
						masonry: {
							columnWidth: '.grid-sizer',
						}
					});
				}, 200);
			}

		});
	}

	if( jQuery('.layout_pinterest').length != 0 ){
		jQuery('.layout_pinterest').each(function(i, el){

			setTimeout(function(){
				jQuery(el).find('.cws_portfolio_items').isotope({
					layoutMode: 'masonry'
				});
			}, 200);
		});
	}

	if( 
		jQuery('.layout_masonry').length != 0 || 
		jQuery('.layout_pinterest').length != 0 || 
		jQuery('.layout_asymmetric').length != 0 
	){
		cws_portfolio_animate( jQuery('.layout_masonry, .layout_pinterest, .layout_asymmetric').find('.cws_portfolio_item') );
	}
}
function cws_portfolio_loadmore(){
	var count = 0;

	jQuery('.cws_load_more').on('click', function(){

		var button = jQuery(this);
		var my_module = button.closest('.load_more').prev();
		var query = my_module.data('ajax-query');
		var posts = my_module.data('ajax-posts');
		var page = my_module.data('ajax-page');
		var tax = my_module.data('ajax-tax');
		var hover = my_module.data('ajax-hover');
		var layout = my_module.data('ajax-layout');
		var portfolio_hide_meta = my_module.data('ajax-portfolio_hide_meta');

		if( my_module.data('spacings') ){
			var spacings = 30;
		} else {
			var spacings = 0;
		}

		var data = {
			'action': 'cws_portfolio_loadmore',
			'query': query,
			'posts': posts,
			'page': page+count,
			'tax': tax,
			'hover': hover,
			'layout': layout,
			'portfolio_hide_meta': portfolio_hide_meta
		};

		jQuery.ajax({
			url : cws_ajaxurl,
			data : data,
			type : 'POST',
			beforeSend : function ( xhr ) {
				button.text('Loading...');
			},
			success : function( data ){
				count++;

				if( data ){
					data = jQuery(data);

					setTimeout(function() {
						my_module.find('.cws_portfolio_items').append(data);

						if( my_module.hasClass('layout_masonry') ){
							cws_masonry_elements_set_size(my_module.find('.cws_portfolio_item'), spacings);
						}

						if( 
							my_module.hasClass('layout_grid_filter') || 
							my_module.hasClass('layout_masonry') || 
							my_module.hasClass('layout_pinterest')
						){
							my_module.find('.cws_portfolio_items').isotope( 'appended', data );
						}

						if( 
							jQuery('.layout_masonry').length != 0 || 
							jQuery('.layout_pinterest').length != 0 || 
							jQuery('.layout_asymmetric').length != 0 
						){
							cws_portfolio_animate( jQuery('.layout_masonry, .layout_pinterest, .layout_asymmetric').find('.cws_portfolio_item') );
						}

						if( jQuery('.layout_asymmetric').length != 0 ){
							cws_portfolio_asymmetric();
						}

					}, 300);

					if( posts.length > count + 1 ){
						button.text('More Posts');
					} else {
						button.remove();
					}
				}
			},
			error : function(){
				alert('Something goes wrong');
			}
		});

	});
}
function cws_portfolio_animate(element){
	element.each(function(i, el){
		var transitionSpeed = 1050 + Math.floor(Math.random() * 300);
		var transitionDelay = 100 + Math.floor(Math.random() * 300);

		jQuery(el).css({
			'transition': "all "+transitionSpeed+"ms cubic-bezier(0.35, 0.71, 0.26, 0.88) "+transitionDelay+"ms",
			'-webkit-transition': "all "+transitionSpeed+"ms cubic-bezier(0.35, 0.71, 0.26, 0.88) "+transitionDelay+"ms",
		});
	});

	element.addClass('loaded');

	setTimeout(function(){
		element.css({
			'transition': 'none',
			'-webkit-transition': 'none'
		});
	}, 1850);
}
function cws_portfolio_asymmetric(){
	if( jQuery('.layout_asymmetric').length != 0 && !is_mobile_portrait() ){
		setTimeout(function(){
			jQuery('.layout_asymmetric').find('.cws_portfolio_item:nth-child(2), .cws_portfolio_item:nth-child(4n+2), .cws_portfolio_item:nth-child(4n-1)').each(function(i, el){
				jQuery(el).attr('data-parallax', '{"y":-30,"smoothness":50}');
			});
		}, 1900);
	}
}
function cws_carousel_wide(){
	jQuery('.open_info').on('click', function(){

		var this_is = jQuery(this);
		var parent = this_is.parent();

		parent.toggleClass('active');

		if( parent.hasClass('active') ){
			this_is.prevAll().hide();
			setTimeout(function(){
				this_is.next().fadeIn();
			}, 250);
		} else {
			this_is.next().fadeOut(300);
			setTimeout(function(){
				this_is.prevAll().fadeIn(300);
			}, 400);
		}
	});

	// Hide advanced info boxes after slide change
	var carousel = jQuery('.layout_carousel_wide .cws_carousel_wrapper');

	if( carousel.length != 0 ){
		carousel.on('afterChange', function(){
			var otherSlides = carousel.find('.slick-slide').not('.slick-active');

			otherSlides.find('.hidden_info').removeClass('active');

			otherSlides.find('.hidden_info > p, .hidden_info > .h5').show();
			otherSlides.find('.advanced_info').hide();
		});
	}
}
function cws_motion_category_fix(){
	var windowHeight = Math.ceil(jQuery(window).height() * 0.8); // 0.8 from styles ( max-height = 80vh )

	if( jQuery('.layout_motion_category').length != 0 ){

		jQuery('.layout_motion_category .cws_portfolio_items_wrapper').each(function(i, el){

			if( jQuery(el).height() == windowHeight ){

				jQuery(el).find('.cws_portfolio_items').css('margin-right', '-17px');
			}

		});

	}
}
function cws_portfolio_hover_on_devices(){
	if( not_desktop() ){
		jQuery('.cws_portfolio_item .image_wrapper a').on('click', function(e){

			var this_is = jQuery(this);

			if( !this_is.closest('.image_wrapper').hasClass('device_hover') && this_is.closest('.cws_portfolio_module').is('.hover_overlay, .hover_slide_left, .hover_slide_bottom') ){
				e.preventDefault();

				jQuery('.cws_portfolio_item .image_wrapper').removeClass('device_hover');
				this_is.closest('.image_wrapper').addClass('device_hover');
			}
		});
	}
}
function cws_motion_category_mobile(){
	if( is_mobile() && jQuery('.layout_motion_category').length != 0 ){

		jQuery('.layout_motion_category').each(function(i, el){

			setInterval(function(){

				var currentBg = jQuery(el).find('.mobile_only .portfolio-mobile-motion-cat.active');

				currentBg.hide().removeClass('active');

				if( currentBg.next().length != 0 ){
					currentBg.next().show().addClass('active');
				} else {
					var next = currentBg.parent().find('.portfolio-mobile-motion-cat')[0];
					jQuery(next).show().addClass('active');
				}

			}, 2000);

		});
	}
}

} ).call( this, jQuery );
// source --> https://www.wecom.tn/wp-content/plugins/cws-essentials/render_vc_shortcodes/../assets/js/jquery.easing.js?ver=1.3.0 
/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 *
 * TERMS OF USE - jQuery Easing
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2008 George McGinley Smith
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
	def: 'easeOutQuad',
	swing: function (x, t, b, c, d) {
		//alert(jQuery.easing.default);
		return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
	},
	easeInQuad: function (x, t, b, c, d) {
		return c*(t/=d)*t + b;
	},
	easeOutQuad: function (x, t, b, c, d) {
		return -c *(t/=d)*(t-2) + b;
	},
	easeInOutQuad: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t + b;
		return -c/2 * ((--t)*(t-2) - 1) + b;
	},
	easeInCubic: function (x, t, b, c, d) {
		return c*(t/=d)*t*t + b;
	},
	easeOutCubic: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t + 1) + b;
	},
	easeInOutCubic: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t + b;
		return c/2*((t-=2)*t*t + 2) + b;
	},
	easeInQuart: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t + b;
	},
	easeOutQuart: function (x, t, b, c, d) {
		return -c * ((t=t/d-1)*t*t*t - 1) + b;
	},
	easeInOutQuart: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
		return -c/2 * ((t-=2)*t*t*t - 2) + b;
	},
	easeInQuint: function (x, t, b, c, d) {
		return c*(t/=d)*t*t*t*t + b;
	},
	easeOutQuint: function (x, t, b, c, d) {
		return c*((t=t/d-1)*t*t*t*t + 1) + b;
	},
	easeInOutQuint: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
		return c/2*((t-=2)*t*t*t*t + 2) + b;
	},
	easeInSine: function (x, t, b, c, d) {
		return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
	},
	easeOutSine: function (x, t, b, c, d) {
		return c * Math.sin(t/d * (Math.PI/2)) + b;
	},
	easeInOutSine: function (x, t, b, c, d) {
		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
	},
	easeInExpo: function (x, t, b, c, d) {
		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
	},
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	},
	easeInOutExpo: function (x, t, b, c, d) {
		if (t==0) return b;
		if (t==d) return b+c;
		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
	},
	easeInCirc: function (x, t, b, c, d) {
		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
	},
	easeOutCirc: function (x, t, b, c, d) {
		return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
	},
	easeInOutCirc: function (x, t, b, c, d) {
		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
	},
	easeInElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
	},
	easeOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
	},
	easeInOutElastic: function (x, t, b, c, d) {
		var s=1.70158;var p=0;var a=c;
		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
		if (a < Math.abs(c)) { a=c; var s=p/4; }
		else var s = p/(2*Math.PI) * Math.asin (c/a);
		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
	},
	easeInBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*(t/=d)*t*((s+1)*t - s) + b;
	},
	easeOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158;
		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
	},
	easeInOutBack: function (x, t, b, c, d, s) {
		if (s == undefined) s = 1.70158; 
		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
	},
	easeInBounce: function (x, t, b, c, d) {
		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
	},
	easeOutBounce: function (x, t, b, c, d) {
		if ((t/=d) < (1/2.75)) {
			return c*(7.5625*t*t) + b;
		} else if (t < (2/2.75)) {
			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
		} else if (t < (2.5/2.75)) {
			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
		} else {
			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
		}
	},
	easeInOutBounce: function (x, t, b, c, d) {
		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
	}
});

/*
 *
 * TERMS OF USE - EASING EQUATIONS
 * 
 * Open source under the BSD License. 
 * 
 * Copyright © 2001 Robert Penner
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without modification, 
 * are permitted provided that the following conditions are met:
 * 
 * Redistributions of source code must retain the above copyright notice, this list of 
 * conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright notice, this list 
 * of conditions and the following disclaimer in the documentation and/or other materials 
 * provided with the distribution.
 * 
 * Neither the name of the author nor the names of contributors may be used to endorse 
 * or promote products derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
 *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
 * OF THE POSSIBILITY OF SUCH DAMAGE. 
 *
 */;