<!DOCTYPE html>
<html>

  <head>
    <base href="https://give.salvationarmyusa.org/site/" />
    <title>
        
        The Salvation Army Emergency Disaster Services - Harvey Response - The Salvation Army Disaster Services
    </title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Script-Type" content="text/javascript" />
    <meta name="Keywords" content=" " />
    <meta name="Description" content="" />
        <meta name="Robots" content="index, follow" />
    
    
    






<script type="text/javascript" src="../yui3/yui/yui-min.js"></script><noscript>&nbsp;</noscript>
<script type="text/javascript" src="../js/convio/modules.js?version=2.9"></script><noscript>&nbsp;</noscript>
<script type="text/javascript">
var Y = YUI({base: '../yui3/',
insertBefore: 'yui_marker_loader_css', // insert all YUI module css before customstyle so it can be overridden
debug: false, 
modules: getModules('../', 'convio', true)});
</script><noscript>&nbsp;</noscript>


<script type="text/javascript" src="../js/utils.js"></script><noscript>&nbsp;</noscript>

<script type="text/javascript" src="../js/obs_comp_rollup.js"></script><noscript>&nbsp;</noscript>


<link href="../css/themes/default.css" rel="stylesheet" type="text/css" />
<link href="../css/themes/alphacube.css" rel="stylesheet" type="text/css"/>


<link href="../css/UserGlobalStyle.css" rel="stylesheet" type="text/css" />


<link href="../css/responsive/ResponsiveBase.css" rel="stylesheet" type="text/css" />


<link href="../css/responsive/DonFormResponsive.css" rel="stylesheet" type="text/css" />



<link href="../css/FormComponentsBehavior.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="../js/FormComponentsBehavior.js"></script><noscript>&nbsp;</noscript>
<script type="text/javascript" src="../js/don_level_elements.js"></script><noscript>&nbsp;</noscript>
<script type="text/javascript" src="../js/don_premium_elements.js"></script><noscript>&nbsp;</noscript>
<script type="text/javascript" src="../js/donations2.js"></script><noscript>&nbsp;</noscript>


<link rel="stylesheet" type="text/css" id="yui_marker_loader_css" />
<link href="../css/CustomStyle.css" rel="stylesheet" type="text/css" />
<link href="../css/CustomWysiwygStyle.css" rel="stylesheet" type="text/css" />






<meta name="CnvHeaderVersion" content="v5.0" />


    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<link rel="icon" href="../images/content/pagebuilder/favicon.ico">

<style type="text/css">
*, html, body, form, input, input.AddressBookButtons, input.Advocacy, input.btn, input.btnLg,
input.btnMed, input.btnMini, input.btnSm, select, select.Advocacy, textarea, legend, ul, ol, li,
option, table, tr, th, th.rfl_infoStatus, td, td.AlertListDescription, td.cstmBack, p, p.cstmBtnText,
p.cstmFrame, p.cstmHeading, p.cstmText, p.cstmTitle, p.dividerHeading, p.scrollingText, span.cstmHeading,
a, a.btn, a.btn:visited, a.cstmBtnText:hover, a.cstmBtnText:link, a.cstmBtnText:visited, #navList, .AdvocacyInstructions,
.AdvocacyNSFix, .BlogHeader, .Button, .Divider, .FieldLabels, .FormBox, .FormBox06, .FormBoxHeader, .Hint, .Instructions,
.Instructions, .ListItem0, .ListItem1, .NetscapeFix, .NoteText, .ObjTitle, .PhotoLinks, .Premiums, .ProgressBox, .ProgressBoxCurrent,
.SectionHead, .SmallButton, .Smaller, .SmallerC, .TribBtnText1, .Upgrades, .WhatNext, .alphacube_content, .dialog_content, .dialog_title,
.Explicit, .fr_register_another, .paraBlueSansSmall, .smallBlack, .smallSans, .smallSansBold, .smallWhiteBoldSans, .smallWhiteSans,
.smallestBlackSans {
  font-family: "proxima-nova", Helvetica, Arial, sans-serif;
  font-weight: normal;
}

body {
  background-color: #fff;
  margin: 0;
  padding: 0;
}

li {
  list-style: none;
}

ul, ol, li {
  margin: 0;
  padding: 0;
}

label {
  font-weight: normal;
  margin: 0;
  white-space: normal;
}

#wrapper {
  height: auto;
  margin: 0;
  padding: 0;
  width: 100%;
}

/* HEADER */
.logo-container {
  height: 110px;
  padding: 15px 0px 15px 170px;
  width: 100%;
}
/* END HEADER */

/* FOOTER */
footer {
  background-color: #342e27;
  margin: 0 auto;
  padding: 48px 50px;
  width: 100%;
}

.footer-headline {
  color: #ded7ad;
  font-family: trajan-pro-3, "Trajan Pro", "Georgia", "Times New Roman", serif;
  font-size: 30.73px;
  margin: 0;
  padding-bottom: 33px;
}

.ways-to-give-list {
  height: auto;
  max-width: 250px;
  width: 100%;
}

.ways-to-give-list li, .ways-to-give-list li a, .ways-to-give-list li strong {
  color: #e2dbc4;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 14px;
  padding-top: 15px;
}

.ways-to-give-list-first {
  padding: 0px !important;
}

.our-mission-text li, .our-mission-text li a {
  color: #e4dccc;
  font-family: Helvetica, Arial, sans-serif;
  font-size: 14px;
  line-height: 25px;
  padding-bottom: 38px;
}

.mission-list-last {
  padding: 0px !important;
}

.mission-list-last a {
  color: #ed2433;
}

.bbb-button {
  padding-top: 35px;
}

#give-with-trust {
  padding-left: 35px;
}
/* END FOOTER */

/* NATIONAL SINGLE STEP DONATION FORM */







form {
  background-color: #fff;
  border: 0.62px solid #878787;
  border-radius: 6px;
  -webkit-border-radius: 6px;
  -moz-border-radius: 6px;
  -o-border-radius: 6px;
  height: auto;
  padding: 30px 40px;
  width: 630px;
}

.form-header {
  border-bottom: 1px solid #d5d5d5;
  padding-bottom: 40px;
}

.form-headline {
  color: #ed2433;
  font-family: trajan-pro-3, "Trajan Pro", "Georgia", "Times New Roman", serif;
  font-size: 24px;
  margin-bottom: 17px;
  margin-top: 0;
}

input#amt-other-input:focus::-webkit-input-placeholder { color:transparent; }
input#amt-other-input:focus:-moz-placeholder { color:transparent; } /* FF 4-18 */
input#amt-other-input:focus::-moz-placeholder { color:transparent; } /* FF 19+ */
input#amt-other-input:focus:-ms-input-placeholder { color:transparent; } /* IE 10+ */

#memorial-df-link-label {
  font-size: 14.61px;
}

.frequency-button-container {
  margin-top: 40px;
  margin-bottom: 30px;
}

.frequency-headline, .donation-amt-headline {
  font-size: 13px;
  margin-bottom: 20px;
}

.frequency-btn input[type="radio"], .donation-amt-btn input[type="radio"] {
  display: none !important;
}

.frequency-btn {
  border: 1px solid #aaaaac;
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  color: #aaaaac;
  display: inline-block;
  height: 46px;
  line-height: 14px;
  padding-top: 14px;
  text-align: center;
  width: 125px;
}

.frequency-btn:hover {
  border: 1px solid #35565a;
  color: #35565a;
}

.frequency-btn.active {
/*  border: 1px solid #35565a;  */
  background-color:#35565a;
  color:#fff;
  font-weight: 600;
}

#one-time-btn, #monthly-btn, #quarterly-btn, #amt-1-btn, #amt-2-btn, #amt-3-btn {
  margin-right: 12px;
}

.donation-amt-btn {
  border: 1px solid #f69198;
  border-radius: 5px;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  -o-border-radius: 5px;
  color: #f69198;
  display: inline-block;
  height: 46px;
  line-height: 14px;
  padding-top: 14px;
  text-align: center;
  width: 125px;
}

.donation-amt-btn:hover {
  border: 1px solid #ed2432;
  color: #ed2432;
}

.donation-amt-btn.active {
  background-color: #ed2432;
  color: #fff;
  font-weight: 600;
}

#amt-other-container {
    padding-top: 15px;
    text-align: center;
}

#amt-other-btn input {
  border: 1px solid #f69198;
  box-shadow: none;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  -o-box-shadow: none;
  color: #f69198;
  height: 46px;
  line-height: 32px;
  text-align: center;
  width: 266px;
}

#amt-other-btn input::-webkit-input-placeholder {
  color: #f69198;
}

#amt-other-btn input:focus, #amt-other-radio-input:checked + #amt-other-btn input:focus {
  border: 1px solid #ed2432;
  color: #ed2432;
  outline: none !important;
  background-color: #ffffff;
  font-weight: normal;
}

#amt-other-radio-input:checked + #amt-other-btn input {
  background-color: #ed2432;
  color: #fff;
  font-weight: 600;
}

.donation-amt-button-container {
  border-bottom: 1px solid #d5d5d5;
  padding-bottom: 40px;
}

.asterisk {
  color: #ed2432;
}

.cc-info-container {
  border-bottom: 1px solid #d5d5d5;
  padding: 35px 0;
}

.info-headline {
  color: #ed2433;
  font-family: trajan-pro-3, "Trajan Pro", "Georgia", "Times New Roman", serif;
  font-size: 16px;
  margin-bottom: 25px;
  margin-top: 0;
}

#name-on-card-module input, #name-on-card-module label,
#card-number-module input, #card-number-module label,
#exp-date-module label, #exp-date-module select,
#cvv-module label, #cvv-module input {
  display: inline-block;
}

#name-on-card-module label {
  margin-right: 24px;
}

#name-on-card-input {
  border: 1px solid #c5c2be;
  height: 46px;
  width: 425px;
}

#name-on-card-input:focus, #card-number-input:focus, #exp-date-module select:focus,
#billing-address input:focus, #billing-apt input:focus, #billing-city input:focus,
#billing-state select:focus, #billing-zipcode input:focus {
  box-shadow: none;
  -webkit-box-shadow: none;
  -o-box-shadow: none;
  -moz-box-shadow: none;
  outline: none;
}

#card-number-input {
  border: 1px solid #c5c2be;
  height: 46px;
  width: 265px;
}

#card-number-module label {
  margin-right: 31px;
}

.card-number-help {
  color: #878787;
  display: inline;
  margin-left: 5px;
}

#exp-date-module select, #cvv-module input {
  border: 1px solid #c5c2be;
  height: 46px;
  width: 205px;
}

#exp-month-dropdown {
  margin-right: 12px;
}

#exp-date-module label {
  margin-right: 53px;
}

.cvv-help {
  display: inline;
  margin-left: 15px;
}

#cvv-module label {
  margin-right: 27px;
}

.billing-info-container {
  border-bottom: 1px solid #d5d5d5;
  margin: 40px 0;
}

#billing-address, #billing-apt, #billing-state, #billing-zipcode {
  display: inline-block;
}

#billing-address input {
  height: 46px;
  margin-right: 15px;
  width: 285px;
}

#billing-address input, #billing-apt input, #billing-city input,
#billing-state select, #billing-zipcode input {
  border: 1px solid #c5c2be;
}

#billing-apt input {
  height: 46px;
  width: 125px;
}

label[for="displayed-billing-address"] {
  margin-right: 60px;
}

#billing-city input {
  height: 46px;
  margin-left: 121px;
  width: 429px;
}

#billing-state select {
  height: 46px;
  width: 205px;
}

#billing-zipcode input {
  height: 46px;
  width: 205px;
}

#billing-state {
  margin-left: 121px;
  margin-right: 15px;
}

.international-donation-container, .zipcode-match-container, .donate-elsewhere-link,
.donate-elsewhere-module, #zipmap-loading, #zipmap-manual-loading {
  margin: 30px 0 30px 121px;
}

.international-donation-container a, .cvv-help a {
  color: #ed2433;
}

.zipcode-match-container {
  margin: 30px 0 30px 121px;
}

.location-name {
  margin-top: 30px;
}

.donate-elsewhere-link a {
  color: #ed2433;
}

#donate-elsewhere-city, #donate-elsewhere-state {
  display: inline-block;
}

#donate-elsewhere-city input, #donate-elsewhere-state select {
  height: 46px;
  width: 205px;
}

#donate-elsewhere-city input {
  margin-right: 15px;
}

.contact-info-container {
  margin: 40px 0;
}

#contact-first-name, #contact-last-name, #billing-first-name, #billing-last-name {
  display: inline-block;
}

#contact-first-name input, #contact-last-name input, #billing-first-name input, #billing-last-name input {
  height: 46px;
  width: 205px;
}

#contact-first-name, #billing-first-name {
  margin-right: 15px;
}

label[for="contact-name"], label[for="billing-name"] {
  margin-right: 74px;
}

#contact-email-input {
  display: inline-block;
  height: 46px;
  width: 429px;
}

#fineline-has-email-container {
  margin-bottom: 15px;
}

#comments-container {
  margin-bottom: 30px;
}

#comments-textbox-label, #fineine-has-email-container-label {
  margin-right: 0px;
  width: 115px;
  vertical-align: top;
}

#comments-textbox {
  display: inline-block;
  width: 429px;
}

.contact-email-label {
  margin-right: 76px;
}

#submit-btn {
  background-color: #ed2433;
  border: none;
  border-radius: 6px;
  -webkit-border-radius: 6px;
  -moz-border-radius: 6px;
  -o-border-radius: 6px;
  color: #fff;
  font-size: 16px;
  font-weight: 600;
  height: 54px;
  width: 550px;
}

#submit-btn:focus {
  box-shadow: none;
  -webkit-box-shadow: none;
  -moz-box-shadow: none;
  -o-box-shadow: none;
  outline: none;
}
#submit-btn:disabled {
  cursor: pointer;
}
#submit-btn[disabled] {
  cursor: pointer;
}

.hidden {
  display: none;
}

#name-on-card-input-error, #card-number-input-error, #exp-month-dropdown-error, #cvv-input-error, #billing-city-input-error, #contact-email-input-error {margin-left:121px;}

#exp-month-dropdown-error {margin-right:100px !important;}

/* END NATIONAL SINGLE STEP DONATION FORM */

