Enjoy versatile sound solutions with our array of passive and Bluetooth patio surface mount speakers at Outdoor Speaker Depot. Our passive speakers deliver exceptional audio quality when connected to a separate amplifier, offering you control over your audio setup. For wireless convenience, our Bluetooth speakers provide seamless streaming from your devices, giving you the freedom to control your music from anywhere in your outdoor space. Whether you're looking to create a sophisticated outdoor theater or simply want to enjoy music on your patio, our range of speakers has you covered.
';var loadinghtml_myFacetRefinery = '';/* GD Set the area to scroll to the results. GDCP */window.GDFacetsScrollToResults = function () {setTimeout(function () {if(window.innerWidth >= 960) {/* Desktop. Keep in mind sticky header */$("html, body").animate({ scrollTop: $("main").offset().top }, 600);} else {/* Mobile and no sticky header */$("html, body").animate({ scrollTop: $(".x-collapsing-breadcrumbs").offset().top }, 600);}}, 150);}/* GD We need to now trigger all the theme scripts that do lazy loading and other crazy fun stuff. GDCP */window.GDFacetsAfterDataLoaded = function (what_to_do) {if(what_to_do=='full_from_back_button') {//elementsUI.site();elementsUI.pages.common();//themeFunctionality.init();themeFunctionality.sharedFunctions.observeDeferred();//themeFunctionality.jsCTGY();try {window.init_custom_selects('ajax_reload');}catch(err) {/* console.log("Check init_custom_selects."); */}} else {elementsUI.pages.common();themeFunctionality.sharedFunctions.observeDeferred();themeFunctionality.jsCTGY();window.init_custom_selects('ajax_reload');}gdRangeFinderFixes();}/* GD GDFacetsReloadFromPrev reloads the facet areas using previous data saved in the #js-GDfacetMemory form */window.GDFacetsReloadFromPrev = function () {/* Get saved JSON data from the 3 form inputs in the #js-GDfacetMemory form */var remember_myFacetSort = $("#js-remember_myFacetSort").val();var remember_myFacetTree = $("#js-remember_myFacetTree").val();var remember_myFacetResults = $("#js-remember_myFacetResults").val();var remember_myFacetRefinery = $("#js-remember_myFacetRefinery").val();var updated_at_least_one = false;/* Use saved data to populate the multiple facet areas. */if(remember_myFacetSort != '') {$("#myFacetSort").html(loadinghtml_myFacetSort);$("#myFacetSort").html(remember_myFacetSort);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetSort to reload."); */}if(remember_myFacetTree != '') {$("#myFacetTree").html(loadinghtml_myFacetTree);$("#myFacetTree").html(remember_myFacetTree);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetTree to reload."); */}if(remember_myFacetResults != '') {$("#myFacetResults").html(loadinghtml_myFacetResults);$("#myFacetResults").html(remember_myFacetResults);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetResults to reload."); */} if(remember_myFacetRefinery != '') {$("#myFacetRefinery").html(loadinghtml_myFacetRefinery);$("#myFacetRefinery").html(remember_myFacetRefinery);updated_at_least_one = true;} else {/* console.log("Nothing in remember_myFacetRefinery to reload."); */} if(updated_at_least_one) {/* GD Now Reinit any Theme JS functions. */GDFacetsAfterDataLoaded('full_from_back_button');/* GD Now scroll the user to the new content. */GDFacetsScrollToResults();}/* console.log("GDFacetsReloadFromPrev() Finished."); */}/* GD Override Function MMProdList_UpdateQuery_SubmitParameters from clientside.mvc?Filename=runtime_ui.js */window.MMProdList_UpdateQuery_SubmitParameters = function ( form, params, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_SubmitParameters"); */var i, j, i_len, j_len, elements, params_output_array;/* We don't want this mmprodlist_updatequery_submitparameters_submitted var to kill the function because we're reusing it now. GDCP *//*if ( window.mmprodlist_updatequery_submitparameters_submitted ){return;}window.mmprodlist_updatequery_submitparameters_submitted = true;*/params_output_array = new Array();params.sort( function( a, b ) { return sortAlphaNumeric( a.name, b.name, true ); } );for ( i = 0, i_len = params.length; i < i_len; i++ ){for ( j = 0, j_len = params[ i ].values.length; j < j_len; j++ ){if ( params[ i ].values[ j ].length ){params_output_array.push( encodeURIComponent( params[ i ].name ) + '=' + encodeURIComponent( params[ i ].values[ j ] ) );}}}/* GD: Append the JSON View to the params array. Force the view to be JSON output. GDCP */params_output_array.push( 'view=json' );params_output_array.push( 'killcache2=' + new Date().getTime());/* We're not setting these listeners anymore. They cause a "hickup" with the overrides we do. GDCP */ /*if ( window.mmprodlist_updatequery_submitparameters_timeout ){clearTimeout( window.mmprodlist_updatequery_submitparameters_timeout );delete window.mmprodlist_updatequery_submitparameters_timeout;}if ( window.mmprodlist_updatequery_submitparameters_timeout_event_attached ){elements = form.getElementsByTagName( '*' );for ( i = 0, i_len = elements.length; i < i_len; i++ ){RemoveEvent( elements[ i ], 'mousedown', window.mmprodlist_updatequery_submitparameters_timeout_event_function );RemoveEvent( elements[ i ], 'mousemove', window.mmprodlist_updatequery_submitparameters_timeout_event_function );RemoveEvent( elements[ i ], 'mouseup', window.mmprodlist_updatequery_submitparameters_timeout_event_function );}}*//* GD NOT SENDING TO NEW WINDOW!window.location.href = [ window.location.protocol, '//', window.location.host, window.location.pathname ].join( '' ) + ( params_output_array.length ? ( '?' + params_output_array.join( '&' ) ) : '' );*//* GD: Set the URL of the page to get the JSON data. */var GDfacets_DataURL = [ window.location.protocol, '//', window.location.host, window.location.pathname ].join( '' ) + ( params_output_array.length ? ( '?' + params_output_array.join( '&' ) ) : '' );/* console.log("GDfacets_DataURL: "+GDfacets_DataURL); *//* GD Populate the areas with something while we load new data. */$("#myFacetResults").html(loadinghtml_myFacetResults);/*$("#myFacetSort").html(loadinghtml_myFacetSort);*//*$("#myFacetTree").html(loadinghtml_myFacetTree);*//*$("#myFacetRefinery").html(loadinghtml_myFacetRefinery);*//* GD Ajax Post to the page so we can get the JSON data back and load the various sections all at once with new data. */$.post(GDfacets_DataURL,function(json_data) { })/*for success*/.done(function(json_data) {/* GD Now scroll the user to the new content. */if(json_data.products_on_page_count > 0) {/* GD Load the various sections all at once with new HTML. */$("#myFacetSort").html(json_data.new_myFacetSort);$("#myFacetTree").html(json_data.new_myFacetTree);$("#myFacetResults").html(json_data.new_myFacetResults);$("#myFacetRefinery").html(json_data.new_myFacetRefinery);/* GD Save the new HTML to the remember form fields. */$("#js-remember_myFacetSort").val(json_data.new_myFacetSort);$("#js-remember_myFacetTree").val(json_data.new_myFacetTree);$("#js-remember_myFacetResults").val(json_data.new_myFacetResults);$("#js-remember_myFacetRefinery").val(json_data.new_myFacetRefinery);$("#js-remember_products_found").val(json_data.products_on_page_count);/* GD Now Reinit any Theme JS functions. */GDFacetsAfterDataLoaded();/* Scroll to results */GDFacetsScrollToResults();} else {/* There are no valid results. */$("#myFacetResults").html('
Sorry, no results match these filters.
Undo the last filter or RESET.
');}})/*for failed*/.fail(function(json_data) {/* console.log( "error reloading avail facets to "+doAjaxFacetURL ); */})/*for completion, whether success or error*/.always(function(json_data) {}); }/* GD Override Function MMProdList_UpdateQuery_SubmitParameters_Timeout from clientside.mvc?Filename=runtime_ui.js*/window.MMProdList_UpdateQuery_SubmitParameters_Timeout = function ( form, submit_delay, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_SubmitParameters_Timeout"); */var i, i_len, elements;submit_delay = stoi_def_nonneg( submit_delay, 0 )if ( window.mmprodlist_updatequery_submitparameters_timeout ){clearTimeout( window.mmprodlist_updatequery_submitparameters_timeout );delete window.mmprodlist_updatequery_submitparameters_timeout;}if ( submit_delay === 0 ){return MMProdList_UpdateQuery_SubmitParameters_LowLevel( form );}window.mmprodlist_updatequery_submitparameters_timeout = setTimeout( function() { MMProdList_UpdateQuery_SubmitParameters_LowLevel( form ); }, submit_delay );if ( !window.mmprodlist_updatequery_submitparameters_timeout_event_attached ){window.mmprodlist_updatequery_submitparameters_timeout_event_attached = true;window.mmprodlist_updatequery_submitparameters_timeout_event_function = function( event ) { MMProdList_UpdateQuery_SubmitParameters_Timeout( form, submit_delay ); };/* We're not setting these listeners anymore. They cause a "hickup" with the overrides we do. GDCP *//*elements = form.getElementsByTagName( '*' );for ( i = 0, i_len = elements.length; i < i_len; i++ ){AddEvent( elements[ i ], 'mousedown', window.mmprodlist_updatequery_submitparameters_timeout_event_function );AddEvent( elements[ i ], 'mousemove', window.mmprodlist_updatequery_submitparameters_timeout_event_function );AddEvent( elements[ i ], 'mouseup', window.mmprodlist_updatequery_submitparameters_timeout_event_function );}*/}}/* GD Override Function MMProdList_UpdateQuery_Notify_Updating from clientside.mvc?Filename=runtime_ui.js*/ window.MMProdList_UpdateQuery_Notify_Updating = function ( form, gdversion ){/* console.log("GD Override OK: MMProdList_UpdateQuery_Notify_Updating"); */var i, i_len;/* We're not disabling the facet fields anymore. We can if needed. It's not required. GDCP *//*for ( i = 0, i_len = form.elements.length; i < i_len; i++ ){form.elements[ i ].setAttribute( 'disabled', 'disabled' );}*/}});}
Address: 998 Estell Village, Lake Oscarberg, SD 48713-6877
Phone: +21813267449721
Job: Technology Engineer
Hobby: Swimming, Do it yourself, Beekeeping, Lapidary, Cosplaying, Hiking, Graffiti
Introduction: My name is Reed Wilderman, I am a faithful, bright, lucky, adventurous, lively, rich, vast person who loves writing and wants to share my knowledge and understanding with you.
We notice you're using an ad blocker
Without advertising income, we can't keep making this site awesome for you.