/**
 * Get Shop States
 *
 * @since 1.6
 *
 * @param null $country
 * @return mixed|void  A list of states for the shop's base country
 */
function edd_get_shop_states($country = null)
{
    global $edd_options;
    if (empty($country)) {
        $country = edd_get_shop_country();
    }
    switch ($country) {
        case 'US':
            $states = edd_get_states_list();
            break;
        case 'CA':
            $states = edd_get_provinces_list();
            break;
        case 'AU':
            $states = edd_get_australian_states_list();
            break;
        case 'BR':
            $states = edd_get_brazil_states_list();
            break;
        case 'CN':
            $states = edd_get_chinese_states_list();
            break;
        case 'HK':
            $states = edd_get_hong_kong_states_list();
            break;
        case 'HU':
            $states = edd_get_hungary_states_list();
            break;
        case 'ID':
            $states = edd_get_indonesian_states_list();
            break;
        case 'IN':
            $states = edd_get_indian_states_list();
            break;
        case 'MY':
            $states = edd_get_malaysian_states_list();
            break;
        case 'NZ':
            $states = edd_get_new_zealand_states_list();
            break;
        case 'TH':
            $states = edd_get_thailand_states_list();
            break;
        case 'ZA':
            $states = edd_get_south_african_states_list();
            break;
        default:
            $states = array();
            break;
    }
    return apply_filters('edd_shop_states', $states);
}
    /**
     * Shipping info fields
     *
     * @since 1.0
     *
     * @access public
     * @return void
     */
    public function address_fields()
    {
        if (!$this->needs_shipping_fields()) {
            return;
        }
        $display = $this->has_billing_fields() ? ' style="display:none;"' : '';
        ob_start();
        ?>
		<script type="text/javascript">var edd_global_vars; jQuery(document).ready(function($) {
			$('body').on('change', 'select[name=shipping_country],select[name=billing_country]',function() {

				var billing = true;

				if( $('select[name=billing_country]').length && ! $('#edd_simple_shipping_show').is(':checked') ) {
					var val = $('select[name=billing_country]').val();
				} else {
					var val = $('select[name=shipping_country]').val();
					billing = false;
				}

				if( billing && edd_global_vars.taxes_enabled == '1' )
					return; // EDD core will recalculate on billing address change if taxes are enabled

				if( val == 'US' ) {
					$('#shipping_state_other').hide();$('#shipping_state_us').show();$('#shipping_state_ca').hide();
				} else if(  val =='CA') {
					$('#shipping_state_other').hide();$('#shipping_state_us').hide();$('#shipping_state_ca').show();
				} else {
					$('#shipping_state_other').show();$('#shipping_state_us').hide();$('#shipping_state_ca').hide();
				}

				var postData = {
		            action: 'edd_get_shipping_rate',
		            country:  val
		        };

		        $.ajax({
		            type: "POST",
		            data: postData,
		            dataType: "json",
		            url: edd_global_vars.ajaxurl,
		            success: function (response) {
						$('#edd_checkout_cart').replaceWith(response.html);
						$('.edd_cart_amount').each(function() {
							$(this).text(response.total);
						});
		            }
		        }).fail(function (data) {
		            if ( window.console && window.console.log ) {
						console.log( data );
					}
		        });
			});

			$('body').on('edd_taxes_recalculated', function( event, data ) {

				if( $('#edd_simple_shipping_show').is(':checked') )
					return;

				var postData = {
		            action: 'edd_get_shipping_rate',
		            country: data.postdata.billing_country,
		            state: data.postdata.state
		        };
		        $.ajax({
		            type: "POST",
		            data: postData,
		            dataType: "json",
		            url: edd_global_vars.ajaxurl,
		            success: function (response) {
		                if( response ) {

							$('#edd_checkout_cart').replaceWith(response.html);
							$('.edd_cart_amount').each(function() {
								$(this).text(response.total);
							});

		                } else {
							if ( window.console && window.console.log ) {
								console.log( response );
							}
				       	}
		            }
		        }).fail(function (data) {
					if ( window.console && window.console.log ) {
						console.log( data );
					}
		        });

			});

			$('select#edd-gateway, input.edd-gateway').change( function (e) {
				var postData = {
		            action: 'edd_get_shipping_rate',
		            country: 'US' // default
		        };
		        $.ajax({
		            type: "POST",
		            data: postData,
		            dataType: "json",
		            url: edd_global_vars.ajaxurl,
		            success: function (response) {
		               $('#edd_checkout_cart').replaceWith(response.html);
						$('.edd_cart_amount').each(function() {
							$(this).text(response.total);
						});
		            }
		        }).fail(function (data) {
		            if ( window.console && window.console.log ) {
						console.log( data );
					}
		        });
			});
			$('#edd_simple_shipping_show').change(function() {
				$('#edd_simple_shipping_fields_wrap').toggle();
			});
		});</script>

		<div id="edd_simple_shipping">
			<?php 
        if ($this->has_billing_fields()) {
            ?>
				<fieldset id="edd_simple_shipping_diff_address">
					<label for="edd_simple_shipping_show">
						<input type="checkbox" id="edd_simple_shipping_show" name="edd_use_different_shipping" value="1"/>
						<?php 
            _e('Ship to Different Address?', 'edd-simple-shipping');
            ?>
					</label>
				</fieldset>
			<?php 
        }
        ?>
			<div id="edd_simple_shipping_fields_wrap"<?php 
        echo $display;
        ?>
>
				<fieldset id="edd_simple_shipping_fields">
					<?php 
        do_action('edd_shipping_address_top');
        ?>
					<legend><?php 
        _e('Shipping Details', 'edd-simple-shipping');
        ?>
</legend>
					<p id="edd-shipping-address-wrap">
						<label class="edd-label"><?php 
        _e('Shipping Address', 'edd-simple-shipping');
        ?>
</label>
						<span class="edd-description"><?php 
        _e('The address to ship your purchase to.', 'edd-simple-shipping');
        ?>
</span>
						<input type="text" name="shipping_address" class="shipping-address edd-input" placeholder="<?php 
        _e('Address line 1', 'edd-simple-shipping');
        ?>
"/>
					</p>
					<p id="edd-shipping-address-2-wrap">
						<label class="edd-label"><?php 
        _e('Shipping Address Line 2', 'edd-simple-shipping');
        ?>
</label>
						<span class="edd-description"><?php 
        _e('The suite, apt no, PO box, etc, associated with your shipping address.', 'edd-simple-shipping');
        ?>
</span>
						<input type="text" name="shipping_address_2" class="shipping-address-2 edd-input" placeholder="<?php 
        _e('Address line 2', 'edd-simple-shipping');
        ?>
"/>
					</p>
					<p id="edd-shipping-city-wrap">
						<label class="edd-label"><?php 
        _e('Shipping City', 'edd-simple-shipping');
        ?>
</label>
						<span class="edd-description"><?php 
        _e('The city for your shipping address.', 'edd-simple-shipping');
        ?>
</span>
						<input type="text" name="shipping_city" class="shipping-city edd-input" placeholder="<?php 
        _e('City', 'edd-simple-shipping');
        ?>
"/>
					</p>
					<p id="edd-shipping-country-wrap">
						<label class="edd-label"><?php 
        _e('Shipping Country', 'edd-simple-shipping');
        ?>
</label>
						<span class="edd-description"><?php 
        _e('The country for your shipping address.', 'edd-simple-shipping');
        ?>
</span>
						<select name="shipping_country" class="shipping-country edd-select">
							<?php 
        $countries = edd_get_country_list();
        foreach ($countries as $country_code => $country) {
            echo '<option value="' . $country_code . '">' . $country . '</option>';
        }
        ?>
						</select>
					</p>
					<p id="edd-shipping-state-wrap">
						<label class="edd-label"><?php 
        _e('Shipping State / Province', 'edd-simple-shipping');
        ?>
</label>
						<span class="edd-description"><?php 
        _e('The state / province for your shipping address.', 'edd-simple-shipping');
        ?>
</span>
						<input type="text" size="6" name="shipping_state_other" id="shipping_state_other" class="shipping-state edd-input" placeholder="<?php 
        _e('State / Province', 'edd-simple-shipping');
        ?>
" style="display:none;"/>
			            <select name="shipping_state_us" id="shipping_state_us" class="shipping-state edd-select">
			                <?php 
        $states = edd_get_states_list();
        foreach ($states as $state_code => $state) {
            echo '<option value="' . $state_code . '">' . $state . '</option>';
        }
        ?>
			            </select>
			            <select name="shipping_state_ca" id="shipping_state_ca" class="shipping-state edd-select" style="display: none;">
			                <?php 
        $provinces = edd_get_provinces_list();
        foreach ($provinces as $province_code => $province) {
            echo '<option value="' . $province_code . '">' . $province . '</option>';
        }
        ?>
			            </select>
					</p>
					<p id="edd-shipping-zip-wrap">
						<label class="edd-label"><?php 
        _e('Shipping Zip / Postal Code', 'edd-simple-shipping');
        ?>
</label>
						<span class="edd-description"><?php 
        _e('The zip / postal code for your shipping address.', 'edd-simple-shipping');
        ?>
</span>
						<input type="text" size="4" name="shipping_zip" class="shipping-zip edd-input" placeholder="<?php 
        _e('Zip / Postal code', 'edd-simple-shipping');
        ?>
"/>
					</p>
					<?php 
        do_action('edd_shipping_address_bottom');
        ?>
				</fieldset>
			</div>
		</div>
<?php 
        echo ob_get_clean();
    }