input[type=number]::-webkit-inner-spin-button, 
input[type=number]::-webkit-outer-spin-button { 
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    margin: 0; 
}

input[type='number'] {
    -moz-appearance:textfield;
}

#receiptContainer > div:nth-child(1) > p:nth-child(4) > span:nth-child(2) {display:inline-block;}

span.title {vertical-align:top;}

#receiptContainer #chapter-name {font-weight:bold;}

li.verisign-button img {width:135px;}


#name-on-card-module {
  margin-bottom: 0px;
}

.form-header-switch-link {
  font-size:11px;
  margin-bottom:7px;
}

.form-header-switch-link a {
  color: #ed2433;
}
</style>

<style type="text/css">
@media print {
#tyBanner {padding-top:0px !important; padding-bottom:0px !important;}
#tyBanner h1 {margin:0px !important;}
#tyBanner > div > div:nth-child(2), #tyBanner > div > div:nth-child(3), #transAbout, #transPreFoot, #ways-to-give, #give-with-trust {display:none;}



}
</style>


<style type="text/css">
/* national RESPONSIVE CSS */
.desktop {display:block;}
.mobile {display:none;}
.mission-list-last a.privacy-policy-link {color:#ed2433;}









@media (max-width: 1200px) {

}




@media (max-width: 992px) {


}




@media (max-width:768px){
.desktop {display:none;}
.mobile {display:block;}


footer {padding:39px 50px;}

.footer-module {margin-bottom:40px; padding:0px 10px;}
/* div.footer-module.col-sm-4 {width:100%;} */
.mission-list-last a.privacy-policy-link {color:#d7d195;}
.mobile #give-with-trust {padding:0px 10px;}
.logo-container {padding:0px; text-align:center; padding-top:10px;}
.logo-container img {max-width:100%;}


main#body {padding:28px 50px 38px;}







}

@media (max-width:480px){
.footer-module {margin-bottom:40px; padding:0px 10px;}
.mission-list-last a.privacy-policy-link {color:#d7d195;}
footer {padding:25px 15px;}
.footer-headline {font-size:26.73px;}
.mobile #give-with-trust {padding:0px 10px;}
.logo-container img {max-width:90%; margin-top:5px;}


main#body {padding:28px 25px 38px;}




}
</style>


<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/luminateExtend/1.7.1/luminateExtend.min.js"></script>


<!--  begin added 9/15 -->
<!--script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/jquery.validate.js"></script-->
<script>
$(document).ready(function() {
  $(window).keydown(function(event){
    if(event.keyCode == 13) {
      event.preventDefault();
      return false;
    }
  });
});
/*!
 * jQuery Validation Plugin v1.14.0
 *
 * http://jqueryvalidation.org/
 *
 * Copyright (c) 2015 Jörn Zaefferer
 * Released under the MIT license
 */
(function( factory ) {
  if ( typeof define === "function" && define.amd ) {
    define( ["jquery"], factory );
  } else {
    factory( jQuery );
  }
}(function( $ ) {

$.extend($.fn, {
  // http://jqueryvalidation.org/validate/
  validate: function( options ) {

    // if nothing is selected, return nothing; can't chain anyway
    if ( !this.length ) {
      if ( options && options.debug && window.console ) {
        console.warn( "Nothing selected, can't validate, returning nothing." );
      }
      return;
    }

    // check if a validator for this form was already created
    var validator = $.data( this[ 0 ], "validator" );
    if ( validator ) {
      return validator;
    }

    // Add novalidate tag if HTML5.
    this.attr( "novalidate", "novalidate" );

    validator = new $.validator( options, this[ 0 ] );
    $.data( this[ 0 ], "validator", validator );

    if ( validator.settings.onsubmit ) {

      this.on( "click.validate", ":submit", function( event ) {
        if ( validator.settings.submitHandler ) {
          validator.submitButton = event.target;
        }

        // allow suppressing validation by adding a cancel class to the submit button
        if ( $( this ).hasClass( "cancel" ) ) {
          validator.cancelSubmit = true;
        }

        // allow suppressing validation by adding the html5 formnovalidate attribute to the submit button
        if ( $( this ).attr( "formnovalidate" ) !== undefined ) {
          validator.cancelSubmit = true;
        }
      });

      // validate the form on submit
      this.on( "submit.validate", function( event ) {
        if ( validator.settings.debug ) {
          // prevent form submit to be able to see console output
          event.preventDefault();
        }
        function handle() {
          var hidden, result;
          if ( validator.settings.submitHandler ) {
            if ( validator.submitButton ) {
              // insert a hidden input as a replacement for the missing submit button
              hidden = $( "<input type='hidden'/>" )
                .attr( "name", validator.submitButton.name )
                .val( $( validator.submitButton ).val() )
                .appendTo( validator.currentForm );
            }
            result = validator.settings.submitHandler.call( validator, validator.currentForm, event );
            if ( validator.submitButton ) {
              // and clean up afterwards; thanks to no-block-scope, hidden can be referenced
              hidden.remove();
            }
            if ( result !== undefined ) {
              return result;
            }
            return false;
          }
          return true;
        }

        // prevent submit for invalid forms or custom submit handlers
        if ( validator.cancelSubmit ) {
          validator.cancelSubmit = false;
          return handle();
        }
        if ( validator.form() ) {
          if ( validator.pendingRequest ) {
            validator.formSubmitted = true;
            return false;
          }
          return handle();
        } else {
          validator.focusInvalid();
          return false;
        }
      });
    }

    return validator;
  },
  // http://jqueryvalidation.org/valid/
  valid: function() {
    var valid, validator, errorList;

    if ( $( this[ 0 ] ).is( "form" ) ) {
      valid = this.validate().form();
    } else {
      errorList = [];
      valid = true;
      validator = $( this[ 0 ].form ).validate();
      this.each( function() {
        valid = validator.element( this ) && valid;
        errorList = errorList.concat( validator.errorList );
      });
      validator.errorList = errorList;
    }
    return valid;
  },

  // http://jqueryvalidation.org/rules/
  rules: function( command, argument ) {
    var element = this[ 0 ],
      settings, staticRules, existingRules, data, param, filtered;

    if ( command ) {
      settings = $.data( element.form, "validator" ).settings;
      staticRules = settings.rules;
      existingRules = $.validator.staticRules( element );
      switch ( command ) {
      case "add":
        $.extend( existingRules, $.validator.normalizeRule( argument ) );
        // remove messages from rules, but allow them to be set separately
        delete existingRules.messages;
        staticRules[ element.name ] = existingRules;
        if ( argument.messages ) {
          settings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );
        }
        break;
      case "remove":
        if ( !argument ) {
          delete staticRules[ element.name ];
          return existingRules;
        }
        filtered = {};
        $.each( argument.split( /\s/ ), function( index, method ) {
          filtered[ method ] = existingRules[ method ];
          delete existingRules[ method ];
          if ( method === "required" ) {
            $( element ).removeAttr( "aria-required" );
          }
        });
        return filtered;
      }
    }

    data = $.validator.normalizeRules(
    $.extend(
      {},
      $.validator.classRules( element ),
      $.validator.attributeRules( element ),
      $.validator.dataRules( element ),
      $.validator.staticRules( element )
    ), element );

    // make sure required is at front
    if ( data.required ) {
      param = data.required;
      delete data.required;
      data = $.extend( { required: param }, data );
      $( element ).attr( "aria-required", "true" );
    }

    // make sure remote is at back
    if ( data.remote ) {
      param = data.remote;
      delete data.remote;
      data = $.extend( data, { remote: param });
    }

    return data;
  }
});

// Custom selectors
$.extend( $.expr[ ":" ], {
  // http://jqueryvalidation.org/blank-selector/
  blank: function( a ) {
    return !$.trim( "" + $( a ).val() );
  },
  // http://jqueryvalidation.org/filled-selector/
  filled: function( a ) {
    return !!$.trim( "" + $( a ).val() );
  },
  // http://jqueryvalidation.org/unchecked-selector/
  unchecked: function( a ) {
    return !$( a ).prop( "checked" );
  }
});

// constructor for validator
$.validator = function( options, form ) {
  this.settings = $.extend( true, {}, $.validator.defaults, options );
  this.currentForm = form;
  this.init();
};

// http://jqueryvalidation.org/jQuery.validator.format/
$.validator.format = function( source, params ) {
  if ( arguments.length === 1 ) {
    return function() {
      var args = $.makeArray( arguments );
      args.unshift( source );
      return $.validator.format.apply( this, args );
    };
  }
  if ( arguments.length > 2 && params.constructor !== Array  ) {
    params = $.makeArray( arguments ).slice( 1 );
  }
  if ( params.constructor !== Array ) {
    params = [ params ];
  }
  $.each( params, function( i, n ) {
    source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
      return n;
    });
  });
  return source;
};

$.extend( $.validator, {

  defaults: {
    messages: {},
    groups: {},
    rules: {},
    errorClass: "error",
    validClass: "valid",
    errorElement: "label",
    focusCleanup: false,
    focusInvalid: true,
    errorContainer: $( [] ),
    errorLabelContainer: $( [] ),
    onsubmit: true,
    ignore: ":hidden",
    ignoreTitle: false,
    onfocusin: function( element ) {
      this.lastActive = element;

      // Hide error label and remove error class on focus if enabled
      if ( this.settings.focusCleanup ) {
        if ( this.settings.unhighlight ) {
          this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
        }
        this.hideThese( this.errorsFor( element ) );
      }
    },
    onfocusout: function( element ) {
      if ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {
        this.element( element );
      }
    },
    onkeyup: function( element, event ) {
      // Avoid revalidate the field when pressing one of the following keys
      // Shift       => 16
      // Ctrl        => 17
      // Alt         => 18
      // Caps lock   => 20
      // End         => 35
      // Home        => 36
      // Left arrow  => 37
      // Up arrow    => 38
      // Right arrow => 39
      // Down arrow  => 40
      // Insert      => 45
      // Num lock    => 144
      // AltGr key   => 225
      var excludedKeys = [
        16, 17, 18, 20, 35, 36, 37,
        38, 39, 40, 45, 144, 225
      ];

      if ( event.which === 9 && this.elementValue( element ) === "" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {
        return;
      } else if ( element.name in this.submitted || element === this.lastElement ) {
        this.element( element );
      }
    },
    onclick: function( element ) {
      // click on selects, radiobuttons and checkboxes
      if ( element.name in this.submitted ) {
        this.element( element );

      // or option elements, check parent select in that case
      } else if ( element.parentNode.name in this.submitted ) {
        this.element( element.parentNode );
      }
    },
    highlight: function( element, errorClass, validClass ) {
      if ( element.type === "radio" ) {
        this.findByName( element.name ).addClass( errorClass ).removeClass( validClass );
      } else {
        $( element ).addClass( errorClass ).removeClass( validClass );
      }
    },
    unhighlight: function( element, errorClass, validClass ) {
      if ( element.type === "radio" ) {
        this.findByName( element.name ).removeClass( errorClass ).addClass( validClass );
      } else {
        $( element ).removeClass( errorClass ).addClass( validClass );
      }
    }
  },

  // http://jqueryvalidation.org/jQuery.validator.setDefaults/
  setDefaults: function( settings ) {
    $.extend( $.validator.defaults, settings );
  },

  messages: {
    required: "This field is required.",
    remote: "Please fix this field.",
    email: "Please enter a valid email address.",
    url: "Please enter a valid URL.",
    date: "Please enter a valid date.",
    dateISO: "Please enter a valid date ( ISO ).",
    number: "Please enter a valid number.",
    digits: "Please enter only digits.",
    creditcard: "Please enter a valid credit card number.",
    equalTo: "Please enter the same value again.",
    maxlength: $.validator.format( "Please enter no more than {0} characters." ),
    minlength: $.validator.format( "Please enter at least {0} characters." ),
    rangelength: $.validator.format( "Please enter a value between {0} and {1} characters long." ),
    range: $.validator.format( "Please enter a value between {0} and {1}." ),
    max: $.validator.format( "Please enter a value less than or equal to {0}." ),
    min: $.validator.format( "Please enter a value greater than or equal to {0}." )
  },

  autoCreateRanges: false,

  prototype: {

    init: function() {
      this.labelContainer = $( this.settings.errorLabelContainer );
      this.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );
      this.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );
      this.submitted = {};
      this.valueCache = {};
      this.pendingRequest = 0;
      this.pending = {};
      this.invalid = {};
      this.reset();

      var groups = ( this.groups = {} ),
        rules;
      $.each( this.settings.groups, function( key, value ) {
        if ( typeof value === "string" ) {
          value = value.split( /\s/ );
        }
        $.each( value, function( index, name ) {
          groups[ name ] = key;
        });
      });
      rules = this.settings.rules;
      $.each( rules, function( key, value ) {
        rules[ key ] = $.validator.normalizeRule( value );
      });

      function delegate( event ) {
        var validator = $.data( this.form, "validator" ),
          eventType = "on" + event.type.replace( /^validate/, "" ),
          settings = validator.settings;
        if ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {
          settings[ eventType ].call( validator, this, event );
        }
      }

      $( this.currentForm )
        .on( "focusin.validate focusout.validate keyup.validate",
          ":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], " +
          "[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], " +
          "[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], " +
          "[type='radio'], [type='checkbox']", delegate)
        // Support: Chrome, oldIE
        // "select" is provided as event.target when clicking a option
        .on("click.validate", "select, option, [type='radio'], [type='checkbox']", delegate);

      if ( this.settings.invalidHandler ) {
        $( this.currentForm ).on( "invalid-form.validate", this.settings.invalidHandler );
      }

      // Add aria-required to any Static/Data/Class required fields before first validation
      // Screen readers require this attribute to be present before the initial submission http://www.w3.org/TR/WCAG-TECHS/ARIA2.html
      $( this.currentForm ).find( "[required], [data-rule-required], .required" ).attr( "aria-required", "true" );
    },

    // http://jqueryvalidation.org/Validator.form/
    form: function() {
      this.checkForm();
      $.extend( this.submitted, this.errorMap );
      this.invalid = $.extend({}, this.errorMap );
      if ( !this.valid() ) {
        $( this.currentForm ).triggerHandler( "invalid-form", [ this ]);
      }
      this.showErrors();
      return this.valid();
    },

    checkForm: function() {
      this.prepareForm();
      for ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {
        this.check( elements[ i ] );
      }
      return this.valid();
    },

    // http://jqueryvalidation.org/Validator.element/
    element: function( element ) {
      var cleanElement = this.clean( element ),
        checkElement = this.validationTargetFor( cleanElement ),
        result = true;

      this.lastElement = checkElement;

      if ( checkElement === undefined ) {
        delete this.invalid[ cleanElement.name ];
      } else {
        this.prepareElement( checkElement );
        this.currentElements = $( checkElement );

        result = this.check( checkElement ) !== false;
        if ( result ) {
          delete this.invalid[ checkElement.name ];
        } else {
          this.invalid[ checkElement.name ] = true;
        }
      }
      // Add aria-invalid status for screen readers
      $( element ).attr( "aria-invalid", !result );

      if ( !this.numberOfInvalids() ) {
        // Hide error containers on last error
        this.toHide = this.toHide.add( this.containers );
      }
      this.showErrors();
      return result;
    },

    // http://jqueryvalidation.org/Validator.showErrors/
    showErrors: function( errors ) {
      if ( errors ) {
        // add items to error list and map
        $.extend( this.errorMap, errors );
        this.errorList = [];
        for ( var name in errors ) {
          this.errorList.push({
            message: errors[ name ],
            element: this.findByName( name )[ 0 ]
          });
        }
        // remove items from success list
        this.successList = $.grep( this.successList, function( element ) {
          return !( element.name in errors );
        });
      }
      if ( this.settings.showErrors ) {
        this.settings.showErrors.call( this, this.errorMap, this.errorList );
      } else {
        this.defaultShowErrors();
      }
    },

    // http://jqueryvalidation.org/Validator.resetForm/
    resetForm: function() {
      if ( $.fn.resetForm ) {
        $( this.currentForm ).resetForm();
      }
      this.submitted = {};
      this.lastElement = null;
      this.prepareForm();
      this.hideErrors();
      var i, elements = this.elements()
        .removeData( "previousValue" )
        .removeAttr( "aria-invalid" );

      if ( this.settings.unhighlight ) {
        for ( i = 0; elements[ i ]; i++ ) {
          this.settings.unhighlight.call( this, elements[ i ],
            this.settings.errorClass, "" );
        }
      } else {
        elements.removeClass( this.settings.errorClass );
      }
    },

    numberOfInvalids: function() {
      return this.objectLength( this.invalid );
    },

    objectLength: function( obj ) {
      /* jshint unused: false */
      var count = 0,
        i;
      for ( i in obj ) {
        count++;
      }
      return count;
    },

    hideErrors: function() {
      this.hideThese( this.toHide );
    },

    hideThese: function( errors ) {
      errors.not( this.containers ).text( "" );
      this.addWrapper( errors ).hide();
    },

    valid: function() {
      return this.size() === 0;
    },

    size: function() {
      return this.errorList.length;
    },

    focusInvalid: function() {
      if ( this.settings.focusInvalid ) {
        try {
          $( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [])
          .filter( ":visible" )
          .focus()
          // manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
          .trigger( "focusin" );
        } catch ( e ) {
          // ignore IE throwing errors when focusing hidden elements
        }
      }
    },

    findLastActive: function() {
      var lastActive = this.lastActive;
      return lastActive && $.grep( this.errorList, function( n ) {
        return n.element.name === lastActive.name;
      }).length === 1 && lastActive;
    },

    elements: function() {
      var validator = this,
        rulesCache = {};

      // select all valid inputs inside the form (no submit or reset buttons)
      return $( this.currentForm )
      .find( "input, select, textarea" )
      .not( ":submit, :reset, :image, :disabled" )
      .not( this.settings.ignore )
      .filter( function() {
        if ( !this.name && validator.settings.debug && window.console ) {
          console.error( "%o has no name assigned", this );
        }

        // select only the first element for each name, and only those with rules specified
        if ( this.name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {
          return false;
        }

        rulesCache[ this.name ] = true;
        return true;
      });
    },

    clean: function( selector ) {
      return $( selector )[ 0 ];
    },

    errors: function() {
      var errorClass = this.settings.errorClass.split( " " ).join( "." );
      return $( this.settings.errorElement + "." + errorClass, this.errorContext );
    },

    reset: function() {
      this.successList = [];
      this.errorList = [];
      this.errorMap = {};
      this.toShow = $( [] );
      this.toHide = $( [] );
      this.currentElements = $( [] );
    },

    prepareForm: function() {
      this.reset();
      this.toHide = this.errors().add( this.containers );
    },

    prepareElement: function( element ) {
      this.reset();
      this.toHide = this.errorsFor( element );
    },

    elementValue: function( element ) {
      var val,
        $element = $( element ),
        type = element.type;

      if ( type === "radio" || type === "checkbox" ) {
        return this.findByName( element.name ).filter(":checked").val();
      } else if ( type === "number" && typeof element.validity !== "undefined" ) {
        return element.validity.badInput ? false : $element.val();
      }

      val = $element.val();
      if ( typeof val === "string" ) {
        return val.replace(/\r/g, "" );
      }
      return val;
    },

    check: function( element ) {
      element = this.validationTargetFor( this.clean( element ) );

      var rules = $( element ).rules(),
        rulesCount = $.map( rules, function( n, i ) {
          return i;
        }).length,
        dependencyMismatch = false,
        val = this.elementValue( element ),
        result, method, rule;

      for ( method in rules ) {
        rule = { method: method, parameters: rules[ method ] };
        try {

          result = $.validator.methods[ method ].call( this, val, element, rule.parameters );

          // if a method indicates that the field is optional and therefore valid,
          // don't mark it as valid when there are no other rules
          if ( result === "dependency-mismatch" && rulesCount === 1 ) {
            dependencyMismatch = true;
            continue;
          }
          dependencyMismatch = false;

          if ( result === "pending" ) {
            this.toHide = this.toHide.not( this.errorsFor( element ) );
            return;
          }

          if ( !result ) {
            this.formatAndAdd( element, rule );
            return false;
          }
        } catch ( e ) {
          if ( this.settings.debug && window.console ) {
            console.log( "Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.", e );
          }
          if ( e instanceof TypeError ) {
            e.message += ".  Exception occurred when checking element " + element.id + ", check the '" + rule.method + "' method.";
          }

          throw e;
        }
      }
      if ( dependencyMismatch ) {
        return;
      }
      if ( this.objectLength( rules ) ) {
        this.successList.push( element );
      }
      return true;
    },

    // return the custom message for the given element and validation method
    // specified in the element's HTML5 data attribute
    // return the generic message if present and no method specific message is present
    customDataMessage: function( element, method ) {
      return $( element ).data( "msg" + method.charAt( 0 ).toUpperCase() +
        method.substring( 1 ).toLowerCase() ) || $( element ).data( "msg" );
    },

    // return the custom message for the given element name and validation method
    customMessage: function( name, method ) {
      var m = this.settings.messages[ name ];
      return m && ( m.constructor === String ? m : m[ method ]);
    },

    // return the first defined argument, allowing empty strings
    findDefined: function() {
      for ( var i = 0; i < arguments.length; i++) {
        if ( arguments[ i ] !== undefined ) {
          return arguments[ i ];
        }
      }
      return undefined;
    },

    defaultMessage: function( element, method ) {
      return this.findDefined(
        this.customMessage( element.name, method ),
        this.customDataMessage( element, method ),
        // title is never undefined, so handle empty string as undefined
        !this.settings.ignoreTitle && element.title || undefined,
        $.validator.messages[ method ],
        "<strong>Warning: No message defined for " + element.name + "</strong>"
      );
    },

    formatAndAdd: function( element, rule ) {
      var message = this.defaultMessage( element, rule.method ),
        theregex = /\$?\{(\d+)\}/g;
      if ( typeof message === "function" ) {
        message = message.call( this, rule.parameters, element );
      } else if ( theregex.test( message ) ) {
        message = $.validator.format( message.replace( theregex, "{$1}" ), rule.parameters );
      }
      this.errorList.push({
        message: message,
        element: element,
        method: rule.method
      });

      this.errorMap[ element.name ] = message;
      this.submitted[ element.name ] = message;
    },

    addWrapper: function( toToggle ) {
      if ( this.settings.wrapper ) {
        toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
      }
      return toToggle;
    },

    defaultShowErrors: function() {
      var i, elements, error;
      for ( i = 0; this.errorList[ i ]; i++ ) {
        error = this.errorList[ i ];
        if ( this.settings.highlight ) {
          this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
        }
        this.showLabel( error.element, error.message );
      }
      if ( this.errorList.length ) {
        this.toShow = this.toShow.add( this.containers );
      }
      if ( this.settings.success ) {
        for ( i = 0; this.successList[ i ]; i++ ) {
          this.showLabel( this.successList[ i ] );
        }
      }
      if ( this.settings.unhighlight ) {
        for ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {
          this.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );
        }
      }
      this.toHide = this.toHide.not( this.toShow );
      this.hideErrors();
      this.addWrapper( this.toShow ).show();
    },

    validElements: function() {
      return this.currentElements.not( this.invalidElements() );
    },

    invalidElements: function() {
      return $( this.errorList ).map(function() {
        return this.element;
      });
    },

    showLabel: function( element, message ) {
      var place, group, errorID,
        error = this.errorsFor( element ),
        elementID = this.idOrName( element ),
        describedBy = $( element ).attr( "aria-describedby" );
      if ( error.length ) {
        // refresh error/success class
        error.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );
        // replace message on existing label
        error.html( message );
      } else {
        // create error element
        error = $( "<" + this.settings.errorElement + ">" )
          .attr( "id", elementID + "-error" )
          .addClass( this.settings.errorClass )
          .html( message || "" );

        // Maintain reference to the element to be placed into the DOM
        place = error;
        if ( this.settings.wrapper ) {
          // make sure the element is visible, even in IE
          // actually showing the wrapped element is handled elsewhere
          place = error.hide().show().wrap( "<" + this.settings.wrapper + "/>" ).parent();
        }
        if ( this.labelContainer.length ) {
          this.labelContainer.append( place );
        } else if ( this.settings.errorPlacement ) {
          this.settings.errorPlacement( place, $( element ) );
        } else {
          place.insertAfter( element );
        }

        // Link error back to the element
        if ( error.is( "label" ) ) {
          // If the error is a label, then associate using 'for'
          error.attr( "for", elementID );
        } else if ( error.parents( "label[for='" + elementID + "']" ).length === 0 ) {
          // If the element is not a child of an associated label, then it's necessary
          // to explicitly apply aria-describedby

          errorID = error.attr( "id" ).replace( /(:|\.|\[|\]|\$)/g, "\\$1");
          // Respect existing non-error aria-describedby
          if ( !describedBy ) {
            describedBy = errorID;
          } else if ( !describedBy.match( new RegExp( "\\b" + errorID + "\\b" ) ) ) {
            // Add to end of list if not already present
            describedBy += " " + errorID;
          }
          $( element ).attr( "aria-describedby", describedBy );

          // If this element is grouped, then assign to all elements in the same group
          group = this.groups[ element.name ];
          if ( group ) {
            $.each( this.groups, function( name, testgroup ) {
              if ( testgroup === group ) {
                $( "[name='" + name + "']", this.currentForm )
                  .attr( "aria-describedby", error.attr( "id" ) );
              }
            });
          }
        }
      }
      if ( !message && this.settings.success ) {
        error.text( "" );
        if ( typeof this.settings.success === "string" ) {
          error.addClass( this.settings.success );
        } else {
          this.settings.success( error, element );
        }
      }
      this.toShow = this.toShow.add( error );
    },

    errorsFor: function( element ) {
      var name = this.idOrName( element ),
        describer = $( element ).attr( "aria-describedby" ),
        selector = "label[for='" + name + "'], label[for='" + name + "'] *";

      // aria-describedby should directly reference the error element
      if ( describer ) {
        selector = selector + ", #" + describer.replace( /\s+/g, ", #" );
      }
      return this
        .errors()
        .filter( selector );
    },

    idOrName: function( element ) {
      return this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );
    },

    validationTargetFor: function( element ) {

      // If radio/checkbox, validate first element in group instead
      if ( this.checkable( element ) ) {
        element = this.findByName( element.name );
      }

      // Always apply ignore filter
      return $( element ).not( this.settings.ignore )[ 0 ];
    },

    checkable: function( element ) {
      return ( /radio|checkbox/i ).test( element.type );
    },

    findByName: function( name ) {
      return $( this.currentForm ).find( "[name='" + name + "']" );
    },

    getLength: function( value, element ) {
      switch ( element.nodeName.toLowerCase() ) {
      case "select":
        return $( "option:selected", element ).length;
      case "input":
        if ( this.checkable( element ) ) {
          return this.findByName( element.name ).filter( ":checked" ).length;
        }
      }
      return value.length;
    },

    depend: function( param, element ) {
      return this.dependTypes[typeof param] ? this.dependTypes[typeof param]( param, element ) : true;
    },

    dependTypes: {
      "boolean": function( param ) {
        return param;
      },
      "string": function( param, element ) {
        return !!$( param, element.form ).length;
      },
      "function": function( param, element ) {
        return param( element );
      }
    },

    optional: function( element ) {
      var val = this.elementValue( element );
      return !$.validator.methods.required.call( this, val, element ) && "dependency-mismatch";
    },

    startRequest: function( element ) {
      if ( !this.pending[ element.name ] ) {
        this.pendingRequest++;
        this.pending[ element.name ] = true;
      }
    },

    stopRequest: function( element, valid ) {
      this.pendingRequest--;
      // sometimes synchronization fails, make sure pendingRequest is never < 0
      if ( this.pendingRequest < 0 ) {
        this.pendingRequest = 0;
      }
      delete this.pending[ element.name ];
      if ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {
        $( this.currentForm ).submit();
        this.formSubmitted = false;
      } else if (!valid && this.pendingRequest === 0 && this.formSubmitted ) {
        $( this.currentForm ).triggerHandler( "invalid-form", [ this ]);
        this.formSubmitted = false;
      }
    },

    previousValue: function( element ) {
      return $.data( element, "previousValue" ) || $.data( element, "previousValue", {
        old: null,
        valid: true,
        message: this.defaultMessage( element, "remote" )
      });
    },

    // cleans up all forms and elements, removes validator-specific events
    destroy: function() {
      this.resetForm();

      $( this.currentForm )
        .off( ".validate" )
        .removeData( "validator" );
    }

  },

  classRuleSettings: {
    required: { required: true },
    email: { email: true },
    url: { url: true },
    date: { date: true },
    dateISO: { dateISO: true },
    number: { number: true },
    digits: { digits: true },
    creditcard: { creditcard: true }
  },

  addClassRules: function( className, rules ) {
    if ( className.constructor === String ) {
      this.classRuleSettings[ className ] = rules;
    } else {
      $.extend( this.classRuleSettings, className );
    }
  },

  classRules: function( element ) {
    var rules = {},
      classes = $( element ).attr( "class" );

    if ( classes ) {
      $.each( classes.split( " " ), function() {
        if ( this in $.validator.classRuleSettings ) {
          $.extend( rules, $.validator.classRuleSettings[ this ]);
        }
      });
    }
    return rules;
  },

  normalizeAttributeRule: function( rules, type, method, value ) {

    // convert the value to a number for number inputs, and for text for backwards compability
    // allows type="date" and others to be compared as strings
    if ( /min|max/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {
      value = Number( value );

      // Support Opera Mini, which returns NaN for undefined minlength
      if ( isNaN( value ) ) {
        value = undefined;
      }
    }

    if ( value || value === 0 ) {
      rules[ method ] = value;
    } else if ( type === method && type !== "range" ) {

      // exception: the jquery validate 'range' method
      // does not test for the html5 'range' type
      rules[ method ] = true;
    }
  },

  attributeRules: function( element ) {
    var rules = {},
      $element = $( element ),
      type = element.getAttribute( "type" ),
      method, value;

    for ( method in $.validator.methods ) {

      // support for <input required> in both html5 and older browsers
      if ( method === "required" ) {
        value = element.getAttribute( method );

        // Some browsers return an empty string for the required attribute
        // and non-HTML5 browsers might have required="" markup
        if ( value === "" ) {
          value = true;
        }

        // force non-HTML5 browsers to return bool
        value = !!value;
      } else {
        value = $element.attr( method );
      }

      this.normalizeAttributeRule( rules, type, method, value );
    }

    // maxlength may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs
    if ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {
      delete rules.maxlength;
    }

    return rules;
  },

  dataRules: function( element ) {
    var rules = {},
      $element = $( element ),
      type = element.getAttribute( "type" ),
      method, value;

    for ( method in $.validator.methods ) {
      value = $element.data( "rule" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );
      this.normalizeAttributeRule( rules, type, method, value );
    }
    return rules;
  },

  staticRules: function( element ) {
    var rules = {},
      validator = $.data( element.form, "validator" );

    if ( validator.settings.rules ) {
      rules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};
    }
    return rules;
  },

  normalizeRules: function( rules, element ) {
    // handle dependency check
    $.each( rules, function( prop, val ) {
      // ignore rule when param is explicitly false, eg. required:false
      if ( val === false ) {
        delete rules[ prop ];
        return;
      }
      if ( val.param || val.depends ) {
        var keepRule = true;
        switch ( typeof val.depends ) {
        case "string":
          keepRule = !!$( val.depends, element.form ).length;
          break;
        case "function":
          keepRule = val.depends.call( element, element );
          break;
        }
        if ( keepRule ) {
          rules[ prop ] = val.param !== undefined ? val.param : true;
        } else {
          delete rules[ prop ];
        }
      }
    });

    // evaluate parameters
    $.each( rules, function( rule, parameter ) {
      rules[ rule ] = $.isFunction( parameter ) ? parameter( element ) : parameter;
    });

    // clean number parameters
    $.each([ "minlength", "maxlength" ], function() {
      if ( rules[ this ] ) {
        rules[ this ] = Number( rules[ this ] );
      }
    });
    $.each([ "rangelength", "range" ], function() {
      var parts;
      if ( rules[ this ] ) {
        if ( $.isArray( rules[ this ] ) ) {
          rules[ this ] = [ Number( rules[ this ][ 0 ]), Number( rules[ this ][ 1 ] ) ];
        } else if ( typeof rules[ this ] === "string" ) {
          parts = rules[ this ].replace(/[\[\]]/g, "" ).split( /[\s,]+/ );
          rules[ this ] = [ Number( parts[ 0 ]), Number( parts[ 1 ] ) ];
        }
      }
    });

    if ( $.validator.autoCreateRanges ) {
      // auto-create ranges
      if ( rules.min != null && rules.max != null ) {
        rules.range = [ rules.min, rules.max ];
        delete rules.min;
        delete rules.max;
      }
      if ( rules.minlength != null && rules.maxlength != null ) {
        rules.rangelength = [ rules.minlength, rules.maxlength ];
        delete rules.minlength;
        delete rules.maxlength;
      }
    }

    return rules;
  },

  // Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
  normalizeRule: function( data ) {
    if ( typeof data === "string" ) {
      var transformed = {};
      $.each( data.split( /\s/ ), function() {
        transformed[ this ] = true;
      });
      data = transformed;
    }
    return data;
  },

  // http://jqueryvalidation.org/jQuery.validator.addMethod/
  addMethod: function( name, method, message ) {
    $.validator.methods[ name ] = method;
    $.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];
    if ( method.length < 3 ) {
      $.validator.addClassRules( name, $.validator.normalizeRule( name ) );
    }
  },

  methods: {

    // http://jqueryvalidation.org/required-method/
    required: function( value, element, param ) {
      // check if dependency is met
      if ( !this.depend( param, element ) ) {
        return "dependency-mismatch";
      }
      if ( element.nodeName.toLowerCase() === "select" ) {
        // could be an array for select-multiple or a string, both are fine this way
        var val = $( element ).val();
        return val && val.length > 0;
      }
      if ( this.checkable( element ) ) {
        return this.getLength( value, element ) > 0;
      }
      return value.length > 0;
    },

    // http://jqueryvalidation.org/email-method/
    email: function( value, element ) {
      // From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address
      // Retrieved 2014-01-14
      // If you have a problem with this implementation, report a bug against the above spec
      // Or use custom methods to implement your own email validation
      return this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );
    },

    // http://jqueryvalidation.org/url-method/
    url: function( value, element ) {

      // Copyright (c) 2010-2013 Diego Perini, MIT licensed
      // https://gist.github.com/dperini/729294
      // see also https://mathiasbynens.be/demo/url-regex
      // modified to allow protocol-relative URLs
      return this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test( value );
    },

    // http://jqueryvalidation.org/date-method/
    date: function( value, element ) {
      return this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );
    },

    // http://jqueryvalidation.org/dateISO-method/
    dateISO: function( value, element ) {
      return this.optional( element ) || /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );
    },

    // http://jqueryvalidation.org/number-method/
    number: function( value, element ) {
      return this.optional( element ) || /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test( value );
    },

    // http://jqueryvalidation.org/digits-method/
    digits: function( value, element ) {
      return this.optional( element ) || /^\d+$/.test( value );
    },

    // http://jqueryvalidation.org/creditcard-method/
    // based on http://en.wikipedia.org/wiki/Luhn_algorithm
    creditcard: function( value, element ) {
      if ( this.optional( element ) ) {
        return "dependency-mismatch";
      }
      // accept only spaces, digits and dashes
      if ( /[^0-9 \-]+/.test( value ) ) {
        return false;
      }
      var nCheck = 0,
        nDigit = 0,
        bEven = false,
        n, cDigit;

      value = value.replace( /\D/g, "" );

      // Basing min and max length on
      // http://developer.ean.com/general_info/Valid_Credit_Card_Types
      if ( value.length < 13 || value.length > 19 ) {
        return false;
      }

      for ( n = value.length - 1; n >= 0; n--) {
        cDigit = value.charAt( n );
        nDigit = parseInt( cDigit, 10 );
        if ( bEven ) {
          if ( ( nDigit *= 2 ) > 9 ) {
            nDigit -= 9;
          }
        }
        nCheck += nDigit;
        bEven = !bEven;
      }

      return ( nCheck % 10 ) === 0;
    },

    // http://jqueryvalidation.org/minlength-method/
    minlength: function( value, element, param ) {
      var length = $.isArray( value ) ? value.length : this.getLength( value, element );
      return this.optional( element ) || length >= param;
    },

    // http://jqueryvalidation.org/maxlength-method/
    maxlength: function( value, element, param ) {
      var length = $.isArray( value ) ? value.length : this.getLength( value, element );
      return this.optional( element ) || length <= param;
    },

    // http://jqueryvalidation.org/rangelength-method/
    rangelength: function( value, element, param ) {
      var length = $.isArray( value ) ? value.length : this.getLength( value, element );
      return this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );
    },

    // http://jqueryvalidation.org/min-method/
    //extended by Eric Miller on 12/21/2015.
    //new code replaces dollar signs and commas before doing the comparison
    min: function( value, element, param ) {
      return this.optional( element ) || value.replace(/\$/g,"").replace(/,/g,"") >= param;
    },

    // http://jqueryvalidation.org/max-method/
    max: function( value, element, param ) {
      return this.optional( element ) || value <= param;
    },

    // http://jqueryvalidation.org/range-method/
    range: function( value, element, param ) {
      return this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );
    },

    // http://jqueryvalidation.org/equalTo-method/
    equalTo: function( value, element, param ) {
      // bind to the blur event of the target in order to revalidate whenever the target field is updated
      // TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
      var target = $( param );
      if ( this.settings.onfocusout ) {
        target.off( ".validate-equalTo" ).on( "blur.validate-equalTo", function() {
          $( element ).valid();
        });
      }
      return value === target.val();
    },

    // http://jqueryvalidation.org/remote-method/
    remote: function( value, element, param ) {
      if ( this.optional( element ) ) {
        return "dependency-mismatch";
      }

      var previous = this.previousValue( element ),
        validator, data;

      if (!this.settings.messages[ element.name ] ) {
        this.settings.messages[ element.name ] = {};
      }
      previous.originalMessage = this.settings.messages[ element.name ].remote;
      this.settings.messages[ element.name ].remote = previous.message;

      param = typeof param === "string" && { url: param } || param;

      if ( previous.old === value ) {
        return previous.valid;
      }

      previous.old = value;
      validator = this;
      this.startRequest( element );
      data = {};
      data[ element.name ] = value;
      $.ajax( $.extend( true, {
        mode: "abort",
        port: "validate" + element.name,
        dataType: "json",
        data: data,
        context: validator.currentForm,
        success: function( response ) {
          var valid = response === true || response === "true",
            errors, message, submitted;

          validator.settings.messages[ element.name ].remote = previous.originalMessage;
          if ( valid ) {
            submitted = validator.formSubmitted;
            validator.prepareElement( element );
            validator.formSubmitted = submitted;
            validator.successList.push( element );
            delete validator.invalid[ element.name ];
            validator.showErrors();
          } else {
            errors = {};
            message = response || validator.defaultMessage( element, "remote" );
            errors[ element.name ] = previous.message = $.isFunction( message ) ? message( value ) : message;
            validator.invalid[ element.name ] = true;
            validator.showErrors( errors );
          }
          previous.valid = valid;
          validator.stopRequest( element, valid );
        }
      }, param ) );
      return "pending";
    }
  }

});

// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()

var pendingRequests = {},
  ajax;
// Use a prefilter if available (1.5+)
if ( $.ajaxPrefilter ) {
  $.ajaxPrefilter(function( settings, _, xhr ) {
    var port = settings.port;
    if ( settings.mode === "abort" ) {
      if ( pendingRequests[port] ) {
        pendingRequests[port].abort();
      }
      pendingRequests[port] = xhr;
    }
  });
} else {
  // Proxy ajax
  ajax = $.ajax;
  $.ajax = function( settings ) {
    var mode = ( "mode" in settings ? settings : $.ajaxSettings ).mode,
      port = ( "port" in settings ? settings : $.ajaxSettings ).port;
    if ( mode === "abort" ) {
      if ( pendingRequests[port] ) {
        pendingRequests[port].abort();
      }
      pendingRequests[port] = ajax.apply(this, arguments);
      return pendingRequests[port];
    }
    return ajax.apply(this, arguments);
  };
}

}));
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.14.0/additional-methods.js"></script>

<style>
.form-group {vertical-align:top;}
.error {color:red; text-align:center; margin:1em 0;}
</style>
<!-- end added 9/15 -->


 

<!-- Typekit -->
<script>
  (function(d) {
    var config = {
      kitId: 'lpo0loy',
      scriptTimeout: 3000
    },
    h=d.documentElement,t=setTimeout(function(){h.className=h.className.replace(/\bwf-loading\b/g,"")+" wf-inactive";},config.scriptTimeout),tk=d.createElement("script"),f=false,s=d.getElementsByTagName("script")[0],a;h.className+=" wf-loading";tk.src='//use.typekit.net/'+config.kitId+'.js';tk.async=true;tk.onload=tk.onreadystatechange=function(){a=this.readyState;if(f||a&&a!="complete"&&a!="loaded")return;f=true;clearTimeout(t);try{Typekit.load(config)}catch(e){}};s.parentNode.insertBefore(tk,s)
  })(document);
