( function( $ ) { $(document).ready(function() { /*== Scroll to top ==*/ $( 'a[href="#cafe-content"]' ).on( 'click', function( e ) { e.preventDefault(); /* html - IE, FF, body - Chrome, Safari */ $( 'html, body' ).animate({ scrollTop: $( '#cafe-content' ).offset().top }, 555); }); /*== Create custom select-menu ==*/ $( 'select' ).each( function( key, val ) { var selectDiv = document.createElement( 'div' ); /* create div element */ selectDiv.className = 'cafe-select-block'; $( selectDiv ).mousemove( function() { /* reset selected class from choosed element */ $( this ).find( '.cafe-option.cafe-selected' ).removeClass( 'selected' ); }); var mainSelect = $( val ); /* get select element */ mainSelect.hide(); /* hide all options */ var fakeSelect = document.createElement( 'div' ); fakeSelect.className = 'cafe-select'; fakeSelect.setAttribute( 'name', $( mainSelect ).attr( 'name' ) ); var header = document.createElement( 'h1' ); header.innerHTML = $( mainSelect ).find( 'option:selected' ).text(); header.className = 'cafe-index-' + $( mainSelect )[0].selectedIndex; fakeSelect.appendChild( header ); /* add h1 element to select instrument */ var counterOptions = 0; mainSelect.find( '*' ).each( function( k, v ) { var elem = document.createElement( 'div' ); if ( v.tagName == 'OPTGROUP' ) { elem.className = 'cafe-optgroup'; /* create optgroup div */ /* create headings for option group */ var h1 = document.createElement( 'h1' ); h1.innerHTML = $( v ).attr( 'label' ); h1.className = 'cafe-optgroup-h1'; elem.appendChild( h1 ); } else { elem.className = 'cafe-option'; /* create option div */ $( elem ).addClass( 'cafe-index-' + counterOptions++ ); elem.innerHTML = $( v ).text(); /* set content of select item */ elem.setAttribute( 'title', elem.innerHTML ); elem.setAttribute( 'value', $( v ).attr( 'value' ) ); /* options to do when click on elements */ elem.onclick = function() { if ( ! ( $( this ).attr( 'class' ).indexOf( $( fakeSelect ).children( 'h1' ).attr( 'class' ) ) > 0 ) ) { /* h1 changes */ $( fakeSelect ).children( 'h1' ).text( $( this ).text() ); $( fakeSelect ).children( 'h1' ).attr( 'value', $( this ).attr( 'value' ) ); $( fakeSelect ).children( 'h1' ).get( 0 ).className = $( this ).attr( 'class' ).match( /cafe-index-\d + /, 'g' ); /* get index */ mainSelect.prop( 'selectedIndex', $( this ).attr( 'class' ).split( '-' )[1] ).change(); } $( selectDiv ).hide(); } } if ( $( v ).parent().get( 0 ).tagName == 'SELECT' ) { /* fisrt childs of select */ selectDiv.appendChild( elem ); } else { $( selectDiv ).children().last().append( elem ); } }); var hider = function( event ) { event = event || window.event; /* crossbrowser event */ if ( ( event.target || event.srcElement ).className != 'cafe-optgroup-h1' && /* crossbrowser event.target */ ( event.target || event.srcElement ).className != 'cafe-optgroup' && ( event.target || event.srcElement ).className != 'cafe-select-block' ) { if ( clickCleaner ) { /* Hide select div */ $( selectDiv ).fadeOut( 200 ); $( this ).off( 'click', hider ); /* Reset all selected elements */ $( selectDiv ).trigger( 'mousemove' ); } clickCleaner = true; event.preventDefault(); } } var clickCleaner; $( fakeSelect ).on( 'mousedown', function() { /* Show/hide scripts */ clickCleaner = false; $( selectDiv ).fadeIn( 200 ); $( 'html' ).on( 'click', hider); }); fakeSelect.appendChild( selectDiv ); $( val ).after( fakeSelect ); $( selectDiv ).hide(); /* archive-dropdown widget functional */ $( '[name=archive-dropdown]' ).next( '.cafe-select' ).find( '.cafe-option' ).click( function () { location.href = $( this ).attr( 'value' ); }); /* category-dropdown widget functional */ $( '#cat' ).next( '.cafe-select' ).find( '.cafe-option' ).click( function () { location.href = '?cat=' + $( this ).attr( 'value' ); }); $( '.cafe-select .cafe-option' ).click( function () { /*remove active option from init select*/ $( this ).parent().parent().prev().find( 'option' ).removeAttr( 'selected' ); /*add atrr selected to select*/ var index = $(this).index(); $( this ).parent().parent().prev().find( 'option' ).eq( index ).attr( 'selected', 'selected' ); }); }); /*== Radiobuttons ==*/ $( 'input[type="radio"]' ).each( function() { $this = $( this ); var $label = $( 'label[for="' + $this.attr( 'id' ) + '"]' ); if ( $label.length > 0 ) {/* This input has a label associated with it */ $label.after( '
' ); }; }); $( 'input[type="radio"]' ).addClass( 'radio1' ); $( '.radio1' ).wrap( '