jQuery.noConflict(); jQuery(document).ready( function( $ ) { function selectHasValue( select ) { var hasValue = false; select.find('option').each( function() { if( '' != jQuery(this).val() && 0 != jQuery(this).val() ) { hasValue = true; } }); return hasValue; } var decorateUnavailableSelections = function() { var mode = ''; var select = jQuery('#modelSelect'); if( !selectHasValue( select ) ) { switch( mode ) { case 'hide': select.hide(); select.prev('label').hide(); break; case 'disable': select.attr('disabled','disabled'); break; } } var select = jQuery('#yearSelect'); if( !selectHasValue( select ) ) { switch( mode ) { case 'hide': select.hide(); select.prev('label').hide(); break; case 'disable': select.attr('disabled','disabled'); break; } } } // @author Kevin van Zonneveld (http://kevin.vanzonneveld.net), Onno Marsman, Brett Zamir (http://brett-zamir.me) function ucfirst (str) { str += ''; var f = str.charAt(0).toUpperCase(); return f + str.substr(1); } decorateUnavailableSelections(); var chained = function() { var showSelect = function( select ) { jQuery(select) .show() .attr('disabled','') .prev('label').show(); } var loadNextSelectIfOneOption = function( loadedSelect, selectAfterLoaded ) { if( jQuery('#' + loadedSelect + 'Select option' ).length == 1 ) { var myFuncName = 'load' + ucfirst(selectAfterLoaded) + 's'; eval(myFuncName)(); } } function lastLevel() { return 'year'; } var getUrl = function( level ) { var value = jQuery('#' + level + 'Select').val(); var product = jQuery('#vafProduct').val(); var url = 'http://wii.theistore.com//vaf/ajax/process?'; url = url + '&product=' + product; url = url + '&front=1'; url = url + '&' + level + '=' + value; return url; } var loadModels = function() { var callbackFunc = function(){ showSelect(this); loadNextSelectIfOneOption( 'model', 'year' ); decorateUnavailableSelections(); jQuery(this).trigger('vafLevelLoaded'); }; decorateUnavailableSelections(); var url = getUrl( 'make' ); var loadingText = ''; jQuery('#modelSelect') .html( loadingText ) .load( url, {}, callbackFunc ); jQuery('#yearSelect').html(''); } var loadYears = function() { var callbackFunc = function(){ showSelect(this); autoSubmit(); decorateUnavailableSelections(); jQuery(this).trigger('vafLevelLoaded'); }; decorateUnavailableSelections(); var url = getUrl( 'model' ); var loadingText = ''; jQuery('#yearSelect') .html( loadingText ) .load( url, {}, callbackFunc ); } function hasOptions(){ return jQuery( '#' + lastLevel() + 'Select option' ).size() >= 1; } function hasSelection() { return selectHasValue( jQuery( '#' + lastLevel() + 'Select' ) ); } function selectionHasValue() { var val = jQuery( '#' + lastLevel() + 'Select option:selected' ).val(); return '' != val && 0 != val; } function autoSubmit() { if( hasOptions() && hasSelection() && selectionHasValue() ) { submitVafForm(); } } submitVafForm = function() { if( jQuery('#categorySelect').val() != '?' ) { jQuery('#vafForm').attr( 'action', jQuery('#categorySelect').val() ); } var chooser = jQuery('#categorySelect'); if( !chooser.is('input') ) { chooser.html(''); } jQuery().trigger("vafSubmit"); return false; } jQuery().bind("vafSubmit", function() { document.vafForm.submit(); }); clearVafForm = function() { window.location = '?make=0&model=0&year=0'; } jQuery( '#yearSelect').change( function() { autoSubmit(); } ); jQuery('#vafSubmit').click( submitVafForm ); jQuery('#vafClear').click( clearVafForm ); jQuery( '.vafCheckAll' ).click( function() { jQuery( '.vafcheck' ).attr( 'checked', jQuery(this).attr( 'checked' ) ); }) jQuery( '.vaf-cat-toggler' ).click( function() { var icon = jQuery(this).children( 'div.vaf-toggle-icon ' ); icon.toggleClass( 'vaf-toggle-icon-minus' ); var toggleDiv = jQuery(this).nextAll( 'div.vaf-toggle' ); toggleDiv.toggle(); }); jQuery( 'div.vaf-toggle' ).hide(); var callback = loadModels; jQuery('#makeSelect').change( callback ); var callback = loadYears; jQuery('#modelSelect').change( callback ); } jQuery.fn.chained = function() { this.each( function() { var mychained = new chained( this ); }); }; jQuery('#vafForm').chained(); });