</script>

 

<script type="text/javascript">
jQuery(document).ready(function($){

	//external site passes "amt" in URL to auto-set other amount
	var getUrlParameter = function getUrlParameter(sParam) {
		var sPageURL = decodeURIComponent(window.location.search.substring(1)),
			sURLVariables = sPageURL.split('&'),
			sParameterName,
			i;

		for (i = 0; i < sURLVariables.length; i++) {
			sParameterName = sURLVariables[i].split('=');

			if (sParameterName[0] === sParam) {
				return sParameterName[1] === undefined ? true : sParameterName[1];
			}
		}
	};

	if (getUrlParameter('amt')) {
		console.log("amt param found in URL");
		jQuery('#amt-1-btn,#amt-2-btn,#amt-3-btn,#amt-4-btn').removeClass('active');
		jQuery('#amt-other-radio-input').attr('checked', true);
		jQuery('#amt-other-input').focus();
		jQuery('#amt-other-input').val(getUrlParameter('amt'));
		jQuery('#amt-other-input').val($('#amt-other-input').val().replace(/[^\d.]/ig,''));
		jQuery('#amt-other-input').trigger("blur");
	} else {
		console.log("amt param not found in URL");
	}




 

  luminateExtend.init({
    apiKey: 'wDB09SQODRpVIOvX', 
    path: {
      nonsecure: 'http://give.salvationarmyusa.org/site/', 
      secure: 'https://give.salvationarmyusa.org/site/'
    }
  });

  // Adding an active class in order to style the buttons via CSS
    var formatMoney = function(amt, c, d, t) {
        var n = amt, 
            c = isNaN(c = Math.abs(c)) ? 2 : c, 
            d = d == undefined ? "." : d, 
            t = t == undefined ? "," : t, 
            s = n < 0 ? "-" : "", 
            i = String(parseInt(n = Math.abs(Number(n) || 0).toFixed(c))), 
            j = (j = i.length) > 3 ? j % 3 : 0;
            amt = s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
            return amt.replace(".00", "");
    };
    
    var setSubmitButtonCaption = function() {
        var caption = 'GIVE',
            $activeLevel = $('.donation-amt-buttons > label.donation-amt-btn.active'),
            $frequencyType = $('.frequency-btn.active');
        if ($activeLevel.length == 1) {
            caption = 'GIVE '.concat($.trim($activeLevel.text()));
        } else {
            var amt = $('#amt-other-input').val();
            if (amt !== undefined && amt != '') {
                amt = parseFloat(amt.replace(/\$/g, '').replace(/,/g, ''));
                if (amt >= 5) {
                    caption = 'GIVE $'.concat(formatMoney(amt, 2, '.', ',').toString());
                }
            }
        }
        if (caption != 'GIVE' && $frequencyType.length == 1) {
            var type = $.trim($frequencyType.text());
            if (type.toLowerCase() != 'one time') {
                caption += ' '.concat(type.toUpperCase());
            }
        }
        $('#submit-btn').text(caption);
    }
    
		$('.frequency-btn').click(function () {
			$('.frequency-btn').removeClass('active');
			$(this).addClass('active');
      setSubmitButtonCaption();
		});
		$('.donation-amt-btn').click(function () {
			$('.donation-amt-btn').removeClass('active');
			$(this).addClass('active');
			setSubmitButtonCaption();
		});

		$('#amt-other-input').click(function() {
			setSubmitButtonCaption();
		});
		$('#amt-other-input').keyup(function() {
			setSubmitButtonCaption();
		});

		// 9-15 update. This sets an active state on the selected item's parent for the frequency and amount radio buttons
		$("input[name=frequency]:checked").parent().addClass("active");
		$("input[name=level]:checked").parent().addClass("active");

		setSubmitButtonCaption();

  
  // 9-15 update. Added form validation

$("#api_donation_form").validate({
  rules: {
    cc_number: {
    required: true,
    number: true
    },
amt_other_input: {currency: ["$", false], min:5}
  },
  errorPlacement: function(error, element) {
    error.appendTo( element.parent() );
  }
});


  

});
</script>

