(function($) {
	"use strict";
	
	var searchSlideFromHB = {};
	eltdf.modules.searchSlideFromHB = searchSlideFromHB;
	
	searchSlideFromHB.eltdfOnDocumentReady = eltdfOnDocumentReady;
	
	$(document).ready(eltdfOnDocumentReady);
	
	/*
		All functions to be called on $(document).ready() should be in this function
	*/
	function eltdfOnDocumentReady() {
		eltdfSearchSlideFromHB();
	}
	
	/**
	 * Init Search Types
	 */
	function eltdfSearchSlideFromHB() {
		if ( eltdf.body.hasClass( 'eltdf-slide-from-header-bottom' ) ) {
			var searchOpener = $('a.eltdf-search-opener');
			
			if (searchOpener.length) {
				searchOpener.each(function(){
					//Check for type of search
					$(this).on('click', function (e) {
						e.preventDefault();
						
						var thisSearchOpener = $(this),
							searchIconPosition = parseInt(eltdf.windowWidth - thisSearchOpener.offset().left - thisSearchOpener.outerWidth());
						
						if (eltdf.body.hasClass('eltdf-boxed') && eltdf.windowWidth > 1024) {
							searchIconPosition -= parseInt((eltdf.windowWidth - $('.eltdf-boxed .eltdf-wrapper .eltdf-wrapper-inner').outerWidth()) / 2);
						}
						
						var searchFormHeaderHolder = $('.eltdf-page-header'),
							searchFormTopOffset = '100%',
							searchFormTopHeaderHolder = $('.eltdf-top-bar'),
							searchFormFixedHeaderHolder = searchFormHeaderHolder.find('.eltdf-fixed-wrapper.fixed'),
							searchFormMobileHeaderHolder = $('.eltdf-mobile-header'),
							searchForm = searchFormHeaderHolder.children('.eltdf-slide-from-header-bottom-holder'),
							searchFormIsInTopHeader = !!thisSearchOpener.parents('.eltdf-top-bar').length,
							searchFormIsInFixedHeader = !!thisSearchOpener.parents('.eltdf-fixed-wrapper.fixed').length,
							searchFormIsInStickyHeader = !!thisSearchOpener.parents('.eltdf-sticky-header').length,
							searchFormIsInMobileHeader = !!thisSearchOpener.parents('.eltdf-mobile-header').length;
						
						searchForm.removeClass('eltdf-is-active');
						
						//Find search form position in header and height
						if (searchFormIsInTopHeader) {
							searchForm = searchFormTopHeaderHolder.find('.eltdf-slide-from-header-bottom-holder');
							searchForm.addClass('eltdf-is-active');
							
						} else if (searchFormIsInFixedHeader) {
							searchFormTopOffset = searchFormFixedHeaderHolder.outerHeight() + eltdfGlobalVars.vars.eltdfAddForAdminBar;
							searchForm.addClass('eltdf-is-active');
							
						} else if (searchFormIsInStickyHeader) {
							searchFormTopOffset = eltdfGlobalVars.vars.eltdfStickyHeaderHeight + eltdfGlobalVars.vars.eltdfAddForAdminBar;
							searchForm.addClass('eltdf-is-active');
							
						} else if (searchFormIsInMobileHeader) {
							if (searchFormMobileHeaderHolder.hasClass('mobile-header-appear')) {
								searchFormTopOffset = searchFormMobileHeaderHolder.children('.eltdf-mobile-header-inner').outerHeight() + eltdfGlobalVars.vars.eltdfAddForAdminBar;
							}
							
							searchForm = searchFormMobileHeaderHolder.find('.eltdf-slide-from-header-bottom-holder');
							searchForm.addClass('eltdf-is-active');
							
						} else {
							searchForm.addClass('eltdf-is-active');
						}
						
						if (searchForm.hasClass('eltdf-is-active')) {
							searchForm.css({
								'right': searchIconPosition,
								'top': searchFormTopOffset
							}).stop(true).slideToggle(300, 'easeOutBack');
						}
						
						//Close on escape
						$(document).keyup(function (e) {
							if (e.keyCode === 27) { //KeyCode for ESC button is 27
								searchForm.stop(true).fadeOut(0);
							}
						});
						
						$(window).scroll(function () {
							searchForm.stop(true).fadeOut(0);
						});
					});
				});
			}
		}
	}
	
})(jQuery);