/* * NESTED DROPDOWN */ jQuery( '[data-behaviour~="orbit-nested-dropdown"]' ).each( function(){ var $el = jQuery( this ), $cats_dropdown = $el.find( '.cats select' ), $subcats_dropdown = $el.find( '.subcats select' ), $cloneSubDropdown = $el.find( '.subcats select' ).clone(); // Clones all subcats from dropdown function updateSubDropdown(){ var currentCategoryValue = $cats_dropdown.val(); $subcats_dropdown.find( 'option' ).remove(); var $options; if( currentCategoryValue > 0 ){ $options = $cloneSubDropdown.find( 'option[data-parent~="' + currentCategoryValue + '"]' ).clone(); var $defaultOption = jQuery( document.createElement( 'option' ) ); $defaultOption.val( 0 ); $defaultOption.html('Select'); $defaultOption.appendTo( $subcats_dropdown ); $options.appendTo( $subcats_dropdown ); $subcats_dropdown.val(0); $subcats_dropdown.show(); } else{ $subcats_dropdown.hide(); } } //updateSubDropdown(); // change subservices when the main service is changed $cats_dropdown.change( function( ev ){ updateSubDropdown(); }); // ON THE INITIAL LOAD HIDE THE DROPDOWN if( !$cats_dropdown.val() ){ $subcats_dropdown.hide(); } }); jQuery('[data-behaviour~="orbit-nested-dropdown-checkboxes"]').each(function(){ var $el = jQuery(this), $cats_dropdown = $el.find( '.cats select' ), $subcats_menu = $el.find( '.subcats .orbit-dropdown-menu' ); function updateSubDropdown(){ var currentCategoryValue = $cats_dropdown.val(); if( currentCategoryValue > 0 ){ $subcats_menu.find('li.checkbox').hide(); $subcats_menu.find('li.checkbox[data-parent~="' + currentCategoryValue + '"]').show(); } else{ $subcats_menu.find('li.checkbox').show(); } } $cats_dropdown.change( function( ev ){ updateSubDropdown(); }); updateSubDropdown(); }); /* * MULTIPLE TEXT FIELDS */ jQuery('[data-behaviour~=multiple-text]').each( function(){ var $el = jQuery( this ), count = 0, field = $el.data('field'); function init(){ var $wrapper = jQuery( document.createElement('div') ); $wrapper.addClass('wrapper'); $wrapper.appendTo( $el ); var $wrapperButton = jQuery( document.createElement('div') ); $wrapperButton.addClass('wrapperButton'); $wrapperButton.appendTo( $el ); createAddButton(); createSingleField(); } function createSingleField(){ var $parent = jQuery( document.createElement('div') ); $parent.addClass('multi-field-wrapper'); $parent.appendTo( $el.find('.wrapper') ); var $input = jQuery( document.createElement('input') ); $input.attr( 'type', 'text' ); $input.attr( 'placeholder', field['label'] ? field['label'] : "" ); $input.attr( 'name', field['name'] + '[]' ); $input.appendTo( $parent ); }; function createAddButton(){ var $btn = jQuery( document.createElement('button') ); $btn.attr( 'type', 'button' ); $btn.addClass('add-btn'); $btn.html( field['btn_text'] ? field['btn_text'] : 'Add Another'); $btn.appendTo( $el.find('.wrapperButton') ); $btn.click( function(){ count++; //checks the total number of file fields var countImage = jQuery('.multi-field-wrapper').length; if( count <= 4 ){ createSingleField(); } }); }; init(); }); /* * MULTIPLE IMAGE UPLOADS */ jQuery('[data-behaviour~=orbit-field-files]').each(function(){ var $el = jQuery( this ); var $images_list = jQuery( document.createElement('ul') ); $images_list.addClass( 'orbit-images-preview orbit-list-inline' ); $images_list.appendTo( $el.parent() ); function addImage( src ){ var $item = jQuery( document.createElement( 'li' ) ); $item.appendTo( $images_list ); var $img = jQuery( document.createElement( 'img' ) ); $img.attr( 'src', src ); $img.appendTo( $item ); } function readURL(input) { if( input.files ){ // EMPTY THE EXISTING IMAGES $images_list.html(''); jQuery.each( input.files, function( j, single_file ){ var reader = new FileReader(); reader.onload = function (e) { addImage( e.target.result ); } // ONLY ADD IMAGES if( single_file.type.indexOf( 'image' ) !== -1 ){ reader.readAsDataURL( single_file ); } }); } } $el.change( function(){ readURL( this ); }); }); jQuery('[data-behaviour~=typeahead]').each(function(){ var el = jQuery(this); el.typeahead({ name: el.attr('name'), minLength:0, local: JSON.parse(el.attr('data-arr')) }); }); jQuery('[data-behaviour~=bt-dropdown-checkboxes]').orbit_dropdown_checkboxes(); jQuery.fn.ajax_form_submit = function(options){ var options = $.extend({ success : function(data){}, }, options); return this.each(function(){ var form = $(this), url = form.attr('action'), method = form.attr('method'); $.ajax({'type':method,'url':url,'data':form.serialize(),'success':function(data){ form.trigger('ajax_form:after', [form]); options.success(data); }}); }); }; jQuery( '[data-behaviour="orbit-search"]' ).each( function(){ var $el = jQuery( this ), $search_form = $el.find('.orbit-search-form'), $form = $el.find( 'form' ), $results = $el.find( '.orbit-search-results' ); function removeURLParameter(url, parameter) { //prefer to use l.search if you have a location/link object var urlparts = url.split('?'); if (urlparts.length >= 2) { var prefix = encodeURIComponent(parameter) + '='; var pars = urlparts[1].split(/[&;]/g); //reverse iteration as may be destructive for (var i = pars.length; i-- > 0;) { //idiom for string.startsWith if (pars[i].lastIndexOf(prefix, 0) !== -1) { pars.splice(i, 1); } } return urlparts[0] + (pars.length > 0 ? '?' + pars.join('&') : ''); } return url; } function hasUrlParameters( url ){ var urlparts = url.split('?'); if( urlparts.length >= 2 ) return true; return false; } // ON THE CHANGE OF DROPDOWN VALUE OF SORTING, REDIRECT THE RESULTS $el.find('[data-behaviour~=orbit-sorting] select').change( function(){ var $select = jQuery( this ), name_param = $select.attr( 'name' ); var urlAfterRemoval = removeURLParameter( location.href, name_param ); var query_param = hasUrlParameters( urlAfterRemoval ) ? "&" : "?"; var url = urlAfterRemoval + query_param + name_param + "=" + $select.val(); // redirect to new url location.href = url; } ); if( $el.hasClass('default-theme') ){ // TO ONLY WORK FOR DEFAULT THEME function makeDefaultFormCollapsible(){ var window_width = jQuery( window ).width(); $search_form_arrow = $search_form.find('.orbit-search-form-title .arrow-down'); // hide the form on mobile and make it collapsible if( window_width < 768 ){ // hide the form $form.hide(); // trigger collapsible $search_form_arrow.click( function(){ $form.toggle('slide'); }); } } makeDefaultFormCollapsible(); } if( $el.hasClass( 'grid-theme' ) ){ $el.find( 'a[href].orbit-btn-close' ).click( function( ev ){ ev.preventDefault(); $el.find( '.orbit-search-grid' ).removeClass('filters-visible'); } ); $el.find( 'a[href].orbit-open-filters' ).click( function( ev ){ ev.preventDefault(); $el.find( '.orbit-search-grid' ).addClass('filters-visible'); } ); var top = $el.find('.orbit-search-grid').offset().top - 120; $(window).scroll(function(e){ var $target = $el.find('.orbit-search-grid'); if( $(this).scrollTop() > top ){ $target.addClass( 'is-fixed' ); } if( $(this).scrollTop() < top ){ $target.removeClass( 'is-fixed' ); } }); var window_width = jQuery( window ).width(); if( window_width > 960 ){ $el.find('.orbit-search-grid').addClass( 'filters-visible' ); } } });