<style type="text/css">
form {
	width:100%;
	padding:30px 0;
        border:none;
}

div.html-caption-container {
	max-width:100%;
}

.section-header-container {
	width:550px;
	margin-left:auto !important;
	margin-right:auto !important;
}

div.responsive {
	width:100%;
}
div.donation-form-container.responsive {
	padding:0;
	background:inherit;
	border-radius:inherit;
	border:inherit;
	width:auto;
	background:#fff;
}

div.form-row:first-of-type {
	width:100%;
}

div.form-row {
	width:550px;
	margin:4px auto;

}

h1 {
	font-size:24px;
	color: #ed2432;
	font-family: trajan-pro-3, 'Trajan Pro', 'Georgia', 'Times New Roman', serif;
	margin-bottom: 10px;
	margin-top: 60px;
	padding-bottom: 10px;
}
h2, h3 {
    font-size: 16px;
    color: #ed2433;
    font-family: trajan-pro-3, 'Trajan Pro', 'times new roman', serif;
    padding:40px 0 20px 0;
	margin-bottom:25px;
}

.form-content {
	width:100%;
}


label {
    width:16.6666% !important;
    margin-top:10px
}

h2.section-header-container {
	padding-top:40px;
	padding-bottom:25px;
	margin:40px 0 0 10px;
}

#level_flexiblegift_type_Row {
	margin-bottom:40px;
}


.don-standard-levels.form-row {
	margin-top:-20px;
}

div.donation-level-input-container {
	padding:0;
}

input[type='text'] {
    box-shadow:none !important;
    -webkit-box-shadow:none !important;
    height:45px;
}

.checked {
	background-color:#ed2432;
	color:#fff !important;
	font-weight:600;
	border:1px #ed2432 solid !important;
}

.donation-level-user-entered {
	text-align:center;
	width:550px !important;
}

.donation-level-user-entered label {
	display:none;
}

.body-wrapper {
    width:75px;
    margin:0 auto;
}

.designated-giving-recurring-row {
    display: inline;
}

#level_flexibleduration_row {
	display:none;
}

input[type="radio"] {
    opacity: 0;
	width:2px;
}
	
input[type="radio"] + label {
    margin:0px;
    clear: none;
    cursor: pointer;
    padding: 13px 20px;
    border:#c1c1c1 1px solid;
    border-radius:5px;
	-moz-border-radius:5px;
	-webkit-border-radius:5px;
	-o-border-radius:5px;
    text-align:center;
	width:260px !important;
	color:#c1c1c1;
}

input[type="radio"]:hover + label, input[type="radio"]:checked + label {
	border:#3a3a3a solid 1px;
	background-color:#3a3a3a;
color:#fff;
}

.donation-level-label-input-container + label {
    border: 1px #f69198 solid;
    text-align: center;
    padding: 13px 20px;
    border-radius: 6px;
	cursor:pointer;
	width:125px !important;
	color:#f69198;
}

label+div.donation-level-user-entered {
display:inline;
}

.donation-level-user-entered input {
    margin:-30px auto 0 auto;
    height:48px ;
    width:260px;
	border:1px solid #f69198 !important;
	text-align:center;
	color:#ED2431;
	position:relative;
	left:-5px;
}

.donation-level-user-entered input:focus {
	outline:none !important;
	border:1.5px solid #ed2433 !important;
	color:#ed2433;
}  

.form-donation-level div {
	width:initial;
}

div.donation-level-label-input-container {
width:2px;
}

.form-container {
    padding:20px 0 20px 0;
}

div.donation-level-container {
	border:none;
	margin:0;
	display:inline;
	width:125px;
}

label+div.donation-level-user-entered {
	margin:0;
}

label[for="billing_addr_street2name"] {
    margin-left: 19px;
}

label[for="donor_email_opt_inname"] {
	width: 378px !important;
}

label[for="responsive_payment_typecc_exp_date_YEAR"], div#responsive_payment_typecc_type_row {
	display:none;
}

#payment_cc_container>h3 {
    display: none !important;
}

select#responsive_payment_typecc_exp_date_YEAR {
	float:right;
}

select#billing_addr_state {
	display:inline-block;
	margin-left:4.3333% !important;
}

fieldset.cardExpGroup {
	width:100%;
}


h2:first-of-type {
	margin-bottom:25px;
	margin-top:10px;
}

input#responsive_payment_typecc_cvvname {
	margin-left:-2px;
}

select {
    height:45px !important;
    width:74.8333% !important;
    color:#8D8D8D !important;
    border:#c5c2bd 1px solid !important;
    /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#ffffff+0,f1f1ef+100 */
	background: rgb(255,255,255); /* Old browsers */ /* FF3.6+ */
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgba(255,255,255,1)), color-stop(100%,rgba(241,241,239,1))); /* Chrome,Safari4+ */
	background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%,rgba(241,241,239,1) 100%); /* Chrome10+,Safari5.1+ */ /* Opera 11.10+ */ /* IE10+ */
	background: -webkit-linear-gradient(top, rgba(255,255,255,1) 0%, rgba(241,241,239,1) 100%);
	background: linear-gradient(to bottom, rgba(255,255,255,1) 0%,rgba(241,241,239,1) 100%); /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#f1f1ef',GradientType=0 ); /* IE6-9 */
}

div.responsive button.action-button {
    background:#ed2433;
    border:none;
    color:#fff;
}

	
div.button-container {
	width:550px;
	border-top:none;
	margin-top:0;
	margin-left:auto;
	margin-right:auto;
	padding-left:10px;
}

div.responsive button.step-button {
    max-width:100%;
}

div.responsive button.finish-step {
    float:none;
    border-radius:6px;
	font-size:16px;
	font-weight:600;
}

button.finish-step {
    width:600px;
    height:60px;
}

div#donor_email_opt_in_Row {
position:relative;
	left:38px;
width:350px;
}

div.responsive div.form-checkbox label {
	display:inline;
}

div.form-row div.form-content>input[type="text"] {
	display:inline-block;
	width: 74.8333% !important;
	margin-left:4.3333% !important;
}

div.date-input-container {
	display:inline-block;
	width: 74.8333% !important;
	margin-left:4.3333% !important;
}

select#responsive_payment_typecc_exp_date_MONTH, select#responsive_payment_typecc_exp_date_YEAR {
	width:49% !important;
}

label.FormLabel {
    min-width:initial;
}

div.payment-field-container #responsive_payment_typecc_cvv_row input {
    width:200px !important;
    position:relative;
    right:88px;
}

.HelpLink {
    position:relative;
    left:240px;
    top:5px;
}

a.HelpLink {
    color:#ed2433 !important;
    font-weight:bold;
    letter-spacing:.6px;
}

legend {
	border:none;
	margin-left:10px;
	margin-bottom:10px;
}

div.responsive span.field-required {
	height:5px;
	width:5px;
	background-size:contain;
	vertical-align:super;
	margin-left:10px;
}
div.responsive span.header-info-message {
display:none;
}
.form-message-text {
margin-bottom:20px;
font-style:italic;
}

/* designated giving row styles */
div#level_designated_row div.form-content span.field-required {
display:none;
}
div.designated-giving-input-row div.designated-giving-selection-container {
width:73.8888%;
}
div.designated-giving-input-row div.designated-giving-selection-container select {
width:100% !important;
}
div.designated-giving-input-row div.designated-giving-amount-container {
margin-left:3.5%;
width:21.6666%;
max-width:none;
}
input#level_designated0name {
width:100%;
}
h3.designated-program-label {
margin:20px 0 0 0;
padding:20px 0 10px;

}
div.designated-giving-input-row {
border:none;
background-color:#fff;
margin-bottom:30px;
padding:0;
}

select#level_designated5primary {
width:100% !important;
}
div.generic-repeat-label-checkbox-container {
width:100%;
margin-left:10px;
padding:0;
}
label[for="level_designatedauto_repeatname"] {
width:90% !important;
}
input#level_designatedauto_repeatname {
vertical-align:baseline;
}


/* media queries */ 
@media(max-width:998px) {
	#body {
		padding-left:0 !important;
	}
	form {
		margin: 0 auto;
	}
}

@media(max-width:768px) {
	#body {
		padding-right:0 !important;
	}
}


@media(max-width:600px) {
	div.form-row {
		width:100%;
	}
	main#body {
		padding:0;
	}
	#header-logo {
		margin-left:0 !important;
                height:auto;
	}
	h1 {
		border-top:1px solid #d5d5d5;
		padding-top: 30px;
		padding-bottom:30px;
	}
    form {
        width:100%;
		padding:30px 10px;
		border-radius:0;
		-webkit-border-radius:0;
		-moz-border-radius:0;
		-o-border-radius:0;
    }

    div.responsive {
        width:initial;
    }
    .donation-form-container, .section-header-container {
        width: 100% !important;
    }
    input[type="radio"] + label {
        display:block;
        width:100% !important;
    }
    div.donation-level-container {
        display:block;

    }
    .form-donation-level div {
        width:100% !important;
   
    }
    .donation-level-label-input-container + label {
        width:100% !important;
    }
    input[type='text'], select, div.date-input-container {
        display:block !important;
        width:100% !important;
        margin-left:0 !important;
    }
    .donation-level-user-entered input {
        left:0;
        margin-top:-10px;
        margin-bottom:20px
    }
    select#billing_addr_state {
        margin-left:0 !important;
    }
    label {
        width:75% !important;
        margin-top:0;
    }
    div.form-row div.form-content>input[type="text"] {
        width:100% !important;
        margin-left:0 !important;
    }
    input[type="radio"] {
        height:2px !important;
        margin:0;
    }
    legend {
        margin-bottom:0;
    }
    .button-container {
        width:100% !important;
        padding-left:0 !important;
    }
    div#donor_email_opt_in_Row {
        position:initial;
        width:100%;
    }
    select#responsive_payment_typecc_exp_date_MONTH, select#responsive_payment_typecc_exp_date_YEAR {
        position:initial;
    }
    fieldset.cardExpGroup {
        margin-left:0;
    }
  select#responsive_payment_typecc_exp_date_MONTH {
      float:left;
  }
    div.payment-field-container #responsive_payment_typecc_cvv_row input {
        position:initial;
        width:100% !important;
    }

    .HelpLink {
        position:initial;
		display:block;
		margin-left:10px;
    }
    .cvv-input {
        position:initial;
        margin-top:10px !important;
    }
    .donation-level-input-container>label {
        position:relative;

    }
    div.responsive div.form-content {
        margin-bottom:-5px;
    }
	
	div.donation-form-container.responsive {
		padding:10px !important;
	}
div.designated-giving-input-row div.designated-giving-amount-container {
margin: 20px 0 0 0;
}

}





</style>


<style type="text/css">
/* header */


.banner-img-container {
width:100%;
	max-width:510px;
margin:0 auto;
}
.banner {
width:100%;
background-color:#000;
	margin-top:20px;
}
.banner-img-container img {
text-align:center;
margin:0 auto;
width:100%;
	max-width:500px;
}

/* footer */

.footer {
width:100%;
color:#e2dbc4;
background-color:#342e27;
margin-top:65px;
margin-bottom:-20px;
}

.footer-row {
width:75%;
margin:20px auto 0 auto;
padding:60px 0 40px 0;
}

.footer-headline {
font-size: 28px;
color:#ded7ad;
}

.footer a {
color:#dc2c30;
}

