/**
 * Subida de archivos simplificada (reemplazo de wp.media).
 */
(function () {
	'use strict';

	window.jbOpenMediaUploader = function (options) {
		options = options || {};
		var input = document.createElement('input');
		input.type = 'file';
		input.accept = options.accept || 'image/*';
		input.onchange = function () {
			if (!input.files || !input.files[0]) return;
			var form = new FormData();
			form.append('file', input.files[0]);
			form.append('nonce', window.jbMedia && jbMedia.nonce ? jbMedia.nonce : '');
			fetch((window.jbMedia && jbMedia.uploadUrl) || '/upload.php', {
				method: 'POST',
				body: form,
				credentials: 'same-origin'
			})
				.then(function (r) { return r.json(); })
				.then(function (res) {
					if (res.success && typeof options.onSelect === 'function') {
						options.onSelect(res.data);
					} else if (!res.success && typeof options.onError === 'function') {
						options.onError(res.data && res.data.message ? res.data.message : 'Error');
					}
				})
				.catch(function (err) {
					if (typeof options.onError === 'function') options.onError(String(err));
				});
		};
		input.click();
	};

	if (typeof wp === 'undefined') {
		window.wp = {};
	}
	if (!wp.media) {
		wp.media = function (opts) {
			return {
				on: function (evt, cb) {
					if (evt === 'select') {
						jbOpenMediaUploader({ onSelect: function (data) {
							cb({ toJSON: function () { return { url: data.url, id: data.id }; } });
						}});
					}
					return this;
				},
				open: function () {
					jbOpenMediaUploader({});
				}
			};
		};
	}
})();
