/* global redux_change, wp */





// Add a file via the wp.media function

function redux_add_file(event, selector) {



	event.preventDefault();



	var frame;

	var jQueryel = jQuery(this);

	





	// If the media frame already exists, reopen it.

	if ( frame ) {

		frame.open();

		return;

	}



	// Create the media frame.

	frame = wp.media({

		multiple: false,

		library: {

			//type: 'image' //Only allow images

		},

		// Set the title of the modal.

		title: jQueryel.data('choose'),



		// Customize the submit button.

		button: {

			// Set the text of the button.

			text: jQueryel.data('update')

			// Tell the button not to close the modal, since we're

			// going to refresh the page when the image is selected.



		}

	});



	// When an image is selected, run a callback.

	frame.on( 'select', function() {



		// Grab the selected attachment.

		var attachment = frame.state().get('selection').first();

		frame.close();



		if ( typeof redux.media[jQuery(selector).attr('data-id')] === 'undefined' ) {

			redux.media[jQuery(selector).attr('data-id')] = {};

			redux.media[jQuery(selector).attr('data-id')].mode = "image";

		}



		if ( redux.media[jQuery(selector).attr('data-id')].mode !== false && attachment.attributes.type !== redux.media[jQuery(selector).attr('data-id')].mode) {

			return;

		}



		selector.find('.upload').val(attachment.attributes.url);

		selector.find('.upload-id').val(attachment.attributes.id);

		selector.find('.upload-height').val(attachment.attributes.height);

		selector.find('.upload-width').val(attachment.attributes.width);

		redux_change( jQuery(selector).find( '.upload-id' ) );

		var thumbSrc = attachment.attributes.url;

		if (typeof attachment.attributes.sizes !== 'undefined' && typeof attachment.attributes.sizes.thumbnail !== 'undefined') {

			thumbSrc = attachment.attributes.sizes.thumbnail.url;

		} else if ( typeof attachment.attributes.sizes !== 'undefined' ) {

			var height = attachment.attributes.height;

			for (var key in attachment.attributes.sizes) {

				var object = attachment.attributes.sizes[key];

				if (object.height < height) {

					height = object.height;

					thumbSrc = object.url;

				}

			}

		} else {

			thumbSrc = attachment.attributes.icon;

		}

		selector.find('.upload-thumbnail').val(thumbSrc);

		if ( !selector.find('.upload').hasClass('noPreview') ) {

			selector.find('.screenshot').empty().hide().append('<img class="redux-option-image" src="' + thumbSrc + '">').slideDown('fast');

		}

		//selector.find('.media_upload_button').unbind();

		selector.find('.remove-image').removeClass('hide');//show "Remove" button

		selector.find('.redux-background-properties').slideDown();

	});



	// Finally, open the modal.

	frame.open();

}





// Function to remove the image on click. Still requires a save

function redux_remove_file(selector) {



	// This shouldn't have been run...

	if (!selector.find('.remove-image').addClass('hide')) {

		return;

	}

	selector.find('.remove-image').addClass('hide');//hide "Remove" button

	selector.find('.upload').val('');

	selector.find('.upload-id').val('');

	selector.find('.upload-height').val('');

	selector.find('.upload-width').val('');

	selector.find('.upload-thumbnail').val('');

	redux_change( jQuery(selector).find( '.upload-id' ) );

	selector.find('.redux-background-properties').hide();

	var screenshot = selector.find('.screenshot');

	

	// Hide the screenshot

	screenshot.slideUp();



	selector.find('.remove-file').unbind();

	// We don't display the upload button if .upload-notice is present

	// This means the user doesn't have the WordPress 3.5 Media Library Support

	if ( jQuery('.section-upload .upload-notice').length > 0 ) {

		jQuery('.media_upload_button').remove();

	}



}



(function($){

	"use strict";

    

    $.redux = $.redux || {};

	

    $(document).ready(function () {

         $.redux.media();

    });



	/**

	* Media Uploader

	* Dependencies		: jquery, wp media uploader

	* Feature added by	: Smartik - http://smartik.ws/

	* Date				: 05.28.2013

	*/

    $.redux.media = function(){

		// Remove the image button

		$('.remove-image, .remove-file').unbind('click').on('click', function() {

			redux_remove_file( $(this).parents('fieldset.redux-field:first') );

		});



		// Upload media button

		$('.media_upload_button').unbind().on('click', function( event ) {

			redux_add_file( event, $(this).parents('fieldset.redux-field:first') );

		});

    };



})(jQuery);