#give-with-trust {
	padding:0;
}
</style>
<style type="text/css">
.thankyou-container {margin-bottom:-65px;background-color:#000;}
#receiptContainer {border: 1px solid #ccc; border-radius: 10px; padding: 10px; margin: 0 auto 90px; max-width:500px; background-color:#fff;}
#receiptContainer a {color:#333;}
span.title {width:100px; font-weight:bold; display:inline-block;}
#printIcon {float: right; background-image: url('https://secure3.convio.net/tsan/images/content/pagebuilder/print.png'); height: 23px; width: 23px;}

main#body img {max-width:100%;}

#transReceipt {background-color:#F1F1F1; margin:0px;}

#transPreFoot .col-md-12 {background-image:url('https://secure3.convio.net/tsan/images/content/pagebuilder/transPreFood_bg.png');
background-repeat:no-repeat; background-size: cover; -webkit-background-size: cover; -moz-background-size: cover; -o-background-size: cover; background-position: center; background-color: #fff; display: inline-block; width: 100%; padding:200px 0px; float:left;}
#transPreFoot > div > div > div > div {padding: 0px 54px;}
#transPreFoot > div > div > div > div > h3 {font-weight:bold; color:#fff;}
#transPreFoot > div > div > div > div > p {text-align:center; font-size:15px; color:#fff;}
#transPreFoot .col-md-12 .col-md-4 p img {margin:0px 0px 25px;}

#transAbout .col-md-6 {padding:70px; text-align:center;}

#transPreFoot .col-sm-4 {text-align:center;}

#transAbout .row:nth-child(1) .col-md-6:first-child {background-color:#394349; color:#fff;}
#transAbout .row:nth-child(1) .col-md-6:last-child {background-color:#FFFFFF; color:#3c3c3c;}

#transAbout .row:nth-child(2) .col-md-6:first-child {background-color:#D4E1EA; color:#3c3c3c;}
#transAbout .row:nth-child(2) .col-md-6:last-child {background-color:#DD736F; color:#fff;}

#transAbout .row:nth-child(3) .col-md-6:first-child {background-color:#EDB53E; color:#fff;}
#transAbout .row:nth-child(3) .col-md-6:last-child {background-color:#E7E7E7; color:#3c3c3c;}

#transAbout .row .col-md-6 div {min-height:400px;}

#transAbout .row .col-md-6 p img {margin:30px 0px;}

#tyBanner {margin:0px; text-align:center; color:#fff; padding-bottom:90px; padding-top:230px; background:#fff url('https://secure3.convio.net/tsan/images/content/pagebuilder/thank_you_top_bg_new.jpg') repeat-y center center; background-size:cover;}

#tyBanner h1 {font-family:trajan-pro-3, "Trajan Pro", "Georgia", "Times New Roman", serif; font-size:47.3px; margin-bottom:45px; color:#fff;}

.trans.rounded {color: #fff !important; font-size: 15pt; border: 2px solid; padding: 10px 0px; margin-bottom: 45px; display: inline-block; border-radius:52px; width:300px; text-decoration:none;}

#tyBanner > div > div:nth-child(3) > div .trans.rounded {margin-bottom:0px;}

#transReceipt > div > div > div.col-md-6 > h2 {text-align:center; font-size:20px; font-weight:bold;}

#receiptContainer > div:nth-child(3) p {font-weight:normal;}

span.red {color:#d92e27;}
span.grey {color:#394349;}

#transAbout p {text-align:center; font-size:20px;}




@media (max-width: 1200px) {


#transAbout .row .col-md-6 div {min-height: 425px;}


}

@media(max-width:998px) {
	.thankyou-container {margin-left:0;}
}



@media (max-width: 992px) {

#transPreFoot .col-sm-4 {width:100%; clear:both; padding-top:45px;}
#transPreFoot .col-sm-4:first-child {padding-top:0px;}

#transPreFoot .col-md-12 {padding:100px 0px;}

/* main#body {background:#fff url('../images/content/pagebuilder/tablet_bg.png') no-repeat center 0 fixed;
background-size:992px auto;
-webkit-background-size:992px auto;
-moz-background-size:992px auto;
-o-background-size:992px auto;} */

#tyBanner {background:#fff url('https://secure3.convio.net/tsan/images/content/pagebuilder/tablet_bg.png') no-repeat center 0;
background-size:992px auto;
background-size:cover;}

li.verisign-button img {max-width:100%;}

}




@media (max-width:768px){
.desktop {display:none;}
.mobile {display:block;}

.thankyou-container {margin-top:0;}
footer {padding:39px 50px;}


.footer-module {margin-bottom:40px; padding:0px 10px;}
/* div.footer-module.col-sm-4 {width:100%;} */
.mission-list-last a.privacy-policy-link {color:#d7d195;}
.mobile #give-with-trust {padding:0px 10px;}
.logo-container {padding:0px; text-align:center; padding-top:10px;}
.logo-container img {max-width:100%;}


main#body {padding:28px 50px 38px;}




main#body {padding:0px;}
#tyBanner.row, .col-md-6, .col-md-12 > .row, #transReceipt.row, #transAbout > .row, #transPreFoot .row, #transReceipt.row {margin-left:0px; margin-right:0px;}
#tyBanner h1 {border-top:none;}	
#transAbout.container, .col-md-12, .col-md-6 {padding-right:0px; padding-left:0px;}
#transAbout .col-md-6 {text-align:center;}
#transPreFoot {padding:0px;}
#transPreFoot .col-sm-12, #transPreFoot .col-md-12 {padding:45px 0px;}
#transPreFoot .col-sm-4 {padding-top:45px;}
#transPreFoot .col-sm-4:first-child {padding-top:0px;}

}

@media(max-width:600px) {
	.thankyou-container {margin:-10px;}
}

@media (max-width:480px){
.footer-module {margin-bottom:40px; padding:0px 10px;}
.mission-list-last a.privacy-policy-link {color:#d7d195;}
footer {padding:25px 15px;}
.footer-headline {font-size:26.73px;}
.mobile #give-with-trust {padding:0px 10px;}
.logo-container img {max-width:90%; margin-top:5px;}


main#body {padding:28px 25px 38px;}



main#body {padding:0px;
/* background:#fff url('../images/content/pagebuilder/mobile_bg.png') no-repeat center 0 fixed;
background-size:480px auto;
-webkit-background-size:480px auto;
-moz-background-size:480px auto;
-o-background-size:480px auto; */}
#body .container .row .col-md-6 {padding:70px 0px;}
#receiptContainer {max-width:350px;}
#tyBanner {padding-top:0px;
background:#fff url('https://secure3.convio.net/tsan/images/content/pagebuilder/mobile_bg.png') no-repeat center 0;
background-size:480px auto;
background-size:cover;}
#tyBanner h1 {margin-top:180px; font-size:37.3px;}

}
</style>


<script type="text/javascript">
$(document).ready(function() {
	//add style to preselected buttons on load
	$('input[type=radio]:checked').parent().siblings('label').addClass('checked');
	
        //add style to preselected eCard stationary on load
	$('.layout-choice-thumbnail-container [type=radio]:checked').siblings('label').addClass('selected');
        

	
	//default to 'ongoing' for recurring gifts
	$('#level_flexibleduration').val('M:0');
	
	//add 'other' as input placeholder text
	$('.donation-level-user-entered input').attr('placeholder', 'Other');
	
	//Change text on labels
	$('label[for=responsive_payment_typecc_numbername]').text('Card Number');
	$('label[for=responsive_payment_typecc_exp_date_MONTH] span').text('Exp. Date');
	$('label[for=responsive_payment_typecc_cvvname] span').text('Security Code');
	
	//add and remove styles with click
	$('.donation-levels input[type=radio]').change(function() {
		$('label').removeClass('checked');
        $(this).parent().siblings('label').addClass('checked');
    });


//add and remove eCard stationary select styles 
        $('.layout-choice-thumbnail-container input[type=radio]').change(function() {
             $('label').removeClass('selected');
        $(this).parent().children('label').addClass('selected');
});


	//add hover styles to donation amount labels
	$('.donation-level-input-container label').hover(function() {
		$(this).css({
			'color': '#ed2432',
			'border': '1px solid #ed2432'
		});
		
	}, function() {
		$(this).css({
			'color': '',
			border: ''
		});
	});
$("#send_ecardname").change(function() {
		$(this).parents('#send_ecard_row').nextUntil('h2').toggleClass('show', this.checked);
	}).change();

	
});

	
</script>

    
     

        

  </head>
  <body
    
      marginheight="0"
    
    
      marginwidth="0"
    
    
    
    
    
    
    
    
    
    
  > 


<script type="text/javascript">

var utag_data = {


//other security categories
site_section: "Donate",
site_type: "DONATE:USS",
login_status: "Not Logged In",
territory_division: "USS",
page_name: "DONATE:USS | USS-EDS-Harvey- Sinclair Telethon:start",
product_brand: "EDS-USS-Harvey",
product_name: "USS-EDS-Harvey- Sinclair Telethon",
product_id: "27850",
donor_id: "",
donor_zip: "",
donation_type: "",
order_id: "",
donation_subtotal: "",
donation_total: "",



  page_category : "donation form", // Contains a user-friendly page category, e.g. 'donation form', 'confirmation', 'donor details', 'receipt'.
  page_type : "donation form", // Contains a user-friendly page type, e.g. 'donor details page'.
  product_sku : "USS-EDS-Harvey- Sinclair Telethon", // Contains product SKU(s) - donation form name 'National Donation Form' or appeal code.
  product_category : "", // Contains product category(s) - donation type 'Simple', 'Sustaining'.
  domain_name : "https://give.salvationarmyusa.org/site/Donation2", // location.hostname
  donation_appeal_code : "", // appeal code for page or selection
  donation_territory : "", // Contains identification information for a the form ownership to the territory name
  donation_division : "", // Contains identification information for a the form ownership to the division name
  donation_local : "", // Contains identification information for a the form ownership to the local level name
  donation_frequency : "", // Ongoing gift frequency
  donation_start : "", // Donate Start Date
  donation_end : "", // Donation End Date
  donation_newDonor : "", // New Donor Flag "new" or "existing"
  donation_usage : "", // Donation Designation
  donation_step : "", // donation_step
  donation_complete : "", // "confirmation"
  donation_status : "", // "error", "confirmation", ""
  donation_id : "", // 4170250808640178681296
  donation_currency : "USD", // USD
  donation_date : "2/17/18", // 26 November 2014
  donation_time : "", // 12:04
  donation_timestamp : "", // Date/Timestamp
  donation_memorial : "", // Honor or Memorial or blank
  donation_dest_name : "", // The Salvation Army Texas Division
  donation_dest_id : "", // Id or code of designated recipient
  donation_dest_city : "", // Dallas
  donation_dest_state : "", // TX
  donation_dest_zip : "", // 75025
  donation_dest_country : "", // United States
  donation_payment_type : "", // Contains the order payment type.
  donation_discount : "", // Contains the order discount (if any).
  donation_shipping : "0.00", // Contains the order shipping value.
  donation_tax : "0.00", // Contains the order tax amount.
  donation_currency : "", // Contains the currency associated with the transaction, e.g. 'USD'.
  donation_store : "", // Contains identification information for a the form ownership e.g. 'National', 'Eastern Territory'.
  donor_title : "", // "Mr.", "Col."
  donor_city : "", // City value "Plano"
  donor_state : "", // State value "TX"
  donor_country : "", // "United States" can be hard coded if no other option
  donor_zip_last : "", // Zip-5 and Lastname joined with underscore "75204_Smith"
  donor_status : "", // Contains the customer's status, e.g. 'logged in'.
  donor_type : "", // Contains the customer's type, e.g. 'high value donor'.
  event_name: "", // Errors specific label "Invalid Credit Card, Missing First Name"
  event_flag: "", // Specific error label example and flag "validation error"
  attempted_url_not_found: "", // Original bad url "https://donate.salvationarmyusa.org/12345"
  attempted_url_referrer: "", // Originating referrer of bad url "http://google.com"
  donation_status: "" // "error", "confirmation"
}
</script>
	
<!-- Loading script asynchronously -->
<script type="text/javascript">
(function(a,b,c,d){
a='//tags.tiqcdn.com/utag/salvationarmy/sal-donate/prod/utag.js';
b=document;c='script';d=b.createElement(c);d.src=a;d.type='text/java'+c;
d.async=true;
a=b.getElementsByTagName(c)[0];a.parentNode.insertBefore(d,a);
})();
</script>



    <style type="text/css"><!--
#body {
background-image: url('../images/content/pagebuilder/MayAff_1330X769.jpg');
background-color:#fff;
	background-attachment: fixed;
	background-position: center center;
	background-repeat: no-repeat;
	background-size:cover;
	-webkit-background-size:cover;
	-moz-background-size:cover;
	-o-background-size:cover;
	height:auto;
	padding:28px 0px 38px 184px;
	width:100%;
}
h3 {
 margin-top:10px;
 margin-bottom:10px;
 padding:0px;
}
.logo-container {
 margin-top:-20px;
margin-bottom:0px;
}
--></style>
<div class="container-fluid" id="wrapper">
<!-- Header -->
<div class="logo-container" style="height: 220px;">
  <img class="header-logo img-responsive" style="max-height: 200px;" src="../images/content/pagebuilder/Sinclair_Cares_FB_Cover.png" border="0" alt="Sinclair Cares FB Cover.png" />
  </div>
<!-- End Header -->
<div class="row" id="body" style="margin-top: 5px;">
<div class="col-md-8 col-sm-8">
<div class="panel panel-default" style="background-color: #ffffff; padding: 10px;">









<form name="process" id="ProcessForm" action="https://give.salvationarmyusa.org/site/Donation2" method="post"  >

<div class="donation-form-container responsive">
<script type="text/javascript">
<!--
function reloadPage() {
window.location.reload(true);
}
function testAjax() {

var xmlHttp = null;
// Opera 8.0+, Firefox, Chrome, Safari
try {
xmlHttp = new XMLHttpRequest();
}catch (e){
// Internet Explorer Browsers
try{
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
return false;
}
}
}

xmlHttp.open('POST','AjaxHelper;jsessionid=00000000.app334b?NONCE_TOKEN=719C52005233A64BBE8E76B4F810A749', true);
xmlHttp.send();

}
addOnLoadHandler(testAjax);
// -->
</script>


<div class="donation-form-content">






<input type="hidden" name="user_donation_amt" id="user_donation_amt" value="" />
<input type="hidden" name="company_min_matching_amt" id="company_min_matching_amt" value="" />
<input type="hidden" name="currency_locale" id="currency_locale" value="en_US" />





<div class="form-row">
<div class="html-caption-container">
<style type="text/css"><!--
.designated-giving-recurring-row {   display: inline-flex !important;  }
--></style>
<h1 style="padding-bottom: 20px; margin-top: 0px;">Your Support Helps The Salvation Army Stay on the Front Lines of Hurricane Harvey Relief Efforts</h1>
<p>Hurricane Harvey has devastated Gulf Coast Texas communities. The Sinclair Broadcast Group Stations and their local news organizations have covered the disaster from the very beginning. They witnessed the tragic results, and shared stories of the heroic efforts to save lives. Now, Sinclair Cares has joined hands with the Salvation Army by Standing Strong for Texas to get families impacted by Harvey the resources and help they desperately need. To make that happen, we need your help! Please donate what you can today. Every dollar will help victims get back on their feet and rebuild their communities.</p>
<p>Sinclair Broadcast Group and its 173 television stations across the country are teaming up with the Salvation Army and "Standing Strong for Texas." They're raising money for Hurricane Harvey relief efforts, and Sinclair Broadcast Group will match total viewer donations collected up to $100,000.&nbsp;</p>
<p>Get updates on our relief efforts at <a href="http://www.disaster.salvationarmyusa.org" target="_blank">www.disaster.salvationarmyusa.org</a>, follow us on Facebook at <a href="http://www.facebook.com/SalArmyEDS" target="_blank">www.facebook.com/SalArmyEDS</a>, or on Twitter @SalArmyEDS.</p>
</div>
</div>




<h2 class="section-header-container">

My Gift

</h2>




<div class="don-standard-levels form-row">
<div class="levels-label">

</div>

<div id="level_standard_row" class="form-row form-donation-level">

<div class="form-content">
<span class="field-required"></span> <span class="aural-only">Field Is Required</span>

<span class="FormLabelText">Select Gift Amount:</span> 


<div class="donation-level-general-ask">

</div>

<div class="donation-levels">

<div class="donation-level-container">
<div class="form-content">

<div class="donation-level-input-container form-input">

<div class="donation-level-label-input-container">
<input type="radio" name="level_standardexpanded" id="level_standardexpanded122282"
value="122282"


onclick="evalMatchingGift('$50.00');"
/>
</div>

<label for="level_standardexpanded122282" onclick="">


<div class="donation-level-amount-container">
$50.00
</div>



</label>







</div>

<input type="hidden" name="level_standardexpandedsubmit" id="level_standard_122282expandedsubmit" value="true" /> 
</div>
</div>
<div class="donation-level-container">
<div class="form-content">

<div class="donation-level-input-container form-input">

<div class="donation-level-label-input-container">
<input type="radio" name="level_standardexpanded" id="level_standardexpanded122283"
value="122283"


onclick="evalMatchingGift('$100.00');"
/>
</div>

<label for="level_standardexpanded122283" onclick="">


<div class="donation-level-amount-container">
$100.00
</div>



</label>







</div>

<input type="hidden" name="level_standardexpandedsubmit" id="level_standard_122283expandedsubmit" value="true" /> 
</div>
</div>
<div class="donation-level-container">
<div class="form-content">

<div class="donation-level-input-container form-input">

<div class="donation-level-label-input-container">
<input type="radio" name="level_standardexpanded" id="level_standardexpanded122285"
value="122285"


onclick="evalMatchingGift('$500.00');"
/>
</div>

<label for="level_standardexpanded122285" onclick="">


<div class="donation-level-amount-container">
$500.00
</div>



</label>







</div>

<input type="hidden" name="level_standardexpandedsubmit" id="level_standard_122285expandedsubmit" value="true" /> 
</div>
</div>
<div class="donation-level-container">
<div class="form-content">

<div class="donation-level-input-container form-input">

<div class="donation-level-label-input-container">
<input type="radio" name="level_standardexpanded" id="level_standardexpanded122286"
value="122286"


onclick="evalMatchingGift('$1,000.00');"
/>
</div>

<label for="level_standardexpanded122286" onclick="">


<div class="donation-level-amount-container">
$1,000.00
</div>



</label>







</div>

<input type="hidden" name="level_standardexpandedsubmit" id="level_standard_122286expandedsubmit" value="true" /> 
</div>
</div>
<div class="donation-level-container">
<div class="form-content">

<div class="donation-level-input-container form-input">

<div class="donation-level-label-input-container">
<input type="radio" name="level_standardexpanded" id="level_standardexpanded122280"
value="122280"


onclick="evalMatchingGift(document.getElementById('level_standardexpanded122280amount').value);"
/>
</div>





<div class="donation-level-user-entered">
<label for="level_standardexpanded122280amount"><span class="aural-only">Enter amount</span></label>
<input type="text" name="level_standardexpanded122280amount" id="level_standardexpanded122280amount" value="" size="12"
onfocus="var el = document.getElementById ('level_standardexpanded122280');if (el) el.click(); fire_obs_comp_event('level_standardexpanded122280amount', this, event);evalMatchingGift(value); "
onchange="fire_obs_comp_event('level_standardexpanded122280amount', this, event);evalMatchingGift(value);"
onkeyup="fire_obs_comp_event('level_standardexpanded122280amount', this, event);evalMatchingGift(value);"/>
</div>





</div>

<input type="hidden" name="level_standardexpandedsubmit" id="level_standard_122280expandedsubmit" value="true" /> 
</div>
</div>
</div>
</div>
<script type="text/javascript">
Y.use("jquery-ui", function(Y) {
jQuery(function(){
// subscribe observables
jQuery('div.donation-level-element-container').find('input[type="radio"]').each(function() {
var syncAction = function(obj) {
if (obj.is(':checked')) {
obj.closest('div.donation-level-container').addClass('selected');
}
else {
obj.closest('div.donation-level-container').removeClass('selected');
};
return arguments.callee;
}(jQuery(this));
jQuery(this).click(function() {
jQuery('div.donation-level-container').removeClass('selected');
syncAction(jQuery(this));
});
});
});
});
</script><noscript>&nbsp;</noscript>
</div>

<div class="levels-gift-aid">

</div>
<input type="hidden" name="level_standardsubmit" id="level_standardsubmit" value="true" />
<script type="text/javascript">
function evalMatchingGift(gift) {

}
</script><noscript>&nbsp;</noscript>
</div>



<h2 class="section-header-container">

My Credit Card Information

</h2>




<div id="billing_first_name_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="billing_first_namename">First Name</label>

<input type="text" name="billing_first_namename" id="billing_first_namename"
value=""
maxlength="50"
 />

<input type="hidden" name="billing_first_namesubmit" id="billing_first_namesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_first_name', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_first_name_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>



<div id="billing_last_name_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="billing_last_namename">Last Name</label>

<input type="text" name="billing_last_namename" id="billing_last_namename"
value=""
maxlength="50"
 />

<input type="hidden" name="billing_last_namesubmit" id="billing_last_namesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_last_name', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_last_name_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>



<div class="payment-type-element-container">


<div id="payment_cc_container" class="payment-field-container">
<h3>Credit Card Information:</h3>
<div id="responsive_payment_typecc_type_row" class="form-row form-radio-array">

<div class="form-content">
<fieldset>
<legend>Credit Card Type:</legend>
<ul class="radio-array-list">
<li class="tender-row ">
<img src="../images/visa_small.gif" alt="Visa" name="responsive_payment_typecc_type_Visa" id="responsive_payment_typecc_type_Visa" />
</li><li class="tender-row ">
<img src="../images/discovercard_sm.gif" alt="Discover" name="responsive_payment_typecc_type_Discover" id="responsive_payment_typecc_type_Discover" />
</li><li class="tender-row ">
<img src="../images/amex_small.gif" alt="American Express" name="responsive_payment_typecc_type_American_Express" id="responsive_payment_typecc_type_American_Express" />
</li><li class="tender-row ">
<img src="../images/mastercd_small.gif" alt="MasterCard" name="responsive_payment_typecc_type_MasterCard" id="responsive_payment_typecc_type_MasterCard" />
</li>
</ul>
</fieldset>
<input type="hidden" name="responsive_payment_typecc_typesubmit" id="responsive_payment_typecc_typesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableRadioComponent ('responsive_payment_typecc_type', 'name');
comp.hide = function(_hidden)
{ 
var _display = _hidden ? 'none' : '';
set_display ('responsive_payment_typecc_type_row', _display);
this.disable_submit_flag (_hidden);
}
</script><noscript>&nbsp;</noscript>
</div>
</div>
<div id="responsive_payment_typecc_number_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="responsive_payment_typecc_numbername">Credit Card Number:</label>

<input type="text" name="responsive_payment_typecc_numbername" id="responsive_payment_typecc_numbername"
value=""
maxlength="22"
autocomplete="off" />

<input type="hidden" name="responsive_payment_typecc_numbersubmit" id="responsive_payment_typecc_numbersubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('responsive_payment_typecc_number', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('responsive_payment_typecc_number_row', _display);
this.disable_submit_flag (_hidden);
}


