2015-07-10 05:13:30 +00:00
|
|
|
/*global wc_address_i18n_params */
|
2014-03-18 02:51:53 +00:00
|
|
|
jQuery( function( $ ) {
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-06-02 15:34:55 +00:00
|
|
|
// wc_address_i18n_params is required to continue, ensure the object exists
|
2015-07-10 05:13:30 +00:00
|
|
|
if ( typeof wc_address_i18n_params === 'undefined' ) {
|
2014-06-02 15:34:55 +00:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
var locale_json = wc_address_i18n_params.locale.replace( /"/g, '"' ),
|
2015-04-10 14:43:39 +00:00
|
|
|
locale = $.parseJSON( locale_json );
|
|
|
|
|
|
|
|
function field_is_required( field, is_required ) {
|
|
|
|
if ( is_required ) {
|
|
|
|
field.find( 'label' ).append( ' <abbr class="required" title="' + wc_address_i18n_params.i18n_required_text + '">*</abbr>' );
|
|
|
|
field.addClass( 'validate-required' );
|
|
|
|
} else {
|
|
|
|
field.find( 'label abbr' ).remove();
|
|
|
|
field.removeClass( 'validate-required' );
|
|
|
|
}
|
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2015-04-10 14:43:39 +00:00
|
|
|
$( document.body )
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
// Handle locale
|
|
|
|
.bind( 'country_to_state_changing', function( event, country, wrapper ) {
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2015-04-10 14:43:39 +00:00
|
|
|
var thisform = wrapper, thislocale;
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
if ( typeof locale[ country ] !== 'undefined' ) {
|
|
|
|
thislocale = locale[ country ];
|
|
|
|
} else {
|
|
|
|
thislocale = locale['default'];
|
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2015-04-10 14:43:39 +00:00
|
|
|
var $postcodefield = thisform.find( '#billing_postcode_field, #shipping_postcode_field' ),
|
|
|
|
$cityfield = thisform.find( '#billing_city_field, #shipping_city_field' ),
|
|
|
|
$statefield = thisform.find( '#billing_state_field, #shipping_state_field' );
|
|
|
|
|
|
|
|
if ( ! $postcodefield.attr( 'data-o_class' ) ) {
|
|
|
|
$postcodefield.attr( 'data-o_class', $postcodefield.attr( 'class' ) );
|
|
|
|
$cityfield.attr( 'data-o_class', $cityfield.attr( 'class' ) );
|
|
|
|
$statefield.attr( 'data-o_class', $statefield.attr( 'class' ) );
|
|
|
|
}
|
|
|
|
|
|
|
|
// Re-order postcode/city
|
|
|
|
if ( thislocale.postcode_before_city ) {
|
2015-07-01 14:13:02 +00:00
|
|
|
$postcodefield.add( $cityfield ).add( $statefield ).removeClass( 'form-row-first form-row-last' ).addClass( 'form-row-first' );
|
|
|
|
$cityfield.removeClass( 'form-row-wide form-row-first' ).addClass( 'form-row-last' );
|
2015-04-10 14:43:39 +00:00
|
|
|
$postcodefield.insertBefore( $cityfield );
|
|
|
|
} else {
|
|
|
|
// Default
|
|
|
|
$postcodefield.attr( 'class', $postcodefield.attr( 'data-o_class' ) );
|
|
|
|
$cityfield.attr( 'class', $cityfield.attr( 'data-o_class' ) );
|
|
|
|
$statefield.attr( 'class', $statefield.attr( 'data-o_class' ) );
|
|
|
|
$postcodefield.insertAfter( $statefield );
|
|
|
|
}
|
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
// Handle locale fields
|
|
|
|
var locale_fields = $.parseJSON( wc_address_i18n_params.locale_fields );
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
$.each( locale_fields, function( key, value ) {
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
var field = thisform.find( value );
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
if ( thislocale[ key ] ) {
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
if ( thislocale[ key ].label ) {
|
|
|
|
field.find( 'label' ).html( thislocale[ key ].label );
|
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
if ( thislocale[ key ].placeholder ) {
|
|
|
|
field.find( 'input' ).attr( 'placeholder', thislocale[ key ].placeholder );
|
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2015-04-10 14:43:39 +00:00
|
|
|
field_is_required( field, false );
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
if ( typeof thislocale[ key ].required === 'undefined' && locale['default'][ key ].required === true ) {
|
2015-04-10 14:43:39 +00:00
|
|
|
field_is_required( field, true );
|
2014-03-18 02:51:53 +00:00
|
|
|
} else if ( thislocale[ key ].required === true ) {
|
2015-04-10 14:43:39 +00:00
|
|
|
field_is_required( field, true );
|
2014-03-18 02:51:53 +00:00
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
if ( key !== 'state' ) {
|
|
|
|
if ( thislocale[ key ].hidden === true ) {
|
|
|
|
field.hide().find( 'input' ).val( '' );
|
|
|
|
} else {
|
|
|
|
field.show();
|
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
}
|
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
} else if ( locale['default'][ key ] ) {
|
|
|
|
if ( locale['default'][ key ].required === true ) {
|
2015-04-10 14:43:39 +00:00
|
|
|
if ( field.find( 'label abbr' ).size() === 0 ) {
|
|
|
|
field_is_required( field, true );
|
|
|
|
}
|
2014-03-18 02:51:53 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
if ( key !== 'state' ) {
|
|
|
|
if ( typeof locale['default'][ key ].hidden === 'undefined' || locale['default'][ key ].hidden === false ) {
|
|
|
|
field.show();
|
|
|
|
} else if ( locale['default'][ key ].hidden === true ) {
|
|
|
|
field.hide().find( 'input' ).val( '' );
|
|
|
|
}
|
2014-01-08 14:38:17 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-18 02:51:53 +00:00
|
|
|
});
|
2015-04-10 14:43:39 +00:00
|
|
|
});
|
2014-01-08 14:38:17 +00:00
|
|
|
|
2014-01-31 02:44:17 +00:00
|
|
|
});
|