<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' 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='/10-important-tips-if-you-or-a-family-member-have-been-severely-injured/#gf_1' >
                        <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_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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='text' value='' class='medium'    aria-required="true" aria-invalid="false"  />
                        </div></li><li id="field_1_3" class="gfield field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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 field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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'>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'>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'>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'>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'>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'>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'>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'>Real Estate Law</label>
							</li></ul></div></li><li id="field_1_6" class="gfield field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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 field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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 field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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_contains_required field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_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 gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" ><label class='gfield_label' for='input_1_9' >Name</label><div class='ginput_container'><input name='input_9' id='input_1_9' type='text' value='' /></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;}  window["gf_submitting_1"]=true;  ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_1"]){return false;} 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' />
            <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;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js" name="ak_js" value="28"/><script>document.getElementById( "ak_js" ).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">
gform.initializeOnLoaded( function() {gformInitSpinner( 1, 'https://springer-lyle.com/wp-content/plugins/gravityforms/images/spinner.svg' );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' );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();}}jQuery(document).trigger('gform_post_render', [1, current_page]);} );} );
</script>
