403Webshell
Server IP : 85.158.181.41  /  Your IP : 216.73.217.12
Web Server : Apache
System : Linux cloud9-vm129 6.1.178+1-ph #ph SMP PREEMPT_DYNAMIC Wed Jul 29 09:00:54 UTC 2026 x86_64
User : moncbefd ( 1024)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/moncbefd/www.moneta.at/ResponsiveFilemanager/filemanager/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/moncbefd/www.moneta.at/ResponsiveFilemanager/filemanager/js//include.js
var encodeURL,show_animation,hide_animation,apply,apply_none,apply_img,apply_any,apply_video,apply_link,apply_file_rename,apply_file_duplicate,apply_folder_rename;
(function ($, Modernizr, image_editor)
{
	"use strict";
	
	var version = "9.11.3";
	var active_contextmenu = true;
	var copy_count = 0;
	
	var delay = (function ()
	{
		var timer = 0;
		return function (callback, ms)
		{
			clearTimeout(timer);
			timer = setTimeout(callback, ms);
		};
	})();
	
	var getLink = function($trigger)
	{
		
		if(jQuery('#ftp').val()==true){
			var m = jQuery('#ftp_base_url').val() + jQuery('#upload_dir').val() + jQuery('#fldr_value').val();
			
		}else{
			var m = jQuery('#base_url').val() + jQuery('#cur_dir').val();
		}
		var add = $trigger.find('a.link').attr('data-file');
		if (add != "" && add != null)
		{
			m += add;
		}
		
		add = $trigger.find('h4 a.folder-link').attr('data-file');
		
		if (add != "" && add != null)
		{
			m += add;
		}
		return m;
	}
	
	var FileManager = {
		
		contextActions: {
			
			copy_url : function($trigger)
			{
				var m = getLink($trigger);
				
				bootbox.alert(
					'URL:<br/>' +
					'<div class="input-append" style="width:100%">' +
					'<input id="url_text' + copy_count + '" type="text" style="width:80%; height:30px;" value="' + encodeURL(m) + '" />' +
					'<button id="copy-button' + copy_count + '" class="btn btn-inverse copy-button" style="width:20%; height:30px;" data-clipboard-target="url_text' + copy_count + '" data-clipboard-text="Copy Me!" title="copy">' +
					'</button>' +
					'</div>'
				);
				
				jQuery('#copy-button' + copy_count).html('<i class="icon icon-white icon-share"></i> ' + jQuery('#lang_copy').val());
				
				var client = new ZeroClipboard(jQuery('#copy-button' + copy_count));
				
				client.on("ready", function (readyEvent)
				{
					
					client.on("wrongFlash noFlash", function ()
					{
						ZeroClipboard.destroy();
					});
					
					client.on("aftercopy", function (event)
					{
						jQuery('#copy-button' + copy_count).html('<i class="icon icon-ok"></i> ' + jQuery('#ok').val());
						jQuery('#copy-button' + copy_count).attr('class', 'btn disabled');
						copy_count++;
					});
					
					client.on('error', function (event) {});
					
				});
			},
			
			unzip: function($trigger)
			{
				var m = jQuery('#sub_folder').val() + jQuery('#fldr_value').val() + $trigger.find('a.link').attr('data-file');
				show_animation();
				$.ajax({
					       type: "POST",
					       url: "ajax_calls.php?action=extract",
					       data: {
						       path: m
					       }
				       }).done(function (msg)
				               {
					               hide_animation();
					               if (msg != "")
					               {
						               bootbox.alert(msg);
					               }
					               else
					               {
						               window.location.href = jQuery('#refresh').attr('href') + '&' + new Date().getTime();
					               }
				               });
			},
			
			edit_img: function($trigger)
			{
				var filename = $trigger.attr('data-name');
				if(jQuery('#ftp').val()==true){
					var full_path = jQuery('#ftp_base_url').val() + jQuery('#upload_dir').val() + jQuery('#fldr_value').val() + filename;
				}else{
					var full_path = jQuery('#base_url').val() + jQuery('#cur_dir').val() + filename;
				}
				
				var aviaryElement = jQuery('#aviary_img');
				aviaryElement.attr('data-name', filename);
				show_animation();
				aviaryElement.attr('src', full_path).load(launchEditor(aviaryElement.attr('id'), full_path));
			},
			
			duplicate: function($trigger)
			{
				var old_name = $trigger.find('h4').text().trim();
				
				bootbox.prompt(jQuery('#lang_duplicate').val(), jQuery('#cancel').val(), jQuery('#ok').val(), function (name)
				{
					if (name !== null)
					{
						name = fix_filename(name);
						if (name != old_name)
						{
							var _this = $trigger.find('.rename-file');
							execute_action('duplicate_file', _this.attr('data-path'), name, _this, 'apply_file_duplicate');
						}
					}
				}, old_name);
			},
			
			select: function($trigger)
			{
				var url = getLink($trigger);
				var external = jQuery('#field_id').val();
				var windowParent;
				var is_return_relative_url = jQuery('#return_relative_url').val();
				
				if(is_return_relative_url==1){
					url = url.replace(jQuery('#base_url').val(), '');
					url = url.replace(jQuery('#cur_dir').val(), '');
				}
				if (jQuery('#popup').val() == 1)
				{
					windowParent = window.opener;
				}
				else
				{
					windowParent = window.parent;
				}
				if (external != "")
				{
					if (jQuery('#crossdomain').val() == 1)
					{
						windowParent.postMessage({
							                         sender: 'responsivefilemanager',
							                         url: url,
							                         field_id: external
						                         },
						                         '*'
						);
					}
					else
					{
						var target = jQuery('#' + external, windowParent.document);
						target.val(url).trigger('change');
						if (typeof windowParent.responsive_filemanager_callback == 'function')
						{
							windowParent.responsive_filemanager_callback(external);
						}
						close_window();
					}
				}
				else
				{
					apply_any(url);
				}
				
			},
			copy: function($trigger)
			{
				copy_cut_clicked($trigger, 'copy');
			},
			cut: function($trigger)
			{
				copy_cut_clicked($trigger, 'cut');
			},
			paste: function()
			{
				paste_to_this_dir();
			},
			chmod: function($trigger)
			{
				chmod($trigger);
			},
			edit_text_file: function($trigger)
			{
				edit_text_file($trigger);
			}
			
		},
		
		makeContextMenu: function()
		{
			var fm = this;
			
			$.contextMenu({
				              selector: 'figure:not(.back-directory), .list-view2 figure:not(.back-directory)',
				              autoHide: true,
				              build: function ($trigger)
				              {
					
					              $trigger.addClass('selected');
					
					              var options = {
						              callback: function (key, options)
						              {
							              fm.contextActions[key]($trigger);
						              },
						              items: {}
					              };
					              // tooltip options
					              // edit image/show url
					              if (
						              (
							              $trigger.find('.img-precontainer-mini .filetype').hasClass('png')
							              || $trigger.find('.img-precontainer-mini .filetype').hasClass('jpg')
							              || $trigger.find('.img-precontainer-mini .filetype').hasClass('jpeg')
						              ) && image_editor)
					              {
						              options.items.edit_img = {
							              name: jQuery('#lang_edit_image').val(),
							              icon: "edit_img",
							              disabled: false
						              };
					              }
					              // select folder
					              if ($trigger.hasClass('directory') && jQuery('#type_param').val()!=0)
					              {
						              options.items.select = {
							              name: jQuery('#lang_select').val(),
							              icon: "",
							              disabled: false
						              };
					              }
					
					              options.items.copy_url = {
						              name: jQuery('#lang_show_url').val(),
						              icon: "url",
						              disabled: false
					              };
					              // extract
					              if ($trigger.find('.img-precontainer-mini .filetype').hasClass('zip') ||
					                  $trigger.find('.img-precontainer-mini .filetype').hasClass('tar') ||
					                  $trigger.find('.img-precontainer-mini .filetype').hasClass('gz'))
					              {
						              options.items.unzip = {
							              name: jQuery('#lang_extract').val(),
							              icon: "extract",
							              disabled: false
						              };
					              }
					
					              // edit file's content
					              if ($trigger.find('.img-precontainer-mini .filetype').hasClass('edit-text-file-allowed'))
					              {
						              options.items.edit_text_file = {
							              name: jQuery('#lang_edit_file').val(),
							              icon: "edit",
							              disabled: false
						              };
					              }
					
					
					              // duplicate
					              if (!$trigger.hasClass('directory') && jQuery('#duplicate').val() == 1)
					              {
						              options.items.duplicate = {
							              name: jQuery('#lang_duplicate').val(),
							              icon: "duplicate",
							              disabled: false
						              };
					              }
					
					              // copy & cut
					              if (!$trigger.hasClass('directory') && jQuery('#copy_cut_files_allowed').val() == 1)
					              {
						              options.items.copy = {
							              name: jQuery('#lang_copy').val(),
							              icon: "copy",
							              disabled: false
						              };
						              options.items.cut = {
							              name: jQuery('#lang_cut').val(),
							              icon: "cut",
							              disabled: false
						              };
					              }
					              else if ($trigger.hasClass('directory') && jQuery('#copy_cut_dirs_allowed').val() == 1)
					              {
						              options.items.copy = {
							              name: jQuery('#lang_copy').val(),
							              icon: "copy",
							              disabled: false
						              };
						              options.items.cut = {
							              name: jQuery('#lang_cut').val(),
							              icon: "cut",
							              disabled: false
						              };
					              }
					
					              // paste
					              // Its not added to folders because it might confuse someone
					              if (jQuery('#clipboard').val() != 0 && !$trigger.hasClass('directory'))
					              {
						              options.items.paste = {
							              name: jQuery('#lang_paste_here').val(),
							              icon: "clipboard-apply",
							              disabled: false
						              };
					              }
					
					              // file permission
					              if (!$trigger.hasClass('directory') && jQuery('#chmod_files_allowed').val() == 1)
					              {
						              options.items.chmod = {
							              name: jQuery('#lang_file_permission').val(),
							              icon: "key",
							              disabled: false
						              };
					              }
					              else if ($trigger.hasClass('directory') && jQuery('#chmod_dirs_allowed').val() == 1)
					              {
						              options.items.chmod = {
							              name: jQuery('#lang_file_permission').val(),
							              icon: "key",
							              disabled: false
						              };
					              }
					
					              // fileinfo
					              options.items.sep = '----';
					              options.items.info = {
						              name: "<strong>" + jQuery('#lang_file_info').val() + "</strong>",
						              disabled: true
					              };
					              options.items.name = {
						              name: $trigger.attr('data-name'),
						              icon: 'label',
						              disabled: true
					              };
					              if ($trigger.attr('data-type') == "img")
					              {
						              options.items.dimension = {
							              name: $trigger.find('.img-dimension').html(),
							              icon: "dimension",
							              disabled: true
						              };
					              }
					              if((jQuery('#show_folder_size').val()==='true' || jQuery('#show_folder_size').val()==='true')){
						              if ($trigger.hasClass('directory')){
							              options.items.size = {
								              name: $trigger.find('.file-size').html()+" - "+$trigger.find('.nfiles').val()+" "+jQuery('#lang_files').val()+" - "+$trigger.find('.nfolders').val()+" "+jQuery('#lang_folders').val(),
								              icon: "size",
								              disabled: true
							              };
						              }else{
							
							              options.items.size = {
								              name: $trigger.find('.file-size').html(),
								              icon: "size",
								              disabled: true
							              };
						              }
					              }
					              options.items.date = {
						              name: $trigger.find('.file-date').html(),
						              icon: "date",
						              disabled: true
					              };
					
					
					              return options;
				              },
				              events: {
					              hide: function ()
					              {
						              jQuery('figure').removeClass('selected');
					              }
				              }
			              });
			
			jQuery(document).on('contextmenu', function (e)
			{
				if (!jQuery(e.target).is("figure"))
				{
					return false;
				}
			});
		},
		
		bindGridEvents: function()
		{
			var grid = jQuery('ul.grid');
			
			grid.on('click', '.modalAV', function (e)
			{
				var _this = jQuery(this);
				e.preventDefault();
				
				var previewElement = jQuery('#previewAV');
				var bodyPreviewElement = jQuery(".body-preview");
				previewElement.removeData("modal");
				previewElement.modal({
					                     backdrop: 'static',
					                     keyboard: false
				                     });
				
				if (_this.hasClass('audio'))
				{
					bodyPreviewElement.css('height', '80px');
				}
				else
				{
					bodyPreviewElement.css('height', '345px');
				}
				
				$.ajax({
					       url: _this.attr('data-url'),
					       success: function (data)
					       {
						       bodyPreviewElement.html(data);
					       }
				       });
			});
			
			grid.on('click', '.file-preview-btn', function (e)
			{
				var _this = jQuery(this);
				e.preventDefault();
				$.ajax({
					       url: _this.attr('data-url'),
					       success: function (data)
					       {
						       bootbox.modal(data, " "+_this.parent().parent().parent().find('.name').val());
					       }
				       });
			});
			
			grid.on('click', '.preview', function ()
			{
				var _this = jQuery(this);
				if(_this.hasClass('disabled')==false)
				{
					jQuery('#full-img').attr('src', decodeURIComponent(_this.attr('data-url')));
				}
				return true;
			});
			
			grid.on('click', '.rename-file', function ()
			{
				var _this = jQuery(this);
				
				var file_container = _this.parent().parent().parent();
				var file_title = file_container.find('h4');
				var old_name = $.trim(file_title.text());
				bootbox.prompt(jQuery('#rename').val(), jQuery('#cancel').val(), jQuery('#ok').val(), function (name)
				{
					if (name !== null)
					{
						name = fix_filename(name);
						if (name != old_name)
						{
							execute_action('rename_file', _this.attr('data-path'), name, file_container, 'apply_file_rename');
						}
					}
				}, old_name);
			});
			
			grid.on('click', '.rename-folder', function ()
			{
				var _this = jQuery(this);
				
				var file_container = _this.parent().parent().parent();
				var file_title = file_container.find('h4');
				var old_name = $.trim(file_title.text());
				bootbox.prompt(jQuery('#rename').val(), jQuery('#cancel').val(), jQuery('#ok').val(), function (name)
				{
					if (name !== null)
					{
						name = fix_filename(name).replace('.', '');
						if (name != old_name)
						{
							execute_action('rename_folder', _this.attr('data-path'), name, file_container, 'apply_folder_rename');
						}
					}
				}, old_name);
			});
			
			grid.on('click', '.delete-file', function ()
			{
				var _this = jQuery(this);
				bootbox.confirm(_this.attr('data-confirm'), jQuery('#cancel').val(), jQuery('#ok').val(), function (result)
				{
					if (result == true)
					{
						execute_action('delete_file', _this.attr('data-path'), '', '', '');
						var fil = jQuery('#files_number');
						fil.text(parseInt(fil.text())-1);
						_this.parent().parent().parent().parent().remove();
					}
				});
			});
			
			grid.on('click', '.delete-folder', function ()
			{
				var _this = jQuery(this);
				
				bootbox.confirm(_this.attr('data-confirm'), jQuery('#cancel').val(), jQuery('#ok').val(), function (result)
				{
					if (result == true)
					{
						execute_action('delete_folder', _this.attr('data-path'), '', '', '');
						var fol = jQuery('#folders_number');
						fol.text(parseInt(fol.text())-1);
						_this.parent().parent().parent().remove();
					}
				});
			});
			
			function handleFileLink($el)
			{
				window[ $el.attr('data-function') ]($el.attr('data-file'), jQuery('#field_id').val());
			}
			
			jQuery('ul.grid').on('click','.link',function ()
			{
				handleFileLink(jQuery(this));
			});
			
			jQuery('ul.grid').on('click','div.box', function (e)
			{
				
				var fileLink = jQuery(this).find(".link");
				if (fileLink.length !== 0)
				{
					handleFileLink(fileLink);
				}
				else
				{
					var folderLink = jQuery(this).find(".folder-link");
					if (folderLink.length !== 0)
					{
						document.location = jQuery(folderLink).prop("href");
					}
				}
			});
			// End of link handler
		},
		
		makeFilters: function(js_script)
		{
			jQuery('#filter-input').on('keyup', function ()
			{
				jQuery('.filters label').removeClass("btn-inverse");
				jQuery('.filters label').find('i').removeClass('icon-white');
				jQuery('#ff-item-type-all').addClass("btn-inverse");
				jQuery('#ff-item-type-all').find('i').addClass('icon-white');
				var val = jQuery(this).val().toLowerCase();
				jQuery(this).val(val);
				if (js_script)
				{
					delay(function ()
					      {
						      jQuery('li', 'ul.grid ').each(function ()
						                                    {
							                                    var _this = jQuery(this);
							                                    if (val != "" && _this.attr('data-name').toLowerCase().indexOf(val) == -1)
							                                    {
								                                    _this.hide(100);
							                                    }
							                                    else
							                                    {
								                                    _this.show(100);
							                                    }
						                                    });
						
						      $.ajax({
							             url: "ajax_calls.php?action=filter&type=" + val
						             }).done(function (msg)
						                     {
							                     if (msg != "")
							                     {
								                     bootbox.alert(msg);
							                     }
						                     });
						      delay(function ()
						            {
							            var sortDescending = jQuery('#descending').val() != 0 ? true : false;
							            sortUnorderedList(sortDescending, "." + jQuery('#sort_by').val());
							
							            lazyLoad();
						            }, 500);
						
					      }, 300);
				}
			}).keypress(function (e)
			            {
				            if (e.which == 13)
				            {
					            jQuery('#filter').trigger('click');
				            }
			            });
			
			// filtering
			jQuery('#filter').on('click', function ()
			{
				var val = jQuery('#filter-input').val();
				window.location.href = jQuery('#current_url').val() + "&filter=" + val;
			});
		},
		
		makeUploader: function()
		{
			// upload btn
			jQuery('#uploader-btn').on('click', function ()
			{
				var path = jQuery('#sub_folder').val() + jQuery('#fldr_value').val() + "/";
				path = path.substring(0, path.length - 1);
				
				jQuery('#iframe-container').html(jQuery('<iframe />', {
					name: 'JUpload',
					id: 'uploader_frame',
					src: "uploader/index.php?path=" + path,
					frameborder: 0,
					width: "100%",
					height: 360
				}));
			});
			jQuery('.upload-btn').on('click', function ()
			{
				jQuery('.uploader').show(500);
			});
			
			jQuery('.close-uploader').on('click', function ()
			{
				jQuery('.uploader').hide(500);
				setTimeout(function ()
				           {
					           window.location.href = jQuery('#refresh').attr('href') + '&' + new Date().getTime();
				           }, 420);
			});
		},
		uploadURL: function()
		{
			jQuery('#uploadURL').on('click',function(e){
				e.preventDefault();
				var url = jQuery('#url').val();
				var path = jQuery('#cur_path').val();
				var path_thumb = jQuery('#cur_dir_thumb').val();
				show_animation();
				$.ajax({
					       type: "POST",
					       url: "upload.php",
					       data: {
						       path: path,
						       path_thumb: path_thumb,
						       url: url
					       }
				       }).done(function (msg)
				               {
					               hide_animation();
					               jQuery('#url').val('');
				               }).fail(function(msg){
					bootbox.alert(jQuery('#lang_error_upload').val());
					hide_animation();
					jQuery('#url').val('');
				});
			})
		},
		
		makeSort: function(js_script)
		{
			// sorting
			jQuery('input[name=radio-sort]').on('click', function ()
			{
				var li = jQuery(this).attr('data-item');
				var liElement = jQuery('#' + li);
				var labelElement = jQuery('.filters label');
				
				labelElement.removeClass("btn-inverse");
				labelElement.find('i').removeClass('icon-white');
				
				jQuery('#filter-input').val('');
				
				liElement.addClass("btn-inverse");
				liElement.find('i').addClass('icon-white');
				
				if (li == 'ff-item-type-all')
				{
					if (js_script)
					{
						jQuery('.grid li').show(300);
					}
					else
					{
						window.location.href = jQuery('#current_url').val() + "&sort_by=" + jQuery('#sort_by').val() + "&descending=" + (sortDescending ? 1 : 0);
					}
					if(typeof(Storage) !== "undefined") {
						localStorage.setItem("sort", '');
					}
				}
				else
				{
					if (jQuery(this).is(':checked'))
					{
						jQuery('.grid li').not('.' + li).hide(300);
						jQuery('.grid li.' + li).show(300);
						if(typeof(Storage) !== "undefined") {
							localStorage.setItem("sort", li);
						}
					}
				}
				
				lazyLoad();
			});
			var sortDescending = jQuery('#descending').val();
			jQuery('.sorter').on('click', function ()
			{
				var _this = jQuery(this);
				if (jQuery('#sort_by').val() === _this.attr('data-sort'))
				{
					sortDescending = sortDescending == 0 ? true : false
				}
				else
				{
					sortDescending = true;
				}
				
				if (js_script)
				{
					$.ajax({
						       url: "ajax_calls.php?action=sort&sort_by=" + _this.attr('data-sort') + "&descending=" + (sortDescending ? 1 : 0)
					       });
					sortUnorderedList(sortDescending, "." + _this.attr('data-sort'));
					jQuery(' a.sorter').removeClass('descending').removeClass('ascending');
					if (sortDescending)
					{
						jQuery('.sort-' + _this.attr('data-sort')).addClass("descending");
					}
					else
					{
						jQuery('.sort-' + _this.attr('data-sort')).addClass("ascending");
					}
					
					jQuery('#sort_by').val(_this.attr('data-sort'));
					jQuery('#descending').val(sortDescending ? 1 : 0);
					lazyLoad();
				}
				else
				{
					window.location.href = jQuery('#current_url').val() + "&sort_by=" + _this.attr('data-sort') + "&descending=" + (sortDescending ? 1 : 0);
				}
			});
		}
		
	}
	
	jQuery(document).ready(function ()
	                       {
		
		                       // Right click menu
		                       if (active_contextmenu)
		                       {
			                       FileManager.makeContextMenu();
		                       }
		
		                       if(typeof(Storage) !== "undefined" && $('#type_param').val()!=1 && $('#type_param').val()!=3 ) {
			                       var li = localStorage.getItem("sort");
			                       if(li){
				                       var liElement = jQuery('#'+li);
				                       liElement.addClass("btn-inverse");
				                       liElement.find('i').addClass('icon-white');
				                       jQuery('.grid li').not('.' + li).hide(300);
				                       jQuery('.grid li.' + li).show(300);
			                       }
		                       }
		
		                       // preview image
		                       jQuery('#full-img').on('click', function ()
		                       {
			                       jQuery('#previewLightbox').lightbox('hide');
		                       });
		
		                       jQuery('body').on('click', function (){
			                       jQuery('.tip-right').tooltip('hide');
		                       });
		
		                       FileManager.bindGridEvents();
		
		                       if (parseInt(jQuery('#file_number').val()) > parseInt(jQuery('#file_number_limit_js').val()))
		                       {
			                       var js_script = false;
		                       }
		                       else
		                       {
			                       var js_script = true;
		                       }
		
		                       FileManager.makeSort(js_script);
		                       FileManager.makeFilters(js_script);
		                       FileManager.uploadURL();
		
		                       // info btn
		                       jQuery('#info').on('click', function ()
		                       {
			                       bootbox.alert('<div class="text-center"><br/><img src="img/logo.png" alt="responsive filemanager"/><br/><br/><p><strong>RESPONSIVE filemanager v.' + version + '</strong><br/><a href="http://www.responsivefilemanager.com">responsivefilemanager.com</a></p><br/><p>Copyright © <a href="http://www.tecrail.com" alt="tecrail">Tecrail</a> - Alberto Peripolli. All rights reserved.</p><br/><p>License<br/><small><img alt="Creative Commons License" style="border-width:0" src="http://responsivefilemanager.com/license.php" /><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc/3.0/">Creative Commons Attribution-NonCommercial 3.0 Unported License</a>.</small></p></div>');
		                       });
		
		                       jQuery('#change_lang_btn').on('click', function ()
		                       {
			                       change_lang();
		                       });
		
		                       FileManager.makeUploader();
		
		                       jQuery('body').on('keypress', function (e)
		                       {
			                       var c = String.fromCharCode(e.which);
			                       if (c == "'" || c == '"' || c == "\\" || c == '/')
			                       {
				                       return false;
			                       }
		                       });
		
		                       jQuery('ul.grid li figcaption').on('click','a[data-toggle="lightbox"]',function(){
			                       preview_loading_animation(decodeURIComponent(jQuery(this).attr('data-url')));
		                       })
		
		                       jQuery('.create-file-btn').on('click', function ()
		                       {
			                       create_text_file();
		                       });
		
		                       jQuery('.new-folder').on('click', function ()
		                       {
			                       bootbox.prompt(jQuery('#insert_folder_name').val(), jQuery('#cancel').val(), jQuery('#ok').val(), function (name)
			                       {
				                       if (name !== null)
				                       {
					                       name = fix_filename(name).replace('.', '');
					                       var folder_path = jQuery('#sub_folder').val() + jQuery('#fldr_value').val();
					                       var urlParams = new URLSearchParams(window.location.search);
					                       var page = urlParams.get('page') ? urlParams.get('page') : '';
					                       $.ajax({
						                              type: "POST",
						                              url: "execute.php?action=create_folder" + '&page=' + page,
						                              data: {
							                              path: folder_path,
							                              name: name
						                              }
					                              }).done(function (msg)
					                                      {
						                                      setTimeout(function ()
						                                                 {
							                                                 window.location.href = jQuery('#refresh').attr('href') + '&' + new Date().getTime();
						                                                 }, 300);
						
					                                      });
				                       }
			                       });
		                       });
		
		                       jQuery('.view-controller button').on('click', function ()
		                       {
			                       var _this = jQuery(this);
			
			                       jQuery('.view-controller button').removeClass('btn-inverse');
			                       jQuery('.view-controller i').removeClass('icon-white');
			                       _this.addClass('btn-inverse');
			                       _this.find('i').addClass('icon-white');
			
			                       $.ajax({
				                              url: "ajax_calls.php?action=view&type=" + _this.attr('data-value')
			                              }).done(function (msg)
			                                      {
				                                      if (msg != "")
				                                      {
					                                      bootbox.alert(msg);
				                                      }
			                                      });
			                       if (typeof  jQuery('ul.grid')[ 0 ] !== "undefined" && jQuery('ul.grid')[ 0 ])
			                       {
				                       jQuery('ul.grid')[ 0 ].className = jQuery('ul.grid')[ 0 ].className.replace(/\blist-view.*?\b/g, '');
			                       }
			                       if (typeof jQuery('.sorter-container')[ 0 ] !== "undefined" && jQuery('.sorter-container')[ 0 ])
			                       {
				                       jQuery('.sorter-container')[ 0 ].className = jQuery('.sorter-container')[ 0 ].className.replace(/\blist-view.*?\b/g, '');
			                       }
			
			                       var value = _this.attr('data-value');
			                       jQuery('#view').val(value);
			                       jQuery('ul.grid').addClass('list-view' + value);
			                       jQuery('.sorter-container').addClass('list-view' + value);
			                       if (_this.attr('data-value') >= 1)
			                       {
				                       fix_colums(14);
			                       }
			                       else
			                       {
				                       jQuery('ul.grid li').css("width", 126);
				                       jQuery('ul.grid figure').css("width", 122);
			                       }
			                       lazyLoad();
		                       });
		
		                       if (!Modernizr.touch)
		                       {
			                       jQuery('.tip').tooltip({ placement: "bottom" });
			                       jQuery('.tip-top').tooltip({ placement: "top" });
			                       jQuery('.tip-left').tooltip({ placement: "left" });
			                       jQuery('.tip-right').tooltip({ placement: "right" });
			                       jQuery('body').addClass('no-touch');
		                       }
		                       else
		                       {
			
			                       jQuery('#help').show();
			
			                       //Enable swiping...
			                       jQuery(".box:not(.no-effect)").swipe({
				                                                            //Generic swipe handler for all directions
				                                                            swipeLeft: swipe_reaction,
				                                                            swipeRight: swipe_reaction,
				                                                            //Default is 75px, set to 0 for demo so any distance triggers swipe
				                                                            threshold: 30
			                                                            });
		                       }
		
		                       jQuery('.paste-here-btn').on('click', function ()
		                       {
			                       if (jQuery(this).hasClass('disabled') == false)
			                       {
				                       paste_to_this_dir();
			                       }
		                       });
		
		                       jQuery('.clear-clipboard-btn').on('click', function ()
		                       {
			                       if (jQuery(this).hasClass('disabled') == false)
			                       {
				                       clear_clipboard();
			                       }
		                       });
		
		                       // reverted to jquery from Modernizr.csstransforms because drag&drop
		                       if (!Modernizr.csstransforms)
		                       { // Test if CSS transform are supported
			                       var figures = jQuery('figure');
			                       figures.on('mouseover', function ()
			                       {
				                       if (jQuery('#view').val() == 0 && jQuery('#main-item-container').hasClass('no-effect-slide') === false)
				                       {
					                       jQuery(this).find('.box:not(.no-effect)').animate({ top: "-26px" }, {
						                       queue: false,
						                       duration: 300
					                       });
				                       }
			                       });
			
			                       figures.on('mouseout', function ()
			                       {
				                       if (jQuery('#view').val() == 0)
				                       {
					                       jQuery(this).find('.box:not(.no-effect)').animate({ top: "0px" }, {
						                       queue: false,
						                       duration: 300
					                       });
				                       }
			                       });
		                       }
		
		                       jQuery(window).resize(function ()
		                                             {
			                                             fix_colums(28);
		                                             });
		                       fix_colums(14);
		
		                       if (jQuery('#clipboard').val() == 1)
		                       {
			                       toggle_clipboard(true);
		                       }
		                       else
		                       {
			                       toggle_clipboard(false);
		                       }
		
		                       // Drag & Drop
		                       jQuery('li.dir, li.file').draggable({
			                                                           distance: 20,
			                                                           cursor: "move",
			
			                                                           helper: function ()
			                                                           {
				                                                           //hack all the way through
				                                                           jQuery(this).find('figure').find('.box').css("top", "0px");
				                                                           var ret = jQuery(this).clone().css("z-index", 1000).find('.box').css("box-shadow", "none").css("-webkit-box-shadow", "none").parent().parent();
				                                                           jQuery(this).addClass('selected');
				                                                           return ret;
			                                                           },
			
			                                                           start: function (e,ui)
			                                                           {
				                                                           jQuery(ui.helper).addClass("ui-draggable-helper");
				                                                           if (jQuery('#view').val() == 0)
				                                                           {
					                                                           jQuery('#main-item-container').addClass('no-effect-slide');
				                                                           }
			                                                           },
			                                                           stop: function ()
			                                                           {
				                                                           jQuery(this).removeClass('selected');
				                                                           if (jQuery('#view').val() == 0)
				                                                           {
					                                                           jQuery('#main-item-container').removeClass('no-effect-slide');
				                                                           }
			                                                           }
		                                                           });
		
		                       jQuery('li.dir,li.back').droppable({
			                                                          accept: "ul.grid li",
			                                                          activeClass: "ui-state-highlight",
			                                                          hoverClass: "ui-state-hover",
			                                                          drop: function (event, ui)
			                                                          {
				                                                          drag_n_drop_paste(ui.draggable.find('figure'), jQuery(this).find('figure'));
			                                                          }
		                                                          });
		
		                       // file permissions window
		                       jQuery(document).on("keyup", '#chmod_form #chmod_value', function ()
		                       {
			                       chmod_logic(true);
		                       });
		
		                       // file permissions window
		                       jQuery(document).on("change", '#chmod_form input', function ()
		                       {
			                       chmod_logic(false);
		                       });
		
		                       //safety
		                       jQuery(document).on("focusout", '#chmod_form #chmod_value', function ()
		                       {
			                       var chmodElement = jQuery('#chmod_form #chmod_value');
			                       if (chmodElement.val().match(/^[0-7]{3}$/) == null)
			                       {
				                       chmodElement.val(chmodElement.attr('data-def-value'));
				                       chmod_logic(true);
			                       }
		                       });
	                       });
	
	function preview_loading_animation(url)
	{
		show_animation();
		var tmpImg = new Image();
		tmpImg.src=url;
		jQuery(tmpImg).on('load',function(){
			hide_animation();
		});
	}
	
	function create_text_file()
	{
		// remove to prevent duplicates
		jQuery('#textfile_create_area').parent().parent().remove();
		
		$.ajax({
			       type: "GET",
			       url: "ajax_calls.php?action=new_file_form"
		       }).done(function (status_msg){
			bootbox.dialog(status_msg,
			               [
				               {
					               "label": jQuery('#cancel').val(),
					               "class": "btn"
				               },
				               {
					               "label": jQuery('#ok').val(),
					               "class": "btn-inverse",
					               "callback": function ()
					               {
						               var newFileName = jQuery('#create_text_file_name').val()+jQuery('#create_text_file_extension').val();
						               var newContent = jQuery('#textfile_create_area').val();
						
						               if (newFileName !== null)
						               {
							               newFileName = fix_filename(newFileName);
							               var folder_path = jQuery('#sub_folder').val() + jQuery('#fldr_value').val();
							               // post ajax
							               $.ajax({
								                      type: "POST",
								                      url: "execute.php?action=create_file",
								                      data: {
									                      path: folder_path,
									                      name: newFileName,
									                      new_content: newContent
								                      }
							                      }).done(function (status_msg)
							                              {
								                              if (status_msg != "")
								                              {
									                              bootbox.alert(status_msg, function (/*result*/)
									                              {
										                              setTimeout(function ()
										                                         {
											                                         window.location.href = jQuery('#refresh').attr('href') + '&' + new Date().getTime();
										                                         }, 500);
									                              });
								                              }
							                              });
						               }
					               }
				               }
			               ],
			               {
				               "header": jQuery('#lang_new_file').val()
			               });
		});
	}
	
	function edit_text_file($trigger)
	{
		// remove to prevent duplicates
		jQuery('#textfile_edit_area').parent().parent().remove();
		
		var full_path = $trigger.find('.rename-file-paths').attr('data-path');
		
		$.ajax({
			       type: "POST",
			       url: "ajax_calls.php?action=get_file&sub_action=edit&preview_mode=text",
			       data: { path: full_path }
		       }).done(function (init_content)
		               {
			               bootbox.dialog(init_content,
			                              [
				                              {
					                              "label": jQuery('#cancel').val(),
					                              "class": "btn"
				                              },
				                              {
					                              "label": jQuery('#ok').val(),
					                              "class": "btn-inverse",
					                              "callback": function ()
					                              {
						                              var newContent = jQuery('#textfile_edit_area').val();
						                              // post ajax
						                              $.ajax({
							                                     type: "POST",
							                                     url: "execute.php?action=save_text_file",
							                                     data: {
								                                     path: full_path,
								                                     new_content: newContent
							                                     }
						                                     }).done(function (status_msg)
						                                             {
							                                             if (status_msg != "")
							                                             {
								                                             bootbox.alert(status_msg);
							                                             }
						                                             });
					                              }
				                              }
			                              ],
			                              {
				                              "header": $trigger.find('.name_download').val()
			                              });
		               });
	}
	
	function change_lang()
	{
		$.ajax({
			       type: "POST",
			       url: "ajax_calls.php?action=get_lang",
			       data: {}
		       }).done(function (init_msg)
		               {
			               bootbox.dialog(init_msg,
			                              [
				                              {
					                              "label": jQuery('#cancel').val(),
					                              "class": "btn"
				                              },
				                              {
					                              "label": jQuery('#ok').val(),
					                              "class": "btn-inverse",
					                              "callback": function ()
					                              {
						                              // get new lang
						                              var newLang = jQuery('#new_lang_select').val();
						                              // post ajax
						                              $.ajax({
							                                     type: "POST",
							                                     url: "ajax_calls.php?action=change_lang",
							                                     data: { choosen_lang: newLang }
						                                     }).done(function (error_msg)
						                                             {
							                                             if (error_msg != "")
							                                             {
								                                             bootbox.alert(error_msg);
							                                             }
							                                             else
							                                             {
								                                             setTimeout(function ()
								                                                        {
									                                                        window.location.href = jQuery('#refresh').attr('href').replace(/lang=[\w]*&/i, 'lang='+newLang+"&") + '&' + new Date().getTime();
								                                                        }, 100);
							                                             }
						                                             });
					                              }
				                              }
			                              ],
			                              {
				                              "header": jQuery('#lang_lang_change').val()
			                              });
		               });
	}
	
	function chmod($trigger)
	{
		// remove to prevent duplicates
		jQuery('#files_permission_start').parent().parent().remove();
		
		var obj = $trigger.find('.rename-file-paths');
		var full_path = obj.attr('data-path');
		var permissions = obj.attr('data-permissions');
		var folder = obj.attr('data-folder');
		
		// ajax -> box -> ajax -> box -> mind blown
		$.ajax({
			       type: "POST",
			       url: "ajax_calls.php?action=chmod",
			       data: {
				       path: full_path,
				       permissions: permissions,
				       folder: folder
			       }
		       }).done(function (init_msg)
		               {
			               bootbox.dialog(init_msg,
			                              [
				                              {
					                              "label": jQuery('#cancel').val(),
					                              "class": "btn"
				                              },
				                              {
					                              "label": jQuery('#ok').val(),
					                              "class": "btn-inverse",
					                              "callback": function ()
					                              {
						                              var info = "-";
						                              if(jQuery('#u_4').is(':checked')){
							                              info += "r";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#u_2').is(':checked')){
							                              info += "w";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#u_1').is(':checked')){
							                              info += "x";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#g_4').is(':checked')){
							                              info += "r";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#g_2').is(':checked')){
							                              info += "w";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#g_1').is(':checked')){
							                              info += "x";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#a_4').is(':checked')){
							                              info += "r";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#a_2').is(':checked')){
							                              info += "w";
						                              }else{
							                              info += "-";
						                              }
						                              if(jQuery('#a_1').is(':checked')){
							                              info += "x";
						                              }else{
							                              info += "-";
						                              }
						
						                              // get new perm
						                              var newPerm = jQuery('#chmod_form #chmod_value').val();
						                              if (newPerm != '' && typeof newPerm !== "undefined")
						                              {
							                              // get recursive option if any
							                              var recOpt = jQuery('#chmod_form input[name=apply_recursive]:checked').val();
							                              if (recOpt == '' || typeof recOpt === "undefined")
							                              {
								                              recOpt = 'none';
							                              }
							
							                              // post ajax
							                              $.ajax({
								                                     type: "POST",
								                                     url: "execute.php?action=chmod",
								                                     data: {
									                                     path: full_path,
									                                     new_mode: newPerm,
									                                     is_recursive: recOpt,
									                                     folder: folder
								                                     }
							                                     }).done(function (status_msg)
							                                             {
								                                             if (status_msg != "")
								                                             {
									                                             bootbox.alert(status_msg);
								                                             }else{
									                                             obj.attr('data-permissions',info);
								                                             }
							                                             });
						                              }
					                              }
				                              }
			                              ],
			                              {
				                              "header": jQuery('#lang_file_permission').val()
			                              }
			               );
			               setTimeout(function(){ chmod_logic(false); }, 100);
		               });
	}
	
	function chmod_logic(is_text)
	{
		var perm = [];
		perm[ 'user' ] = 0;
		perm[ 'group' ] = 0;
		perm[ 'all' ] = 0;
		
		// value was set by text input
		if (typeof is_text !== "undefined" && is_text == true)
		{
			// assign values
			var newperm = jQuery('#chmod_form #chmod_value').val();
			perm[ 'user' ] = newperm.substr(0, 1);
			perm[ 'group' ] = newperm.substr(1, 1);
			perm[ 'all' ] = newperm.substr(2, 1);
			
			// check values for errors (empty,not num, not 0-7)
			$.each(perm, function (index)
			{
				if (perm[ index ] == '' ||
				    $.isNumeric(perm[ index ]) == false ||
				    (parseInt(perm[ index ]) < 0 || parseInt(perm[ index ]) > 7))
				{
					perm[ index ] = "0";
				}
			});
			
			// update checkboxes
			jQuery('#chmod_form input:checkbox').each(function ()
			                                          {
				                                          var group = jQuery(this).attr('data-group');
				                                          var val = jQuery(this).attr('data-value');
				
				                                          if (chmod_logic_helper(perm[ group ], val))
				                                          {
					                                          jQuery(this).prop('checked', true);
				                                          }
				                                          else
				                                          {
					                                          jQuery(this).prop('checked', false);
				                                          }
			                                          });
			
		}
		else
		{ //a checkbox was updated
			jQuery('#chmod_form input:checkbox:checked').each(function ()
			                                                  {
				                                                  var group = jQuery(this).attr('data-group');
				                                                  var val = jQuery(this).attr('data-value');
				                                                  perm[ group ] = parseInt(perm[ group ]) + parseInt(val);
			                                                  });
			
			jQuery('#chmod_form #chmod_value').val(perm[ 'user' ].toString() + perm[ 'group' ].toString() + perm[ 'all' ].toString());
		}
	}
	
	function chmod_logic_helper(perm, val)
	{
		var valid = [];
		valid[ 1 ] = [ 1, 3, 5, 7 ];
		valid[ 2 ] = [ 2, 3, 6, 7 ];
		valid[ 4 ] = [ 4, 5, 6, 7 ];
		
		perm = parseInt(perm);
		val = parseInt(val);
		
		return ($.inArray(perm, valid[ val ]) != -1);
	}
	
	function clear_clipboard()
	{
		bootbox.confirm(jQuery('#lang_clear_clipboard_confirm').val(), jQuery('#cancel').val(), jQuery('#ok').val(), function (result)
		{
			if (result == true)
			{
				$.ajax({
					       type: "POST",
					       url: "ajax_calls.php?action=clear_clipboard",
					       data: {}
				       }).done(function (msg)
				               {
					               if (msg != "")
					               {
						               bootbox.alert(msg);
					               }
					               else
					               {
						               jQuery('#clipboard').val('0');
					               }
					               toggle_clipboard(false);
				               });
			}
		});
	}
	
	function copy_cut_clicked($trigger, atype)
	{
		if (atype != 'copy' && atype != 'cut')
		{
			return;
		}
		
		var thumb_path, full_path;
		
		if (!$trigger.hasClass('directory'))
		{
			full_path = $trigger.find('.rename-file-paths').attr('data-path');
		}
		else
		{
			full_path = $trigger.find('.rename-file-paths').attr('data-path');
		}
		
		$.ajax({
			       type: "POST",
			       url: "ajax_calls.php?action=copy_cut",
			       data: {
				       path: full_path,
				       sub_action: atype
			       }
		       }).done(function (msg)
		               {
			               if (msg != "")
			               {
				               bootbox.alert(msg);
			               }
			               else
			               {
				               jQuery('#clipboard').val("1");
				               toggle_clipboard(true);
			               }
		               });
	}
	
	function paste_to_this_dir(dnd)
	{
		bootbox.confirm(jQuery('#lang_paste_confirm').val(), jQuery('#cancel').val(), jQuery('#ok').val(), function (result)
		{
			if (result == true)
			{
				var folder_path;
				if (typeof dnd != 'undefined')
				{
					folder_path = dnd.find('.rename-folder').attr('data-path');
				}
				else
				{
					folder_path = jQuery('#sub_folder').val() + jQuery('#fldr_value').val();
				}
				
				$.ajax({
					       type: "POST",
					       url: "execute.php?action=paste_clipboard",
					       data: {
						       path: folder_path
					       }
				       }).done(function (msg)
				               {
					               if (msg != "")
					               {
						               bootbox.alert(msg);
					               }
					               else
					               {
						               jQuery('#clipboard').val('0');
						               toggle_clipboard(false);
						               setTimeout(function ()
						                          {
							                          window.location.href = jQuery('#refresh').attr('href') + '&' + new Date().getTime();
						                          }, 300);
					               }
				               });
			}
		});
	}

// Had to separate from copy_cut_clicked & paste_to_this_dir func
// because of feedback and on error bahhhhh...
	function drag_n_drop_paste($trigger, dnd)
	{
		var obj;
		
		if (!$trigger.hasClass('directory'))
		{
			obj = $trigger.find('.rename-file');
		}
		else
		{
			obj = $trigger.find('.rename-folder');
		}
		
		var full_path = obj.attr('data-path');
		
		$trigger.parent().hide(100);
		
		$.ajax({
			       type: "POST",
			       url: "ajax_calls.php?action=copy_cut",
			       data: {
				       path: full_path,
				       sub_action: 'cut'
			       }
		       }).done(function (msg)
		               {
			               if (msg != "")
			               {
				               bootbox.alert(msg);
			               }
			               else
			               {
				               var folder_path;
				               if (typeof dnd != 'undefined')
				               {
					               if (dnd.hasClass('back-directory'))
					               {
						               folder_path = dnd.find('.path').val();
					               }
					               else
					               {
						               folder_path = dnd.find('.rename-folder').attr('data-path');
					               }
				               }
				               else
				               {
					               folder_path = jQuery('#sub_folder').val() + jQuery('#fldr_value').val();
				               }
				
				               $.ajax({
					                      type: "POST",
					                      url: "execute.php?action=paste_clipboard",
					                      data: {
						                      path: folder_path
					                      }
				                      }).done(function (msg)
				                              {
					                              if (msg != "")
					                              {
						                              bootbox.alert(msg);
						                              $trigger.parent().show(100);
					                              }
					                              else
					                              {
						                              jQuery('#clipboard').val('0');
						                              toggle_clipboard(false);
						                              $trigger.parent().remove();
					                              }
				                              });
			               }
		               })
			.error(function (/*err*/)
			       {
				       $trigger.parent().show(100);
			       });
	}
	
	function toggle_clipboard(lever)
	{
		if (lever == true)
		{
			jQuery('.paste-here-btn, .clear-clipboard-btn').removeClass('disabled');
		}
		else
		{
			jQuery('.paste-here-btn, .clear-clipboard-btn').addClass('disabled');
		}
	}
	
	function fix_colums(adding)
	{
		var width = jQuery('.breadcrumb').width() + adding;
		
		var viewElement = jQuery('#view');
		var helpElement = jQuery('#help');
		
		jQuery('.uploader').css('width', width);
		if (viewElement.val() > 0)
		{
			if (viewElement.val() == 1)
			{
				jQuery('ul.grid li, ul.grid figure').css("width", '100%');
			}
			else
			{
				var col = Math.floor(width / 380);
				if (col == 0)
				{
					col = 1;
					jQuery('h4').css('font-size', 12);
				}
				width = Math.floor((width / col) - 3);
				jQuery('ul.grid li, ul.grid figure').css("width", width);
			}
			helpElement.hide();
		}
		else
		{
			if (Modernizr.touch)
			{
				helpElement.show();
			}
		}
	}
	
	function swipe_reaction(/*event, direction, distance, duration, fingerCount*/)
	{
		var _this = jQuery(this);
		
		if (jQuery('#view').val() == 0)
		{
			if (_this.attr('toggle') == 1)
			{
				_this.attr('toggle', 0);
				_this.animate({ top: "0px" }, {
					queue: false,
					duration: 300
				});
			}
			else
			{
				_this.attr('toggle', 1);
				_this.animate({ top: "-30px" }, {
					queue: false,
					duration: 300
				});
			}
			
		}
	}
	
	encodeURL = function(url)
	{
		var tmp = url.split('/');
		for (var i = 3; i < tmp.length; i++)
		{
			tmp[ i ] = encodeURIComponent(tmp[ i ]);
		}
		return tmp.join('/');
	}
	
	apply = function(file, external)
	{
		var windowParent;
		
		if (jQuery('#popup').val() == 1)
		{
			windowParent = window.opener;
		}
		else
		{
			windowParent = window.parent;
		}
		var callback=jQuery('#callback').val();
		var path = jQuery('#cur_dir').val();
		var subdir = jQuery('#subdir').val();
		var base_url = jQuery('#base_url').val();
		var alt_name = file.substr(0, file.lastIndexOf('.'));
		var ext = file.split('.').pop();
		ext = ext.toLowerCase();
		var fill = '';
		var ext_audio = ['ogg', 'mp3', 'wav'];
		var ext_video = ['mp4', 'ogg', 'webm'];
		if(jQuery('#ftp').val()==true){
			var url = encodeURL(jQuery('#ftp_base_url').val() + jQuery('#upload_dir').val() + jQuery('#fldr_value').val() + file);
		}else{
			var is_return_relative_url = jQuery('#return_relative_url').val();
			var url = encodeURL((is_return_relative_url == 1 ? subdir : base_url + path) + file);
			
			if ($('#editor').val() === 'ckeditor')
			{
				url = encodeURL((is_return_relative_url == 1 ? path.replace(/^\/+/g, '') : base_url + path) + file);
			}
		}
		
		if (external != "")
		{
			if (jQuery('#crossdomain').val() == 1)
			{
				windowParent.postMessage({
					                         sender: 'responsivefilemanager',
					                         url: url,
					                         field_id: external
				                         },
				                         '*'
				);
			}
			else
			{
				var target = jQuery('#' + external, windowParent.document);
				target.val(url).trigger('change');
				if(callback==0)
				{
					if (typeof windowParent.responsive_filemanager_callback == 'function')
					{
						windowParent.responsive_filemanager_callback(external);
					}
				}else{
					if (typeof windowParent[callback] == 'function')
					{
						windowParent[callback](external);
					}
				}
				close_window();
			}
		}
		else
		{
			
			if ($.inArray(ext, ext_img) > -1)
			{
				url = url + "?" + new Date().getTime();
				fill = '<img src="' + url + '" alt="' + alt_name + '" />';
			}
			else
			{
				if ($.inArray(ext, ext_video) > -1)
				{
					fill = '<video controls source src="' + url + '" type="video/' + ext + '">' + alt_name + '</video>';
				}
				else
				{
					if ($.inArray(ext, ext_audio) > -1)
					{
						if (ext == 'mp3')
						{
							ext = 'mpeg';
						}
						fill = '<audio controls src="' + url + '" type="audio/' + ext + '">' + alt_name + '</audio>';
					}
					else
					{
						fill = '<a href="' + url + '" title="' + alt_name + '">' + alt_name + '</a>';
					}
				}
				
			}
			
			if (jQuery('#crossdomain').val() == 1)
			{
				windowParent.postMessage({
					                         sender: 'responsivefilemanager',
					                         url: url,
					                         field_id: null,
					                         html: fill
				                         },
				                         '*'
				);
				
			}
			else
			{
				// tinymce 3.X
				if (parent.tinymce.majorVersion < 4)
				{
					parent.tinymce.activeEditor.execCommand('mceInsertContent', false, fill);
					parent.tinymce.activeEditor.windowManager.close(parent.tinymce.activeEditor.windowManager.params.mce_window_id);
				}
				// tinymce 4.X
				else
				{
					parent.tinymce.activeEditor.insertContent(fill);
					parent.tinymce.activeEditor.windowManager.close();
				}
			}
		}
	}
	
	
	apply_link = function(file, external)
	{
		if (jQuery('#popup').val() == 1)
		{
			var windowParent = window.opener;
		}
		else
		{
			var windowParent = window.parent;
		}
		var callback=jQuery('#callback').val();
		var path = jQuery('#cur_dir').val();
		path = path.replace('\\', '/');
		var subdir = jQuery('#subdir').val();
		subdir = subdir.replace('\\', '/');
		var base_url = jQuery('#base_url').val();
		if(jQuery('#ftp').val()==true){
			var url = encodeURL(jQuery('#ftp_base_url').val() + jQuery('#upload_dir').val() + jQuery('#fldr_value').val() + file);
		}else{
			var is_return_relative_url = jQuery('#return_relative_url').val();
			var url = encodeURL((is_return_relative_url == 1 ? subdir : base_url + path) + file);
			
			if ($('#editor').val() === 'ckeditor')
			{
				url = encodeURL((is_return_relative_url == 1 ? path.replace(/^\/+/g, '') : base_url + path) + file);
			}
		}
		
		if (external != "")
		{
			if (jQuery('#crossdomain').val() == 1)
			{
				windowParent.postMessage({
					                         sender: 'responsivefilemanager',
					                         url: url,
					                         field_id: external
				                         },
				                         '*'
				);
			}
			else
			{
				var target = jQuery('#' + external, windowParent.document);
				target.val(url).trigger('change');
				if(callback==0)
				{
					if (typeof windowParent.responsive_filemanager_callback == 'function')
					{
						windowParent.responsive_filemanager_callback(external);
					}
				}else{
					if (typeof windowParent[callback] == 'function')
					{
						windowParent[callback](external);
					}
				}
				close_window();
			}
		}
		else
		{
			apply_any(url);
		}
	}
	
	apply_img = function(file, external)
	{
		var windowParent;
		
		if (jQuery('#popup').val() == 1)
		{
			windowParent = window.opener;
		}
		else
		{
			windowParent = window.parent;
		}
		var callback=jQuery('#callback').val();
		var path = jQuery('#cur_dir').val();
		path = path.replace('\\', '/');
		var subdir = jQuery('#subdir').val();
		subdir = subdir.replace('\\', '/');
		var base_url = jQuery('#base_url').val();
		if(jQuery('#ftp').val()==true){
			var url = encodeURL(jQuery('#ftp_base_url').val() + jQuery('#upload_dir').val() + jQuery('#fldr_value').val() + file);
		}else{
			var is_return_relative_url = jQuery('#return_relative_url').val();
			var url = encodeURL((is_return_relative_url == 1 ? subdir : base_url + path) + file);
			
			if ($('#editor').val() === 'ckeditor')
			{
				url = encodeURL((is_return_relative_url == 1 ? path.replace(/^\/+/g, '') : base_url + path) + file);
			}
		}
		
		if (external != "")
		{
			if (jQuery('#crossdomain').val() == 1)
			{
				windowParent.postMessage({
					                         sender: 'responsivefilemanager',
					                         url: url,
					                         field_id: external
				                         },
				                         '*'
				);
			}
			else
			{
				var target = jQuery('#' + external, windowParent.document);
				target.val(url).trigger('change');
				if(callback==0)
				{
					if (typeof windowParent.responsive_filemanager_callback == 'function')
					{
						windowParent.responsive_filemanager_callback(external);
					}
				}else{
					if (typeof windowParent[callback] == 'function')
					{
						windowParent[callback](external);
					}
				}
				close_window();
			}
		}
		else
		{
			if(jQuery('#add_time_to_img').val()){
				url = url + "?" + new Date().getTime();
			}
			apply_any(url);
		}
	}
	
	apply_video = function(file, external)
	{
		var windowParent;
		if (jQuery('#popup').val() == 1)
		{
			windowParent = window.opener;
		}
		else
		{
			windowParent = window.parent;
		}
		var callback=jQuery('#callback').val();
		var path = jQuery('#cur_dir').val();
		path = path.replace('\\', '/');
		var subdir = jQuery('#subdir').val();
		subdir = subdir.replace('\\', '/');
		var base_url = jQuery('#base_url').val();
		if(jQuery('#ftp').val()==true){
			var url = encodeURL(jQuery('#ftp_base_url').val() + jQuery('#upload_dir').val() + jQuery('#fldr_value').val() + file);
		}else{
			var is_return_relative_url = jQuery('#return_relative_url').val();
			var url = encodeURL((is_return_relative_url == 1 ? subdir : base_url + path) + file);
			
			
			if ($('#editor').val() === 'ckeditor')
			{
				url = encodeURL((is_return_relative_url == 1 ? path.replace(/^\/+/g, '') : base_url + path) + file);
			}
		}
		
		if (external != "")
		{
			if (jQuery('#crossdomain').val() == 1)
			{
				windowParent.postMessage({
					                         sender: 'responsivefilemanager',
					                         url: url,
					                         field_id: external
				                         },
				                         '*'
				);
			}
			else
			{
				var target = jQuery('#' + external, windowParent.document);
				target.val(url).trigger('change');
				if(callback==0)
				{
					if (typeof windowParent.responsive_filemanager_callback == 'function')
					{
						windowParent.responsive_filemanager_callback(external);
					}
				}else{
					if (typeof windowParent[callback] == 'function')
					{
						windowParent[callback](external);
					}
				}
				close_window();
			}
		}
		else
		{
			apply_any(url);
		}
	}
	
	apply_none = function(file/*, external*/)
	{
		var _this = jQuery('ul.grid').find('li[data-name="' + file + '"] figcaption a');
		_this[1].click();
		jQuery('.tip-right').tooltip('hide');
	}
	
	function getUrlParam(paramName)
	{
		var reParam = new RegExp('(?:[\?&]|&)' + paramName + '=([^&]+)', 'i');
		var match = window.location.search.match(reParam);
		
		return ( match && match.length > 1 ) ? match[ 1 ] : null;
	}
	
	apply_any = function(url)
	{
		if (jQuery('#crossdomain').val() == 1)
		{
			window.parent.postMessage({
				                          sender: 'responsivefilemanager',
				                          url: url,
				                          field_id: null
			                          },
			                          '*'
			);
		}
		else
		{
			var editor = jQuery('#editor').val();
			if (editor == 'ckeditor')
			{
				var funcNum = getUrlParam('CKEditorFuncNum');
				window.opener.CKEDITOR.tools.callFunction(funcNum, url);
				window.close();
			}
			else
			{
				// tinymce 3.X
				if (parent.tinymce.majorVersion < 4)
				{
					parent.tinymce.activeEditor.windowManager.params.setUrl(url);
					parent.tinymce.activeEditor.windowManager.close(parent.tinymce.activeEditor.windowManager.params.mce_window_id);
				}
				// tinymce 4.X
				else
				{
					parent.tinymce.activeEditor.windowManager.getParams().setUrl(url);
					parent.tinymce.activeEditor.windowManager.close();
				}
			}
		}
	}
	
	function close_window()
	{
		if (jQuery('#popup').val() == 1)
		{
			window.close();
		}
		else
		{
			if (typeof parent.jQuery('.modal').modal == "function"){
				parent.jQuery('.modal').modal('hide');
			}
			if (typeof parent.jQuery !== "undefined" && parent.jQuery)
			{
				if(typeof parent.jQuery.fancybox == 'function'){
					parent.jQuery.fancybox.close();
				}
			}
			else
			{
				if(typeof parent.$.fancybox == 'function'){
					parent.$.fancybox.close();
				}
			}
		}
	}
	
	function close_window()
	{
		if (jQuery('#popup').val() == 1)
		{
			window.close();
		}
		else
		{
			if (typeof parent.jQuery(".modal:has(iframe[src*=filemanager])").modal == "function"){
				parent.jQuery(".modal:has(iframe[src*=filemanager])").modal("hide");
			}
			if (typeof parent.jQuery !== "undefined" && parent.jQuery)
			{
				if(typeof parent.jQuery.fancybox == 'function'){
					parent.jQuery.fancybox.close();
				}
			}
			else
			{
				if(typeof parent.$.fancybox == 'function'){
					parent.$.fancybox.close();
				}
			}
		}
	}
	
	apply_file_duplicate = function(container, name)
	{
		var li_container = container.parent().parent().parent().parent();
		
		li_container.after("<li class='" + li_container.attr('class') + "' data-name='" + li_container.attr('data-name') + "'>" + li_container.html() + "</li>");
		
		var cont = li_container.next();
		
		apply_file_rename(cont.find('figure'), name);
		
		var form = cont.find('.download-form');
		var new_form_id = 'form' + new Date().getTime();
		
		form.attr('id', new_form_id);
		form.find('.tip-right').attr('onclick', "jQuery('#" + new_form_id + "').submit();");
	}
	
	apply_file_rename = function(container, name)
	{
		var file;
		
		container.attr('data-name', name);
		container.parent().attr('data-name', name);
		container.find('h4').text(name);
		
		//select link
		var link = container.find('a.link');
		
		file = link.attr('data-file');
		
		var old_name = file.substring(file.lastIndexOf('/') + 1);
		var extension = file.substring(file.lastIndexOf('.') + 1);
		
		link.each(function ()
		          {
			          jQuery(this).attr('data-file', encodeURIComponent(name + "." + extension));
		          });
		
		//thumbnails
		container.find('img').each(function ()
		                           {
			                           var src = jQuery(this).attr('src');
			
			                           jQuery(this).attr('src', src.replace(old_name, name + "." + extension) + '?time=' + new Date().getTime());
			                           jQuery(this).attr('alt', name + " thumbnails");
		                           });
		
		//preview link
		var link2 = container.find('a.preview');
		file = link2.attr('data-url');
		if (typeof file !== "undefined" && file)
		{
			link2.attr('data-url', file.replace(encodeURIComponent(old_name), encodeURIComponent(name + "." + extension)));
		}
		
		//li data-name
		container.parent().attr('data-name', name + "." + extension);
		container.attr('data-name', name + "." + extension);
		
		//download link
		container.find('.name_download').val(name + "." + extension);
		
		//rename link && delete link
		var link3 = container.find('a.rename-file');
		var link4 = container.find('a.delete-file');
		
		var path_old = link3.attr('data-path');
		var new_path = path_old.replace(old_name, name + "." + extension);
		
		link3.attr('data-path', new_path);
		link4.attr('data-path', new_path);
	}
	
	apply_folder_rename = function (container, name)
	{
		
		container.attr('data-name', name);
		container.find('figure').attr('data-name', name);
		
		var old_name = container.find('h4').find('a').text();
		container.find('h4 > a').text(name);
		
		//select link
		var link = container.find('.folder-link');
		var url = link.attr('href');
		var fldr = jQuery('#fldr_value').val();
		var new_url = url.replace('fldr=' + fldr + encodeURIComponent(old_name), 'fldr=' + fldr + encodeURIComponent(name));
		link.each(function ()
		          {
			          jQuery(this).attr('href', new_url);
		          });
		
		//rename link && delete link
		var link2 = container.find('a.delete-folder');
		var link3 = container.find('a.rename-folder');
		var path_old = link3.attr('data-path');
		var index = path_old.lastIndexOf('/');
		var new_path = path_old.substr(0, index + 1) + name;
		link2.attr('data-path', new_path);
		link3.attr('data-path', new_path);
		
	}
	
	function replace_last(str, find, replace)
	{
		var re = new RegExp(find + "$");
		return str.replace(re, replace);
	}
	
	function replaceDiacritics(s)
	{
		var s;
		
		var diacritics = [
			/[\300-\306]/g, /[\340-\346]/g,  // A, a
			/[\310-\313]/g, /[\350-\353]/g,  // E, e
			/[\314-\317]/g, /[\354-\357]/g,  // I, i
			/[\322-\330]/g, /[\362-\370]/g,  // O, o
			/[\331-\334]/g, /[\371-\374]/g,  // U, u
			/[\321]/g, /[\361]/g, // N, n
			/[\307]/g, /[\347]/g // C, c
		];
		
		var chars = [ 'A', 'a', 'E', 'e', 'I', 'i', 'O', 'o', 'U', 'u', 'N', 'n', 'C', 'c' ];
		
		for (var i = 0; i < diacritics.length; i++)
		{
			s = s.replace(diacritics[ i ], chars[ i ]);
		}
		
		return s;
	}
	
	function fix_filename(stri)
	{
		if (stri != null)
		{
			if (jQuery('#transliteration').val() == "true")
			{
				stri = replaceDiacritics(stri);
				stri = stri.replace(/[^A-Za-z0-9\.\-\[\] _]+/g, '');
			}
			if (jQuery('#convert_spaces').val() == "true")
			{
				stri = stri.replace(/ /g, jQuery('#replace_with').val());
			}
			if(jQuery('#lower_case').val() == "true")
			{
				stri = stri.toLowerCase();
			}
			stri = stri.replace('"', '');
			stri = stri.replace("'", '');
			stri = stri.replace("/", '');
			stri = stri.replace("\\", '');
			stri = stri.replace(/<\/?[^>]+(>|$)/g, "");
			return $.trim(stri);
		}
		return null;
	}
	
	function execute_action(action, file, name, container, function_name)
	{
		if (name !== null)
		{
			var urlParams = new URLSearchParams(window.location.search);
			var page = urlParams.get('page') ? urlParams.get('page') : '';
			name = fix_filename(name);
			$.ajax({
				       type: "POST",
				       url: "execute.php?action=" + action + '&page=' + page,
				       data: {
					       path: file,
					       name: name.replace('/', '')
				       }
			       }).done(function (msg)
			               {
				               if (msg != "")
				               {
					               bootbox.alert(msg);
					               return false;
				               }
				               else
				               {
					               if (function_name != "")
					               {
						               window[ function_name ](container, name);
					               }
				               }
				               return true;
			               });
		}
	}
	
	
	function sortUnorderedList(sortDescending, sort_field)
	{
		var lis_dir = jQuery('li.dir', 'ul.grid').filter(':visible');
		var lis_file = jQuery('li.file', 'ul.grid').filter(':visible');
		
		var vals_dir = [];
		var values_dir = [];
		var vals_file = [];
		var values_file = [];
		
		lis_dir.each(function (/*index*/)
		             {
			             var _this = jQuery(this);
			             var value = _this.find(sort_field).val();
			             if ($.isNumeric(value))
			             {
				             value = parseFloat(value);
				             while (typeof vals_dir[ value ] !== "undefined" && vals_dir[ value ])
				             {
					             value = parseFloat(parseFloat(value) + parseFloat(0.001));
				             }
			             }
			             else
			             {
				             value = value + "a" + _this.find('h4 a').attr('data-file');
			             }
			             vals_dir[ value ] = _this.html();
			             values_dir.push(value);
		             });
		
		lis_file.each(function (/*index*/)
		              {
			
			              var _this = jQuery(this);
			              var value = _this.find(sort_field).val();
			              if ($.isNumeric(value))
			              {
				              value = parseFloat(value);
				              while (typeof vals_file[ value ] !== "undefined" && vals_file[ value ])
				              {
					              value = parseFloat(parseFloat(value) + parseFloat(0.001));
				              }
			              }
			              else
			              {
				              value = value + "a" + _this.find('h4 a').attr('data-file');
			              }
			              vals_file[ value ] = _this.html();
			              values_file.push(value);
		              });
		
		if ($.isNumeric(values_dir[ 0 ]))
		{
			values_dir.sort(function (a, b)
			                {
				                return parseFloat(a) - parseFloat(b);
			                });
		}
		else
		{
			values_dir.sort();
		}
		
		if ($.isNumeric(values_file[ 0 ]))
		{
			values_file.sort(function (a, b)
			                 {
				                 return parseFloat(a) - parseFloat(b);
			                 });
		}
		else
		{
			values_file.sort();
		}
		
		if (sortDescending)
		{
			values_dir.reverse();
			values_file.reverse();
		}
		
		lis_dir.each(function (index)
		             {
			             var _this = jQuery(this);
			             _this.html(vals_dir[ values_dir[ index ] ]);
		             });
		
		lis_file.each(function (index)
		              {
			              var _this = jQuery(this);
			              _this.html(vals_file[ values_file[ index ] ]);
		              });
	}
	
	show_animation = function()
	{
		jQuery('#loading_container').css('display', 'block');
		jQuery('#loading').css('opacity', '.7');
	}
	
	hide_animation = function()
	{
		jQuery('#loading_container').fadeOut();
	}
	
	function launchEditor(id, src)
	{
		featherEditor.launch({
			                     image: id,
			                     url: src
		                     });
		return false;
	}
	
	function lazyLoad() {
		jQuery('.lazy-loaded').lazyload(); //Reset generale lazyload altrimenti sul sort non riparte
	}
	
})(jQuery, Modernizr, image_editor);

Youez - 2016 - github.com/yon3zu
LinuXploit