observe_component ('null', new ComponentDisplayer ('responsive_payment_typecc_number'));

</script><noscript>&nbsp;</noscript>
</div>
</div>
<div id="responsive_payment_typecc_exp_date_row" class="form-row form-date">

<div class="form-content">
<span class="field-required"></span>
<label for="responsive_payment_typecc_exp_date_MONTH">
<span class="label-text">Expiration Date:</span><span class="aural-only">Select month of credit card</span>
</label>
<label for="responsive_payment_typecc_exp_date_YEAR" ><span class="aural-only">Select Expiration Year</span></label>
<div class="date-input-container">

<fieldset class="cardExpGroup">
<select name="responsive_payment_typecc_exp_date_MONTH" id="responsive_payment_typecc_exp_date_MONTH" onChange="fire_obs_comp_event('responsive_payment_typecc_exp_date_MONTH', this)">
<option value="1" >01</option>
<option value="2" selected="selected">02</option>
<option value="3" >03</option>
<option value="4" >04</option>
<option value="5" >05</option>
<option value="6" >06</option>
<option value="7" >07</option>
<option value="8" >08</option>
<option value="9" >09</option>
<option value="10" >10</option>
<option value="11" >11</option>
<option value="12" >12</option>
</select>
<select name="responsive_payment_typecc_exp_date_YEAR" id="responsive_payment_typecc_exp_date_YEAR" onChange="fire_obs_comp_event('responsive_payment_typecc_exp_date_YEAR', this)">
<option value="2018" selected="selected">2018</option>
<option value="2019" >2019</option>
<option value="2020" >2020</option>
<option value="2021" >2021</option>
<option value="2022" >2022</option>
<option value="2023" >2023</option>
<option value="2024" >2024</option>
<option value="2025" >2025</option>
<option value="2026" >2026</option>
<option value="2027" >2027</option>
<option value="2028" >2028</option>

</select>
</fieldset>
<input type="hidden" name="responsive_payment_typecc_exp_date_DAY" id="responsive_payment_typecc_exp_date_DAY" value="1" />
<script type="text/javascript">
<!--
var comp1 = new ObservableComponent ('responsive_payment_typecc_exp_date_MONTH', '');
comp1.hide = function(_hidden) {
var _display = _hidden ? 'none' : '';
set_display ('responsive_payment_typecc_exp_date_Row', _display);
this.disable_submit_flag (_hidden);
}
var comp2 = new ObservableComponent ('responsive_payment_typecc_exp_date_YEAR', '');
comp2.hide = function(_hidden) {
var _display = _hidden ? 'none' : '';
set_display ('responsive_payment_typecc_exp_date_Row', _display);
this.disable_submit_flag (_hidden); 
}
//--> 
</script><noscript>&nbsp;</noscript>
</div>
<input type="hidden" name="responsive_payment_typecc_exp_datesubmit" id="responsive_payment_typecc_exp_datesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('responsive_payment_typecc_exp_date', 'input');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('responsive_payment_typecc_exp_date_row', _display);
disable_submit_flag ('responsive_payment_typecc_exp_datesubmit', _hidden);
}
comp.disable = function(_disabled)
{
disable_element ('responsive_payment_typecc_exp_date_MONTH', _disabled);
disable_element ('responsive_payment_typecc_exp_date_DAY', _disabled);
disable_element ('responsive_payment_typecc_exp_date_YEAR', _disabled);
disable_element ('responsive_payment_typecc_exp_date_HOUR12',_disabled);
disable_element ('responsive_payment_typecc_exp_date_HOUR24',_disabled); //For UK, 24 hour clock used
disable_element ('responsive_payment_typecc_exp_date_MINUTE',_disabled);
disable_element ('responsive_payment_typecc_exp_date_AMPM', _disabled);
}

</script><noscript>&nbsp;</noscript>
</div>
</div>

<div id="responsive_payment_typecc_cvv_row" class="form-row form-text cvv-input">

<div class="form-content">
<span class="field-required"></span>
<label for="responsive_payment_typecc_cvvname">
<span class="FormLabelText">CVV Number:</span>
</label>
<a href="http://help.convio.net/site/PageServer?s_site=tsan&pagename=user_donation_cvv" class="HelpLink"
title="What is this? Opens new window.">What is this?</a>
<input type="text" name="responsive_payment_typecc_cvvname" id="responsive_payment_typecc_cvvname"
value=""
maxlength="4"
autocomplete="off" />
<input type="hidden" name="responsive_payment_typecc_cvvsubmit" id="responsive_payment_typecc_cvvsubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('responsive_payment_typecc_cvv', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('responsive_payment_typecc_cvv_row', _display);
this.disable_submit_flag (_hidden);
}

</script><noscript>&nbsp;</noscript>
</div>
</div>

</div>



