<script type="text/javascript">var gform;gform||(document.addEventListener("gform_main_scripts_loaded",function(){gform.scriptsLoaded=!0}),window.addEventListener("DOMContentLoaded",function(){gform.domLoaded=!0}),gform={domLoaded:!1,scriptsLoaded:!1,initializeOnLoaded:function(o){gform.domLoaded&&gform.scriptsLoaded?o():!gform.domLoaded&&gform.scriptsLoaded?window.addEventListener("DOMContentLoaded",o):document.addEventListener("gform_main_scripts_loaded",o)},hooks:{action:{},filter:{}},addAction:function(o,n,r,t){gform.addHook("action",o,n,r,t)},addFilter:function(o,n,r,t){gform.addHook("filter",o,n,r,t)},doAction:function(o){gform.doHook("action",o,arguments)},applyFilters:function(o){return gform.doHook("filter",o,arguments)},removeAction:function(o,n){gform.removeHook("action",o,n)},removeFilter:function(o,n,r){gform.removeHook("filter",o,n,r)},addHook:function(o,n,r,t,i){null==gform.hooks[o][n]&&(gform.hooks[o][n]=[]);var e=gform.hooks[o][n];null==i&&(i=n+"_"+e.length),gform.hooks[o][n].push({tag:i,callable:r,priority:t=null==t?10:t})},doHook:function(n,o,r){var t;if(r=Array.prototype.slice.call(r,1),null!=gform.hooks[n][o]&&((o=gform.hooks[n][o]).sort(function(o,n){return o.priority-n.priority}),o.forEach(function(o){"function"!=typeof(t=o.callable)&&(t=window[t]),"action"==n?t.apply(null,r):r[0]=t.apply(null,r)})),"filter"==n)return r[0]},removeHook:function(o,n,t,i){var r;null!=gform.hooks[o][n]&&(r=(r=gform.hooks[o][n]).filter(function(o,n,r){return!!(null!=i&&i!=o.tag||null!=t&&t!=o.priority)}),gform.hooks[o][n]=r)}});</script>
                <div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper gform-theme--no-framework' data-form-theme='legacy' data-form-index='0' id='gform_wrapper_1' style='display:none'><div id='gf_1' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_1' id='gform_1'  action='/faqs-personal-injury-automobile-trucking-accidents/#gf_1' data-formid='1' novalidate>
                        <div class='gform-body gform_body'><ul id='gform_fields_1' class='gform_fields top_label form_sublabel_below description_below'><li id="field_1_1" class="gfield gfield--type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_1" ><label class='gfield_label gform-field-label' for='input_1_1'>Your Name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_1' id='input_1_1' type='text' value='' class='medium'     aria-required="true" aria-invalid="false"   /> </div></li><li id="field_1_2" class="gfield gfield--type-email gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_2" ><label class='gfield_label gform-field-label' for='input_1_2'>Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_email'>
                            <input name='input_2' id='input_1_2' type='email' value='' class='medium'    aria-required="true" aria-invalid="false"  />
                        </div></li><li id="field_1_3" class="gfield gfield--type-text field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_3" ><label class='gfield_label gform-field-label' for='input_1_3'>Phone</label><div class='ginput_container ginput_container_text'><input name='input_3' id='input_1_3' type='text' value='' class='medium'      aria-invalid="false"   /> </div></li><li id="field_1_4" class="gfield gfield--type-checkbox gfield--type-choice field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_4" ><label class='gfield_label gform-field-label gfield_label_before_complex' >What is the nature of your case?</label><div class='ginput_container ginput_container_checkbox'><ul class='gfield_checkbox' id='input_1_4'><li class='gchoice gchoice_1_4_1'>
								<input class='gfield-choice-input' name='input_4.1' type='checkbox'  value='Personal Injury'  id='choice_1_4_1'   />
								<label for='choice_1_4_1' id='label_1_4_1' class='gform-field-label gform-field-label--type-inline'>Personal Injury</label>
							</li><li class='gchoice gchoice_1_4_2'>
								<input class='gfield-choice-input' name='input_4.2' type='checkbox'  value='Serious Injury or Death'  id='choice_1_4_2'   />
								<label for='choice_1_4_2' id='label_1_4_2' class='gform-field-label gform-field-label--type-inline'>Serious Injury or Death</label>
							</li><li class='gchoice gchoice_1_4_3'>
								<input class='gfield-choice-input' name='input_4.3' type='checkbox'  value='Does this legal issue require immediate attention?'  id='choice_1_4_3'   />
								<label for='choice_1_4_3' id='label_1_4_3' class='gform-field-label gform-field-label--type-inline'>Does this legal issue require immediate attention?</label>
							</li><li class='gchoice gchoice_1_4_4'>
								<input class='gfield-choice-input' name='input_4.4' type='checkbox'  value='Business'  id='choice_1_4_4'   />
								<label for='choice_1_4_4' id='label_1_4_4' class='gform-field-label gform-field-label--type-inline'>Business</label>
							</li><li class='gchoice gchoice_1_4_5'>
								<input class='gfield-choice-input' name='input_4.5' type='checkbox'  value='Mediation'  id='choice_1_4_5'   />
								<label for='choice_1_4_5' id='label_1_4_5' class='gform-field-label gform-field-label--type-inline'>Mediation</label>
							</li><li class='gchoice gchoice_1_4_6'>
								<input class='gfield-choice-input' name='input_4.6' type='checkbox'  value='Will, Trust or Probate'  id='choice_1_4_6'   />
								<label for='choice_1_4_6' id='label_1_4_6' class='gform-field-label gform-field-label--type-inline'>Will, Trust or Probate</label>
							</li><li class='gchoice gchoice_1_4_7'>
								<input class='gfield-choice-input' name='input_4.7' type='checkbox'  value='Family Law'  id='choice_1_4_7'   />
								<label for='choice_1_4_7' id='label_1_4_7' class='gform-field-label gform-field-label--type-inline'>Family Law</label>
							</li><li class='gchoice gchoice_1_4_8'>
								<input class='gfield-choice-input' name='input_4.8' type='checkbox'  value='Real Estate Law'  id='choice_1_4_8'   />
								<label for='choice_1_4_8' id='label_1_4_8' class='gform-field-label gform-field-label--type-inline'>Real Estate Law</label>
							</li></ul></div></li><li id="field_1_6" class="gfield gfield--type-textarea field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_6" ><label class='gfield_label gform-field-label' for='input_1_6'>Please explain the urgency of your issue</label><div class='ginput_container ginput_container_textarea'><textarea name='input_6' id='input_1_6' class='textarea small'      aria-invalid="false"   rows='10' cols='50'></textarea></div></li><li id="field_1_5" class="gfield gfield--type-textarea field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_5" ><label class='gfield_label gform-field-label' for='input_1_5'>Can you give a brief description of your legal issues?</label><div class='ginput_container ginput_container_textarea'><textarea name='input_5' id='input_1_5' class='textarea medium'      aria-invalid="false"   rows='10' cols='50'></textarea></div></li><li id="field_1_7" class="gfield gfield--type-captcha field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_7" ><label class='gfield_label gform-field-label' for='input_1_7'>CAPTCHA</label><div id='input_1_7' class='ginput_container ginput_recaptcha' data-sitekey='6LdKUCcTAAAAAG6XuYSzitHAw1pX8s0zhFv_3rwB'  data-theme='light' data-tabindex='0'  data-badge=''></div></li><li id="field_1_8" class="gfield gfield--type-text gfield_contains_required field_sublabel_below gfield--no-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_8" ><label class='gfield_label gform-field-label' for='input_1_8'>Pandas are ______ and white.<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label><div class='ginput_container ginput_container_text'><input name='input_8' id='input_1_8' type='text' value='' class='large'     aria-required="true" aria-invalid="false"   /> </div></li><li id="field_1_9" class="gfield gfield--type-honeypot gform_validation_container field_sublabel_below gfield--has-description field_description_below gfield_visibility_visible"  data-js-reload="field_1_9" ><label class='gfield_label gform-field-label' for='input_1_9'>Name</label><div class='ginput_container'><input name='input_9' id='input_1_9' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_1_9'>This field is for validation purposes and should be left unchanged.</div></li></ul></div>
        <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_1' class='gform_button button' value='Submit'  onclick='if(window["gf_submitting_1"]){return false;}  if( !jQuery("#gform_1")[0].checkValidity || jQuery("#gform_1")[0].checkValidity()){window["gf_submitting_1"]=true;}  ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_1"]){return false;} if( !jQuery("#gform_1")[0].checkValidity || jQuery("#gform_1")[0].checkValidity()){window["gf_submitting_1"]=true;}  jQuery("#gform_1").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=1&amp;title=&amp;description=&amp;tabindex=0&amp;theme=legacy' />
            <input type='hidden' class='gform_hidden' name='is_submit_1' value='1' />
            <input type='hidden' class='gform_hidden' name='gform_submit' value='1' />
            
            <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' />
            <input type='hidden' class='gform_hidden' name='state_1' value='WyJbXSIsIjRhNjg2ODJjNjExZDdhNDFkMTZlMjMyNDQ1ZGEzMzk2Il0=' />
            <input type='hidden' class='gform_hidden' name='gform_target_page_number_1' id='gform_target_page_number_1' value='0' />
            <input type='hidden' class='gform_hidden' name='gform_source_page_number_1' id='gform_source_page_number_1' value='1' />
            <input type='hidden' name='gform_field_values' value='' />
            
        </div>
                        <p style="display: none !important;" class="akismet-fields-container" data-prefix="ak_"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="86"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form>
                        </div>
		                <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_1' id='gform_ajax_frame_1' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe>
		                <script type="text/javascript">
