You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

18 lines
34 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

(function($){$.Jcrop=function(obj,opt){var obj=obj,opt=opt;if(typeof(obj)!=="object"){obj=$(obj)[0]}if(typeof(opt)!=="object"){opt={}}if(!("trackDocument" in opt)){opt.trackDocument=$.browser.msie?false:true;if($.browser.msie&&$.browser.version.split(".")[0]=="8"){opt.trackDocument=true}}if(!("keySupport" in opt)){opt.keySupport=$.browser.msie?false:true}var defaults={trackDocument:false,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:0.6,borderOpacity:0.4,handleOpacity:0.5,handlePad:5,handleSize:9,handleOffset:5,edgeMargin:14,aspectRatio:0,keySupport:true,cornerHandles:true,sideHandles:true,drawBorders:true,dragEdges:true,boxWidth:0,boxHeight:0,boundary:8,animationDelay:20,swingSpeed:3,allowSelect:true,allowMove:true,allowResize:true,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){}};var options=defaults;setOptions(opt);var $origimg=$(obj);var $img=$origimg.clone().removeAttr("id").css({position:"absolute"});$img.width($origimg.width());$img.height($origimg.height());$origimg.after($img).hide();presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("<div />").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);if(options.addClass){$div.addClass(options.addClass)}var $img2=$("<img />").attr("src",$img.attr("src")).css("position","absolute").width(boundx).height(boundy);var $img_holder=$("<div />").width(pct(100)).height(pct(100)).css({zIndex:310,position:"absolute",overflow:"hidden"}).append($img2);var $hdl_holder=$("<div />").width(pct(100)).height(pct(100)).css("zIndex",320);var $sel=$("<div />").css({position:"absolute",zIndex:300}).insertBefore($img).append($img_holder,$hdl_holder);var bound=options.boundary;var $trk=newTracker().width(boundx+(bound*2)).height(boundy+(bound*2)).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection);var xlimit,ylimit,xmin,ymin;
var xscale,yscale,enabled=true;var docOffset=getPos($img),btndown,lastcurs,dimmed,animating,shift_down;var Coords=function(){var x1=0,y1=0,x2=0,y2=0,ox,oy;function setPressed(pos){var pos=rebound(pos);x2=x1=pos[0];y2=y1=pos[1]}function setCurrent(pos){var pos=rebound(pos);ox=pos[0]-x2;oy=pos[1]-y2;x2=pos[0];y2=pos[1]}function getOffset(){return[ox,oy]}function moveOffset(offset){var ox=offset[0],oy=offset[1];if(0>x1+ox){ox-=ox+x1}if(0>y1+oy){oy-=oy+y1}if(boundy<y2+oy){oy+=boundy-(y2+oy)}if(boundx<x2+ox){ox+=boundx-(x2+ox)}x1+=ox;x2+=ox;y1+=oy;y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio){return getRect()}var aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,min_y=options.minSize[1]/yscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha,xx,yy;if(max_x==0){max_x=boundx*10}if(max_y==0){max_y=boundy*10}if(real_ratio<aspect){yy=y2;w=rha*aspect;xx=rw<0?x1-w:w+x1;if(xx<0){xx=0;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1}else{if(xx>boundx){xx=boundx;h=Math.abs((xx-x1)/aspect);yy=rh<0?y1-h:h+y1}}}else{xx=x2;h=rwa/aspect;yy=rh<0?y1-h:y1+h;if(yy<0){yy=0;w=Math.abs((yy-y1)*aspect);xx=rw<0?x1-w:w+x1}else{if(yy>boundy){yy=boundy;w=Math.abs(yy-y1)*aspect;xx=rw<0?x1-w:w+x1}}}if(xx>x1){if(xx-x1<min_x){xx=x1+min_x}else{if(xx-x1>max_x){xx=x1+max_x}}if(yy>y1){yy=y1+(xx-x1)/aspect}else{yy=y1-(xx-x1)/aspect}}else{if(xx<x1){if(x1-xx<min_x){xx=x1-min_x}else{if(x1-xx>max_x){xx=x1-max_x}}if(yy>y1){yy=y1+(x1-xx)/aspect}else{yy=y1-(x1-xx)/aspect}}}if(xx<0){x1-=xx;xx=0}else{if(xx>boundx){x1-=xx-boundx;xx=boundx}}if(yy<0){y1-=yy;yy=0}else{if(yy>boundy){y1-=yy-boundy;yy=boundy}}return last=makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){if(p[0]<0){p[0]=0}if(p[1]<0){p[1]=0}if(p[0]>boundx){p[0]=boundx}if(p[1]>boundy){p[1]=boundy}return[p[0],p[1]]
}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;if(x2<x1){xa=x2;xb=x1}if(y2<y1){ya=y2;yb=y1}return[Math.round(xa),Math.round(ya),Math.round(xb),Math.round(yb)]}function getRect(){var xsize=x2-x1;var ysize=y2-y1;if(xlimit&&(Math.abs(xsize)>xlimit)){x2=(xsize>0)?(x1+xlimit):(x1-xlimit)}if(ylimit&&(Math.abs(ysize)>ylimit)){y2=(ysize>0)?(y1+ylimit):(y1-ylimit)}if(ymin&&(Math.abs(ysize)<ymin)){y2=(ysize>0)?(y1+ymin):(y1-ymin)}if(xmin&&(Math.abs(xsize)<xmin)){x2=(xsize>0)?(x1+xmin):(x1-xmin)}if(x1<0){x2-=x1;x1-=x1}if(y1<0){y2-=y1;y1-=y1}if(x2<0){x1-=x2;x2-=x2}if(y2<0){y1-=y2;y2-=y2}if(x2>boundx){var delta=x2-boundx;x1-=delta;x2-=delta}if(y2>boundy){var delta=y2-boundy;y1-=delta;y2-=delta}if(x1>boundx){var delta=x1-boundy;y2-=delta;y1-=delta}if(y1>boundy){var delta=y1-boundy;y2-=delta;y1-=delta}return makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}();var Selection=function(){var start,end,dragmode,awake,hdep=370;var borders={};var handle={};var seehandles=false;var hhs=options.handleOffset;if(options.drawBorders){borders={top:insertBorder("hline").css("top",$.browser.msie?px(-1):px(0)),bottom:insertBorder("hline"),left:insertBorder("vline"),right:insertBorder("vline")}}if(options.dragEdges){handle.t=insertDragbar("n");handle.b=insertDragbar("s");handle.r=insertDragbar("e");handle.l=insertDragbar("w")}options.sideHandles&&createHandles(["n","s","e","w"]);options.cornerHandles&&createHandles(["sw","nw","ne","se"]);function insertBorder(type){var jq=$("<div />").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));$img_holder.append(jq);return jq}function dragDiv(ord,zi){var jq=$("<div />").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi});$hdl_holder.append(jq);return jq}function insertHandle(ord){return dragDiv(ord,hdep++).css({top:px(-hhs+1),left:px(-hhs+1),opacity:options.handleOpacity}).addClass(cssClass("handle"))
}function insertDragbar(ord){var s=options.handleSize,o=hhs,h=s,w=s,t=o,l=o;switch(ord){case"n":case"s":w=pct(100);break;case"e":case"w":h=pct(100);break}return dragDiv(ord,hdep++).width(w).height(h).css({top:px(-t+1),left:px(-l+1)})}function createHandles(li){for(i in li){handle[li[i]]=insertHandle(li[i])}}function moveHandles(c){var midvert=Math.round((c.h/2)-hhs),midhoriz=Math.round((c.w/2)-hhs),north=west=-hhs+1,east=c.w-hhs,south=c.h-hhs,x,y;"e" in handle&&handle.e.css({top:px(midvert),left:px(east)})&&handle.w.css({top:px(midvert)})&&handle.s.css({top:px(south),left:px(midhoriz)})&&handle.n.css({left:px(midhoriz)});"ne" in handle&&handle.ne.css({left:px(east)})&&handle.se.css({top:px(south),left:px(east)})&&handle.sw.css({top:px(south)});"b" in handle&&handle.b.css({top:px(south)})&&handle.r.css({left:px(east)})}function moveto(x,y){$img2.css({top:px(-y),left:px(-x)});$sel.css({top:px(y),left:px(x)})}function resize(w,h){$sel.width(w).height(h)}function refresh(){var c=Coords.getFixed();Coords.setPressed([c.x,c.y]);Coords.setCurrent([c.x2,c.y2]);updateVisible()}function updateVisible(){if(awake){return update()}}function update(){var c=Coords.getFixed();resize(c.w,c.h);moveto(c.x,c.y);options.drawBorders&&borders["right"].css({left:px(c.w-1)})&&borders["bottom"].css({top:px(c.h-1)});seehandles&&moveHandles(c);awake||show();options.onChange(unscale(c))}function show(){$sel.show();$img.css("opacity",options.bgOpacity);awake=true}function release(){disableHandles();$sel.hide();$img.css("opacity",1);awake=false}function showHandles(){if(seehandles){moveHandles(Coords.getFixed());$hdl_holder.show()}}function enableHandles(){seehandles=true;if(options.allowResize){moveHandles(Coords.getFixed());$hdl_holder.show();return true}}function disableHandles(){seehandles=false;$hdl_holder.hide()}function animMode(v){(animating=v)?disableHandles():enableHandles()}function done(){animMode(false);refresh()}var $track=newTracker().mousedown(createDragger("move")).css({cursor:"move",position:"absolute",zIndex:360});
$img_holder.append($track);disableHandles();return{updateVisible:updateVisible,update:update,release:release,refresh:refresh,setCursor:function(cursor){$track.css("cursor",cursor)},enableHandles:enableHandles,enableOnly:function(){seehandles=true},showHandles:showHandles,disableHandles:disableHandles,animMode:animMode,done:done}}();var Tracker=function(){var onMove=function(){},onDone=function(){},trackDoc=options.trackDocument;if(!trackDoc){$trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp)}function toFront(){$trk.css({zIndex:450});if(trackDoc){$(document).mousemove(trackMove).mouseup(trackUp)}}function toBack(){$trk.css({zIndex:290});if(trackDoc){$(document).unbind("mousemove",trackMove).unbind("mouseup",trackUp)}}function trackMove(e){onMove(mouseAbs(e))}function trackUp(e){e.preventDefault();e.stopPropagation();if(btndown){btndown=false;onDone(mouseAbs(e));options.onSelect(unscale(Coords.getFixed()));toBack();onMove=function(){};onDone=function(){}}return false}function activateHandlers(move,done){btndown=true;onMove=move;onDone=done;toFront();return false}function setCursor(t){$trk.css("cursor",t)}$img.before($trk);return{activateHandlers:activateHandlers,setCursor:setCursor}}();var KeyManager=function(){var $keymgr=$('<input type="radio" />').css({position:"absolute",left:"-30px"}).keypress(parseKey).blur(onBlur),$keywrap=$("<div />").css({position:"absolute",overflow:"hidden"}).append($keymgr);function watchKeys(){if(options.keySupport){$keymgr.show();$keymgr.focus()}}function onBlur(e){$keymgr.hide()}function doNudge(e,x,y){if(options.allowMove){Coords.moveOffset([x,y]);Selection.updateVisible()}e.preventDefault();e.stopPropagation()}function parseKey(e){if(e.ctrlKey){return true}shift_down=e.shiftKey?true:false;var nudge=shift_down?10:1;switch(e.keyCode){case 37:doNudge(e,-nudge,0);break;case 39:doNudge(e,nudge,0);break;case 38:doNudge(e,0,-nudge);break;case 40:doNudge(e,0,nudge);break;case 27:Selection.release();break;case 9:return true}return nothing(e)
}if(options.keySupport){$keywrap.insertBefore($img)}return{watchKeys:watchKeys}}();function px(n){return""+parseInt(n)+"px"}function pct(n){return""+parseInt(n)+"%"}function cssClass(cl){return options.baseClass+"-"+cl}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[(e.pageX-docOffset[0]),(e.pageY-docOffset[1])]}function myCursor(type){if(type!=lastcurs){Tracker.setCursor(type);lastcurs=type}}function startDragMode(mode,pos){docOffset=getPos($img);Tracker.setCursor(mode=="move"?mode:mode+"-resize");if(mode=="move"){return Tracker.activateHandlers(createMover(pos),doneSelect)}var fc=Coords.getFixed();var opp=oppLockCorner(mode);var opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp));Coords.setCurrent(opc);Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect)}function dragmodeHandler(mode,f){return function(pos){if(!options.aspectRatio){switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2;break}}else{switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1;break}}Coords.setCurrent(pos);Selection.update()}}function createMover(pos){var lloc=pos;KeyManager.watchKeys();return function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]);lloc=pos;Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){if(options.disabled){return false}if((ord=="move")&&!options.allowMove){return false}btndown=true;startDragMode(ord,mouseAbs(e));e.stopPropagation();e.preventDefault();return false}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();if((nw>w)&&w>0){nw=w;nh=(w/$obj.width())*$obj.height()}if((nh>h)&&h>0){nh=h;nw=(h/$obj.height())*$obj.width()}xscale=$obj.width()/nw;
yscale=$obj.height()/nh;$obj.width(nw).height(nh)}function unscale(c){return{x:parseInt(c.x*xscale),y:parseInt(c.y*yscale),x2:parseInt(c.x2*xscale),y2:parseInt(c.y2*yscale),w:parseInt(c.w*xscale),h:parseInt(c.h*yscale)}}function doneSelect(pos){var c=Coords.getFixed();if(c.w>options.minSelect[0]&&c.h>options.minSelect[1]){Selection.enableHandles();Selection.done()}else{Selection.release()}Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(options.disabled){return false}if(!options.allowSelect){return false}btndown=true;docOffset=getPos($img);Selection.disableHandles();myCursor("crosshair");var pos=mouseAbs(e);Coords.setPressed(pos);Tracker.activateHandlers(selectDrag,doneSelect);KeyManager.watchKeys();Selection.update();e.stopPropagation();e.preventDefault();return false}function selectDrag(pos){Coords.setCurrent(pos);Selection.update()}function newTracker(){var trk=$("<div></div>").addClass(cssClass("tracker"));$.browser.msie&&trk.css({opacity:0,backgroundColor:"white"});return trk}function animateTo(a){var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(animating){return}var animto=Coords.flipCoords(x1,y1,x2,y2);var c=Coords.getFixed();var animat=initcr=[c.x,c.y,c.x2,c.y2];var interv=options.animationDelay;var x=animat[0];var y=animat[1];var x2=animat[2];var y2=animat[3];var ix1=animto[0]-initcr[0];var iy1=animto[1]-initcr[1];var ix2=animto[2]-initcr[2];var iy2=animto[3]-initcr[3];var pcent=0;var velocity=options.swingSpeed;Selection.animMode(true);var animator=function(){return function(){pcent+=(100-pcent)/velocity;animat[0]=x+((pcent/100)*ix1);animat[1]=y+((pcent/100)*iy1);animat[2]=x2+((pcent/100)*ix2);animat[3]=y2+((pcent/100)*iy2);if(pcent<100){animateStart()}else{Selection.done()}if(pcent>=99.8){pcent=100}setSelectRaw(animat)}}();function animateStart(){window.setTimeout(animator,interv)}animateStart()}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale])}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]);
Coords.setCurrent([l[2],l[3]]);Selection.update()}function setOptions(opt){if(typeof(opt)!="object"){opt={}}options=$.extend(options,opt);if(typeof(options.onChange)!=="function"){options.onChange=function(){}}if(typeof(options.onSelect)!=="function"){options.onSelect=function(){}}}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt);interfaceUpdate()}function disableCrop(){options.disabled=true;Selection.disableHandles();Selection.setCursor("default");Tracker.setCursor("default")}function enableCrop(){options.disabled=false;interfaceUpdate()}function cancelCrop(){Selection.done();Tracker.activateHandlers(null,null)}function destroy(){$div.remove();$origimg.show()}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles();Tracker.setCursor(options.allowSelect?"crosshair":"default");Selection.setCursor(options.allowMove?"move":"default");$div.css("backgroundColor",options.bgColor);if("setSelect" in options){setSelect(opt.setSelect);Selection.done();delete (options.setSelect)}if("trueSize" in options){xscale=options.trueSize[0]/boundx;yscale=options.trueSize[1]/boundy}xlimit=options.maxSize[0]||0;ylimit=options.maxSize[1]||0;xmin=options.minSize[0]||0;ymin=options.minSize[1]||0;if("outerImage" in options){$img.attr("src",options.outerImage);delete (options.outerImage)}Selection.refresh()}$hdl_holder.hide();interfaceUpdate(true);var api={animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},release:Selection.release,destroy:destroy};$origimg.data("Jcrop",api);return api};$.fn.Jcrop=function(options){function attachWhenDone(from){var loadsrc=options.useImg||from.src;var img=new Image();
img.onload=function(){$.Jcrop(from,options)};img.src=loadsrc}if(typeof(options)!=="object"){options={}}this.each(function(){if($(this).data("Jcrop")){if(options=="api"){return $(this).data("Jcrop")}else{$(this).data("Jcrop").setOptions(options)}}else{attachWhenDone(this)}});return this}})(jQuery);(function($,undefined){$.fn.zyPopup=function(options,param){var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"){var fn=this[0][options];if($.isFunction(fn)){return fn.apply(this,otherArgs)}else{throw ("zyPopup - No such method: "+options)}}return this.each(function(){var para={};var self=this;var zoom="",zoomContent="",zoomedIn=false,openedImage=null,windowWidth="",windowHeight="";var tailorVal={};var defaults={src:"",index:0,name:"",onTailor:function(val){}};para=$.extend(defaults,options);this.init=function(){this.createHtml();this.openPopup();this.bindPopupEvent()};this.createHtml=function(){$("#zoom").remove();$("body").append('<div id="zoom"><a class="finish"></a><a class="close"></a><div class="content loading"></div></div>');zoom=$("#zoom").hide(),zoomContent=$("#zoom .content"),zoomedIn=false,openedImage=null,windowWidth=$(window).width(),windowHeight=$(window).height()};this.openPopup=function(){var self=this;var image=$(new Image()).attr("id","tailorImg").hide();$("#zoom .previous, #zoom .next").show();if(!zoomedIn){zoomedIn=true;zoom.show();$("body").addClass("zoomed")}zoomContent.html(image).delay(500).addClass("loading");image.load(render).attr("src",para.src);function render(){var image=$(this),borderWidth=parseInt(zoomContent.css("borderLeftWidth")),maxImageWidth=windowWidth-(borderWidth*2),maxImageHeight=windowHeight-(borderWidth*2),imageWidth=image.width(),imageHeight=image.height();if(imageWidth==zoomContent.width()&&imageWidth<=maxImageWidth&&imageHeight==zoomContent.height()&&imageHeight<=maxImageHeight){show(image);return}zoomContent.animate({width:image.width(),height:image.height(),marginTop:-(image.height()/2)-borderWidth,marginLeft:-(image.width()/2)-borderWidth},200,function(){show(image)
});function show(image){image.show();zoomContent.removeClass("loading");self.createTailorPlug()}}};this.createTailorPlug=function(){var width=$("#tailorImg").width();var height=$("#tailorImg").height();var x1=(width/2)-(width/5);var y1=(height/2)-(height/5);var x2=(width/2)+(width/5);var y2=(height/2)+(height/5);var api=$.Jcrop("#tailorImg",{setSelect:[x1,y1,x2,y2],onChange:setCoords,onSelect:setCoords});function setCoords(obj){tailorVal={"leftX":obj.x,"leftY":obj.y,"rightX":obj.x2,"rightY":obj.y2,"width":obj.w,"height":obj.h}}};this.bindPopupEvent=function(){var self=this;zoom.bind("click",function(event){event.preventDefault();if($(event.target).attr("id")=="zoom"){self.closePopup(event)}});$("#zoom .finish").bind("click",function(event){var quondamImgInfo=new Object();quondamImgInfo["width"]=$(".jcrop-holder>div>div>img").width();quondamImgInfo["height"]=$(".jcrop-holder>div>div>img").height();para.onTailor(tailorVal,quondamImgInfo);self.closePopup(event)});$("#zoom .close").bind("click",function(event){self.closePopup(event)})};this.closePopup=function(event){if(event){event.preventDefault()}zoomedIn=false;openedImage=null;zoom.hide();$("body").removeClass("zoomed");zoomContent.empty()};this.init()})}})(jQuery);var ZYFILE={fileInput:null,uploadInput:null,dragDrop:null,url:"",uploadFile:[],lastUploadFile:[],perUploadFile:[],fileNum:0,filterFile:function(files){return files},onSelect:function(selectFile,files){},onDelete:function(file,files){},onProgress:function(file,loaded,total){},onSuccess:function(file,responseInfo){},onFailure:function(file,responseInfo){},onComplete:function(responseInfo){},funDragHover:function(e){e.stopPropagation();e.preventDefault();this[e.type==="dragover"?"onDragOver":"onDragLeave"].call(e.target);return this},funGetFiles:function(e){var self=this;this.funDragHover(e);var files=e.target.files||e.dataTransfer.files;self.lastUploadFile=this.uploadFile;this.uploadFile=this.uploadFile.concat(this.filterFile(files));var tmpFiles=[];var lArr=[];
var uArr=[];$.each(self.lastUploadFile,function(k,v){lArr.push(v.name)});$.each(self.uploadFile,function(k,v){uArr.push(v.name)});$.each(uArr,function(k,v){if($.inArray(v,lArr)<0){tmpFiles.push(self.uploadFile[k])}});this.uploadFile=tmpFiles;this.funDealtFiles();return true},funDealtFiles:function(){var self=this;$.each(this.uploadFile,function(k,v){v.index=self.fileNum;self.fileNum++});var selectFile=this.uploadFile;this.perUploadFile=this.perUploadFile.concat(this.uploadFile);this.uploadFile=this.lastUploadFile.concat(this.uploadFile);this.onSelect(selectFile,this.uploadFile);console.info("继续选择");console.info(this.uploadFile);return this},funDeleteFile:function(delFileIndex,isCb){var self=this;var tmpFile=[];var delFile=this.perUploadFile[delFileIndex];$.each(this.uploadFile,function(k,v){if(delFile!=v){tmpFile.push(v)}});this.uploadFile=tmpFile;if(isCb){self.onDelete(delFile,this.uploadFile)}console.info("还剩这些文件没有上传:");console.info(this.uploadFile);return true},funUploadFiles:function(){var self=this;$.each(this.uploadFile,function(k,v){self.funUploadFile(v)})},funUploadFile:function(file){var self=this;var formdata=new FormData();formdata.append("file",file);if($("#uploadTailor_"+file.index).length>0){formdata.append("tailor",$("#uploadTailor_"+file.index).attr("tailor"))}var xhr=new XMLHttpRequest();xhr.upload.addEventListener("progress",function(e){self.onProgress(file,e.loaded,e.total)},false);xhr.addEventListener("load",function(e){self.funDeleteFile(file.index,false);self.onSuccess(file,xhr.responseText);if(self.uploadFile.length==0){self.onComplete("全部完成")}},false);xhr.addEventListener("error",function(e){self.onFailure(file,xhr.responseText)},false);xhr.open("POST",self.url,true);xhr.send(formdata)},funReturnNeedFiles:function(){return this.uploadFile},init:function(){var self=this;if(this.dragDrop){this.dragDrop.addEventListener("dragover",function(e){self.funDragHover(e)},false);this.dragDrop.addEventListener("dragleave",function(e){self.funDragHover(e)},false);
this.dragDrop.addEventListener("drop",function(e){self.funGetFiles(e)},false)}if(self.fileInput){this.fileInput.addEventListener("change",function(e){self.funGetFiles(e)},false)}if(self.uploadInput){this.uploadInput.addEventListener("click",function(e){self.funUploadFiles(e)},false)}}};(function($,undefined){$.fn.zyUpload=function(options,param){var otherArgs=Array.prototype.slice.call(arguments,1);if(typeof options=="string"){var fn=this[0][options];if($.isFunction(fn)){return fn.apply(this,otherArgs)}else{throw ("zyUpload - No such method: "+options)}}return this.each(function(){var para={};var self=this;var defaults={width:"700px",height:"400px",itemWidth:"140px",itemHeight:"120px",url:"/upload/UploadAction",fileType:[],fileSize:51200000,multiple:true,dragDrop:true,tailor:false,del:true,finishDel:false,onSelect:function(selectFiles,allFiles){},onDelete:function(file,files){},onSuccess:function(file,response){},onFailure:function(file,response){},onComplete:function(response){}};para=$.extend(defaults,options);this.init=function(){this.createHtml();this.createCorePlug()};this.createHtml=function(){var multiple="";para.multiple?multiple="multiple":multiple="";var html="";if(para.dragDrop){html+='<form id="uploadForm" action="'+para.url+'" method="post" enctype="multipart/form-data">';html+=' <div class="upload_box">';html+=' <div class="upload_main">';html+=' <div class="upload_choose">';html+=' <div class="convent_choice">';html+=' <div class="andArea">';html+=' <div class="filePicker">点击选择文件</div>';html+=' <input id="fileImage" type="file" size="30" name="fileselect[]" '+multiple+">";html+=" </div>";html+=" </div>";html+=' <span id="fileDragArea" class="upload_drag_area">或者将文件拖到此处</span>';html+=" </div>";html+=' <div class="status_bar">';html+=' <div id="status_info" class="info">选中0张文件共0B。</div>';html+=' <div class="btns">';html+=' <div class="webuploader_pick">继续选择</div>';html+=' <div class="upload_btn">开始上传</div>';
html+=" </div>";html+=" </div>";html+=' <div id="preview" class="upload_preview"></div>';html+=" </div>";html+=' <div class="upload_submit">';html+=' <button type="button" id="fileSubmit" class="upload_submit_btn">确认上传文件</button>';html+=" </div>";html+=' <div id="uploadInf" class="upload_inf"></div>';html+=" </div>";html+="</form>"}else{var imgWidth=parseInt(para.itemWidth.replace("px",""))-15;html+='<form id="uploadForm" action="'+para.url+'" method="post" enctype="multipart/form-data">';html+=' <div class="upload_box">';html+=' <div class="upload_main single_main">';html+=' <div class="status_bar">';html+=' <div id="status_info" class="info">选中0张文件共0B。</div>';html+=' <div class="btns">';html+=' <input id="fileImage" type="file" size="30" name="fileselect[]" '+multiple+">";html+=' <div class="webuploader_pick">选择文件</div>';html+=' <div class="upload_btn">开始上传</div>';html+=" </div>";html+=" </div>";html+=' <div id="preview" class="upload_preview">';html+=' <div class="add_upload">';html+=' <a style="height:'+para.itemHeight+";width:"+para.itemWidth+';" title="点击添加文件" id="rapidAddImg" class="add_imgBox" href="javascript:void(0)">';html+=' <div class="uploadImg" style="width:'+imgWidth+'px">';html+=' <img class="upload_image" src="zyupload/skins/images/add_img.png" style="width:expression(this.width > '+imgWidth+" ? "+imgWidth+'px : this.width)" />';html+=" </div>";html+=" </a>";html+=" </div>";html+=" </div>";html+=" </div>";html+=' <div class="upload_submit">';html+=' <button type="button" id="fileSubmit" class="upload_submit_btn">确认上传文件</button>';html+=" </div>";html+=' <div id="uploadInf" class="upload_inf"></div>';html+=" </div>";html+="</form>"}$(self).append(html).css({"width":para.width,"height":para.height});this.addEvent()};this.funSetStatusInfo=function(files){var size=0;var num=files.length;$.each(files,function(k,v){size+=v.size});if(size>1024*1024){size=(Math.round(size*100/(1024*1024))/100).toString()+"MB"
}else{size=(Math.round(size*100/1024)/100).toString()+"KB"}$("#status_info").html("选中"+num+"张文件,共"+size+"。")};this.funFilterEligibleFile=function(files){var arrFiles=[];for(var i=0,file;file=files[i];i++){var newStr=file.name.split("").reverse().join("");if(newStr.split(".")[0]!=null){var type=newStr.split(".")[0].split("").reverse().join("");if(jQuery.inArray(type,para.fileType)>-1){if(file.size>=para.fileSize){alert('您这个"'+file.name+'"文件大小过大')}else{arrFiles.push(file)}}else{alert('您这个"'+file.name+'"上传类型不符合')}}else{alert('您这个"'+file.name+'"没有类型, 无法识别')}}return arrFiles};this.funDisposePreviewHtml=function(file,e){var html="";var imgWidth=parseInt(para.itemWidth.replace("px",""))-15;var imgHeight=parseInt(para.itemHeight.replace("px",""))-10;var editHtml="";var delHtml="";if(para.tailor){editHtml='<span class="file_edit" data-index="'+file.index+'" title="编辑"></span>'}if(para.del){delHtml='<span class="file_del" data-index="'+file.index+'" title="删除"></span>'}var newStr=file.name.split("").reverse().join("");var type=newStr.split(".")[0].split("").reverse().join("");var fileImgSrc="zyupload/skins/images/fileType/";if(type=="rar"){fileImgSrc=fileImgSrc+"rar.png"}else{if(type=="zip"){fileImgSrc=fileImgSrc+"zip.png"}else{if(type=="txt"){fileImgSrc=fileImgSrc+"txt.png"}else{if(type=="ppt"){fileImgSrc=fileImgSrc+"ppt.png"}else{if(type=="xls"){fileImgSrc=fileImgSrc+"xls.png"}else{if(type=="pdf"){fileImgSrc=fileImgSrc+"pdf.png"}else{if(type=="psd"){fileImgSrc=fileImgSrc+"psd.png"}else{if(type=="ttf"){fileImgSrc=fileImgSrc+"ttf.png"}else{if(type=="swf"){fileImgSrc=fileImgSrc+"swf.png"}else{fileImgSrc=fileImgSrc+"file.png"}}}}}}}}}if(file.type.indexOf("image")==0){html+='<div id="uploadList_'+file.index+'" class="upload_append_list">';html+=' <div class="file_bar">';html+=' <div style="padding:5px;">';html+=' <p class="file_name" title="'+file.name+'">'+file.name+"</p>";html+=editHtml;html+=delHtml;html+=" </div>";html+=" </div>";html+=' <a style="height:'+para.itemHeight+";width:"+para.itemWidth+';" href="#" class="imgBox">';
html+=' <div class="uploadImg" style="width:'+imgWidth+"px;max-width:"+imgWidth+"px;max-height:"+imgHeight+'px;">';html+=' <img id="uploadImage_'+file.index+'" class="upload_image" src="'+e.target.result+'" style="width:expression(this.width > '+imgWidth+" ? "+imgWidth+'px : this.width);" />';html+=" </div>";html+=" </a>";html+=' <p id="uploadProgress_'+file.index+'" class="file_progress"></p>';html+=' <p id="uploadFailure_'+file.index+'" class="file_failure">上传失败,请重试</p>';html+=' <p id="uploadTailor_'+file.index+'" class="file_tailor" tailor="false">裁剪完成</p>';html+=' <p id="uploadSuccess_'+file.index+'" class="file_success"></p>';html+="</div>"}else{html+='<div id="uploadList_'+file.index+'" class="upload_append_list">';html+=' <div class="file_bar">';html+=' <div style="padding:5px;">';html+=' <p class="file_name">'+file.name+"</p>";html+=delHtml;html+=" </div>";html+=" </div>";html+=' <a style="height:'+para.itemHeight+";width:"+para.itemWidth+';" href="#" class="imgBox">';html+=' <div class="uploadImg" style="width:'+imgWidth+'px">';html+=' <img id="uploadImage_'+file.index+'" class="upload_file" src="'+fileImgSrc+'" style="width:expression(this.width > '+imgWidth+" ? "+imgWidth+'px : this.width)" />';html+=" </div>";html+=" </a>";html+=' <p id="uploadProgress_'+file.index+'" class="file_progress"></p>';html+=' <p id="uploadFailure_'+file.index+'" class="file_failure">上传失败,请重试</p>';html+=' <p id="uploadSuccess_'+file.index+'" class="file_success"></p>';html+="</div>"}return html};this.createPopupPlug=function(imgSrc,index,name){$("body").zyPopup({src:imgSrc,index:index,name:name,onTailor:function(val,quondamImgInfo){var nWidth=parseInt(para.itemWidth.replace("px",""));var nHeight=parseInt(para.itemHeight.replace("px",""));var qWidth=val.width;var qHeight=val.height;var ratio=nWidth/qWidth;var width=ratio*quondamImgInfo.width;var height=ratio*quondamImgInfo.height;var left=val.leftX*ratio;var top=val.rightY*ratio-qHeight*ratio;$("#uploadImage_"+index).css({"width":width,"height":height,"margin-left":-left,"margin-top":-top});
$("#uploadTailor_"+index).show();console.info(val);var tailor="{'leftX':"+val.leftX+",'leftY':"+val.leftY+",'rightX':"+val.rightX+",'rightY':"+val.rightY+",'width':"+val.width+",'height':"+val.height+"}";$("#uploadTailor_"+index).attr("tailor",tailor)}})};this.createCorePlug=function(){var params={fileInput:$("#fileImage").get(0),uploadInput:$("#fileSubmit").get(0),dragDrop:$("#fileDragArea").get(0),url:$("#uploadForm").attr("action"),filterFile:function(files){return self.funFilterEligibleFile(files)},onSelect:function(selectFiles,allFiles){para.onSelect(selectFiles,allFiles);self.funSetStatusInfo(ZYFILE.funReturnNeedFiles());var html="",i=0;var funDealtPreviewHtml=function(){file=selectFiles[i];if(file){var reader=new FileReader();reader.onload=function(e){html+=self.funDisposePreviewHtml(file,e);i++;funDealtPreviewHtml()};reader.readAsDataURL(file)}else{funAppendPreviewHtml(html)}};var funAppendPreviewHtml=function(html){if(para.dragDrop){$("#preview").append(html)}else{$(".add_upload").before(html)}funBindDelEvent();funBindHoverEvent()};var funBindDelEvent=function(){if($(".file_del").length>0){$(".file_del").click(function(){ZYFILE.funDeleteFile(parseInt($(this).attr("data-index")),true);return false})}if($(".file_edit").length>0){$(".file_edit").click(function(){var imgIndex=$(this).attr("data-index");var imgName=$(this).prev(".file_name").attr("title");var imgSrc=$("#uploadImage_"+imgIndex).attr("src");self.createPopupPlug(imgSrc,imgIndex,imgName);return false})}};var funBindHoverEvent=function(){$(".upload_append_list").hover(function(e){$(this).find(".file_bar").addClass("file_hover")},function(e){$(this).find(".file_bar").removeClass("file_hover")})};funDealtPreviewHtml()},onDelete:function(file,files){para.onDelete(file,files);$("#uploadList_"+file.index).fadeOut();self.funSetStatusInfo(files);console.info("剩下的文件");console.info(files)},onProgress:function(file,loaded,total){var eleProgress=$("#uploadProgress_"+file.index),percent=(loaded/total*100).toFixed(2)+"%";
if(eleProgress.is(":hidden")){eleProgress.show()}eleProgress.css("width",percent)},onSuccess:function(file,response){para.onSuccess(file,response);$("#uploadProgress_"+file.index).hide();$("#uploadSuccess_"+file.index).show();if(para.finishDel){$("#uploadList_"+file.index).fadeOut();self.funSetStatusInfo(ZYFILE.funReturnNeedFiles())}if($("#uploadTailor_"+file.index).length>0){$("#uploadTailor_"+file.index).hide()}},onFailure:function(file,response){para.onFailure(file,response);$("#uploadProgress_"+file.index).hide();$("#uploadSuccess_"+file.index).show();if($("#uploadTailor_"+file.index).length>0){$("#uploadTailor_"+file.index).hide()}$("#uploadInf").append("<p>文件"+file.name+"上传失败!</p>")},onComplete:function(response){para.onComplete(response);console.info(response)},onDragOver:function(){$(this).addClass("upload_drag_hover")},onDragLeave:function(){$(this).removeClass("upload_drag_hover")}};ZYFILE=$.extend(ZYFILE,params);ZYFILE.init()};this.addEvent=function(){if($(".filePicker").length>0){$(".filePicker").bind("click",function(e){$("#fileImage").click()})}$(".webuploader_pick").bind("click",function(e){$("#fileImage").click()});$(".upload_btn").bind("click",function(e){if(ZYFILE.funReturnNeedFiles().length>0){$("#fileSubmit").click()}else{alert("请先选中文件再点击上传")}});if($("#rapidAddImg").length>0){$("#rapidAddImg").bind("click",function(e){$("#fileImage").click()})}};this.init()})}})(jQuery);