<input type="hidden" name="responsive_payment_typesubmit" id="responsive_payment_typesubmit" value="true" />
<script type="text/javascript">
function PaymentObserver()
{
this.observe = function(_event)
{
var sVal = _event.component.get();
switch (sVal)
{
case 'check':
hide_element('payment_cc_container');
hide_element('payment_bank_container');
show_element('payment_check_container');
break;
case 'credit':
hide_element('payment_bank_container');
hide_element('payment_check_container');
show_element('payment_cc_container');
break;
case 'ach':
hide_element('payment_cc_container');
hide_element('payment_check_container');
show_element('payment_bank_container');
break;
case 'paypal':
case 'amazon':
default:
// hide all
hide_element('payment_bank_container');
hide_element('payment_cc_container');
hide_element('payment_check_container');
break;
}
}
}
// Set the observer to show/hide the relevant fields
observe_component ('responsive_payment_typepay_typeradio', new PaymentObserver());
</script><noscript>&nbsp;</noscript>
</div>




<h2 class="section-header-container">

My Billing Information

</h2>




<div id="billing_addr_street1_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="billing_addr_street1name">Street Address</label>

<input type="text" name="billing_addr_street1name" id="billing_addr_street1name"
value=""
maxlength="50"
 />

<input type="hidden" name="billing_addr_street1submit" id="billing_addr_street1submit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_addr_street1', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_addr_street1_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<div id="billing_addr_street2_row" class="form-row form-text">

<div class="form-content">

<label for="billing_addr_street2name">Apt/Suite#</label>

<input type="text" name="billing_addr_street2name" id="billing_addr_street2name"
value=""
maxlength="50"
 />

<input type="hidden" name="billing_addr_street2submit" id="billing_addr_street2submit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_addr_street2', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_addr_street2_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<div id="billing_addr_city_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="billing_addr_cityname">City</label>

<input type="text" name="billing_addr_cityname" id="billing_addr_cityname"
value=""
maxlength="50"
 />

<input type="hidden" name="billing_addr_citysubmit" id="billing_addr_citysubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_addr_city', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_addr_city_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<div id="billing_addr_state_row" class="form-row form-selectlist">

<div class="form-content">
<span class="field-required"></span>
<label class="FormLabel" for="billing_addr_state">State</label>
<select name="billing_addr_state" id="billing_addr_state" size="1" 
 onchange="fire_obs_comp_event('billing_addr_state', this)">
<option ></option>
<option value="AK" >AK - Alaska</option>
<option value="AL" >AL - Alabama</option>
<option value="AR" >AR - Arkansas</option>
<option value="AZ" >AZ - Arizona</option>
<option value="CA" >CA - California</option>
<option value="CO" >CO - Colorado</option>
<option value="CT" >CT - Connecticut</option>
<option value="DC" >DC - District of Columbia</option>
<option value="DE" >DE - Delaware</option>
<option value="FL" >FL - Florida</option>
<option value="GA" >GA - Georgia</option>
<option value="HI" >HI - Hawaii</option>
<option value="IA" >IA - Iowa</option>
<option value="ID" >ID - Idaho</option>
<option value="IL" >IL - Illinois</option>
<option value="IN" >IN - Indiana</option>
<option value="KS" >KS - Kansas</option>
<option value="KY" >KY - Kentucky</option>
<option value="LA" >LA - Louisiana</option>
<option value="MA" >MA - Massachusetts</option>
<option value="MD" >MD - Maryland</option>
<option value="ME" >ME - Maine</option>
<option value="MI" >MI - Michigan</option>
<option value="MN" >MN - Minnesota</option>
<option value="MO" >MO - Missouri</option>
<option value="MS" >MS - Mississippi</option>
<option value="MT" >MT - Montana</option>
<option value="NC" >NC - North Carolina</option>
<option value="ND" >ND - North Dakota</option>
<option value="NE" >NE - Nebraska</option>
<option value="NH" >NH - New Hampshire</option>
<option value="NJ" >NJ - New Jersey</option>
<option value="NM" >NM - New Mexico</option>
<option value="NV" >NV - Nevada</option>
<option value="NY" >NY - New York</option>
<option value="OH" >OH - Ohio</option>
<option value="OK" >OK - Oklahoma</option>
<option value="OR" >OR - Oregon</option>
<option value="PA" >PA - Pennsylvania</option>
<option value="RI" >RI - Rhode Island</option>
<option value="SC" >SC - South Carolina</option>
<option value="SD" >SD - South Dakota</option>
<option value="TN" >TN - Tennessee</option>
<option value="TX" >TX - Texas</option>
<option value="UT" >UT - Utah</option>
<option value="VA" >VA - Virginia</option>
<option value="VT" >VT - Vermont</option>
<option value="WA" >WA - Washington</option>
<option value="WI" >WI - Wisconsin</option>
<option value="WV" >WV - West Virginia</option>
<option value="WY" >WY - Wyoming</option>
<option value="AS" >AS - American Samoa</option>
<option value="FM" >FM - Federated States of Micronesia</option>
<option value="GU" >GU - Guam</option>
<option value="MH" >MH - Marshall Islands</option>
<option value="MP" >MP - Northern Mariana Islands</option>
<option value="PR" >PR - Puerto Rico</option>
<option value="PW" >PW - Palau</option>
<option value="VI" >VI - Virgin Islands</option>
<option value="AA" >AA - Armed Forces Americas</option>
<option value="AE" >AE - Armed Forces</option>
<option value="AP" >AP - Armed Forces Pacific</option>
<option value="AB" >AB - Alberta</option>
<option value="BC" >BC - British Columbia</option>
<option value="MB" >MB - Manitoba</option>
<option value="NB" >NB - New Brunswick</option>
<option value="NL" >NL - Newfoundland and Labrador</option>
<option value="NS" >NS - Nova Scotia</option>
<option value="NT" >NT - Northwest Territories</option>
<option value="NU" >NU - Nunavut</option>
<option value="ON" >ON - Ontario</option>
<option value="PE" >PE - Prince Edward Island</option>
<option value="QC" >QC - Quebec</option>
<option value="SK" >SK - Saskatchewan</option>
<option value="YT" >YT - Yukon</option>
<option value="None" >None</option>

</select>
<script type="text/javascript">
<!--
var comp = new ObservableComponent('billing_addr_state', '');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_addr_state_Row', _display);
this.disable_submit_flag (_hidden);
} 
//-->
</script>
<noscript><br/>Required</noscript>

<input type="hidden" name="billing_addr_statesubmit" id="billing_addr_statesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_addr_state', '');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_addr_state_row', _display);
this.disable_submit_flag (_hidden);
}


function billing_addr_state_listChanged(_evt)
{
var e = _evt ? _evt : event; // IE vs. Mozilla event model
if (e) {
var src = e.target ? e.target : e.srcElement; // IE vs. Mozilla event model
fire_obs_comp_event('billing_addr_state', src);
}
}
var el = document.getElementById('billing_addr_state');
if (el) {
Utils.addEvent (el, 'change', billing_addr_state_listChanged);
}
</script><noscript>&nbsp;</noscript>
</div>
</div>





<div id="billing_addr_zip_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="billing_addr_zipname">ZIP Code</label>

<input type="text" name="billing_addr_zipname" id="billing_addr_zipname"
value=""
maxlength="50"
 />

<input type="hidden" name="billing_addr_zipsubmit" id="billing_addr_zipsubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('billing_addr_zip', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('billing_addr_zip_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<h2 class="section-header-container">

My Contact Information

</h2>




<div id="donor_first_name_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="donor_first_namename">First Name</label>

<input type="text" name="donor_first_namename" id="donor_first_namename"
value=""
maxlength="50"
 />

<input type="hidden" name="donor_first_namesubmit" id="donor_first_namesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('donor_first_name', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('donor_first_name_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<div id="donor_last_name_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="donor_last_namename">Last Name</label>

<input type="text" name="donor_last_namename" id="donor_last_namename"
value=""
maxlength="50"
 />

<input type="hidden" name="donor_last_namesubmit" id="donor_last_namesubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('donor_last_name', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('donor_last_name_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<div id="donor_email_address_row" class="form-row form-text">

<div class="form-content">
<span class="field-required"></span>
<label for="donor_email_addressname">Email</label>

<input type="text" name="donor_email_addressname" id="donor_email_addressname"
value=""
maxlength="255"
 />

<input type="hidden" name="donor_email_addresssubmit" id="donor_email_addresssubmit" value="true" />
<script type="text/javascript">
var comp = new ObservableComponent ('donor_email_address', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('donor_email_address_row', _display);
this.disable_submit_flag (_hidden);
}


</script><noscript>&nbsp;</noscript>
</div>
</div>




<div class="form-row form-checkbox" id="donor_email_opt_in_Row">

<div class="form-content">

<span class="check-box-form-label-text"></span>

<input type="checkbox" name="donor_email_opt_inname" id="donor_email_opt_inname"
checked="checked"
onclick="fire_obs_comp_event('donor_email_opt_in', this);"
/>

<label for="donor_email_opt_inname">
Yes, I would like to receive communications.
</label>


<script type="text/javascript">
var comp = new ObservableComponent ('donor_email_opt_in', 'name');
comp.hide = function(_hidden)
{
var _display = _hidden ? 'none' : '';
set_display ('donor_email_opt_in_Row', _display);
this.disable_submit_flag (_hidden);
}
comp.set = function (_value)
{
if (document.getElementById('donor_email_opt_inname')) {
document.getElementById('donor_email_opt_inname').checked = _value;
this.fireEvent();
}
}
comp.get = function()
{
if (document.getElementById('donor_email_opt_inname'))
return document.getElementById('donor_email_opt_inname').checked;
}
comp.clear = function()
{
this.set(false);
}

 
</script><noscript>&nbsp;</noscript>
<input type="hidden" name="donor_email_opt_insubmit" id="donor_email_opt_insubmit" value="true" />
</div>
</div>





<div class="button-container clearfix">
<div class="button-sub-container">

<button class="step-button action-button finish-step" type="submit" id="pstep_finish" name="pstep_finish" value="Submit Donation">Submit Donation</button>




</div>
</div>
<input type="hidden" name="idb" id="idb" value="1245600442" />
<input type="hidden" name="df_id" id="df_id" value="27850" />
<input type="hidden" name="mfc_pref" id="mfc_pref" value="T" />



</div>
 
<input type="hidden" name="27850.donation" id="27850.donation" value="form1" />
 
</div>
<script type="text/javascript">
function deny_submit()
{
alert ('Form submission is not enabled when previewing an individual data element.');
return false;
}
</script><noscript>&nbsp;</noscript>

</form>



</div>
</div>
<div class="col-md-4 col-sm-4">
<div class="panel panel-default">
<div style="text-align: center; margin: 10px;">
<h3>DONATE BY MAIL</h3>
The Salvation Army<br />PO BOX 1959<br />        Atlanta, GA 30301<strong>&nbsp;</strong><em>&nbsp;</em><br /><br />
<p>Please designate&nbsp;Hurricane Harvey
- Sinclair Cares on all checks.</p>
<p>&nbsp;</p>
<h3>DONATE BY PHONE</h3>
<div style="text-align: center; margin: 10px;">
call 1-800-SAL-ARMY</div>
<div style="text-align: center; margin: 10px;"></div>
<div style="text-align: center; margin: 10px;">
TERRITORIAL CONTACTS
</div>
<p>Donor Management<br />
Tyra Gore- <a href="mailto:tyra.gore@uss.salvationarmy.org">Email</a><br />(877) 267-8409</p>
<p>Media Relations<br />
Chris Priest&nbsp;- <a href="mailto:chris.priest@uss.salvationarmy.org">Email</a></p>
</div>
</div>
</div>
</div>
<!-- End Body -->
<!-- Footer -->
<div class="footer" style="margin-top: -40px;">
<div class="row footer-row">
    <!-- About Us -->
<div class="footer-module col-md-4 col-sm-6 col-xs-12" id="ways-to-give">
<h1 class="footer-headline" id="ways-to-give-headline" style="text-align: left;">About Us</h1>
<p><span>&ldquo;Doing The Most Good.&rdquo; In these four words, our mission &ndash; to feed, to clothe, to comfort, to care. To rebuild broken homes and broken lives. By walking with the addicted, we can lead them to recovery. In fighting hunger and poverty, we can feed and nurture the spirit. And, in living and sharing the Christian Gospel by meeting tangible needs, we give the world a lasting display of the love behind our beliefs</span>.&nbsp;</p>
<address><strong>The Salvation Army<br />
Southern Territory Headquarters</strong>&nbsp;<br />
        1424 Northeast Expressway<br />Atlanta, GA 30329<br />
        <span><span>(404) 728-6700</span></span></address>
</div>
<!-- End About Us -->
    <!-- Our Mission -->
<div class="footer-module col-md-4 col-sm-6 col-xs-12" id="our-mission">
<h1 class="footer-headline" id="our-mission-headline" style="text-align: left;">Our Mission</h1>
<p>The Salvation Army, an international movement, is an evangelical part of the universal Christian church. Its message is based on the Bible. Its ministry is motivated by the love of God. Its mission is to preach the gospel of Jesus Christ and to meet human needs in His name without discrimination.</p>
<p>The Salvation Army is a nonprofit, tax-exempt charitable organization under Section 501(c)(3) of the Internal Revenue Code. Donations are tax-deductible as allowed by law.</p>
<p><a href="http://www.salvationarmyusa.org/usn/privacypolicy " target="_blank">Privacy Policy</a> - Copyright &copy;
<script language="javascript" type="text/javascript">// <![CDATA[
var today = new Date()
var year = today.getFullYear()
document.write(year)
// ></script>
The Salvation Army</p>
</div>
<!-- End Our Mission -->
    <!-- Give Trust -->
<div class="footer-module col-md-4 col-sm-12 col-xs-12" id="give-with-trust">
<h1 class="footer-headline" id="give-with-trust-headline" style="text-align: left;">Give with Trust</h1>
<a href="http://www.verisign.com/" target="_blank">
            <img src="../images/content/pagebuilder/verisign-logo.png" alt="" width="130" height="70" />
            </a> &nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.give.org/charity-reviews/national/religious/salvation-army-national-corporation-in-alexandria-va-1221" target="_blank">
            <img src="../images/content/pagebuilder/bbb-logo.png" alt="" />
            </a>
</div>
<!-- End Give Trust -->
  </div>
<!-- End Footer Row -->
</div>
<!-- End DESKTOP Footer Container -->
  <!-- End Footer -->
<!-- End Wrapper -->
<p>
</p>
</div>
<script type="text/javascript">// <![CDATA[
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-86201568-1', 'auto');
  ga('send', 'pageview');
// ]]></script>
  </body>
]]
</html>
