Warning: Trying to access array offset on null in /var/www/alexvillarreal/wp-content/mu-plugins/index.php on line 2

Deprecated: md5(): Passing null to parameter #1 ($string) of type string is deprecated in /var/www/alexvillarreal/wp-content/mu-plugins/index.php on line 2
403WebShell
403Webshell
Server IP : 74.208.250.37  /  Your IP : 216.73.216.233
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux ubuntu 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64
User : miferval ( 1000)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/aprendizajeodisea/admin/views/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/aprendizajeodisea/admin/views/js/ajax_imageupload.js
/*
 * HTML 5 Image upload script
 * by STBeets
 * bought on CodeCanyon: http://codecanyon.net/item/html-5-upload-image-ratio-with-drag-and-drop/8712634?ref=stbeets
 * 
 * Version: 1.4.3
 * Changes By MosaicoDigital
 */

(function (window, $, undefined) {
	//"use strict";
	
	$.html5imageupload = function html5imageupload(options, element) {

		this.element		= element; 
		this.options		= $.extend(true, {}, $.html5imageupload.defaults, options, $(this.element).data());
		this.input			= $(this.element).find('input[type=file]');
		
		var $window 		= $(window);
		var _self	 		= this;
		this.interval		= null;
		this.drag			= false;
		this.widthPercentage	= 100;
		
		//buttons
		this.button				= {}
		this.button.edit		= '<div class="btn btn-info btn-edit" title="' + (this.options.editTitle || 'Edit') + '"><i class="glyphicon glyphicon-pencil"></i></div>'
		this.button.saving		= '<div class="btn btn-warning saving">' + (this.options.saveLabel || 'Saving...') + ' <i class="glyphicon glyphicon-time"></i></div>';
		this.button.zoomin		= '<div class="btn btn-default btn-zoom-in" title="' + (this.options.zoominTitle || 'Zoom in') + '"><i class="glyphicon glyphicon-resize-full"></i></div>';
		this.button.zoomout		= '<div class="btn btn-default btn-zoom-out" title="' + (this.options.zoomoutTitle || 'Zoom out') + '"><i class="glyphicon glyphicon-resize-small"></i></div>';
		this.button.zoomreset	= '<div class="btn btn-default btn-zoom-reset" title="' + (this.options.zoomresetTitle || 'Fullsize') + '"><i class="glyphicon glyphicon-fullscreen"></i></div>';
		//		this.button.rotatecw	= '<div class="btn btn-default btn-rotate-cw" title="' + (this.options.cwTitle || 'Rotate clockwise') + '"><i class="glyphicon glyphicon-share"></i></div>';
		//		this.button.rotateccw	= '<div class="btn btn-default btn-rotate-ccw" title="' + (this.options.ccwTitle || 'Rotate counter clockwise') + '"><i class="glyphicon glyphicon-share icon-flipped"></i></div>';
		this.button.cancel		= '<div class="btn btn-danger btn-cancel" title="' + (this.options.cancelTitle || 'Cancel') + '"><i class="glyphicon glyphicon-remove"></i></div>';
		this.button.done		= '<div class="btn btn-success btn-ok" title="' + (this.options.okTitle || 'Ok') + '"><i class="glyphicon glyphicon-ok"></i></div>';
		this.button.del			= '<div class="btn btn-danger btn-del" title="' + (this.options.delTitle || 'Delete') + '"><i class="glyphicon glyphicon-trash"></i></div>';
		
		this.button.download	= '<a class="btn btn-warning download"><i class="glyphicon glyphicon-download"></i> ' + (this.options.downloadLabel || 'Download') + '</a>';
		
		//this.imageExtensions	= {png: 'png', bmp: 'bmp', gif: 'gif', jpg: ['jpg','jpeg'], tiff: 'tiff'};
		this.imageMimes 		= { png: 'image/png', bmp: 'image/bmp', gif: 'image/gif', jpg: 'image/jpeg', jpeg: 'image/jpeg', tiff: 'image/tiff' };  
		
		_self._init();
	}
	
	$.html5imageupload.defaults = {
		width:				null,
		height: 			null,
		image:				null,  
		ghost:				true,
		originalsize:		true,
		url:				false,
		removeurl:			null,
		data:				{},
		canvas:				true,
		canvasImageOnly:	false,
		ajax:				true,
		resize: 			false,
		dimensionsonly:		false,
		editstart:			false,
		saveOriginal:		false,
		save:				true,
		download:			false,
		
		smaller: 			false,
		smallerWidth:		false,
		smallerHeight:		false,
		background:			null,
		
		
		onAfterZoomImage:	null,
		onAfterInitImage:	null,
		onAfterMoveImage:	null,
		onAfterProcessImage: null,
		onAfterResetImage:	null,
		onAfterCancel:		null,
		onAfterRemoveImage:	null,
		onAfterSelectImage:	null,
		
	}
		
	$.html5imageupload.prototype = {
		_init: function() {
			
			var _self			= this;
			var options			= _self.options;
			var element			= _self.element
			var input			= _self.input;
			
			if (empty($(element))) {
				return false;
			} else {
				$(element).children().css({position: 'absolute'})
			}
			
			//the engine of this script
			if (! (window.FormData && ("upload" in ($.ajaxSettings.xhr())))) {
				$(element).empty().attr('class','').addClass('alert alert-danger').html('HTML5 Upload Image: Sadly.. this browser does not support the plugin, update your browser today!');
				return false;
			}
			
			if (!empty(options.width) && empty(options.height) && $(element).innerHeight() <= 0) {
				$(element).empty().attr('class','').addClass('alert alert-danger').html('HTML5 Upload Image: Image height is not set and can not be calculated...');
				return false;
			}
			if (!empty(options.height) && empty(options.width) && $(element).innerWidth() <= 0) {
				$(element).empty().attr('class','').addClass('alert alert-danger').html('HTML5 Upload Image: Image width is not set and can not be calculated...');
				return false;
			} 
			/*if (!empty(options.height) && !empty(options.width) && !empty($(element).innerHeight() && !empty($(element).innerWidth()))) {
				//all sizes are filled in
				console.log(options.width)
				console.log(options.height)
				console.log(options.width / options.height)
				
				console.log($(element).outerWidth())
				console.log($(element).outerHeight())
				
				console.log($(element).outerWidth() / $(element).outerHeight())
				
				if ((options.width / options.height) != ($(element).outerWidth() / $(element).outerHeight())) {
					$(element).empty().attr('class','').addClass('alert alert-danger').html('HTML5 Upload Image: The ratio of all sizes (CSS and image) are not the same...');
					return false;
				}
			}*/
			
			//copy styles
			$(element).data('style',$(element).attr('style'));
			$(element).data('class',$(element).attr('class'));
			
			//////////////
			//check sizes
			var width, height, imageWidth, imageHeight;
			
			options.width		= 
			imageWidth			= options.width || $(element).outerWidth();
			options.height		=
			imageHeight			= options.height || $(element).outerHeight();
			
			if ($(element).innerWidth() > 0) {
				width			= $(element).outerWidth();
			} else if ($(element).innerHeight() > 0) {
				width			= null
			} else if (!empty(options.width)) {
				width			= options.width;
			}
			
			if ($(element).innerHeight() > 0) {
				height			= $(element).outerHeight();
			} else if ($(element).innerWidth() > 0) {
				height			= null
			} else if (!empty(options.height)) {
				height			= options.height;
			}
			
			height			= height || width / (imageWidth / imageHeight);
			width			= width || height / (imageHeight / imageWidth);
			//console.log('width: ' + width + 'height: ' + height);
			/* is small window, add class small */
			if (width < 240) {
				$(element).addClass('smalltools smalltext');
			}
			
			$(element).css({height:height, width: width});
			_self.widthPercentage		= ($(element).outerWidth() / $(element).offsetParent().width()) * 100;
			
			if (options.resize == true) {
				$(window).resize(function() {
					_self.resize();
				})
			}
			_self._bind();
			
			if (options.required || $(input).prop('required')) {
				_self.options.required			= true;
				$(input).prop('required',true)
			}
			
			if (!options.ajax) {
				_self._formValidation();
			}
			
			if (!empty(options.image) && options.editstart == false) {
				
				$(element).data('name',options.image).append($('<img />').addClass('preview').attr('src',options.image));
				
				var tools			= $('<div class="preview tools"></div>');
				var edit			= $('' + this.button.edit + '');
				var del				= $('' + this.button.del + '');
				/*$(edit).unbind('click').click(function(e) {
					e.preventDefault();
					$(element).children().show();
					$(element).find('.final').remove();
					$(input).data('valid',false);
				})*/
				$(del).unbind('click').click(function(e) {
					e.preventDefault();
					_self.reset();
				})
				
				/*if (options.buttonEdit != false) {
					$(tools).append(edit)
				}*/
				
				if (options.buttonDel != false) {
					$(tools).append(del)
				}
				
				$(element).append(tools);
			} else if (!empty(options.image)) {
				_self.readImage(options.image, options.image, options.image,_self.imageMimes[options.image.split('.').pop()]); //$(img).attr('src'),)
			}
			
			if (_self.options.onAfterInitImage) _self.options.onAfterInitImage.call(_self,_self);
		},
		_bind: function() {
			var _self			= this;
			var element			= _self.element;
			var input			= _self.input;
			
			//bind the events
			$(element).unbind('dragover drop mouseout').on({
				dragover: function(event){
					_self.handleDrag(event)
				},
				drop: function(event){
					_self.handleFile(event, $(this))
				},
				mouseout: function() {
					$(document).unbind('mouseup touchend').on('mouseup touchend', function(e) {
						e.preventDefault()
						_self.imageUnhandle();//
					})
					
				}
			});
			
			$(input).unbind('change').change(function(event){
				_self.drag		= false;
				_self.handleFile(event, $(element))
			});
			
			
		},
		
		handleFile: function(event, element) {
			event.stopPropagation();
			event.preventDefault();
			
			var _self		= this;
			var options		= this.options; 
		    var files 		= (_self.drag == false) ? event.originalEvent.target.files : event.originalEvent.dataTransfer.files; // FileList object.
		    _self.drag		= false;
		    
		   // _self.reset();
		    if (options.removeurl != null && !empty($(element).data('name'))) {
				$.ajax({
					type: 'POST',
					url: options.removeurl,
					data: {image: $(element).data('name') },
					success: function(response) {
						if (_self.options.onAfterRemoveImage) _self.options.onAfterRemoveImage.call(_self, response, _self);
						$("#image_path").val('');//Mosaic 16/03/2015
						$("#dummy_path").html('');//Mosaic 21/09/2016

					}
				})
			}
		    
		    $(element).removeClass('notAnImage').addClass('loading');//.unbind('dragover').unbind('drop');
		    
		    for (var i = 0, f; f = files[i]; i++) {
		    	if (!f.type.match('image.*')) {
		    		$(element).addClass('notAnImage');
		    		continue;
		        }

		        var reader = new FileReader();
		        
		        reader.onload = (function(theFile) {
		        	//console.log(theFile);
		        	return function(e) {
		        		$(element).find('img').remove(); 
		        		_self.readImage(reader.result, e.target.result, theFile.name, theFile.type);
		        	};
		        })(f);
		        reader.readAsDataURL(f);
		    }
		    if (_self.options.onAfterSelectImage) _self.options.onAfterSelectImage.call(_self, response, _self);
		},
		
		readImage: function(image, src, name, mimeType) {
			
			var _self		= this;
			var options		= this.options; 
			var element		= this.element;
		    _self.drag		= false;
			
			var img 		= new Image;
    		img.onload 		= function(tmp) {
    			//console.log(tmp);
    			var imgElement		= $('<img src="' + src + '" name="' + name + '" />');
    			var width, height, useWidth, useHeight, ratio, elementRatio;
    			
    			width				= 
    			useWidth			= img.width;
    			height				= 
    			useHeight			= img.height;
    			ratio				= width / height;
    			elementRatio		= $(element).outerWidth() / $(element).outerHeight();
    			//console.log('useWidth: ' + useWidth + 'useHeight: ' + useHeight);
    			//resize image
    			if (options.originalsize == false) {
    				
    				//need to add the option is smaller = true, dont resize
    				//also if the image == 100% the size of the element, dont add extra space
    				
    				useWidth		= $(element).outerWidth() + 40;
    				useHeight		= useWidth / ratio;
    				
    				if (useHeight < $(element).outerHeight()) {
    					useHeight	= $(element).outerHeight() + 40;
    					useWidth	= useHeight * ratio;
    				}
    			} else if (useWidth < $(element).outerWidth() || useHeight < $(element).outerHeight()) {
    				
    				if (options.smaller == true) {
    					//do nothing
    				} else {
	    				if (ratio < elementRatio) {
	    					useWidth	= $(element).outerWidth();
	    					useHeight	= useWidth / ratio;
	    				} else {
	    					useHeight	= $(element).outerHeight();
	    					useWidth	= useHeight * ratio;
	    				}
    				}
    			}
    			//console.log('useWidth: ' + useWidth + 'useHeight: ' + useHeight);
    			var left			= parseFloat(($(element).outerWidth() - useWidth) / 2)// * -1;
    			var top				= parseFloat(($(element).outerHeight() - useHeight) / 2)// * -1;
    			
    			
    			imgElement.css({left: left, top: top, width: useWidth, height: useHeight })
    			
    			_self.image			= $(imgElement).clone().data({ mime: mimeType, width: width, height: height, ratio: ratio, left: left, top: top, useWidth: useWidth, useHeight: useHeight}).addClass('main').bind('mousedown touchstart',function(event) { _self.imageHandle(event)});
    			_self.imageGhost	= (options.ghost) ? $(imgElement).addClass('ghost') : null;

    			//place the images
    			$(element).append($('<div class="cropWrapper"></div>').append($(_self.image)));
    			if (!empty(_self.imageGhost)) {
    				$(element).append(_self.imageGhost);
    			}
    			
    			//$(element).unbind('dragover').unbind('drop');
    			_self._tools();
    			
    			//clean up
    			$(element).removeClass('loading');
    		}
    		img.src					= image;
		},
		
		handleDrag: function(event) {
			var _self			= this;
			_self.drag			= true;
			event.stopPropagation();
			event.preventDefault();
			event.originalEvent.dataTransfer.dropEffect = 'copy';
		},
		imageHandle: function(e) {
			e.preventDefault(); // disable selection
			var event		= (e.originalEvent.touches || e.originalEvent.changedTouches) ? e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] : e;

			var _self			= this;
			var element			= this.element;
			var image			= this.image;
			var options			= this.options;
			
			var height			= image.outerHeight(),
			width				= image.outerWidth(),
			
			cursor_y			= image.offset().top + height - event.pageY,
			cursor_x			= image.offset().left + width - event.pageX;
			
			$(document).on({
				
				'dragstart mousemove touchmove': function(e) {
					
					$('body').css({cursor:'move'});
					
					e.stopImmediatePropagation()
					e.preventDefault();
					
					var event		= (e.originalEvent.touches || e.originalEvent.changedTouches) ? e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] : e;

					var imgTop 		= event.pageY + cursor_y - height,
					imgLeft 		= event.pageX + cursor_x - width;
					var hasBorder	=  ($(element).outerWidth() != $(element).innerWidth());
					
					if (options.smaller == false) {
					
						if(parseInt(imgTop - $(element).offset().top) > 0) { 
							imgTop		= $(element).offset().top + ((hasBorder) ? 1 : 0);
						} else if (imgTop + height < $(element).offset().top + $(element).outerHeight()) {
					    	imgTop		= $(element).offset().top + $(element).outerHeight() - height + ((hasBorder) ? 1 : 0);
					    }
						     
					    if (parseInt(imgLeft - $(element).offset().left) > 0) {
					    	imgLeft		= $(element).offset().left + ((hasBorder) ? 1 : 0);;
					    } else if (imgLeft + width < $(element).offset().left + $(element).outerWidth()) {
					    	imgLeft = $(element).offset().left + $(element).outerWidth() - width + ((hasBorder) ? 1 : 0);;
					    }
					}
					
				    image.offset({
						top:	imgTop,
						left:	imgLeft
					})
					_self._ghost();
				},
				'dragend mouseup touchend': function() {
					_self.imageUnhandle();
				}
			})
			
		},
		imageUnhandle: function() {
			var _self			= this;
			var image			= _self.image;
			
			$(document).unbind('mousemove touchmove');
			$('body').css({cursor:''});
			if (_self.options.onAfterMoveImage) _self.options.onAfterMoveImage.call(_self,_self);
		},
		imageZoom :function(x){
			var _self 				= this;
			var element				= _self.element;
			var image				= _self.image;
			var options				= _self.options;
			
			if (empty(image)) {
				_self._clearTimers();
				return false;
			}
			
			var ratio 				= image.data('ratio');
			var newWidth 			= image.outerWidth() + x;
			var newHeight 			= newWidth / ratio;
			
			if (options.smaller == false) {
				
				//smaller then element?
				if (newWidth < $(element).outerWidth()) {
					newWidth			= $(element).outerWidth();
					newHeight			= newWidth / ratio;
				}
				if (newHeight < $(element).outerHeight()) {
					newHeight			= $(element).outerHeight();
					newWidth			= newHeight * ratio;
				}
			} else {
				if (newWidth < 1 || newHeight < 1) {
					if (newWidth > newHeight) {
						newWidth		= 1;
						newHeight		= newWidth / ratio;
					} else {
						newHeight		= 1
						newWidth		= newHeight * ratio;
					}
				}
			}
			
			var newTop 				= image.css('top').replace(/[^-\d\.]/g, '') - (newHeight - image.outerHeight()) / 2;
			var newLeft 			= image.css('left').replace(/[^-\d\.]/g, '') - (newWidth - image.outerWidth()) / 2;
			
			
			if (options.smaller == false) {
			
				if ($(element).offset().left - newLeft < $(element).offset().left) {
					newLeft				= 0;
				} else if ($(element).outerWidth() > newLeft + $(image).outerWidth() && x <= 0) {
					newLeft				= $(element).outerWidth() - newWidth;
				}
				
				if ($(element).offset().top - newTop < $(element).offset().top) {
					newTop				= 0;
				} else if ($(element).outerHeight() > newTop + $(image).outerHeight() && x <= 0) {
					newTop				= $(element).outerHeight() - newHeight;
				}
			}
			image.css({width: newWidth, height: newHeight, top: newTop, left: newLeft })
			_self._ghost();
			

		},
		imageCrop: function() {
			var _self				= this;
			var element				= _self.element;
			var image				= _self.image;
			var input				= _self.input;
			var options				= _self.options;
			
			var factor				= (options.width != $(element).outerWidth()) ? options.width / $(element).outerWidth() : 1;
			
			var finalWidth, finalHeight, finalTop, finalLeft, imageWidth, imageHeight, imageOriginalWidth, imageOriginalHeight;
			
			finalWidth				= options.width;
			finalHeight				= options.height;
			
			finalTop				= parseInt(Math.round(parseInt($(image).css('top')) * factor))
			finalLeft				= parseInt(Math.round(parseInt($(image).css('left')) * factor))
			imageWidth				= parseInt(Math.round($(image).width() * factor));
			imageHeight				= parseInt(Math.round($(image).height() * factor));
			imageOriginalWidth		= $(image).data('width');
			imageOriginalHeight		= $(image).data('height');
			
			
			
			finalTop				= finalTop || 0;
			finalLeft				= finalLeft || 0;
			
			var obj					= {name: $(image).attr('name'), imageOriginalWidth: imageOriginalWidth, imageOriginalHeight: imageOriginalHeight, imageWidth: imageWidth, imageHeight: imageHeight, width: finalWidth, height: finalHeight, left: finalLeft, top: finalTop}

			$(element).find('.tools').children().toggle();
			$(element).find('.tools').append($(_self.button.saving));
			
			if (options.canvas == true) {
				
	            var canvas          = $('<canvas class="final" id="canvas_' + $(input).attr('name') + '" width="' + finalWidth + '" height="' + finalHeight + '" style="position:absolute; top: 0; bottom: 0; left: 0; right: 0; z-index:100; width: 100%; height: 100%;"></canvas>');
	            
	            $(element).append(canvas);
	            
	            var canvasContext   = $(canvas)[0].getContext('2d');
	            var imageObj        = new Image();

	            //canvasContext.fillStyle = "rgba(255, 255, 255, 0)";
	            //canvasContext.clearRect(0,0,finalWidth,finalHeight);
	            
	            imageObj.onload = function() {
	            	
	            	
	                var canvasTmp			= $('<canvas width="' + imageWidth + '" height="' + imageHeight + '"></canvas>');
	                var canvasTmpContext    = $(canvasTmp)[0].getContext('2d');
	                var tmpImage			= $('<img src="" />');

	                //canvasTmpContext.fillStyle = "rgba(255, 255, 255, 0)";
	                //canvasTmpContext.clearRect(0,0,imageWidth,imageHeight);
	                canvasTmpContext.drawImage(imageObj, 0, 0, imageWidth, imageHeight);
	                //$(element).append(canvasTmp);
	                var tmpObj				= new Image();
	                tmpObj.onload = function() {
	                	
	                	if (options.canvasImageOnly == true) {
	                		var _imageWidth		= imageWidth;
	                		var _imageHeight	= imageHeight;
	                		if (finalLeft < 0) {
	                			_imageWidth		+= finalLeft;
	                		} else if (finalLeft + imageWidth > finalWidth) {
	                			_imageWidth		= finalWidth - finalLeft
	                		}
	                		if (finalTop  < 0) {
	                			_imageHeight	+= finalTop;
	                		} else if (finalTop + imageHeight > finalHeight) {
	                			_imageHeight	= finalHeight - finalTop
	                		}
	                		
	                		var canvasImageOnly			= $('<canvas width="' + _imageWidth + '" height="' + _imageHeight + '"></canvas>');
	    	                var canvasImageOnlyContext  = $(canvasImageOnly)[0].getContext('2d');
	    	                canvasImageOnlyContext.drawImage(tmpObj, ((finalLeft < 0) ? finalLeft : 0), ((finalTop < 0) ? finalTop : 0), imageWidth, imageHeight);
	    	                
	                	}
		                	
	                	if (imageWidth < finalWidth || imageHeight < finalHeight) {
	                		canvasContext.drawImage(tmpObj, finalLeft, finalTop, imageWidth, imageHeight);
	                	} else {
	                	   	canvasContext.drawImage(tmpObj, finalLeft*-1, finalTop*-1, finalWidth, finalHeight, 0,0,finalWidth, finalHeight);
	                	}
	                	
	                	
	                	var dataUrl		= (options.canvasImageOnly == true) ? $(canvasImageOnly)[0].toDataURL(image.data('mime')) : $(canvas)[0].toDataURL(image.data('mime'))
	                	
	                			
	                	if (options.save == false) {
	                		
	                		$(element).find('.tools .saving').remove();
							$(element).find('.tools').children().toggle();
	                		
	                		if (_self.options.onSave) _self.options.onSave.call(_self,$.extend(obj, options.data, {data: dataUrl}));
	        				_self.imageFinal();
	                		
	                	} else if (options.ajax == true) {
	                		
	                		_self._ajax($.extend({data: dataUrl}, obj));
	                		
	                	} else {
	                		
	                		var json		= JSON.stringify($.extend({data: dataUrl},obj));
	        				$(input).after($('<input type="text" name="' + $(input).attr('name') + '_values" class="final" />').val(json));
	        				
	        				$(input).data('required',$(input).prop('required'));
	        				$(input).prop('required',false);
	        				$(input).wrap('<form>').parent('form').trigger('reset');
	        				$(input).unwrap();
	        				
	        				$(element).find('.tools .saving').remove();
							$(element).find('.tools').children().toggle();
	        				
	        				_self.imageFinal();
	                	}
	                	
	                }
	                tmpObj.src			= $(canvasTmp)[0].toDataURL(image.data('mime'));
	                

	            };
	            imageObj.src = $(image).attr('src');
	            
	            if (options.saveOriginal === true) {
	            	//console.log($(image).attr('src'));
	            	obj			= $.extend({original: $(image).attr('src')}, obj);
	            }
	            
			} else {
				if (options.ajax == true) {
					
					_self._ajax($.extend({data: $(image).attr('src'),saveOriginal: options.saveOriginal}, obj));
					
				} else {
					var finalImage		= $(element).find('.cropWrapper').clone();
					$(finalImage).addClass('final').show().unbind().children().unbind()
					$(element).append($(finalImage));

					_self.imageFinal();
					
					var json		= JSON.stringify(obj);
					$(input).after($('<input type="text" name="' + $(input).attr('name') + '_values" class="final" />').val(json));
				}
			}
		},
		_ajax: function(obj) {
			var _self				= this;
			var element				= _self.element;
			var image				= _self.image;
			var options				= _self.options;
			
			if (options.dimensionsonly == true) {
				delete obj.data;
			}
			
			$.ajax({
				type: 'POST',
				url: options.url,
				data: $.extend(obj, options.data),
				success: function(response) {
					var response = JSON.parse(response);
					//Mosaic update 16/03/2015
					//console.log(response.status);
					if (response.status == "success") {
						var file		= response.url.split('?');
						$(element).find('.tools .saving').remove();
						$(element).find('.tools').children().toggle();
						$(element).data('name',file[0])
						$(element).data('filename',response.filename)
						if (options.canvas != true) {
							$(element).append($('<img src="' + file[0] + '" class="final" style="width: 100%" />'));
						}
						
						_self.imageFinal();
						console.log(response.url);
						$("#image_path").val(response.path);
						$("#dummy_path").html(response.path);
					} else {
						$(element).find('.tools .saving').remove();
						$(element).find('.tools').children().toggle();
						$(element).append($('<div class="alert alert-danger">' + response.error + '</div>').css({bottom: '10px',left: '10px',right: '10px',position: 'absolute', zIndex: 99}));
						setTimeout(function() { _self.responseReset();},2000);
					}
				},
				error: function(response, status) {
					$(element).find('.tools .saving').remove();
					$(element).find('.tools').children().toggle();
					$(element).append($('<div class="alert alert-danger"><strong>' + response.status + '</strong> ' + response.statusText + '</div>').css({bottom: '10px',left: '10px',right: '10px',position: 'absolute', zIndex: 99}));
					setTimeout(function() { _self.responseReset();},2000);
				}
			})
		},
		imageReset: function() {
			var _self			= this;
			var image			= _self.image;
			var element			= _self.element;
			
			$(image).css({width: image.data('useWidth'), height: image.data('useHeight'), top: image.data('top'), left: image.data('left')})
			_self._ghost();
			
			if (_self.options.onAfterResetImage) _self.options.onAfterResetImage.call(_self,_self);
		},
		imageFinal: function() {
			var _self			= this;
			var element			= _self.element;
			var input			= _self.input;
			var options			= _self.options;
			
			//remove all children except final
			$(element).addClass('done');
			$(element).children().not('.final').hide();
			
			//create tools element
			var tools		= $('<div class="tools final">');
			
			//edit option after crop
			if (options.buttonEdit != false) {
				$(tools).append($(_self.button.edit).click(function() {
					$(element).children().show();
					$(element).find('.final').remove();
					$(input).data('valid',false);
				}));
			}
			
			//delete option after crop
			if (options.buttonDel != false) {
				$(tools).append($(_self.button.del).click(function(e){
					_self.reset();
				}))
			}
			
			//append tools to element
			$(element).append(tools);
			$(element).unbind();
			
			//download
			if (options.download == true) {
				var download	= $('<div class="download final"/>');
				$(download).append($(_self.button.download).attr('download',$(_self.image).attr('name')).click(function(e) {
					$(this).attr('href',$(element).find('canvas.final')[0].toDataURL(_self.image.data('mime')));
				}))
				$(element).append(download);
			}
			
			//set input to valid for form upload
			$(input).unbind().data('valid',true);
			
			//custom function after process image;
			if (_self.options.onAfterProcessImage) _self.options.onAfterProcessImage.call(_self,_self);
		},
		responseReset: function() {
			var _self			= this;
			var element			= _self.element;
			
			//remove responds from ajax event
			$(element).find('.alert').remove(); 
			
		},
		reset: function() {
			var _self			= this;
			var element			= _self.element;
			var input			= _self.input;
			var options			= _self.options;
			_self.image			= null;
			
			
			$(element).find('.preview').remove();
			$(element).removeClass('loading done').children().show().not('input[type=file]').remove();
			$(input).wrap('<form>').parent('form').trigger('reset');
			$(input).unwrap();
			$(input).prop('required',$(input).data('required') || options.required || false).data('valid',false);
			_self._bind();
			
			if (options.removeurl != null && !empty($(element).data('name'))) {
				$.ajax({
					type: 'POST',
					url: options.removeurl,
					data: {image: $(element).data('name') },
					success: function(response) {
						if (_self.options.onAfterRemoveImage) _self.options.onAfterRemoveImage.call(_self, response, _self);
						$("#image_path").val('');//Mosaic 16/03/2015
					}
				})
			}
			$(element).data('name',null);
			
			if (_self.imageGhost) {
				$(_self.imageGhost).remove();
				_self.imageGhost	= null;
			}
			
			if (_self.options.onAfterCancel) _self.options.onAfterCancel.call(_self);
		},
		resize: function() {
			var _self			= this;
			var options			= _self.options;
			var element			= _self.element;
			var image			= _self.image;
			
			if (options.resize !== true) return false;
			
			var oldWidth		= $(element).outerWidth();
			var width			= $(element).offsetParent().width() * (_self.widthPercentage / 100);
			var factor			= width / oldWidth
			var height			= $(element).outerHeight() * factor;
			
			
			
			$(element).css({height:height, width: width});
			
			if (width < 240) {
				if (!$(element).hasClass('smalltools smalltext')) {
					$(element).addClass('smalltools smalltext smalladded');
				}
			} else {
				if ($(element).hasClass('smalladded')) {
					$(element).removeClass('smalltools smalltext smalladded');
				}
			}
			
			if (!empty(image)) {
				//console.log(image.offset());
				$(image).css({left: $(image).css('left').replace(/[^-\d\.]/g, '') * factor + 'px', top: $(image).css('top').replace(/[^-\d\.]/g, '')  * factor + 'px'})
				$(image).width($(image).width() * factor);
				$(image).height($(image).height()  * factor);
				
				_self._ghost();
			}
			//console.log('resize plugin');
			return true;
		},

		reinit: function() {
			
			var _self			= this;
			var element			= _self.element;
			
			this.resize();
			this._bind();
			
			return true;
		},
		modal: function() {
			var _self			= this;
			var element			= _self.element;
			
			$(element).attr('style',$(element).data('style'));
			$(element).attr('class',$(element).data('class'));
			
			_self._init();
			
			return this;
		},
		
		_ghost: function() {
			var _self			= this;
			var options			= _self.options;
			var image			= _self.image;
			var ghost			= _self.imageGhost;
			
			//if set to true, mirror all drag events 
			//function in one place, much needed
			if (options.ghost == true && !empty(ghost)) {
				$(ghost).css({width: image.css('width'), height: image.css('height'), top: image.css('top'), left: image.css('left')})
			}
		},
		_tools: function() {
			var _self			= this;
			var element			= _self.element;
			var tools			= $('<div class="tools"></div>');
			var options			= _self.options;
			
			//zoomin button
			if (options.buttonZoomin != false) {
				$(tools).append($(_self.button.zoomin).on({
					'touchstart mousedown': function(e) { 
						e.preventDefault();
						_self.interval 		= window.setInterval(function(){ 
							_self.imageZoom(2); 
						},1);
					},
					'touchend mouseup mouseleave': function(e) {
						e.preventDefault();
						window.clearInterval(_self.interval);
						if (_self.options.onAfterZoomImage) _self.options.onAfterZoomImage.call(_self,_self);
					}
				}));
			}
			
			//zoomreset button (set the image to the "original" size, same size as when selecting the image
			if (options.buttonZoomreset != false) {
				$(tools).append($(_self.button.zoomreset).on({
					'touchstart click': function(e) {
						e.preventDefault();
						_self.imageReset();
					}
				}));
			}
			
			//zoomout button
			if (options.buttonZoomout != false) {
				$(tools).append($(_self.button.zoomout).on({
					'touchstart mousedown': function(e) { 
						e.preventDefault();
						_self.interval 		= window.setInterval(function(){ 
							_self.imageZoom(-2); 
						},1);
					},
					'touchend mouseup mouseleave': function(e) {
						e.preventDefault();
						window.clearInterval(_self.interval);
						if (_self.options.onAfterZoomImage) _self.options.onAfterZoomImage.call(_self,_self);
					}
				}));
			}			
			//cancel button (removes the image and resets it to the original init event
			if (options.buttonCancel != false) {
				$(tools).append($(_self.button.cancel).on({
					'touchstart touchend click': function(e) { 
						e.preventDefault();
						_self.reset() 
					}
				}));
			}
			//done button (crop the image!) 
			if (options.buttonDone != false) {
				$(tools).append($(_self.button.done).on({
					'touchstart click': function(e) { 
						e.preventDefault();
						_self.imageCrop() 
					}
				}));
			}
			
			$(element).append($(tools));
			
		},
		_clearTimers: function() {
			//function to clear all timers, just to be sure!
			var interval_id = window.setInterval("", 9999);
			for (var i = 1; i < interval_id; i++)
				window.clearInterval(i);
		},
		_formValidation: function() {
			var _self				= this;
			var element				= _self.element;
			var input				= _self.input;
			
			$(element).closest('form').submit(function(e) {
				
				//e.stopPropagation();
				$(this).find('input[type=file]').each(function(i, el) {
					if ($(el).prop('required')) {
						if ($(el).data('valid') !== true) {
							e.preventDefault();
							return false;
						}
					}
				}) 
				
				return true;
			})
			
		}
		
	}
	
	$.fn.html5imageupload = function (options) {
		if ($.data(this, "html5imageupload")) return;
		return $(this).each(function() {
			$.data(this, "html5imageupload",new $.html5imageupload(options, this));
		})
	}
	
})(window, jQuery);


function empty(mixed_var) {
	//discuss at: http://phpjs.org/functions/empty/
	// original by: Philippe Baumann
	//    input by: Onno Marsman
	//    input by: LH
	//    input by: Stoyan Kyosev (http://www.svest.org/)
	// bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// improved by: Onno Marsman
	// improved by: Francesco
	// improved by: Marc Jansen
	// improved by: Rafal Kukawski
	
	var undef, key, i, len;
	var emptyValues = [undef, null, false, 0, '', '0'];

	for (i = 0, len = emptyValues.length; i < len; i++) {
		if (mixed_var === emptyValues[i]) {
			return true;
		}
	}

	if (typeof mixed_var === 'object') {
		for (key in mixed_var) {
			return false;
	    }
	    return true;
	}
	return false;
}
/*/Srcipts for Promagazine/*/
$('#retrievingfilename').html5imageupload({
  onAfterProcessImage: function() {
    $('#filename').val($(this.element).data('name'));
  },
  onAfterCancel: function() {
    $('#filename').val('');
  }  
});
console.log($.html5imageupload);
$('#save').html5imageupload({
  onSave: function(data) {
    console.log(data);
  },
});

$('.dropzone').html5imageupload({
	
onAfterCancel: function() {
	$('#image_path').val('');
}
});
    
$( "#myModal" ).on('shown.bs.modal', function(){
  $('#modaldialog').html5imageupload();
});

Youez - 2016 - github.com/yon3zu
LinuXploit