/* <![CDATA[ */
 gform.initializeOnLoaded( function() {gformInitSpinner( 1, 'https://springer-lyle.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery('#gform_ajax_frame_1').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_1');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_1').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_1').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_1').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_1').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_1').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_1').val();gformInitSpinner( 1, 'https://springer-lyle.com/wp-content/plugins/gravityforms/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [1, current_page]);window['gf_submitting_1'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_1').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_1').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [1]);window['gf_submitting_1'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_1').text());}, 50);}else{jQuery('#gform_1').append(contents);if(window['gformRedirect']) {gformRedirect();}}        const gformWrapperDiv = document.getElementById( "gform_wrapper_1" );        if ( gformWrapperDiv ) {            const visibilitySpan = document.createElement( "span" );            visibilitySpan.id = "gform_visibility_test_1";            gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan );        }        const visibilityTestDiv = document.getElementById( "gform_visibility_test_1" );        let postRenderFired = false;                function triggerPostRender() {            if ( postRenderFired ) {                return;            }            postRenderFired = true;            jQuery( document ).trigger( 'gform_post_render', [1, current_page] );            gform.utils.trigger( { event: 'gform/postRender', native: false, data: { formId: 1, currentPage: current_page } } );            if ( visibilityTestDiv ) {                visibilityTestDiv.parentNode.removeChild( visibilityTestDiv );            }        }        function debounce( func, wait, immediate ) {            var timeout;            return function() {                var context = this, args = arguments;                var later = function() {                    timeout = null;                    if ( !immediate ) func.apply( context, args );                };                var callNow = immediate && !timeout;                clearTimeout( timeout );                timeout = setTimeout( later, wait );                if ( callNow ) func.apply( context, args );            };        }        const debouncedTriggerPostRender = debounce( function() {            triggerPostRender();        }, 200 );        if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) {            const observer = new MutationObserver( ( mutations ) => {                mutations.forEach( ( mutation ) => {                    if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) {                        debouncedTriggerPostRender();                        observer.disconnect();                    }                });            });            observer.observe( document.body, {                attributes: true,                childList: false,                subtree: true,                attributeFilter: [ 'style', 'class' ],            });        } else {            triggerPostRender();        }    } );} ); 
/* ]]> */
</script>