/**
 * Get Shop States
 *
 * @since 1.6
 *
 * @param null $country
 * @return mixed|void  A list of states for the shop's base country
 */
function edd_get_shop_states($country = null)
{
    if (empty($country)) {
        $country = edd_get_shop_country();
    }
    switch ($country) {
        case 'US':
            $states = edd_get_states_list();
            break;
        case 'CA':
            $states = edd_get_provinces_list();
            break;
        case 'AU':
            $states = edd_get_australian_states_list();
            break;
        case 'BD':
            $states = edd_get_bangladeshi_states_list();
            break;
        case 'BG':
            $states = edd_get_bulgarian_states_list();
            break;
        case 'BR':
            $states = edd_get_brazil_states_list();
            break;
        case 'CN':
            $states = edd_get_chinese_states_list();
            break;
        case 'HK':
            $states = edd_get_hong_kong_states_list();
            break;
        case 'HU':
            $states = edd_get_hungary_states_list();
            break;
        case 'ID':
            $states = edd_get_indonesian_states_list();
            break;
        case 'IN':
            $states = edd_get_indian_states_list();
            break;
        case 'IR':
            $states = edd_get_iranian_states_list();
            break;
        case 'IT':
            $states = edd_get_italian_states_list();
            break;
        case 'JP':
            $states = edd_get_japanese_states_list();
            break;
        case 'MX':
            $states = edd_get_mexican_states_list();
            break;
        case 'MY':
            $states = edd_get_malaysian_states_list();
            break;
        case 'NP':
            $states = edd_get_nepalese_states_list();
            break;
        case 'NZ':
            $states = edd_get_new_zealand_states_list();
            break;
        case 'PE':
            $states = edd_get_peruvian_states_list();
            break;
        case 'TH':
            $states = edd_get_thailand_states_list();
            break;
        case 'TR':
            $states = edd_get_turkey_states_list();
            break;
        case 'ZA':
            $states = edd_get_south_african_states_list();
            break;
        case 'ES':
            $states = edd_get_spain_states_list();
            break;
        default:
            $states = array();
            break;
    }
    return apply_filters('edd_shop_states', $states);
}
/**
 * Outputs the default credit card address fields
 *
 * @since 1.0
 * @return void
 */
