if ( _.isUndefined( window.vc ) ) {
	var vc = {atts: {}};
}

jQuery( document ).ready( function ( $ ) {

	function isInt( n ) {
		return n % 1 === 0;
	}

	$( '.plus, .minus' ).on( 'click', function () {

		// Get values
		var $number = $( this )
			.closest( '.tm_number' )
			.find( '.wpb_vc_param_value' ), currentVal = parseFloat( $number.val() ), max = parseFloat( $number.attr( 'max' ) ), min = parseFloat( $number.attr( 'min' ) ), step = $number.attr( 'step' );

		// Format values
		if ( ! currentVal || currentVal === '' || currentVal === 'NaN' ) {
			currentVal = 0;
		}
		if ( max === '' || max === 'NaN' ) {
			max = '';
		}
		if ( min === '' || min === 'NaN' ) {
			min = 0;
		}
		if ( step === 'any' || step === '' || step === undefined || parseFloat( step ) === 'NaN' ) {
			step = 1;
		}

		// Change the value
		if ( $( this ).is( '.plus' ) ) {

			if ( max && (
					max == currentVal || currentVal > max
				) ) {
				$number.val( max );
			} else {

				if ( isInt( step ) ) {
					$number.val( currentVal + parseFloat( step ) );
				} else {
					$number.val( (
						             currentVal + parseFloat( step )
					             ).toFixed( 1 ) );
				}
			}

		} else {

			if ( min && (
					min == currentVal || currentVal < min
				) ) {
				$number.val( min );
			} else if ( currentVal > 0 ) {
				if ( isInt( step ) ) {
					$number.val( currentVal - parseFloat( step ) );
				} else {
					$number.val( (
						             currentVal - parseFloat( step )
					             ).toFixed( 1 ) );
				}
			}

		}

		// Trigger change event
		$number.trigger( 'change' );
	} );
} );
