Sindbad~EG File Manager

Current Path : /proc/142261/cwd/plugins/cardealer-front-submission/js/
Upload File :
Current File : //proc/142261/cwd/plugins/cardealer-front-submission/js/cdfs-helper.js

( function( $ ) {
	"use strict";

	// Check element exists.
	$.fn.exists = function () {
		return this.length > 0;
	};

	jQuery(document).ready(function() {

		// Location picker event
		cardealer_locationpicker();
		$( document.body ).on( 'cardealer_locationpicker_event', function() {
			cardealer_locationpicker();
		});

		/* Car form for autocomplete input fields*/
		if( jQuery(".cdfs-autofill").length > 0 ) {
			var currentRequest = null;
			jQuery(".cdfs-autofill").autocomplete({
				delay: 0,
				minLength:1,
				source: function( request, response ) {
				   /* JSON Request */
				   var fieldName = jQuery(this.element).data("name");
				   var make      = jQuery('#cdfs-make').val();
				   var response;

					currentRequest = jQuery.ajax({
						url: cdfs_obj.ajax_url,
						type: 'post',
						dataType: 'json',
						jsonCallback: 'jsonCallback',
						data: {action: 'cdfs_get_autocomplete', search: request.term, fieldName: fieldName, make: make },
						beforeSend: function(){
							 if(currentRequest != null) {
								currentRequest.abort();
							}
						},
						success: function(resultArray){
							response( jQuery.map( resultArray.data, function( result ) {
								if( resultArray.data.length > 0 ) {
									return result;
								} else {
									return;
								}
							}));
						},
						error: function(msg){}
					});
				}
			});
		}

		// Make Model relationship
		jQuery( document ).on( 'change', '#cdfs-make.cdfs-relation-enabled',  function() {

			event.preventDefault();

			var make  = $(this).val();
			var nonce = jQuery( '#cdfs-car-form-nonce-field' ).val();
			var data = {
				'action' : 'cdfc_get_models',
				'make' : make,
				'nonce' : nonce
			}

			jQuery.ajax({
				url: cdfs_obj.ajax_url,
				type: 'post',
				dataType: 'json',
				data: data,
				beforeSend: function(){
					$( 'select#cdfs-model' ).parents( '.form-group' ).addClass( 'loading' );
					$( 'select#cdfs-model' ).prop( 'disabled', true );
				},
				success: function( resultObj ) {

					var $el = $('select#cdfs-model');
					$el.empty(); // remove old options

					$.each( resultObj.options, function( key,value ) {
					  $el.append( $( '<option></option>' )
						 .attr( 'value', key ).text( value ) );
					});

					$( 'select#cdfs-model' ).prop( 'disabled', false );
					$( 'select#cdfs-model' ).parents( '.form-group' ).removeClass( 'loading' );

					$el.trigger('change');
				},
				error: function(msg){}
			});
		})

		/* Added for checkbox fields on cars*/
		jQuery(document).on('change', '#cdfs-other', function(){
			if ( jQuery(this).is(':checked') ) {
				jQuery('#cdfs-cdfs-other-opt').removeClass('cdfs-hidden');
			} else {
				jQuery('#cdfs-cdfs-other-opt').addClass('cdfs-hidden');
			}
		});


		/* Trash car alert*/
		jQuery(document).on( 'click', 'a.delete-car',  function(e){
			e.preventDefault();
			var link = this;

			jQuery.confirm({
				title: cdfs_obj.alerttxt,
				content: cdfs_obj.delalerttex,
				buttons: {
					confirm: function () {
						window.location = link.href;
					},
					cancel: function () {}
				}
			});
		});

		/* Delete post attachment*/
		jQuery(document).on( 'click', '.drop_img_item',  function(){
			var nonce = jQuery('#cdfs-car-form-nonce-field').val();
			var attach_id = jQuery(this).data("attach_id");
			var parent_id = jQuery(this).data("parent_id");
			var field = jQuery(this).data("field");
			var parent_div = jQuery(this).parent('.cdfs-item');

			jQuery.confirm({
				title: cdfs_obj.alerttxt,
				content: cdfs_obj.delalerttex,
				columnClass: 'medium',
				buttons: {
					delete: {
						text: cdfs_obj.btn_delete,
						action: function () {
							jQuery.ajax({
								url: cdfs_obj.ajax_url,
								type: 'post',
								dataType: 'json',
								data: {
									action: 'cdfs_delete_attachment',
									nonce: nonce,
									attach_id: attach_id,
									field: field,
									parent_id: parent_id
								},
								beforeSend: function(){

								},
								success: function( resultArray ){
									if( resultArray.status == true ) {
										parent_div.remove();
										cdfs_reload_order();
									}
								},
								error: function(msg){}
							});
						}
					},
					cancel: function () {}
				}
			});
		});

		/* Process ajax login*/
		jQuery(document).on('submit','.cdfs-add-car-page form#cdfs-form-user-login',function(event){
			event.preventDefault();
			var postArray = jQuery(this).serializeArray();
			var elementDiv = jQuery(this);
			var captchaWidgetId = jQuery(this).find('#login_captcha').data('widget_id');
			var btnlbl = jQuery('#form-user-login').text();
			postArray.push({ name: "action", value: "cdfs_do_ajax_user_login" });
			jQuery.ajax({
				url: cdfs_obj.ajax_url,
				type: 'post',
				dataType: 'json',
				data: postArray,
				beforeSend: function(){
					cdfs_action_before_login_register(elementDiv);
					jQuery('#form-user-login').html( btnlbl+' <i class="fa fa-spinner fa-spin car-form-loader" aria-hidden="true"></i>');
				},
				success: function( resultObj ){
					jQuery('#form-user-login').html(btnlbl);
					jQuery('#form-user-login').attr('disabled', false);

					cdfs_action_after_login_register( elementDiv, captchaWidgetId,  resultObj );
				},
				error: function(msg){}
			});
		});

		/* Process ajax user registration*/
		jQuery(document).on('submit','.cdfs-add-car-page form#cdfs-form-register',function(event){
			event.preventDefault();
			var elementDiv = jQuery('.cdfs-add-car-page form#cdfs-form-register');
			var postArray = jQuery(this).serializeArray();
			var captchaWidgetId = jQuery(this).find('#register_captcha').data('widget_id');
			var btnlbl = jQuery('#cdfs-form-register-btn').text();
			postArray.push({ name: "action", value: "cdfs_do_ajax_user_register" });
			jQuery.ajax({
				url: cdfs_obj.ajax_url,
				type: 'post',
				dataType: 'json',
				data: postArray,
				beforeSend: function(){
					cdfs_action_before_login_register(elementDiv);
					jQuery('#cdfs-form-register-btn').html( btnlbl+' <i class="fa fa-spinner fa-spin car-form-loader" aria-hidden="true"></i>');
				},
				success: function( resultObj ){
					jQuery('#cdfs-form-register-btn').html(btnlbl);
					jQuery('#cdfs-form-register-btn').attr('disabled', false);
					cdfs_action_after_login_register( elementDiv, captchaWidgetId,  resultObj );

				},
				error: function(msg){}
			});
		});

		$('body').on( 'change', '.cdfs-img-select-view-control', function() {
			var input          = this,
				input_wrapper  = $( input ).closest( '.cdfs-image-upload' ),
				selected_label = $( input_wrapper ).find( '.select-file-label' ),
				preview_el_val = $( input ).attr('dara-preview_el'),
				preview_el_found = false,
				preview_el;

			if ( $( preview_el_val ).exists() ) {
				preview_el_found = true;
				preview_el       = $( preview_el_val );
			}

			if ( input.files && input.files[0] ) {
				var reader = new FileReader();
				var file   = input.files[0];

				reader.fileName = file.name;

				reader.onload = function (readerEvt) {
					$( selected_label ).html( readerEvt.target.fileName );
					if ( preview_el_found ) {
						preview_el.find('img').attr('src', readerEvt.target.result );
						preview_el.removeClass('without-image').addClass('with-image');
					}
				}
				reader.readAsDataURL(input.files[0]);
			}
		})

		if ( $( '.cardealer-userdash-tabs' ).exists() ) {

			// History Push
			$('.cardealer-userdash-tab > a').on("click", function (e) {
				e.preventDefault();
				var href   = $(this).attr( 'href' );
				var tab_id = $(this).data( 'tab_id' );

				const author_url        = new URL( vehicle_filter_js_object.author_url );
				const author_url_params = author_url.searchParams;

				// new value of "id" is set to "101"
				author_url_params.set( 'profile-tab', tab_id );

				// change the search property of the main url
				author_url.search = author_url_params.toString();

				// the new url string
				var new_url = author_url.toString();

				history.pushState( null, null, new_url );

				vehicle_filter_js_object.cars_form_url = new_url;
			});

		}

		if ( $( '.dealer-location-wrapper' ).exists() ) {

			var dealer_location_wrapper = $( '.dealer-location-wrapper' );
			var dealer_location_map     = dealer_location_wrapper.find( '#dealer-location-map' );
			var dealer_location         = dealer_location_wrapper.find( '#dealer_location' );
			var dealer_location_lat     = dealer_location_wrapper.find( '#dealer_location_lat' );
			var dealer_location_lng     = dealer_location_wrapper.find( '#dealer_location_lng' );
			var dealer_location_zoom    = dealer_location_wrapper.find( '#dealer_location_zoom' );

			dealer_location_map.locationpicker({
				location: {
					latitude: $( dealer_location_lat ).val(),
					longitude: $( dealer_location_lng ).val()
				},
				zoom: parseInt( $( dealer_location_zoom ).val() ),
				radius: 0,
				inputBinding: {
					locationNameInput: $( dealer_location ),
					latitudeInput: $( dealer_location_lat ),
					longitudeInput: $( dealer_location_lng ),
				},
				enableAutocomplete: true,
				onchanged: function (currentLocation, radius, isMarkerDropped) {
					// Uncomment line below to show alert on each Location Changed event
					// alert("Location changed. New location (" + currentLocation.latitude + ", " + currentLocation.longitude + ")");
				}
			});
			// bind the zoom_changed event for the plugin's map handle
			dealer_location_map.data('locationpicker').map.addListener('zoom_changed', function() {
				var map = dealer_location_map.data('locationpicker').map;
				$('.dealer-location-wrapper').find( '#dealer_location_zoom' ).val( map.getZoom() );
			});
		}

	});

	jQuery( window ).load( function() {
		/* Add / Update car*/
		if( document.getElementById('car_form_captcha') ){
			var car_form_captcha_ele = document.getElementById('car_form_captcha');
			var car_form_captcha_sitekey = car_form_captcha_ele.dataset.sitekey;
			var car_form_captcha = grecaptcha.render('car_form_captcha', {
				'sitekey' : car_form_captcha_sitekey, /*Replace this with your Site key*/
				'theme' : 'light'
			});
			document.getElementById("car_form_captcha").dataset.widget_id = car_form_captcha;
		}

		/* User Login*/
		if( document.getElementById("login_captcha") ){
			var elementCaptcha = document.getElementById('login_captcha');
			var elementSitekey = elementCaptcha.dataset.sitekey;
			var login_captcha = grecaptcha.render('login_captcha', {
				'sitekey' : elementSitekey, //Replace this with your Site key
				'theme' : 'light'
			});
			document.getElementById("login_captcha").dataset.widget_id = login_captcha;
		}

		/* User Registration*/
		if( document.getElementById("register_captcha") ){
			var elementCaptcha = document.getElementById('register_captcha');
			var elementSitekey = elementCaptcha.dataset.sitekey;
			var register_captcha = grecaptcha.render('register_captcha', {
				'sitekey' : elementSitekey, //Replace this with your Site key
				'theme' : 'light'
			});
			document.getElementById("register_captcha").dataset.widget_id = register_captcha;
		}
	});

	function cdfs_action_before_login_register( elementDiv ){
		elementDiv.find(':submit').attr( 'disabled', 'disabled' );
		elementDiv.find(':submit').addClass('disabled');
	}

	function cdfs_action_after_login_register( elementDiv, captchaWidgetId, resultObj ){

		if( resultObj.status == 1 ){

			jQuery(elementDiv).find("div.cdfs-msg").addClass('cdfs-message').html( resultObj.message );
			jQuery(elementDiv).find("div.cdfs-msg").fadeIn('slow');

			setTimeout(function(){
				jQuery('#cdfs_user_login').remove();

				/* fill user section*/
				if( jQuery('.cdfs-user-account').length ){
					jQuery('#cdfs_user_name').html(resultObj.cdfs_user_name);
					jQuery('.cdfs-user-account').css('display', 'block');
				}

				/* Update nonce*/
				if ( jQuery('#cdfs-car-form-nonce-field').length > 0 ) {
					jQuery('#cdfs-car-form-nonce-field').val(resultObj.new_nouce);
				}

				/* display car form captcha*/
				jQuery('#car_form_captcha').show();

				/* Enable submit car button*/
				jQuery('button.cdfs-submit-car').removeAttr('disabled');
				jQuery('button.cdfs-submit-car').removeClass('disabled');
			}, 5000);
		} else {
			jQuery(elementDiv).find("div.cdfs-msg").addClass('cardealer-error').html( resultObj.message );
			jQuery(elementDiv).find("div.cdfs-msg").fadeIn('slow');
			if (typeof grecaptcha !== "undefined") {
				grecaptcha.reset( captchaWidgetId ); // reset captcha
			}
		}
		/* ENABLE login / register buttons*/
		elementDiv.find(':submit').removeAttr('disabled');
		elementDiv.find(':submit').removeClass('disabled');
	}

	/************************************************************
	* CODE FOR MULTIFILE UPLOAD WITH PREVIEW AND ORDERING STARTED
	*************************************************************/
	jQuery(document).ready(function() {

		var avf_package_selected_el = {},
			avf_package_selected_val,
			avf_image_limit = cdfs_obj.free_image_limit,
			submit_type     = '';

		avf_update_image_limit_notice( avf_image_limit );

		if ( $( '.cdfs-add-car-package' ).exists() ) {
			var	avf_package_selected_el  = $('.cdfs-add-car-package[name="subscription_plan"]:checked'),
				avf_package_selected_val = avf_package_selected_el.val(),
				avf_image_limit          = avf_package_selected_el.data('image_limit');
				submit_type              = avf_package_selected_el.data('submit_type');

			avf_update_image_limit_notice( avf_image_limit );
		}else if( $( '.cdfs-add-car-package-hidden' ).length > 0  ) {
			var	avf_package_selected_el  = $('.cdfs-add-car-package-hidden'),
				avf_package_selected_val = avf_package_selected_el.val(),
				avf_image_limit          = avf_package_selected_el.data('image_limit');
				submit_type              = avf_package_selected_el.data('submit_type');

			avf_update_image_limit_notice( avf_image_limit );
		}

		$('body').on('change', '.cdfs-add-car-package[name="subscription_plan"]', function( event ) {
			avf_package_selected_el = $( event.target );
			avf_package_selected_val = avf_package_selected_el.val(),
			avf_image_limit          = avf_package_selected_el.data('image_limit');
			submit_type              = avf_package_selected_el.data('submit_type');

			avf_update_image_limit_notice( avf_image_limit );
		});

		function avf_update_image_limit_notice( image_limit ) {
			if ( $( '.upload-image-limit .upload-image-limit-count' ).exists() ) {
				$( '.upload-image-limit .upload-image-limit-count' ).html( image_limit );
			}
		}

		var storedFiles = [];
		var older = [];

		/* Apply sort function*/
		if( jQuery('.cdfs_uploaded_files').length > 0 ){
			jQuery(function() {
				jQuery('.cdfs_uploaded_files').sortable({
					cursor: 'move',
					placeholder: 'highlight',
					start: function (event, ui) {
						ui.item.toggleClass('highlight');
					},
					stop: function (event, ui) {
						ui.item.toggleClass('highlight');
					},
					update: function () {
						cdfs_reload_order();
					},
					create:function(){
						var list = this;
						var resize = function(){
							jQuery(list).css('height','auto');
							jQuery(list).height(jQuery(list).height());
						};
						jQuery(list).height(jQuery(list).height());
						jQuery(list).find('img').load(resize).error(resize);
					}
				});
				jQuery('.cdfs_uploaded_files').disableSelection();
			});
		}

		jQuery('body').on('change', '.user_picked_files', function() {
			var files = this.files;
			var image_size_limit = $(this).data('image_size_limit');
			var i     = 0;

			/* uploaded imgs*/
			var total_imgs = jQuery('.cdfs_uploaded_files li').length;
				total_imgs = total_imgs + this.files.length;

			if ( 'undefined' === typeof avf_image_limit ) {
				avf_image_limit = 0;
			}

			// Image count match.
			if( total_imgs > avf_image_limit ){ /* return if limit exceeded*/
				if ( 0 === avf_image_limit && 0 === avf_package_selected_el.length ) {
					$.alert({
						title: cdfs_obj.errortxt,
						content: cdfs_obj.img_select_package_err,
						columnClass: 'medium',
					});
				} else {
					$.alert({
						title: cdfs_obj.errortxt,
						content: cdfs_obj.imglimittxt.replace( '{{limit}}', avf_image_limit ),
						columnClass: 'medium',
					});
				}
				jQuery(this).val('');
				return;
			}

			// Image type match.
			var non_image_files   = [];
			var size_exceed_files = [];
			for (i = 0; i < files.length; i++) {
				var readImg   = new FileReader(),
					file      = files[i],
					file_name = file.name,
					file_size = file.size,
					file_type = file.type;

				if ( file_type.match( 'image.*' ) ) {
					if ( file_size <= image_size_limit ) {
						storedFiles.push(file);
						readImg.onload = (function(file) {
							return function(e) {
								jQuery('.cdfs_uploaded_files').append(
								"<li file = '" + file_name + "'>" +
									"<img class = 'img-thumb' src = '" + e.target.result + "' />" +
									"<a href = '#' class = 'cdfs_delete_image' title = 'Cancel'><span class=remove>x</span></a>" +
								"</li>"
								);
							};
						})(file);
						readImg.readAsDataURL(file);
					} else {
						size_exceed_files.push( file_name );
					}
				} else {
					non_image_files.push( file_name );
				}

				if(files.length === (i+1)){
					setTimeout(function(){
						cdfs_add_order();
					}, 1000);
				}
			}

			if ( non_image_files.length > 0 ) {
				// Create ul element and set its attributes.
				const non_image_ul = document.createElement('ul');

				for (i = 0; i <= non_image_files.length - 1; i++) {
					const non_image_li = document.createElement('li');	       // create li element.

					non_image_li.innerHTML = non_image_files[i];               // assigning text to li using array value.
					non_image_ul.appendChild( non_image_li );                  // append li to ul.
				}

				$.alert({
					title: cdfs_obj.img_type_title,
					content: cdfs_obj.img_type_error + '<br><br>' + non_image_ul.outerHTML,
					columnClass: 'medium',
				});
			}

			if ( size_exceed_files.length > 0 ) {
				// Create ul element and set its attributes.
				const size_exceed_ul = document.createElement('ul');

				for (i = 0; i <= size_exceed_files.length - 1; i++) {
					const size_exceed_li = document.createElement('li');	     // create li element.

					size_exceed_li.innerHTML = size_exceed_files[i];             // assigning text to li using array value.
					size_exceed_ul.appendChild( size_exceed_li );                // append li to ul.
				}

				$.alert({
					title: cdfs_obj.size_exceed_title,
					content: cdfs_obj.size_exceed_error + '<br><br>' + size_exceed_ul.outerHTML,
					columnClass: 'medium',
				});
			}
		});

		jQuery('body').on('change', '#car-pdf', function() {
			var files = this.files;
			if( ! files[0].type.match('application/pdf') ){
				jQuery.alert({
					title: cdfs_obj.errortxt,
					content: cdfs_obj.pdftypetxt.replace("[file]", files[0].name),
					columnClass: 'medium',
				});
			}
		});

		/* Delete Image from Queue*/
		jQuery('body').on('click','a.cdfs_delete_image',function(e){
			e.preventDefault();
			jQuery(this).parent().remove('');

			var file = jQuery(this).parent().attr('file');
			for(var i = 0; i < storedFiles.length; i++) {
				if(storedFiles[i].name == file) {
					storedFiles.splice(i, 1);
					break;
				}
			}
		});

		/* Submit add / update car form*/
		jQuery(document).on('click', '.cdfs-submit-car', function(){
			cdfs_reload_order();

			if ( undefined !== avf_package_selected_el && 0 === avf_package_selected_el.length ) {
				$.alert({
					title: cdfs_obj.errortxt,
					content: cdfs_obj.select_package_err,
					columnClass: 'medium',
				});
				return;
			}

			// Validate image before submit.
			var total_imgs = jQuery('.cdfs_uploaded_files li').length;
			if( total_imgs > avf_image_limit ){ /* return if limit exceeded*/
				$.alert({
					title: cdfs_obj.errortxt,
					content: cdfs_obj.imglimittxt.replace( '{{limit}}', avf_image_limit ),
					columnClass: 'medium',
				});
				return;
			}

			jQuery(this).attr('disabled', true).addClass('disabled');
			jQuery(this).append('<i class="fa fa-spinner fa-spin car-form-loader" aria-hidden="true"></i>');
			jQuery('.switch-tmce').click();
			/* Map editor fields values with textarea*/
			jQuery('textarea.cdfs_editor').each( function(index, value){
				var editor_val = tinyMCE.get( jQuery(this).attr('id') ).getContent();
				jQuery(this).val(editor_val);
			});

			if ( $( '#avf_submit_type' ).exists() ) {
				$( '#avf_submit_type' ).val( submit_type );
			} else {
				$("<input>").attr({
					type: "hidden",
					name: "submit_type",
					id: "avf_submit_type",
					value: submit_type
				}).appendTo( '#cdfs_car_form' );
			}

			jQuery('#cdfs_car_form').submit();

		});

		$(document).on('submit', '#cdfs_car_form', function(event) {
			event.stopPropagation(); /* Stop stuff happening*/
			event.preventDefault(); /* Totally stop stuff happening*/
			var carcaptchaWidgetId = jQuery(this).find('#car_form_captcha').data('widget_id');

			/* Create a formdata object and add the files to upload*/
			var imgData = new FormData();
			var car_img_cnt = 0;
			jQuery.each(storedFiles, function(key, value){
				imgData.append('car_images[' + key + ']', value);
				car_img_cnt++;
			});

			/* Add PDF file*/
			if( jQuery('#car-pdf').length > 0 ){
				var pdf_file = jQuery('#car-pdf').prop('files')[0];
				imgData.append('pdf_file', pdf_file);
			}

			var review_stamp_logo_cnt = 1;
			jQuery('.review_stamp_logo').each(function(){
				var review_stamp_logo = jQuery('#review_stamp_logo_'+review_stamp_logo_cnt).prop('files')[0];
				imgData.append('review_stamp_logo_' + review_stamp_logo_cnt, review_stamp_logo );
				review_stamp_logo_cnt++;
			});

			imgData.append('action', 'cdfs_upload_images');
			imgData.append('file_attachments', jQuery('#file_attachments').val());

			/* Serialize the form data*/
			var formData = jQuery(event.target).serializeArray();
			formData.push( { name: 'action', value: 'cdfs_save_car' } );
			formData.push( { name: 'car_img_cnt', value: car_img_cnt } );

			$.ajax({
				url  : cdfs_obj.ajax_url,
				type : 'POST',
				data : formData,
				cache: false,
				dataType: 'json',
				beforeSend: function(){
					jQuery('.invalid_fields').removeClass('invalid_fields');
					jQuery('.cdfs-submit-car-button').append( '<p class="cdfs-processing-message">' + cdfs_obj.vehicleprocess + '</p>' );
				},
				success: function(data, textStatus, jqXHR){
					if(data.status === true){
						jQuery('.cdfs-submit-car-button .cdfs-processing-message').text( data.message );
						/* Success so call function to process the form*/
						imgData.append('car_id', data.car_id); /* add car id to attach attachments*/
						imgData.append('submit_type', data.submit_type); /* add car id to attach attachments*/
						imgData.append('type', data.type); /* add car id to attach attachments*/

						var is_webview = get_url_param( 'is_webview' );
						if ( is_webview || $( 'body' ).hasClass('cardealer-webview') ) {
							imgData.append( 'is_webview', 'yes' );
						}

						cdfs_save_car_imgs(imgData);
					} else{
						jQuery( '.cdfs-submit-car-button .cdfs-processing-message' ).remove();
						jQuery('.cardealer-error').remove();
						var html = '<ul class="cardealer-error"><li>' + data.message + '</li></ul>';
						jQuery('.entry-content .cdfs').prepend(html);

						/* check validation*/
						if( data.invalid_fields.length > 0 ){
							jQuery(data.invalid_fields).each( function(index, val){
								jQuery('#cdfs_car_form').find('input#cdfs-'+val).addClass('invalid_fields');
								jQuery('#cdfs_car_form').find('#cdfs-'+val).next( '.select2' ).addClass('invalid_fields');
							});
						}

						/* reset captcha*/
						if (typeof grecaptcha !== "undefined") {
							grecaptcha.reset( carcaptchaWidgetId ); // reset captcha
						}
						/* move cursor to top*/
						var scrolltop_target = '#main';
						if ( $( '#main .content-wrapper-vc-enabled' ).length > 0 ) {
							scrolltop_target = '#main .content-wrapper-vc-enabled';
						} else if ( $( '#main .page-section-ptb.content-wrapper' ).length > 0 ) {
							scrolltop_target = '#main .page-section-ptb.content-wrapper';
						} else if ( $( '#main > #primary' ).length > 0 ) {
							scrolltop_target = '#main > #primary';
						}
						jQuery('html, body').animate({
						  scrollTop: jQuery( scrolltop_target ).offset().top
						}, 800);
						/* STOP LOADING SPINNER & ENABLE SUBMIT BUTTON*/
						jQuery('.car-form-loader').remove();
						jQuery('.cdfs-submit-car').removeAttr('disabled', false);
						jQuery('.cdfs-submit-car').removeClass('disabled');
					}
				},
				error: function(jqXHR, textStatus, errorThrown){
					jQuery( '.cdfs-submit-car-button .cdfs-processing-message' ).remove();
					/* Handle errors here*/
					console.log('ERRORS: ' + textStatus);
					/* STOP LOADING SPINNER & ENABLE SUBMIT BUTTON*/
					jQuery('.car-form-loader').remove();
					jQuery('.cdfs-submit-car').removeAttr('disabled', false);
					jQuery('.cdfs-submit-car').removeClass('disabled');

					/* reset captcha*/
					if (typeof grecaptcha !== "undefined") {
						grecaptcha.reset( carcaptchaWidgetId ); // reset captcha
					}
				},
				complete: function(){
					/* STOP LOADING SPINNER*/
				}
			});

		});

	});

	function get_url_param( key ) {
		var urlParams = new URLSearchParams(window.location.search),
			value     = urlParams.get( key );

		if ( null === value ) {
			value = false;
		}

		return value;
	}

	/*
		Ajax call for car attachments
	*/
	function cdfs_save_car_imgs( imgDataObj ){
		jQuery.ajax({
			url  : cdfs_obj.ajax_url,
			type : 'POST',
			data : imgDataObj,
			cache: false,
			contentType: false,
			processData: false,
			beforeSend: function(){
				jQuery( '.cdfs-submit-car-button .cdfs-processing-message' ).text( cdfs_obj.imageprocess );
			},
			success: function(data, textStatus, jqXHR){
				var response = jQuery.parseJSON(data);
				if(response.status === true){
					jQuery( '.cdfs-submit-car-button .cdfs-processing-message' ).text( cdfs_obj.redirectmsg );
					window.location.href = response.redirect;
				} else{
					jQuery( '.cdfs-submit-car-button .cdfs-processing-message' ).remove();
					/* reset captcha*/
					if (typeof grecaptcha !== "undefined") {
						grecaptcha.reset( carcaptchaWidgetId ); // reset captcha
					}
				}
			},
			error: function(jqXHR, textStatus, errorThrown){
				jQuery( '.cdfs-submit-car-button .cdfs-processing-message' ).remove();
				/* Handle errors here*/
				console.log('ERRORS: ' + textStatus);

				/* reset captcha*/
				if (typeof grecaptcha !== "undefined") {
					grecaptcha.reset( carcaptchaWidgetId ); // reset captcha
				}
				/* STOP LOADING SPINNER & ENABLE SUBMIT BUTTON*/
				jQuery('.car-form-loader').remove();
				jQuery('.cdfs-submit-car').removeAttr('disabled', false);
				jQuery('.cdfs-submit-car').removeClass('disabled');
			},
			complete: function(){
			}
		});
	}

	function cdfs_reload_order() {
		var order = jQuery('.cdfs_uploaded_files').sortable('toArray', {attribute: 'item'});
		jQuery('.cdfs_hidden_field').val(order);
		var attachments  = jQuery('.cdfs_uploaded_files').sortable('toArray', {attribute: 'file'});
		jQuery('.file_attachments').val(attachments);
	}

	function cdfs_add_order() {
		jQuery('.cdfs_uploaded_files li').each(function(n) {
			jQuery(this).attr('item', n);
		});
	}

	function fileUpload(event){
	  /*to notify user the file is being uploaded*/
	 files = event.target.files;
	 /* get the selected files*/
	 var data = new FormData();
	 /* Form Data check the above bullet for what it is*/
	 var error = 0;
	 /* Flag to notify in case of error and abort the upload*/
	/* File data is presented as an array. In this case we can just jump to the index file using files[0] but this array traversal is recommended*/

	 for (var i = 0; i < files.length; i++) {
	  var file = files[i];
	  if(!file.type.match('application/pdf')) {
	   /* Check for File type. the 'type' property is a string, it facilitates usage if match() function to do the matching*/
		jQuery.alert({
			title: cdfs_obj.errortxt,
			content: cdfs_obj.pdftypetxt,
			columnClass: 'medium',
		});
		error = 1;
	   }else if(file.size > (1024 * 4000)){
	   /* File size is provided in bytes*/
		jQuery.alert({
			title: cdfs_obj.errortxt,
			content: cdfs_obj.exceededtxt,
			columnClass: 'medium',
		});
		 error = 1;
	   }else{
		/* If all goes well, append the up-loadable file to FormData object*/
		data.append('image', file, file.name);
		/* Comparing it to a standard form submission the 'image' will be name of input*/
		}
	  }
	}

	/**********************************************************
	* CODE FOR MULTIFILE UPLOAD WITH PREVIEW AND ORDERING END *
	/**********************************************************/

	/***********************************************************
	/* *********** CODE FOR VEHICLE LOCATION ***************** *
	/**********************************************************/
	function cardealer_locationpicker(){
		if ( jQuery( '#cdfs-vehicle-location-area' ).length > 0 ) {
			jQuery( '#cdfs-vehicle-location-area' ).locationpicker({
				location: {
					latitude: jQuery('#cdfs-lat').val(),
					longitude: jQuery('#cdfs-lng').val()
				},
				radius: 0,
				inputBinding: {
					latitudeInput: jQuery('#cdfs-lat'),
					longitudeInput: jQuery('#cdfs-lng'),
					locationNameInput: jQuery('#cdfs-vehicle-location')
				},
				enableAutocomplete: true,
				onchanged: function (currentLocation, radius, isMarkerDropped) {
					/* Uncomment line below to show alert on each Location Changed event*/
					/* alert("Location changed. New location (" + currentLocation.latitude + ", " + currentLocation.longitude + ")");*/
				}
			});
		}
	}

	/***********************************************************
	/************* CODE FOR VEHICLE LOCATION END ***************
	/**********************************************************/
} )( jQuery );

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists