"use strict";
var Croppic=function (id, options){
var that=this;
that.id=id;
that.obj=jQuery('#' + id);
that.outputDiv=that.obj;
that.options={
uploadUrl:'',
uploadData:{},
cropUrl:'',
cropData:{},
outputUrlId:'',
imgEyecandy:true,
imgEyecandyOpacity:0.2,
initialZoom:40,
zoomFactor:10,
rotateFactor:5,
doubleZoomControls:true,
rotateControls: true,
modal:false,
customUploadButtonId:'',
loaderHtml:'',
scaleToFill: true,
processInline: false,
loadPicture:'',
onReset: null,
enableMousescroll: false,
onBeforeImgUpload: null,
onAfterImgUpload: null,
onImgDrag: null,
onImgZoom: null,
onImgRotate: null,
onBeforeImgCrop: null,
onAfterImgCrop: null,
onBeforeRemoveCroppedImg: null,
onAfterRemoveCroppedImg: null,
onError: null,
imgInitW:0,
imgInitH:0,
imgW:0,
imgH:0,
objW:0,
objH:0,
imageAppendAfter:true,
customIdentificator:'',
};
for (var i in options) that.options[i]=options[i];
that.init();
};
Croppic.prototype={
id:'',
imgInitW:0,
imgInitH:0,
imgW:0,
imgH:0,
objW:0,
objH:0,
actualRotation: 0,
windowW:0,
windowH:jQuery(window).height(),
obj:{},
outputDiv:{},
outputUrlObj:{},
img:{},
defaultImg:{},
croppedImg:{},
imgEyecandy:{},
form:{},
iframeform: {},
iframeobj: {},
cropControlsUpload:{},
cropControlsCrop:{},
cropControlZoomMuchIn:{},
cropControlZoomMuchOut:{},
cropControlZoomIn:{},
cropControlZoomOut:{},
cropControlCrop:{},
cropControlReset:{},
cropControlRemoveCroppedImage:{},
modal:{},
loader:{},
uploadId:0,
init: function (){
var that=this;
that.objW=that.obj.width();
that.objH=that.obj.height();
that.setSizes()
that.actualRotation=0;
if(that.isEmptyObject(that.defaultImg)){ that.defaultImg=that.obj.find('img'); }
that.createImgUploadControls();
if(that.isEmptyObject(that.options.loadPicture)){
that.bindImgUploadControl();
}else{
that.loadExistingImage();
}},
setSizes: function(){
var that=this
var options={
imgInitW:0,
imgInitH:0,
imgW:0,
imgH:0,
objW:0,
objH:0,
customIdentificator:0,
}
for(var i in options){
if(that.options[i] > 0){
that[i]=that.options[i]
}}
},
isEmptyObject: function(param){
for (var prop in param){
if(param.hasOwnProperty(prop))
return false
}
return true
},
createImgUploadControls: function(){
var that=this;
var cropControlUpload='';
if(that.options.customUploadButtonId===''){ cropControlUpload='<i class="cropControlUpload"></i>'; }
var cropControlRemoveCroppedImage='<i class="cropControlRemoveCroppedImage"></i>';
if(that.isEmptyObject(that.croppedImg)){ cropControlRemoveCroppedImage=''; }
if(!that.isEmptyObject(that.options.loadPicture)){ cropControlUpload='';}
var html='<div class="cropControls cropControlsUpload"> ' + cropControlUpload + cropControlRemoveCroppedImage + ' </div>';
that.outputDiv.append(html);
that.cropControlsUpload=that.outputDiv.find('.cropControlsUpload');
if(that.options.customUploadButtonId===''){ that.imgUploadControl=that.outputDiv.find('.cropControlUpload'); }else{	that.imgUploadControl=jQuery('#'+that.options.customUploadButtonId); that.imgUploadControl.show();	}
if(!that.isEmptyObject(that.croppedImg)){
that.cropControlRemoveCroppedImage=that.outputDiv.find('.cropControlRemoveCroppedImage');
}},
bindImgUploadControl: function(){
var that=this;
var formHtml='<form class="' + that.id + '_imgUploadForm ihc-visibility-hidden">  <input type="file" name="img" id="' + that.id + '_imgUploadField">  </form>';
that.outputDiv.append(formHtml);
that.form=that.outputDiv.find('.'+that.id+'_imgUploadForm');
var fileUploadId=that.CreateFallbackIframe();
that.imgUploadControl.off('click');
that.imgUploadControl.on('click',function(){
if(fileUploadId===""){
that.form.find('input[type="file"]').trigger('click');
}else{
that.iframeform.find('input[type="file"]').trigger('click');
}});
if(!that.isEmptyObject(that.croppedImg)){
that.cropControlRemoveCroppedImage.on('click',function(){
if(typeof (that.options.onBeforeRemoveCroppedImg)===typeof(Function)){
that.options.onBeforeRemoveCroppedImg.call(that);
}
that.croppedImg.remove();
that.croppedImg={};
jQuery(this).hide();
if(typeof (that.options.onAfterRemoveCroppedImg)===typeof(Function)){
that.options.onAfterRemoveCroppedImg.call(that);
}
if(!that.isEmptyObject(that.defaultImg)){
that.obj.append(that.defaultImg);
}
if(that.options.outputUrlId!==''){	jQuery('#'+that.options.outputUrlId).val('');	}});
}
that.form.find('input[type="file"]').change(function(){
if(that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
that.showLoader();
that.imgUploadControl.hide();
if(that.options.processInline){
if(typeof FileReader=="undefined"){
if(that.options.onError) that.options.onError.call(that,"processInline is not supported by your Browser");
that.reset();
}else{
var reader=new FileReader();
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(!that.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
that.imgUrl=image.src;
that.obj.append('<img src="'+image.src+'">');
that.initCropper();
that.hideLoader();
if(that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
}};
reader.readAsDataURL(that.form.find('input[type="file"]')[0].files[0]);
}}else{
try {
var formData=new FormData(that.form[0]);
} catch(e){
var formData=new FormData();
formData.append('img', that.form.find("input[type=file]")[0].files[0]);
}
for (var key in that.options.uploadData){
if(that.options.uploadData.hasOwnProperty(key)){
formData.append(key , that.options.uploadData[key]);
}}
jQuery.ajax({
url: that.options.uploadUrl,
data: formData,
context: document.body,
cache: false,
contentType: false,
processData: false,
type: 'POST'
}).always(function (data){
that.afterUpload(data);
});
}});
},
loadExistingImage: function(){
var that=this;
if(that.isEmptyObject(that.croppedImg)){
if(that.options.onBeforeImgUpload) that.options.onBeforeImgUpload.call(that);
that.showLoader();
if(that.options.modal){	that.createModal(); }
if(!that.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
that.imgUrl=that.options.loadPicture ;
var img=jQuery('<img src="'+ that.options.loadPicture +'">');
that.obj.append(img);
img.load(function(){
that.imgInitW=that.imgW=this.width;
that.imgInitH=that.imgH=this.height;
that.initCropper();
that.hideLoader();
if(that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
});
}else{
that.cropControlRemoveCroppedImage.on('click',function(){
that.croppedImg.remove();
jQuery(this).hide();
if(!that.isEmptyObject(that.defaultImg)){
that.obj.append(that.defaultImg);
}
if(that.options.outputUrlId!==''){	jQuery('#'+that.options.outputUrlId).val('');	}
that.croppedImg='';
that.reset();
});
}},
afterUpload: function(data){
var that=this;
var response=typeof data=='object' ? data:jQuery.parseJSON(data);
if(response.status=='success'){
that.uploadId=response.uploadId
that.imgInitW=that.imgW=response.width;
that.imgInitH=that.imgH=response.height;
if(that.options.modal){ that.createModal(); }
if(!that.isEmptyObject(that.croppedImg)){ that.croppedImg.remove(); }
that.imgUrl=response.url;
var img=jQuery('<img src="'+response.url+'">')
that.obj.append(img);
img.load(function(){
that.initCropper();
that.hideLoader();
if(that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that, response);
});
if(that.options.onAfterImgUpload) that.options.onAfterImgUpload.call(that);
}
if(response.status=='error'){
alert(response.message);
if(that.options.onError) that.options.onError.call(that,response.message);
that.hideLoader();
setTimeout(function(){ that.reset(); },2000)
}},
createModal: function(){
var that=this;
var marginTop=that.windowH/2-that.objH/2;
var modalHTML='<div id="croppicModal">'+'<div id="croppicModalObj" class="ihc-cst-croppic ihc-croppicModalObj" style=" width:'+ that.objW +'px; height:'+ that.objH +'px; margin-top:'+ marginTop +'px;"> </div>'+'</div>';
jQuery('body').append(modalHTML);
that.modal=jQuery('#croppicModal');
that.obj=jQuery('#croppicModalObj');
},
destroyModal: function(){
var that=this;
that.obj=that.outputDiv;
that.modal.remove();
that.modal={};},
initCropper: function(){
var that=this;
that.img=that.obj.find('img');
that.img.wrap('<div class="cropImgWrapper ihc-cropImgWrapper" style=" width:'+that.objW+'px; height:'+that.objH+'px;"></div>');
that.createCropControls();
if(that.options.imgEyecandy){ that.createEyecandy(); }
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);
},
destroyEyecandy: function(){
var that=this;
that.imgEyecandy.remove();
},
initialScaleImg:function(){
var that=this;
that.zoom(-that.imgInitW);
that.zoom(that.options.initialZoom);
if(that.options.enableMousescroll){
that.img.on('mousewheel', function(event){
event.preventDefault();
that.zoom(that.options.zoomFactor*event.deltaY);
});
}
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'});}},
createCropControls: function(){
var that=this;
var cropControlZoomMuchIn='';
var cropControlZoomIn='<i class="cropControlZoomIn"></i>';
var cropControlZoomOut='<i class="cropControlZoomOut"></i>';
var cropControlZoomMuchOut='';
var cropControlRotateLeft='';
var cropControlRotateRight='';
var cropControlCrop='<i class="cropControlCrop">Save</i>';
var cropControlReset='<i class="cropControlReset">Cancel</i>';
var html;
if(that.options.doubleZoomControls){
cropControlZoomMuchIn='<i class="cropControlZoomMuchIn"></i>';
cropControlZoomMuchOut='<i class="cropControlZoomMuchOut"></i>';
}
if(that.options.rotateControls){
cropControlRotateLeft='<i class="cropControlRotateLeft"></i>';
cropControlRotateRight='<i class="cropControlRotateRight"></i>';
}
html='<div class="cropControls cropControlsCrop">'+ cropControlZoomMuchIn + cropControlZoomIn + cropControlZoomOut + cropControlZoomMuchOut + cropControlRotateLeft + cropControlRotateRight + '<span id="ihc-custom-controls">' + cropControlCrop + ' <span class="ihc_delimiter">|</span> ' + cropControlReset + '</span></div>';
that.obj.append(html);
that.cropControlsCrop=that.obj.find('.cropControlsCrop');
if(that.options.doubleZoomControls){
that.cropControlZoomMuchIn=that.cropControlsCrop.find('.cropControlZoomMuchIn');
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.cropControlZoomIn=that.cropControlsCrop.find('.cropControlZoomIn');
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.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.cropControlReset=that.cropControlsCrop.find('.cropControlReset');
that.cropControlReset.on('click',function(){ that.reset(); });
},
initDrag:function(){
var that=this;
that.img.on("mousedown touchstart", function(e){
e.preventDefault();
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;
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;
}
that.img.offset({
top:imgTop,
left:imgLeft
}).on("mouseup", function(){
jQuery(this).removeClass('draggable').css('z-index', z_idx);
});
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.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);
});
}).on("mouseup", function(){
that.img.off("mousemove");
}).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){
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){
newWidth=that.objW;
newHeight=newWidth/ratio;
}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){
newWidth=that.imgInitW;
newHeight=newWidth/ratio;
}else{
newHeight=that.imgInitH;
newWidth=ratio * newHeight;
}
doPositioning=false;
}
that.imgW=newWidth;
that.img.width(newWidth);
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;
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;	}
if(doPositioning){
that.img.css({'top':newTop, 'left':newLeft});
}
if(that.options.imgEyecandy){
that.imgEyecandy.width(newWidth);
that.imgEyecandy.height(newHeight);
if(doPositioning){
that.imgEyecandy.css({'top':newTop, 'left':newLeft});
}}
if(that.options.onImgZoom) that.options.onImgZoom.call(that);
},
crop:function(){
var that=this;
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,
customIdentificator: that.options.customIdentificator,
uploadId:that.uploadId
};
var formData;
if(typeof FormData=='undefined'){
var XHR=new XMLHttpRequest();
var urlEncodedData="";
var urlEncodedDataPairs=[];
for(var key in cropData){
urlEncodedDataPairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(cropData[key]));
}
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.onreadystatechange=function(){
if(XHR.readyState==4&&XHR.status==200){
that.afterCrop(XHR.responseText);
}}
XHR.open('POST', that.options.cropUrl);
XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
XHR.setRequestHeader('Content-Length', urlEncodedData.length);
XHR.send(urlEncodedData);
}else{
formData=new FormData();
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]);
}}
jQuery.ajax({
url: that.options.cropUrl,
data: formData,
context: document.body,
cache: false,
contentType: false,
processData: false,
type: 'POST'
}).always(function (data){
that.afterCrop(data);
});
}},
afterCrop: function (data){
var that=this;
try {
var response=jQuery.parseJSON(data);
}
catch(err){
var response=typeof data=='object' ? data:jQuery.parseJSON(data);
}
if(response.status=='success'){
if(that.options.imgEyecandy)
that.imgEyecandy.hide();
that.destroy();
if(that.options.imageAppendAfter){
that.obj.append('<img class="croppedImg" src="' + response.url + '">');
}
if(that.options.outputUrlId!==''){ jQuery('#' + that.options.outputUrlId).val(response.url); }
that.croppedImg=that.obj.find('.croppedImg');
that.init();
that.hideLoader();
}
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, response);
},
showLoader:function(){
var that=this;
that.obj.append(that.options.loaderHtml);
that.loader=that.obj.find('.loader');
},
hideLoader:function(){
var that=this;
that.loader.remove();
},
reset:function(){
var that=this;
that.destroy();
if(!that.isEmptyObject(that.croppedImg)){
that.obj.append(that.croppedImg);
if(that.options.outputUrlId!==''){	jQuery('#'+that.options.outputUrlId).val(that.croppedImg.attr('url'));	}}
if(typeof that.options.onReset=='function')
that.options.onReset.call(that);
that.init();
},
destroy:function(){
var that=this;
if(that.options.modal&&!that.isEmptyObject(that.modal)){ that.destroyModal(); }
if(that.options.imgEyecandy&&!that.isEmptyObject(that.imgEyecandy)){  that.destroyEyecandy(); }
if(!that.isEmptyObject(that.cropControlsUpload) ){  that.cropControlsUpload.remove(); }
if(!that.isEmptyObject(that.cropControlsCrop) ){   that.cropControlsCrop.remove(); }
if(!that.isEmptyObject(that.loader) ){   that.loader.remove(); }
if(!that.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(that.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='<!DOCTYPE html>'
+ '<html><head><title>Uploading File</title></head>'
+ '<body>'
+ '<form '
+ 'class="' + that.id + '_upload_iframe_form ihc-display-none" '
+ 'name="' + that.id + '_upload_iframe_form" '
+ 'action="' + that.options.uploadUrl + '" method="post" '
+ 'enctype="multipart/form-data" encoding="multipart/form-data">'
+ jQuery("#" + that.id + '_imgUploadField')[0].outerHTML
+ '</form></body></html>';
iframe.contentWindow.document.open('text/htmlreplace');
iframe.contentWindow.document.write(myContent);
iframe.contentWindow.document.close();
that.iframeobj=jQuery("#" + 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(that.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){
that.options.onError.call(that,"processInline is not supported by your browser ");
that.hideLoader();
}}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()=="<pre>"&&innerHTML.slice(-6).toLowerCase()=="</pre>"){
innerHTML=doc.body.firstChild.firstChild.nodeValue;
}
response=jQuery.parseJSON(innerHTML);
} catch (err){
response={ success: false };}
return response;
}};