function edd_default_cc_address_fields()
{
    ob_start();
    ?>
	<fieldset id="edd_cc_address" class="cc-address">
		<?php 
    do_action('edd_cc_billing_top');
    ?>
		<p id="edd-card-address-wrap">
			<label class="edd-label"><?php 
    _e('Billing Address', 'edd');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('The primary billing address for your credit card.', 'edd');
    ?>
</span>
			<input type="text" name="card_address" class="card-address edd-input required" placeholder="<?php 
    _e('Address line 1', 'edd');
    ?>
"/>
		</p>
		<p id="edd-card-address-2-wrap">
			<label class="edd-label"><?php 
    _e('Billing Address Line 2 (optional)', 'edd');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('The suite, apt no, PO box, etc, associated with your billing address.', 'edd');
    ?>
</span>
			<input type="text" name="card_address_2" class="card-address-2 edd-input" placeholder="<?php 
    _e('Address line 2', 'edd');
    ?>
"/>
		</p>
		<p id="edd-card-city-wrap">
			<label class="edd-label"><?php 
    _e('Billing City', 'edd');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('The city for your billing address.', 'edd');
    ?>
</span>
			<input type="text" name="card_city" class="card-city edd-input required" placeholder="<?php 
    _e('City', 'edd');
    ?>
"/>
		</p>
		<p id="edd-card-country-wrap">
			<label class="edd-label"><?php 
    _e('Billing Country', 'edd');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('The country for your billing address.', 'edd');
    ?>
</span>
			<select name="billing_country" class="billing-country edd-select required">
				<?php 
    $countries = edd_get_country_list();
    foreach ($countries as $country_code => $country) {
        echo '<option value="' . $country_code . '">' . $country . '</option>';
    }
    ?>
			</select>
		</p>
		<p id="edd-card-state-wrap">
			<label class="edd-label"><?php 
    _e('Billing State / Province', 'edd');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('The state or province for your billing address.', 'edd');
    ?>
</span>
			<input type="text" size="6" name="card_state_other" id="card_state_other" class="card-state edd-input" placeholder="<?php 
    _e('State / Province', 'edd');
    ?>
" style="display:none;"/>
            <select name="card_state_us" id="card_state_us" class="card-state edd-select required">
                <?php 
    $states = edd_get_states_list();
    foreach ($states as $state_code => $state) {
        echo '<option value="' . $state_code . '">' . $state . '</option>';
    }
    ?>
            </select>
            <select name="card_state_ca" id="card_state_ca" class="card-state edd-select required" style="display: none;">
                <?php 
    $provinces = edd_get_provinces_list();
    foreach ($provinces as $province_code => $province) {
        echo '<option value="' . $province_code . '">' . $province . '</option>';
    }
    ?>
            </select>
		</p>
		<p id="edd-card-zip-wrap">
			<label class="edd-label"><?php 
    _e('Billing Zip / Postal Code', 'edd');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('The zip or postal code for your billing address.', 'edd');
    ?>
</span>
			<input type="text" size="4" name="card_zip" class="card-zip edd-input required" placeholder="<?php 
    _e('Zip / Postal code', 'edd');
    ?>
"/>
		</p>
		<?php 
    do_action('edd_cc_billing_bottom');
    ?>
	</fieldset>
	<?php 
    echo ob_get_clean();
}
/**
 * Default CC Address fields
 *
 * Outputs the default credit card address fields
 *
 * @access      private
 * @since       1.0
 * @return      void
*/
function edd_default_cc_address_fields()
{
    ob_start();
    ?>
	<fieldset id="edd_cc_address" class="cc-address">
		<?php 
    do_action('edd_cc_billing_top');
    ?>
		<p>
			<input type="text" name="card_address" class="card-address edd-input required" placeholder="<?php 
    _e('Address line 1', 'edd');
    ?>
"/>
			<label class="edd-label"><?php 
    _e('Billing Address', 'edd');
    ?>
</label>
		</p>
		<p>
			<input type="text" name="card_address_2" class="card-address-2 edd-input" placeholder="<?php 
    _e('Address line 2', 'edd');
    ?>
"/>
			<label class="edd-label"><?php 
    _e('Billing Address Line 2', 'edd');
    ?>
</label>
		</p>
		<p>
			<input type="text" name="card_city" class="card-city edd-input required" placeholder="<?php 
    _e('City', 'edd');
    ?>
"/>
			<label class="edd-label"><?php 
    _e('Billing City', 'edd');
    ?>
</label>
		</p>
		<p>
			<select name="billing_country" class="billing-country edd-select required">
				<?php 
    $countries = edd_get_country_list();
    foreach ($countries as $country_code => $country) {
        echo '<option value="' . $country_code . '">' . $country . '</option>';
    }
    ?>
			</select>
			<label class="edd-label"><?php 
    _e('Billing Country', 'edd');
    ?>
</label>
		</p>
		<p>
			<input type="text" size="6" name="card_state_other" id="card_state_other" class="card-state edd-input" placeholder="<?php 
    _e('State / Province', 'edd');
    ?>
" style="display:none;"/>
            <select name="card_state_us" id="card_state_us" class="card-state edd-select required">
                <?php 
    $states = edd_get_states_list();
    foreach ($states as $state_code => $state) {
        echo '<option value="' . $state_code . '">' . $state . '</option>';
    }
    ?>
            </select>
            <select name="card_state_ca" id="card_state_ca" class="card-state edd-select required" style="display: none;">
                <?php 
    $provinces = edd_get_provinces_list();
    foreach ($provinces as $province_code => $province) {
        echo '<option value="' . $province_code . '">' . $province . '</option>';
    }
    ?>
            </select>
			<label class="edd-label"><?php 
    _e('Billing State / Province', 'edd');
    ?>
</label>
		</p>
		<p>
			<input type="text" size="4" name="card_zip" class="card-zip edd-input required" placeholder="<?php 
    _e('Zip / Postal code', 'edd');
    ?>
"/>
			<label class="edd-label"><?php 
    _e('Billing Zip / Postal Code', 'edd');
    ?>
</label>
		</p>
		<?php 
    do_action('edd_cc_billing_bottom');
    ?>
	</fieldset>
	<?php 
    echo ob_get_clean();
}
/**
 * Add the HTML fields.
 *
 * @since Astoundify Crowdfunding 0.1-alpha
 *
 * @return void
 */
