diff --git a/croppic.js b/croppic.js
index 8d0fe1a..c0136a2 100644
--- a/croppic.js
+++ b/croppic.js
@@ -20,6 +20,7 @@
cropUrl:'',
cropData:{},
outputUrlId:'',
+
//styles
imgEyecandy:true,
imgEyecandyOpacity:0.2,
@@ -51,7 +52,7 @@
};
// OVERWRITE DEFAULT OPTIONS
- for (i in options) that.options[i] = options[i];
+ for(i in options) that.options[i] = options[i];
// INIT THE WHOLE DAMN THING!!!
that.init();
@@ -78,20 +79,20 @@
imgEyecandy:{},
form:{},
iframeform: {},
- iframeobj: {},
+ iframeobj: {},
cropControlsUpload:{},
cropControlsCrop:{},
cropControlZoomMuchIn:{},
cropControlZoomMuchOut:{},
cropControlZoomIn:{},
- cropControlZoomOut:{},
- cropControlCrop:{},
+ cropControlZoomOut:{},
+ cropControlCrop:{},
cropControlReset:{},
cropControlRemoveCroppedImage:{},
modal:{},
loader:{},
- init: function () {
+ init: function(){
var that = this;
that.objW = that.obj.width();
@@ -100,67 +101,76 @@
// reset rotation
that.actualRotation = 0;
- if( $.isEmptyObject(that.defaultImg)){ that.defaultImg = that.obj.find('img'); }
+ if($.isEmptyObject(that.defaultImg)){
+ that.defaultImg = that.obj.find('img');
+ }
that.createImgUploadControls();
- if( $.isEmptyObject(that.options.loadPicture)){
+ if($.isEmptyObject(that.options.loadPicture)){
that.bindImgUploadControl();
- }else{
+ } else {
that.loadExistingImage();
}
},
+
createImgUploadControls: function(){
var that = this;
var cropControlUpload = '';
- if(that.options.customUploadButtonId ===''){ cropControlUpload = ''; }
+ if(that.options.customUploadButtonId ===''){
+ cropControlUpload = '';
+ }
var cropControlRemoveCroppedImage = '';
- if( $.isEmptyObject(that.croppedImg)){ cropControlRemoveCroppedImage=''; }
- if( !$.isEmptyObject(that.options.loadPicture)){ cropControlUpload='';}
+ if($.isEmptyObject(that.croppedImg)){ cropControlRemoveCroppedImage=''; }
+ if(!$.isEmptyObject(that.options.loadPicture)){ cropControlUpload='';}
- var html = '
' + cropControlUpload + cropControlRemoveCroppedImage + '
';
+ var html = '' + cropControlUpload + cropControlRemoveCroppedImage + '
';
that.outputDiv.append(html);
that.cropControlsUpload = that.outputDiv.find('.cropControlsUpload');
- if(that.options.customUploadButtonId ===''){ that.imgUploadControl = that.outputDiv.find('.cropControlUpload'); }
- else{ that.imgUploadControl = $('#'+that.options.customUploadButtonId); that.imgUploadControl.show(); }
+ if(that.options.customUploadButtonId ===''){
+ that.imgUploadControl = that.outputDiv.find('.cropControlUpload');
+ } else{
+ that.imgUploadControl = $('#'+that.options.customUploadButtonId);
+ that.imgUploadControl.show();
+ }
- if( !$.isEmptyObject(that.croppedImg)){
+ if(!$.isEmptyObject(that.croppedImg)){
that.cropControlRemoveCroppedImage = that.outputDiv.find('.cropControlRemoveCroppedImage');
}
},
+
bindImgUploadControl: function(){
-
var that = this;
// CREATE UPLOAD IMG FORM
- var formHtml = '';
+ var formHtml = '';
that.outputDiv.append(formHtml);
that.form = that.outputDiv.find('.'+that.id+'_imgUploadForm');
// CREATE FALLBACK IE9 IFRAME
- var fileUploadId = that.CreateFallbackIframe();
+ var fileUploadId = that.CreateFallbackIframe();
that.imgUploadControl.off('click');
that.imgUploadControl.on('click',function(){
if (fileUploadId === "") {
- that.form.find('input[type="file"]').trigger('click');
- } else {
- //Trigger iframe file input click, otherwise access restriction error
- that.iframeform.find('input[type="file"]').trigger('click');
- }
- });
+ that.form.find('input[type="file"]').trigger('click');
+ } else {
+ //Trigger iframe file input click, otherwise access restriction error
+ that.iframeform.find('input[type="file"]').trigger('click');
+ }
+ });
- if( !$.isEmptyObject(that.croppedImg)){
+ if(!$.isEmptyObject(that.croppedImg)){
- that.cropControlRemoveCroppedImage.on('click',function(){
- if (typeof (that.options.onBeforeRemoveCroppedImg) === typeof(Function)) {
+ that.cropControlRemoveCroppedImage.on('click', function(){
+ if(typeof (that.options.onBeforeRemoveCroppedImg) === typeof(Function)){
that.options.onBeforeRemoveCroppedImg.call(that);
}
@@ -168,62 +178,62 @@
that.croppedImg = {};
$(this).hide();
- if (typeof (that.options.onAfterRemoveCroppedImg) === typeof(Function)) {
+ if(typeof (that.options.onAfterRemoveCroppedImg) === typeof(Function)) {
that.options.onAfterRemoveCroppedImg.call(that);
}
- if( !$.isEmptyObject(that.defaultImg)){
+ if(!$.isEmptyObject(that.defaultImg)){
that.obj.append(that.defaultImg);
}
- if(that.options.outputUrlId !== ''){ $('#'+that.options.outputUrlId).val(''); }
-
- });
+ if(that.options.outputUrlId !== ''){
+ $('#'+that.options.outputUrlId).val('');
+ }
+ });
}
-
+
that.form.find('input[type="file"]').change(function(){
- if (that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
+ if(that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
that.showLoader();
that.imgUploadControl.hide();
- if(that.options.processInline){
-
+ if(that.options.processInline){
+
var reader = new FileReader();
- reader.onload = function (e) {
+ reader.onload = function (e){
var image = new Image();
image.src = e.target.result;
image.onload = function(){
that.imgInitW = that.imgW = image.width;
that.imgInitH = that.imgH = image.height;
- if(that.options.modal){ that.createModal(); }
- if( !$.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
+ if(that.options.modal){ that.createModal(); }
+ if(!$.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
- that.imgUrl=image.src;
+ that.imgUrl = image.src;
that.obj.append('
');
that.initCropper();
that.hideLoader();
- if (that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
-
+ if(that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
}
};
reader.readAsDataURL(that.form.find('input[type="file"]')[0].files[0]);
- } else {
-
+ } else {
+
formData = new FormData(that.form[0]);
- for (var key in that.options.uploadData) {
- if( that.options.uploadData.hasOwnProperty(key) ) {
- formData.append( key , that.options.uploadData[key] );
+ for(var key in that.options.uploadData){
+ if(that.options.uploadData.hasOwnProperty(key)){
+ formData.append(key , that.options.uploadData[key]);
}
- }
+ }
$.ajax({
url: that.options.uploadUrl,
@@ -233,22 +243,23 @@
contentType: false,
processData: false,
type: 'POST'
- }).always(function (data) {
+ }).always(function(data){
that.afterUpload(data);
});
}
- });
+ });
+
+ },
- },
loadExistingImage: function(){
var that = this;
- if( $.isEmptyObject(that.croppedImg)){
- if (that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
+ if($.isEmptyObject(that.croppedImg)){
+ if(that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
that.showLoader();
- if(that.options.modal){ that.createModal(); }
- if( !$.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
+ if(that.options.modal){ that.createModal(); }
+ if(!$.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
that.imgUrl=that.options.loadPicture ;
@@ -262,38 +273,39 @@
if (that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
});
- }else{
+ } else {
that.cropControlRemoveCroppedImage.on('click',function(){
that.croppedImg.remove();
$(this).hide();
- if( !$.isEmptyObject(that.defaultImg)){
+ if(!$.isEmptyObject(that.defaultImg)){
that.obj.append(that.defaultImg);
- }
- if(that.options.outputUrlId !== ''){ $('#'+that.options.outputUrlId).val(''); }
+ }
+
+ if(that.options.outputUrlId !== ''){$('#'+that.options.outputUrlId).val(''); }
that.croppedImg = '';
that.reset();
- });
+ });
}
},
+
afterUpload: function(data){
- var that = this;
+ var that = this;
- response = typeof data =='object' ? data : jQuery.parseJSON(data);
+ response = typeof data =='object' ? data : jQuery.parseJSON(data);
-
- if (response.status == 'success') {
+ if(response.status == 'success'){
- that.imgInitW = that.imgW = response.width;
- that.imgInitH = that.imgH = response.height;
+ that.imgInitW = that.imgW = response.width;
+ that.imgInitH = that.imgH = response.height;
- if (that.options.modal) { that.createModal(); }
- if (!$.isEmptyObject(that.croppedImg)) { that.croppedImg.remove(); }
+ if(that.options.modal){ that.createModal(); }
+ if(!$.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
- that.imgUrl = response.url;
+ that.imgUrl = response.url;
- var img = $('
')
+ var img = $('
')
that.obj.append(img);
@@ -302,17 +314,17 @@
that.hideLoader();
if (that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
});
-
- if (that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
- }
+ if(that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
- if (response.status == 'error') {
- if (that.options.onError) that.options.onError.call(that,response.message);
+ }
+
+ if(response.status == 'error'){
+ if(that.options.onError) that.options.onError.call(that,response.message);
that.hideLoader();
- setTimeout( function(){ that.reset(); },2000)
- }
- },
+ setTimeout(function(){ that.reset(); },2000)
+ }
+ },
createModal: function(){
var that = this;
@@ -325,8 +337,8 @@
that.modal = $('#croppicModal');
that.obj = $('#croppicModalObj');
-
},
+
destroyModal: function(){
var that = this;
@@ -334,6 +346,7 @@
that.modal.remove();
that.modal = {};
},
+
initCropper: function(){
var that = this;
@@ -348,32 +361,48 @@
that.initDrag();
that.initialScaleImg();
},
+
createEyecandy: function(){
var that = this;
that.imgEyecandy = that.img.clone();
- that.imgEyecandy.css({'z-index':'0','opacity':that.options.imgEyecandyOpacity}).appendTo(that.obj);
+ that.imgEyecandy.css({
+ 'z-index':'0',
+ 'opacity':that.options.imgEyecandyOpacity
+ }).appendTo(that.obj);
},
+
destroyEyecandy: function(){
var that = this;
that.imgEyecandy.remove();
},
- initialScaleImg:function(){
+
+ initialScaleImg: function(){
var that = this;
that.zoom(-that.imgInitW);
that.zoom(40);
// Adding mousewheel zoom capabilities
if (that.options.enableMousescroll){
- that.img.on('mousewheel', function(event) {
+ that.img.on('mousewheel', function(event){
event.preventDefault();
- that.zoom(that.options.zoomFactor*event.deltaY);
+ that.zoom(that.options.zoomFactor*event.deltaY);
});
}
+
// initial center image
-
- that.img.css({'left': -(that.imgW -that.objW)/2, 'top': -(that.imgH -that.objH)/2, 'position':'relative'});
- if(that.options.imgEyecandy){ that.imgEyecandy.css({'left': -(that.imgW -that.objW)/2, 'top': -(that.imgH -that.objH)/2, 'position':'relative'}); }
+ that.img.css({
+ 'left': -(that.imgW -that.objW)/2,
+ 'top': -(that.imgH -that.objH)/2,
+ 'position':'relative'
+ });
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css({
+ 'left': -(that.imgW -that.objW)/2,
+ 'top': -(that.imgH -that.objH)/2,
+ 'position':'relative'
+ });
+ }
},
@@ -386,12 +415,10 @@
var cropControlZoomOut = '';
var cropControlZoomMuchOut = '';
var cropControlRotateLeft = '';
- var cropControlRotateRight = '';
- var cropControlCrop = '';
+ var cropControlRotateRight = '';
+ var cropControlCrop = '';
var cropControlReset = '';
- var html;
-
if(that.options.doubleZoomControls){
cropControlZoomMuchIn = '';
cropControlZoomMuchOut = '';
@@ -401,7 +428,7 @@
cropControlRotateRight = '';
}
- html = ''+ cropControlZoomMuchIn + cropControlZoomIn + cropControlZoomOut + cropControlZoomMuchOut + cropControlRotateLeft + cropControlRotateRight + cropControlCrop + cropControlReset + '
';
+ var html = ''+ cropControlZoomMuchIn + cropControlZoomIn + cropControlZoomOut + cropControlZoomMuchOut + cropControlRotateLeft + cropControlRotateRight + cropControlCrop + cropControlReset + '
';
that.obj.append(html);
@@ -410,67 +437,86 @@
// CACHE AND BIND CONTROLS
if(that.options.doubleZoomControls){
that.cropControlZoomMuchIn = that.cropControlsCrop.find('.cropControlZoomMuchIn');
- that.cropControlZoomMuchIn.on('click',function(){ that.zoom( that.options.zoomFactor*10 ); });
+ that.cropControlZoomMuchIn.on('click', function(){
+ that.zoom(that.options.zoomFactor*10);
+ });
that.cropControlZoomMuchOut = that.cropControlsCrop.find('.cropControlZoomMuchOut');
- that.cropControlZoomMuchOut.on('click',function(){ that.zoom(-that.options.zoomFactor*10); });
+ that.cropControlZoomMuchOut.on('click', function(){
+ that.zoom(-that.options.zoomFactor*10);
+ });
}
that.cropControlZoomIn = that.cropControlsCrop.find('.cropControlZoomIn');
- that.cropControlZoomIn.on('click',function(){ that.zoom(that.options.zoomFactor); });
+ that.cropControlZoomIn.on('click', function(){
+ that.zoom(that.options.zoomFactor);
+ });
that.cropControlZoomOut = that.cropControlsCrop.find('.cropControlZoomOut');
- that.cropControlZoomOut.on('click',function(){ that.zoom(-that.options.zoomFactor); });
+ that.cropControlZoomOut.on('click', function(){
+ that.zoom(-that.options.zoomFactor);
+ });
that.cropControlZoomIn = that.cropControlsCrop.find('.cropControlRotateLeft');
- that.cropControlZoomIn.on('click', function() { that.rotate(-that.options.rotateFactor); });
-
- that.cropControlZoomOut = that.cropControlsCrop.find('.cropControlRotateRight');
- that.cropControlZoomOut.on('click', function() { that.rotate(that.options.rotateFactor); });
-
- that.cropControlCrop = that.cropControlsCrop.find('.cropControlCrop');
- that.cropControlCrop.on('click',function(){ that.crop(); });
+ that.cropControlZoomIn.on('click', function(){
+ that.rotate(-that.options.rotateFactor);
+ });
+
+ that.cropControlZoomOut = that.cropControlsCrop.find('.cropControlRotateRight');
+ that.cropControlZoomOut.on('click', function(){
+ that.rotate(that.options.rotateFactor);
+ });
+
+ that.cropControlCrop = that.cropControlsCrop.find('.cropControlCrop');
+ that.cropControlCrop.on('click', function(){
+ that.crop();
+ });
that.cropControlReset = that.cropControlsCrop.find('.cropControlReset');
- that.cropControlReset.on('click',function(){ that.reset(); });
-
+ that.cropControlReset.on('click', function(){
+ that.reset();
+ });
},
- initDrag:function(){
+
+ initDrag: function(){
var that = this;
+
+ var isMobile = function(e){
+ return userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/android/i) || (e.pageY && e.pageX) == undefined
+ };
that.img.on("mousedown touchstart", function(e) {
e.preventDefault(); // disable selection
var pageX;
- var pageY;
- var userAgent = window.navigator.userAgent;
- if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/android/i) || (e.pageY && e.pageX) == undefined) {
- pageX = e.originalEvent.touches[0].pageX;
- pageY = e.originalEvent.touches[0].pageY;
- } else {
- pageX = e.pageX;
- pageY = e.pageY;
- }
-
- var z_idx = that.img.css('z-index'),
- drg_h = that.img.outerHeight(),
- drg_w = that.img.outerWidth(),
- pos_y = that.img.offset().top + drg_h - pageY,
- pos_x = that.img.offset().left + drg_w - pageX;
+ var pageY;
+ var userAgent = window.navigator.userAgent;
+ if(isMobile(e)){
+ pageX = e.originalEvent.touches[0].pageX;
+ pageY = e.originalEvent.touches[0].pageY;
+ } else {
+ pageX = e.pageX;
+ pageY = e.pageY;
+ }
+
+ var z_idx = that.img.css('z-index');
+ var drg_h = that.img.outerHeight();
+ var drg_w = that.img.outerWidth();
+ var pos_y = that.img.offset().top + drg_h - pageY;
+ var pos_x = that.img.offset().left + drg_w - pageX;
- that.img.css('z-index', 1000).on("mousemove touchmove", function(e) {
-
+ that.img.css('z-index', 1000).on("mousemove touchmove", function(e){
var imgTop;
var imgLeft;
- if (userAgent.match(/iPad/i) || userAgent.match(/iPhone/i) || userAgent.match(/android/i) || (e.pageY && e.pageX) == undefined) {
- imgTop = e.originalEvent.touches[0].pageY + pos_y - drg_h;
- imgLeft = e.originalEvent.touches[0].pageX + pos_x - drg_w;
- } else {
- imgTop = e.pageY + pos_y - drg_h;
- imgLeft = e.pageX + pos_x - drg_w;
- }
+ if (isMobile(e)) {
+ imgTop = e.originalEvent.touches[0].pageY + pos_y - drg_h;
+ imgLeft = e.originalEvent.touches[0].pageX + pos_x - drg_w;
+ } else {
+ imgTop = e.pageY + pos_y - drg_h;
+ imgLeft = e.pageX + pos_x - drg_w;
+ }
that.img.offset({
top:imgTop,
@@ -481,83 +527,132 @@
if(that.options.imgEyecandy){ that.imgEyecandy.offset({ top:imgTop, left:imgLeft }); }
- if (that.objH < that.imgH) {
- if (parseInt(that.img.css('top')) > 0) { that.img.css('top', 0); if (that.options.imgEyecandy) { that.imgEyecandy.css('top', 0);}}
- var maxTop = -( that.imgH - that.objH); if (parseInt(that.img.css('top')) < maxTop) { that.img.css('top', maxTop); if (that.options.imgEyecandy) { that.imgEyecandy.css('top', maxTop); }}
- }else{
- if (parseInt(that.img.css('top')) < 0) { that.img.css('top', 0); if (that.options.imgEyecandy) { that.imgEyecandy.css('top', 0); }}
- var maxTop = that.objH - that.imgH; if (parseInt(that.img.css('top')) > maxTop) { that.img.css('top', maxTop);if (that.options.imgEyecandy) {that.imgEyecandy.css('top', maxTop); }}
+ if(that.objH < that.imgH){
+ if(parseInt(that.img.css('top')) > 0){
+ that.img.css('top', 0);
+
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('top', 0);
+ }
+ }
+
+ var maxTop = -(that.imgH - that.objH);
+ if(parseInt(that.img.css('top')) < maxTop){
+ that.img.css('top', maxTop);
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('top', maxTop);
+ }
+ }
+ } else {
+ if(parseInt(that.img.css('top')) < 0){
+ that.img.css('top', 0);
+
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('top', 0);
+ }
+ }
+
+ var maxTop = that.objH - that.imgH;
+ if(parseInt(that.img.css('top')) > maxTop){
+ that.img.css('top', maxTop);
+
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('top', maxTop);
+ }
+ }
}
- if (that.objW < that.imgW) {
- if( parseInt( that.img.css('left')) > 0 ){ that.img.css('left',0); if(that.options.imgEyecandy){ that.imgEyecandy.css('left', 0); }}
- var maxLeft = -( that.imgW-that.objW); if( parseInt( that.img.css('left')) < maxLeft){ that.img.css('left', maxLeft); if(that.options.imgEyecandy){ that.imgEyecandy.css('left', maxLeft); } }
- }else{
- if( parseInt( that.img.css('left')) < 0 ){ that.img.css('left',0); if(that.options.imgEyecandy){ that.imgEyecandy.css('left', 0); }}
- var maxLeft = ( that.objW - that.imgW); if( parseInt( that.img.css('left')) > maxLeft){ that.img.css('left', maxLeft); if(that.options.imgEyecandy){ that.imgEyecandy.css('left', maxLeft); } }
+ if(that.objW < that.imgW){
+ if(parseInt(that.img.css('left')) > 0 ){
+ that.img.css('left',0);
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('left', 0);
+ }
+ }
+
+ var maxLeft = -(that.imgW-that.objW);
+ if(parseInt(that.img.css('left')) < maxLeft){
+ that.img.css('left', maxLeft);
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('left', maxLeft);
+ }
+ }
+ } else {
+ if(parseInt(that.img.css('left')) < 0){
+ that.img.css('left', 0);
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('left', 0);
+ }
+ }
+ var maxLeft = (that.objW - that.imgW);
+ if(parseInt(that.img.css('left')) > maxLeft){
+ that.img.css('left', maxLeft);
+ if(that.options.imgEyecandy){
+ that.imgEyecandy.css('left', maxLeft);
+ }
+ }
}
- if (that.options.onImgDrag) that.options.onImgDrag.call(that);
-
+
+ if(that.options.onImgDrag) that.options.onImgDrag.call(that);
});
-
- }).on("mouseup", function() {
+
+ }).on("mouseup", function(){
that.img.off("mousemove");
- }).on("mouseout", function() {
+ }).on("mouseout", function(){
that.img.off("mousemove");
});
},
- rotate: function(x) {
- var that = this;
- that.actualRotation += x;
- that.img.css({
- '-webkit-transform': 'rotate(' + that.actualRotation + 'deg)',
- '-moz-transform': 'rotate(' + that.actualRotation + 'deg)',
- 'transform': 'rotate(' + that.actualRotation + 'deg)',
- });
- if(that.options.imgEyecandy) {
- that.imgEyecandy.css({
- '-webkit-transform': 'rotate(' + that.actualRotation + 'deg)',
- '-moz-transform': 'rotate(' + that.actualRotation + 'deg)',
- 'transform': 'rotate(' + that.actualRotation + 'deg)',
- });
- }
- if (typeof that.options.onImgRotate == 'function')
- that.options.onImgRotate.call(that);
- },
- zoom :function(x){
+
+ rotate: function(x){
+ var that = this;
+ that.actualRotation += x;
+ that.img.css({
+ '-webkit-transform': 'rotate(' + that.actualRotation + 'deg)',
+ '-moz-transform': 'rotate(' + that.actualRotation + 'deg)',
+ 'transform': 'rotate(' + that.actualRotation + 'deg)',
+ });
+
+ if(that.options.imgEyecandy) {
+ that.imgEyecandy.css({
+ '-webkit-transform': 'rotate(' + that.actualRotation + 'deg)',
+ '-moz-transform': 'rotate(' + that.actualRotation + 'deg)',
+ 'transform': 'rotate(' + that.actualRotation + 'deg)',
+ });
+ }
+
+ if(typeof that.options.onImgRotate == 'function') that.options.onImgRotate.call(that);
+ },
+
+ zoom: function(x){
var that = this;
var ratio = that.imgW / that.imgH;
var newWidth = that.imgW+x;
var newHeight = newWidth/ratio;
var doPositioning = true;
- if( newWidth < that.objW || newHeight < that.objH){
-
- if( newWidth - that.objW < newHeight - that.objH ){
+ if(newWidth < that.objW || newHeight < that.objH){
+ if(newWidth - that.objW < newHeight - that.objH ){
newWidth = that.objW;
newHeight = newWidth/ratio;
- }else{
+ } else {
newHeight = that.objH;
newWidth = ratio * newHeight;
}
doPositioning = false;
-
}
if(!that.options.scaleToFill && (newWidth > that.imgInitW || newHeight > that.imgInitH)){
-
- if( newWidth - that.imgInitW < newHeight - that.imgInitH ){
+ if(newWidth - that.imgInitW < newHeight - that.imgInitH){
newWidth = that.imgInitW;
newHeight = newWidth/ratio;
- }else{
+ } else {
newHeight = that.imgInitH;
newWidth = ratio * newHeight;
}
doPositioning = false;
-
}
that.imgW = newWidth;
@@ -566,50 +661,53 @@
that.imgH = newHeight;
that.img.height(newHeight);
- var newTop = parseInt( that.img.css('top') ) - x/2;
- var newLeft = parseInt( that.img.css('left') ) - x/2;
+ var newTop = parseInt(that.img.css('top') ) - x/2;
+ var newLeft = parseInt(that.img.css('left') ) - x/2;
- if( newTop>0 ){ newTop=0;}
- if( newLeft>0 ){ newLeft=0;}
+ if(newTop > 0) newTop=0;
+ if(newLeft > 0) newLeft=0;
- var maxTop = -( newHeight-that.objH); if( newTop < maxTop){ newTop = maxTop; }
- var maxLeft = -( newWidth-that.objW); if( newLeft < maxLeft){ newLeft = maxLeft; }
+ var maxTop = -(newHeight-that.objH);
+ if(newTop < maxTop) newTop = maxTop;
+
+ var maxLeft = -(newWidth-that.objW);
+ if(newLeft < maxLeft) newLeft = maxLeft;
- if( doPositioning ){
+ if(doPositioning){
that.img.css({'top':newTop, 'left':newLeft});
}
if(that.options.imgEyecandy){
that.imgEyecandy.width(newWidth);
that.imgEyecandy.height(newHeight);
- if( doPositioning ){
+ if(doPositioning){
that.imgEyecandy.css({'top':newTop, 'left':newLeft});
}
- }
+ }
- if (that.options.onImgZoom) that.options.onImgZoom.call(that);
+ if(that.options.onImgZoom) that.options.onImgZoom.call(that);
},
- crop:function(){
+ crop: function(){
var that = this;
- if (that.options.onBeforeImgCrop) that.options.onBeforeImgCrop.call(that);
+ if(that.options.onBeforeImgCrop) that.options.onBeforeImgCrop.call(that);
that.cropControlsCrop.hide();
that.showLoader();
var cropData = {
- imgUrl:that.imgUrl,
- imgInitW:that.imgInitW,
- imgInitH:that.imgInitH,
- imgW:that.imgW,
- imgH:that.imgH,
- imgY1:Math.abs( parseInt( that.img.css('top') ) ),
- imgX1:Math.abs( parseInt( that.img.css('left') ) ),
- cropH:that.objH,
- cropW:that.objW,
- rotation:that.actualRotation
- };
+ imgUrl: that.imgUrl,
+ imgInitW: that.imgInitW,
+ imgInitH: that.imgInitH,
+ imgW: that.imgW,
+ imgH: that.imgH,
+ imgY1: Math.abs(parseInt(that.img.css('top'))),
+ imgX1: Math.abs(parseInt(that.img.css('left'))),
+ cropH: that.objH,
+ cropW: that.objW,
+ rotation: that.actualRotation
+ };
var formData;
@@ -618,20 +716,21 @@
var urlEncodedData = "";
var urlEncodedDataPairs = [];
- for(var key in cropData) {
+ for(var key in cropData){
urlEncodedDataPairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(cropData[key]));
}
- for(var key in that.options.cropData) {
+
+ for(var key in that.options.cropData){
urlEncodedDataPairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(that.options.cropData[key]));
}
+
urlEncodedData = urlEncodedDataPairs.join('&').replace(/%20/g, '+');
- XHR.addEventListener('error', function(event) {
- if (that.options.onError) that.options.onError.call(that,"XHR Request failed");
+ XHR.addEventListener('error', function(event){
+ if(that.options.onError) that.options.onError.call(that,"XHR Request failed");
});
- XHR.onreadystatechange=function(){
- if (XHR.readyState==4 && XHR.status==200)
- {
+ XHR.onreadystatechange = function(){
+ if(XHR.readyState == 4 && XHR.status == 200){
that.afterCrop(XHR.responseText);
}
}
@@ -642,211 +741,214 @@
XHR.send(urlEncodedData);
- }else{
+ } else {
formData = new FormData();
- for (var key in cropData) {
- if( cropData.hasOwnProperty(key) ) {
- formData.append( key , cropData[key] );
+ for (var key in cropData){
+ if(cropData.hasOwnProperty(key)){
+ formData.append(key , cropData[key]);
}
}
- for (var key in that.options.cropData) {
- if( that.options.cropData.hasOwnProperty(key) ) {
- formData.append( key , that.options.cropData[key] );
+ for(var key in that.options.cropData){
+ if(that.options.cropData.hasOwnProperty(key)){
+ formData.append(key, that.options.cropData[key]);
}
}
$.ajax({
- url: that.options.cropUrl,
- data: formData,
- context: document.body,
- cache: false,
+ url: that.options.cropUrl,
+ data: formData,
+ context: document.body,
+ cache: false,
contentType: false,
processData: false,
- type: 'POST'
- }).always(function (data) {
-
+ type: 'POST'
+ }).always(function(data){
that.afterCrop(data);
-
});
}
-
- //
- },
- afterCrop: function (data) {
- var that = this;
+ },
+
+ afterCrop: function(data){
+ var that = this;
try {
- response = jQuery.parseJSON(data);
- }
- catch(err) {
+ response = jQuery.parseJSON(data);
+ } catch(err){
response = typeof data =='object' ? data : jQuery.parseJSON(data);
- }
+ }
- if (response.status == 'success') {
+ if(response.status == 'success'){
+ if(that.options.imgEyecandy) that.imgEyecandy.hide();
- if (that.options.imgEyecandy)
- that.imgEyecandy.hide();
+ that.destroy();
- that.destroy();
-
- that.obj.append('
');
- if (that.options.outputUrlId !== '') { $('#' + that.options.outputUrlId).val(response.url); }
+ that.obj.append('
');
- that.croppedImg = that.obj.find('.croppedImg');
-
- that.init();
+ if(that.options.outputUrlId !== ''){
+ $('#' + that.options.outputUrlId).val(response.url);
+ }
- that.hideLoader();
- }
- if (response.status == 'error') {
- if (that.options.onError) that.options.onError.call(that,response.message);
+ that.croppedImg = that.obj.find('.croppedImg');
+ that.init();
that.hideLoader();
- setTimeout( function(){ that.reset(); },2000)
- }
+ }
+ if(response.status == 'error'){
+ if(that.options.onError) that.options.onError.call(that,response.message);
+ that.hideLoader();
+ setTimeout(function(){ that.reset(); }, 2000);
+ }
- if (that.options.onAfterImgCrop) that.options.onAfterImgCrop.call(that);
- },
- showLoader:function(){
+ if(that.options.onAfterImgCrop) that.options.onAfterImgCrop.call(that);
+ },
+
+ showLoader: function(){
var that = this;
that.obj.append(that.options.loaderHtml);
that.loader = that.obj.find('.loader');
},
- hideLoader:function(){
+
+ hideLoader: function(){
var that = this;
- that.loader.remove();
+ that.loader.remove();
},
- reset:function(){
+
+ reset: function(){
var that = this;
that.destroy();
that.init();
- if( !$.isEmptyObject(that.croppedImg)){
+ if(!$.isEmptyObject(that.croppedImg)){
that.obj.append(that.croppedImg);
- if(that.options.outputUrlId !== ''){ $('#'+that.options.outputUrlId).val(that.croppedImg.attr('url')); }
+
+ if(that.options.outputUrlId !== ''){
+ $('#'+that.options.outputUrlId).val(that.croppedImg.attr('url'));
+ }
}
- if (typeof that.options.onReset == 'function')
- that.options.onReset.call(that);
+ if(typeof that.options.onReset == 'function') that.options.onReset.call(that);
},
- destroy:function(){
+
+ destroy: function(){
var that = this;
- if(that.options.modal && !$.isEmptyObject(that.modal) ){ that.destroyModal(); }
- if(that.options.imgEyecandy && !$.isEmptyObject(that.imgEyecandy) ){ that.destroyEyecandy(); }
- if( !$.isEmptyObject( that.cropControlsUpload ) ){ that.cropControlsUpload.remove(); }
- if( !$.isEmptyObject( that.cropControlsCrop ) ){ that.cropControlsCrop.remove(); }
- if( !$.isEmptyObject( that.loader ) ){ that.loader.remove(); }
- if( !$.isEmptyObject( that.form ) ){ that.form.remove(); }
+ if(that.options.modal && !$.isEmptyObject(that.modal)) that.destroyModal();
+ if(that.options.imgEyecandy && !$.isEmptyObject(that.imgEyecandy)) that.destroyEyecandy();
+ if(!$.isEmptyObject(that.cropControlsUpload)) that.cropControlsUpload.remove();
+ if(!$.isEmptyObject(that.cropControlsCrop)) that.cropControlsCrop.remove();
+ if(!$.isEmptyObject(that.loader)) that.loader.remove();
+ if(!$.isEmptyObject(that.form)) that.form.remove();
that.obj.html('');
},
+
isAjaxUploadSupported: function () {
- var input = document.createElement("input");
- input.type = "file";
-
- return (
- "multiple" in input &&
- typeof File != "undefined" &&
- typeof FormData != "undefined" &&
- typeof (new XMLHttpRequest()).upload != "undefined");
- },
- CreateFallbackIframe: function () {
- var that = this;
-
- if (!that.isAjaxUploadSupported()) {
-
- if (jQuery.isEmptyObject(that.iframeobj)) {
- var iframe = document.createElement("iframe");
- iframe.setAttribute("id", that.id + "_upload_iframe");
- iframe.setAttribute("name", that.id + "_upload_iframe");
- iframe.setAttribute("width", "0");
- iframe.setAttribute("height", "0");
- iframe.setAttribute("border", "0");
- iframe.setAttribute("src", "javascript:false;");
- iframe.style.display = "none";
- document.body.appendChild(iframe);
- } else {
- iframe = that.iframeobj[0];
- }
-
- var myContent = ''
- + 'Uploading File'
- + ''
- + '';
-
- iframe.contentWindow.document.open('text/htmlreplace');
- iframe.contentWindow.document.write(myContent);
- iframe.contentWindow.document.close();
-
- that.iframeobj = $("#" + that.id + "_upload_iframe");
- that.iframeform = that.iframeobj.contents().find("html").find("." + that.id + "_upload_iframe_form");
-
- that.iframeform.on("change", "input", function () {
+ var input = document.createElement("input");
+ input.type = "file";
+
+ return (
+ "multiple" in input &&
+ typeof File != "undefined" &&
+ typeof FormData != "undefined" &&
+ typeof (new XMLHttpRequest()).upload != "undefined"
+ );
+ },
+
+ CreateFallbackIframe: function(){
+ var that = this;
+
+ if(!that.isAjaxUploadSupported()){
+
+ if (jQuery.isEmptyObject(that.iframeobj)) {
+ var iframe = document.createElement("iframe");
+ iframe.setAttribute("id", that.id + "_upload_iframe");
+ iframe.setAttribute("name", that.id + "_upload_iframe");
+ iframe.setAttribute("width", "0");
+ iframe.setAttribute("height", "0");
+ iframe.setAttribute("border", "0");
+ iframe.setAttribute("src", "javascript:false;");
+ iframe.style.display = "none";
+ document.body.appendChild(iframe);
+ } else {
+ iframe = that.iframeobj[0];
+ }
+
+ var myContent = ''
+ + 'Uploading File'
+ + ''
+ + '';
+
+ iframe.contentWindow.document.open('text/htmlreplace');
+ iframe.contentWindow.document.write(myContent);
+ iframe.contentWindow.document.close();
+
+ that.iframeobj = $("#" + that.id + "_upload_iframe");
+ that.iframeform = that.iframeobj.contents().find("html").find("." + that.id + "_upload_iframe_form");
+
+ that.iframeform.on("change", "input", function(){
that.SubmitFallbackIframe(that);
- });
- that.iframeform.find("input")[0].attachEvent("onchange", function () {
- that.SubmitFallbackIframe(that);
- });
-
- var eventHandlermyFile = function () {
- if (iframe.detachEvent)
- iframe.detachEvent("onload", eventHandlermyFile);
- else
- iframe.removeEventListener("load", eventHandlermyFile, false);
-
- var response = that.getIframeContentJSON(iframe);
-
- if (jQuery.isEmptyObject(that.modal)) {
- that.afterUpload(response);
- }
- }
-
- if (iframe.addEventListener)
- iframe.addEventListener("load", eventHandlermyFile, true);
- if (iframe.attachEvent)
- iframe.attachEvent("onload", eventHandlermyFile);
-
- return "#" + that.id + '_imgUploadField';
-
- } else {
- return "";
- }
-
- },
- SubmitFallbackIframe: function (that) {
- that.showLoader();
+ });
+
+ that.iframeform.find("input")[0].attachEvent("onchange", function(){
+ that.SubmitFallbackIframe(that);
+ });
+
+ var eventHandlermyFile = function () {
+ if(iframe.detachEvent){
+ iframe.detachEvent("onload", eventHandlermyFile);
+ } else {
+ iframe.removeEventListener("load", eventHandlermyFile, false);
+ }
+
+ var response = that.getIframeContentJSON(iframe);
+
+ if(jQuery.isEmptyObject(that.modal)) that.afterUpload(response);
+ }
+
+ if(iframe.addEventListener) iframe.addEventListener("load", eventHandlermyFile, true);
+ if(iframe.attachEvent) iframe.attachEvent("onload", eventHandlermyFile);
+
+ return "#" + that.id + '_imgUploadField';
+ } else {
+ return "";
+ }
+
+ },
+
+ SubmitFallbackIframe: function(that){
+ that.showLoader();
if(that.options.processInline && !that.options.uploadUrl){
- if (that.options.onError){
+ if(that.options.onError){
that.options.onError.call(that,"processInline is not supported by your browser ");
that.hideLoader();
}
- }else{
- if (that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
+ } else {
+ if(that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
that.iframeform[0].submit();
- }
- },
- getIframeContentJSON: function (iframe) {
- try {
- var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document,
- response;
-
- var innerHTML = doc.body.innerHTML;
- if (innerHTML.slice(0, 5).toLowerCase() == "" && innerHTML.slice(-6).toLowerCase() == "
") {
- innerHTML = doc.body.firstChild.firstChild.nodeValue;
- }
- response = jQuery.parseJSON(innerHTML);
- } catch (err) {
- response = { success: false };
- }
-
- return response;
- }
+ }
+ },
+
+ getIframeContentJSON: function(iframe){
+ try{
+ var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
+ var response;
+
+ var innerHTML = doc.body.innerHTML;
+ if(innerHTML.slice(0, 5).toLowerCase() == "" && innerHTML.slice(-6).toLowerCase() == "
"){
+ innerHTML = doc.body.firstChild.firstChild.nodeValue;
+ }
+ response = jQuery.parseJSON(innerHTML);
+ } catch(err){
+ response = { success: false };
+ }
+
+ return response;
+ }
};
})(window, document);