jQuery( function( $ ) {
// wc_country_select_params is required to continue, ensure the object exists
if ( typeof wc_country_select_params === 'undefined' ) {
return false;
}
/* State/Country select boxes */
var states_json = wc_country_select_params.countries.replace( /"/g, '"' ),
states = $.parseJSON( states_json );
$( 'select.country_to_state, input.country_to_state' ).change( function() {
var country = $( this ).val(),
$statebox = $( this ).closest( 'div' ).find( '#billing_state, #shipping_state, #calc_shipping_state' ),
$parent = $statebox.parent(),
input_name = $statebox.attr( 'name' ),
input_id = $statebox.attr( 'id' ),
value = $statebox.val(),
placeholder = $statebox.attr( 'placeholder' );
if ( states[ country ] ) {
if ( states[ country ].length === 0 ) {
$statebox.parent().hide().find( '.chosen-container' ).remove();
$statebox.replaceWith( '' );
$( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] );
} else {
var options = '',
state = states[ country ];
for( var index in state ) {
if ( state.hasOwnProperty( index ) ) {
options = options + '';
}
}
$statebox.parent().show();
if ( $statebox.is( 'input' ) ) {
// Change for select
$statebox.replaceWith( '' );
$statebox = $( this ).closest( 'div' ).find( '#billing_state, #shipping_state, #calc_shipping_state' );
}
$statebox.html( '' + options );
$statebox.val( value );
$( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] );
}
} else {
if ( $statebox.is( 'select' ) ) {
$parent.show().find( '.chosen-container' ).remove();
$statebox.replaceWith( '' );
$( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] );
} else if ( $statebox.is( '.hidden' ) ) {
$parent.show().find( '.chosen-container' ).remove();
$statebox.replaceWith( '' );
$( 'body' ).trigger( 'country_to_state_changed', [country, $( this ).closest( 'div' )] );
}
}
$( 'body' ).trigger( 'country_to_state_changing', [country, $( this ).closest( 'div' )] );
}).change();
});