function atcf_shipping_address_fields()
{
    if (!atcf_shipping_cart_shipping()) {
        return;
    }
    ob_start();
    ?>
	<script>
		jQuery(document).ready(function($) {
			$( 'body' ).change( 'select[name=shipping_country]', function() {
				if( $('select[name=shipping_country]').val() == 'US') {
					$('#shipping_state_other').css('display', 'none');
					$('#shipping_state_us').css('display', '');
					$('#shipping_state_ca').css('display', 'none');
				} else if( $('select[name=shipping_country]').val() == 'CA') {
					$('#shipping_state_other').css('display', 'none');
					$('#shipping_state_us').css('display', 'none');
					$('#shipping_state_ca').css('display', '');
				} else {
					$('#shipping_state_other').css('display', '');
					$('#shipping_state_us').css('display', 'none');
					$('#shipping_state_ca').css('display', 'none');
				}
			});
		});
    </script>

	<fieldset id="atcf_shipping_address" class="atcf-shipping-address">
		<legend><?php 
    _e('Shipping Address', 'atcf');
    ?>
</legend>

		<p id="atcf-edd-address-1-wrap">
			<label class="edd-label"><?php 
    _e('Shipping Address', 'atcf');
    ?>
</label>
			<span class="edd-description"><?php 
    _e('Where should we send any physical goods?', 'atcf');
    ?>
</span>
			<input type="text" name="shipping_address" class="shipping-address edd-input required" placeholder="<?php 
    _e('Address line 1', 'atcf');
    ?>
"/>
		</p>

		<p id="atcf-edd-address-2-wrap">
			<label class="edd-label"><?php 
    _e('Shipping Address Line 2', 'atcf');
    ?>
</label>
			<input type="text" name="shipping_address_2" class="shipping-address-2 edd-input required" placeholder="<?php 
    _e('Address line 2', 'atcf');
    ?>
"/>
		</p>

		<p id="atcf-edd-address-city">
			<label class="edd-label"><?php 
    _e('Shipping City', 'atcf');
    ?>
</label>
			<input type="text" name="shipping_city" class="shipping-city edd-input required" placeholder="<?php 
    _e('City', 'atcf');
    ?>
"/>
		</p>

		<p>
			<label class="edd-label"><?php 
    _e('Shipping Country', 'atcf');
    ?>
</label>
			<select name="shipping_country" class="shipping-country edd-select required">
				<?php 
    $countries = edd_get_country_list();
    foreach ($countries as $country_code => $country) {
        echo '<option value="' . $country_code . '">' . $country . '</option>';
    }
    ?>
			</select>
		</p>

		<p>
			<label class="edd-label"><?php 
    _e('Shipping State / Province', 'atcf');
    ?>
</label>
			<input type="text" size="6" name="shipping_state_other" id="shipping_state_other" class="shipping-state edd-input" placeholder="<?php 
    _e('State / Province', 'atcf');
    ?>
" style="display:none;"/>
            <select name="shipping_state_us" id="shipping_state_us" class="shipping-state edd-select required">
                <?php 
    $states = edd_get_states_list();
    foreach ($states as $state_code => $state) {
        echo '<option value="' . $state_code . '">' . $state . '</option>';
    }
    ?>
            </select>
            <select name="shipping_state_ca" id="shipping_state_ca" class="shipping-state edd-select required" style="display: none;">
                <?php 
    $provinces = edd_get_provinces_list();
    foreach ($provinces as $province_code => $province) {
        echo '<option value="' . $province_code . '">' . $province . '</option>';
    }
    ?>
            </select>
		</p>
		<p>
			<label class="edd-label"><?php 
    _e('Shipping Zip / Postal Code', 'atcf');
    ?>
</label>
			<input type="text" size="4" name="shipping_zip" class="shipping-zip edd-input required" placeholder="<?php 
    _e('Zip / Postal code', 'atcf');
    ?>
"/>
		</p>

	</fieldset>
	<?php 
    echo ob_get_clean();
}