").attr({id:i,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return t("
").addClass("ui-tooltip-content").appendTo(n),n.appendTo(this.document[0].body),this.tooltips[i]=e,n},_find:function(e){var i=e.data("ui-tooltip-id");return i?t("#"+i):t()},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s[0],e.close(n,!0),t("#"+i).remove(),s.data("ui-tooltip-title")&&(s.attr("title",s.data("ui-tooltip-title")),s.removeData("ui-tooltip-title"))})}})})(jQuery);(function(t,e){var i="ui-effects-";t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=h(),n=s._rgba=[];return i=i.toLowerCase(),f(l,function(t,a){var o,r=a.re.exec(i),l=r&&a.parse(r),h=a.space||"rgba";return l?(o=s[h](l),s[c[h].cache]=o[c[h].cache],n=s._rgba=o._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,a.transparent),s):a[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,l=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],h=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=h.support={},p=t("
")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),h.fn=t.extend(h.prototype,{parse:function(n,o,r,l){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(o),o=e);var u=this,d=t.type(n),p=this._rgba=[];return o!==e&&(n=[n,o,r,l],d="array"),"string"===d?this.parse(s(n)||a._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof h?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var a=s.cache;f(s.props,function(t,e){if(!u[a]&&s.to){if("alpha"===t||null==n[t])return;u[a]=s.to(u._rgba)}u[a][e.idx]=i(n[t],e,!0)}),u[a]&&0>t.inArray(null,u[a].slice(0,3))&&(u[a][3]=1,s.from&&(u._rgba=s.from(u[a])))}),this):e},is:function(t){var i=h(t),s=!0,n=this;return f(c,function(t,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=h(t),n=s._space(),a=c[n],o=0===this.alpha()?h("transparent"):this,r=o[a.cache]||a.to(o._rgba),l=r.slice();return s=s[a.cache],f(a.props,function(t,n){var a=n.idx,o=r[a],h=s[a],c=u[n.type]||{};null!==h&&(null===o?l[a]=h:(c.mod&&(h-o>c.mod/2?o+=c.mod:o-h>c.mod/2&&(o-=c.mod)),l[a]=i((h-o)*e+o,n)))}),this[n](l)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=h(e)._rgba;return h(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),h.fn.parse.prototype=h.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,a=t[2]/255,o=t[3],r=Math.max(s,n,a),l=Math.min(s,n,a),h=r-l,c=r+l,u=.5*c;return e=l===r?0:s===r?60*(n-a)/h+360:n===r?60*(a-s)/h+120:60*(s-n)/h+240,i=0===h?0:.5>=u?h/c:h/(2-c),[Math.round(e)%360,i,u,null==o?1:o]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],a=t[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,e+1/3)),Math.round(255*n(r,o,e)),Math.round(255*n(r,o,e-1/3)),a]},f(c,function(s,n){var a=n.props,o=n.cache,l=n.to,c=n.from;h.fn[s]=function(s){if(l&&!this[o]&&(this[o]=l(this._rgba)),s===e)return this[o].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[o].slice();return f(a,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=h(c(d)),n[o]=d,n):h(d)},f(a,function(e,i){h.fn[e]||(h.fn[e]=function(n){var a,o=t.type(n),l="alpha"===e?this._hsla?"hsla":"rgba":s,h=this[l](),c=h[i.idx];return"undefined"===o?c:("function"===o&&(n=n.call(this,c),o=t.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=c+parseFloat(a[2])*("+"===a[1]?1:-1))),h[i.idx]=n,this[l](h)))})})}),h.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var a,o,r="";if("transparent"!==n&&("string"!==t.type(n)||(a=s(n)))){if(n=h(a||n),!d.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&o&&o.style;)try{r=t.css(o,"backgroundColor"),o=o.parentNode}catch(l){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(l){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=h(e.elem,i),e.end=h(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},h.hook(o),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},a=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function s(e,i){var s,n,o={};for(s in i)n=i[s],e[s]!==n&&(a[s]||(t.fx.step[s]||!isNaN(parseFloat(n)))&&(o[s]=n));return o}var n=["add","remove","toggle"],a={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(jQuery.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(e,a,o,r){var l=t.speed(a,o,r);return this.queue(function(){var a,o=t(this),r=o.attr("class")||"",h=l.children?o.find("*").addBack():o;h=h.map(function(){var e=t(this);return{el:e,start:i(this)}}),a=function(){t.each(n,function(t,i){e[i]&&o[i+"Class"](e[i])})},a(),h=h.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),o.attr("class",r),h=h.map(function(){var e=this,i=t.Deferred(),s=t.extend({},l,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,h.get()).done(function(){a(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),l.complete.call(o[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,a){return s?t.effects.animateClass.call(this,{add:i},s,n,a):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,a){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,a):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(i){return function(s,n,a,o,r){return"boolean"==typeof n||n===e?a?t.effects.animateClass.call(this,n?{add:s}:{remove:s},a,o,r):i.apply(this,arguments):t.effects.animateClass.call(this,{toggle:s},n,a,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,a){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,a)}})}(),function(){function s(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function n(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}t.extend(t.effects,{version:"1.10.4",save:function(t,e){for(var s=0;e.length>s;s++)null!==e[s]&&t.data(i+e[s],t[0].style[e[s]])},restore:function(t,s){var n,a;for(a=0;s.length>a;a++)null!==s[a]&&(n=t.data(i+s[a]),n===e&&(n=""),t.css(s[a],n))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("
").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return e.wrap(s),(e[0]===a||t.contains(e[0],a))&&t(a).focus(),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).focus()),e},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var a=e.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),t.fn.extend({effect:function(){function e(e){function s(){t.isFunction(a)&&a.call(n[0]),t.isFunction(e)&&e()}var n=t(this),a=i.complete,r=i.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),s()):o.call(n[0],i,s)}var i=s.apply(this,arguments),n=i.mode,a=i.queue,o=t.effects.effect[i.effect];return t.fx.off||!o?n?this[n](i.duration,i.complete):this.each(function(){i.complete&&i.complete.call(this)}):a===!1?this.each(e):this.queue(a||"fx",e)},show:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="show",this.effect.call(this,i)}}(t.fn.show),hide:function(t){return function(e){if(n(e))return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="hide",this.effect.call(this,i)}}(t.fn.hide),toggle:function(t){return function(e){if(n(e)||"boolean"==typeof e)return t.apply(this,arguments);var i=s.apply(this,arguments);return i.mode="toggle",this.effect.call(this,i)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s}})}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}()})(jQuery);(function(t){var e=/up|down|vertical/,i=/up|left|vertical|horizontal/;t.effects.effect.blind=function(s,n){var a,o,r,l=t(this),h=["position","top","bottom","left","right","height","width"],c=t.effects.setMode(l,s.mode||"hide"),u=s.direction||"up",d=e.test(u),p=d?"height":"width",f=d?"top":"left",g=i.test(u),m={},v="show"===c;l.parent().is(".ui-effects-wrapper")?t.effects.save(l.parent(),h):t.effects.save(l,h),l.show(),a=t.effects.createWrapper(l).css({overflow:"hidden"}),o=a[p](),r=parseFloat(a.css(f))||0,m[p]=v?o:0,g||(l.css(d?"bottom":"right",0).css(d?"top":"left","auto").css({position:"absolute"}),m[f]=v?r:o+r),v&&(a.css(p,0),g||a.css(f,r+o)),a.animate(m,{duration:s.duration,easing:s.easing,queue:!1,complete:function(){"hide"===c&&l.hide(),t.effects.restore(l,h),t.effects.removeWrapper(l),n()}})}})(jQuery);(function(t){t.effects.effect.bounce=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","height","width"],l=t.effects.setMode(o,e.mode||"effect"),h="hide"===l,c="show"===l,u=e.direction||"up",d=e.distance,p=e.times||5,f=2*p+(c||h?1:0),g=e.duration/f,m=e.easing,v="up"===u||"down"===u?"top":"left",_="up"===u||"left"===u,b=o.queue(),y=b.length;for((c||h)&&r.push("opacity"),t.effects.save(o,r),o.show(),t.effects.createWrapper(o),d||(d=o["top"===v?"outerHeight":"outerWidth"]()/3),c&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,_?2*-d:2*d).animate(a,g,m)),h&&(d/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(_?"-=":"+=")+d,o.animate(n,g,m).animate(a,g,m),d=h?2*d:d/2;h&&(n={opacity:0},n[v]=(_?"-=":"+=")+d,o.animate(n,g,m)),o.queue(function(){h&&o.hide(),t.effects.restore(o,r),t.effects.removeWrapper(o),i()}),y>1&&b.splice.apply(b,[1,0].concat(b.splice(y,f+1))),o.dequeue()}})(jQuery);(function(t){t.effects.effect.clip=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","height","width"],l=t.effects.setMode(o,e.mode||"hide"),h="show"===l,c=e.direction||"vertical",u="vertical"===c,d=u?"height":"width",p=u?"top":"left",f={};t.effects.save(o,r),o.show(),s=t.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[d](),h&&(n.css(d,0),n.css(p,a/2)),f[d]=h?a:0,f[p]=h?0:a/2,n.animate(f,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){h||o.hide(),t.effects.restore(o,r),t.effects.removeWrapper(o),i()}})}})(jQuery);(function(t){t.effects.effect.drop=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","opacity","height","width"],o=t.effects.setMode(n,e.mode||"hide"),r="show"===o,l=e.direction||"left",h="up"===l||"down"===l?"top":"left",c="up"===l||"left"===l?"pos":"neg",u={opacity:r?1:0};t.effects.save(n,a),n.show(),t.effects.createWrapper(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(h,"pos"===c?-s:s),u[h]=(r?"pos"===c?"+=":"-=":"pos"===c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}})}})(jQuery);(function(t){t.effects.effect.explode=function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),g||p.hide(),i()}var a,o,r,l,h,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=t.effects.setMode(p,e.mode||"hide"),g="show"===f,m=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/d),_=Math.ceil(p.outerHeight()/u),b=[];for(a=0;u>a;a++)for(l=m.top+a*_,c=a-(u-1)/2,o=0;d>o;o++)r=m.left+o*v,h=o-(d-1)/2,p.clone().appendTo("body").wrap("
").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*_}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:_,left:r+(g?h*v:0),top:l+(g?c*_:0),opacity:g?0:1}).animate({left:r+(g?0:h*v),top:l+(g?0:c*_),opacity:g?1:0},e.duration||500,e.easing,s)}})(jQuery);(function(t){t.effects.effect.fade=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}})(jQuery);(function(t){t.effects.effect.fold=function(e,i){var s,n,a=t(this),o=["position","top","bottom","left","right","height","width"],r=t.effects.setMode(a,e.mode||"hide"),l="show"===r,h="hide"===r,c=e.size||15,u=/([0-9]+)%/.exec(c),d=!!e.horizFirst,p=l!==d,f=p?["width","height"]:["height","width"],g=e.duration/2,m={},v={};t.effects.save(a,o),a.show(),s=t.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],u&&(c=parseInt(u[1],10)/100*n[h?0:1]),l&&s.css(d?{height:0,width:c}:{height:c,width:0}),m[f[0]]=l?n[0]:c,v[f[1]]=l?n[1]:0,s.animate(m,g,e.easing).animate(v,g,e.easing,function(){h&&a.hide(),t.effects.restore(a,o),t.effects.removeWrapper(a),i()})}})(jQuery);(function(t){t.effects.effect.highlight=function(e,i){var s=t(this),n=["backgroundImage","backgroundColor","opacity"],a=t.effects.setMode(s,e.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),t.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(o,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===a&&s.hide(),t.effects.restore(s,n),i()}})}})(jQuery);(function(t){t.effects.effect.pulsate=function(e,i){var s,n=t(this),a=t.effects.setMode(n,e.mode||"show"),o="show"===a,r="hide"===a,l=o||"hide"===a,h=2*(e.times||5)+(l?1:0),c=e.duration/h,u=0,d=n.queue(),p=d.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),u=1),s=1;h>s;s++)n.animate({opacity:u},c,e.easing),u=1-u;n.animate({opacity:u},c,e.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&d.splice.apply(d,[1,0].concat(d.splice(p,h+1))),n.dequeue()}})(jQuery);(function(t){t.effects.effect.puff=function(e,i){var s=t(this),n=t.effects.setMode(s,e.mode||"hide"),a="hide"===n,o=parseInt(e.percent,10)||150,r=o/100,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};t.extend(e,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?l:{height:l.height*r,width:l.width*r,outerHeight:l.outerHeight*r,outerWidth:l.outerWidth*r}}),s.effect(e)},t.effects.effect.scale=function(e,i){var s=t(this),n=t.extend(!0,{},e),a=t.effects.setMode(s,e.mode||"effect"),o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"hide"===a?0:100),r=e.direction||"both",l=e.origin,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},c={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=l||["middle","center"],n.restore=!0),n.from=e.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:h),n.to={height:h.height*c.y,width:h.width*c.x,outerHeight:h.outerHeight*c.y,outerWidth:h.outerWidth*c.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},t.effects.effect.size=function(e,i){var s,n,a,o=t(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],l=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],c=["fontSize"],u=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],d=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=t.effects.setMode(o,e.mode||"effect"),f=e.restore||"effect"!==p,g=e.scale||"both",m=e.origin||["middle","center"],v=o.css("position"),_=f?r:l,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===e.mode&&"show"===p?(o.from=e.to||b,o.to=e.from||s):(o.from=e.from||("show"===p?b:s),o.to=e.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===g||"both"===g)&&(a.from.y!==a.to.y&&(_=_.concat(u),o.from=t.effects.setTransition(o,u,a.from.y,o.from),o.to=t.effects.setTransition(o,u,a.to.y,o.to)),a.from.x!==a.to.x&&(_=_.concat(d),o.from=t.effects.setTransition(o,d,a.from.x,o.from),o.to=t.effects.setTransition(o,d,a.to.x,o.to))),("content"===g||"both"===g)&&a.from.y!==a.to.y&&(_=_.concat(c).concat(h),o.from=t.effects.setTransition(o,c,a.from.y,o.from),o.to=t.effects.setTransition(o,c,a.to.y,o.to)),t.effects.save(o,_),o.show(),t.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(n=t.effects.getBaseline(m,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===g||"both"===g)&&(u=u.concat(["marginTop","marginBottom"]).concat(c),d=d.concat(["marginLeft","marginRight"]),h=r.concat(u).concat(d),o.find("*[width]").each(function(){var i=t(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&t.effects.save(i,h),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=t.effects.setTransition(i,u,a.from.y,i.from),i.to=t.effects.setTransition(i,u,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=t.effects.setTransition(i,d,a.from.x,i.from),i.to=t.effects.setTransition(i,d,a.to.x,i.to)),i.css(i.from),i.animate(i.to,e.duration,e.easing,function(){f&&t.effects.restore(i,h)})})),o.animate(o.to,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),t.effects.restore(o,_),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):t.each(["top","left"],function(t,e){o.css(e,function(e,i){var s=parseInt(i,10),n=t?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),t.effects.removeWrapper(o),i()}})}})(jQuery);(function(t){t.effects.effect.shake=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","height","width"],o=t.effects.setMode(n,e.mode||"effect"),r=e.direction||"left",l=e.distance||20,h=e.times||3,c=2*h+1,u=Math.round(e.duration/c),d="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},g={},m={},v=n.queue(),_=v.length;for(t.effects.save(n,a),n.show(),t.effects.createWrapper(n),f[d]=(p?"-=":"+=")+l,g[d]=(p?"+=":"-=")+2*l,m[d]=(p?"-=":"+=")+2*l,n.animate(f,u,e.easing),s=1;h>s;s++)n.animate(g,u,e.easing).animate(m,u,e.easing);n.animate(g,u,e.easing).animate(f,u/2,e.easing).queue(function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}),_>1&&v.splice.apply(v,[1,0].concat(v.splice(_,c+1))),n.dequeue()}})(jQuery);(function(t){t.effects.effect.slide=function(e,i){var s,n=t(this),a=["position","top","bottom","left","right","width","height"],o=t.effects.setMode(n,e.mode||"show"),r="show"===o,l=e.direction||"left",h="up"===l||"down"===l?"top":"left",c="up"===l||"left"===l,u={};t.effects.save(n,a),n.show(),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0),t.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(h,c?isNaN(s)?"-"+s:-s:s),u[h]=(r?c?"+=":"-=":c?"-=":"+=")+s,n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){"hide"===o&&n.hide(),t.effects.restore(n,a),t.effects.removeWrapper(n),i()}})}})(jQuery);(function(t){t.effects.effect.transfer=function(e,i){var s=t(this),n=t(e.to),a="fixed"===n.css("position"),o=t("body"),r=a?o.scrollTop():0,l=a?o.scrollLeft():0,h=n.offset(),c={top:h.top-r,left:h.left-l,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("
").appendTo(document.body).addClass(e.className).css({top:u.top-r,left:u.left-l,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),i()})}})(jQuery);/*
Uniform v2.1.2
Copyright © 2009 Josh Pyles / Pixelmatrix Design LLC
http://pixelmatrixdesign.com
Requires jQuery 1.3 or newer
Much thanks to Thomas Reynolds and Buck Wilson for their help and advice on
this.
Disabling text selection is made possible by Mathias Bynens
and his noSelect plugin.
, which is embedded.
Also, thanks to David Kaneda and Eugene Bond for their contributions to the
plugin.
Tyler Akins has also rewritten chunks of the plugin, helped close many issues,
and ensured version 2 got out the door.
License:
MIT License - http://www.opensource.org/licenses/mit-license.php
Enjoy!
*/
/*global jQuery, document, navigator*/
(function (wind, $, undef) {
"use strict";
/**
* Use .prop() if jQuery supports it, otherwise fall back to .attr()
*
* @param jQuery $el jQuery'd element on which we're calling attr/prop
* @param ... All other parameters are passed to jQuery's function
* @return The result from jQuery
*/
function attrOrProp($el) {
var args = Array.prototype.slice.call(arguments, 1);
if ($el.prop) {
// jQuery 1.6+
return $el.prop.apply($el, args);
}
// jQuery 1.5 and below
return $el.attr.apply($el, args);
}
/**
* For backwards compatibility with older jQuery libraries, only bind
* one thing at a time. Also, this function adds our namespace to
* events in one consistent location, shrinking the minified code.
*
* The properties on the events object are the names of the events
* that we are supposed to add to. It can be a space separated list.
* The namespace will be added automatically.
*
* @param jQuery $el
* @param Object options Uniform options for this element
* @param Object events Events to bind, properties are event names
*/
function bindMany($el, options, events) {
var name, namespaced;
for (name in events) {
if (events.hasOwnProperty(name)) {
namespaced = name.replace(/ |$/g, options.eventNamespace);
$el.bind(namespaced, events[name]);
}
}
}
/**
* Bind the hover, active, focus, and blur UI updates
*
* @param jQuery $el Original element
* @param jQuery $target Target for the events (our div/span)
* @param Object options Uniform options for the element $target
*/
function bindUi($el, $target, options) {
bindMany($el, options, {
focus: function () {
$target.addClass(options.focusClass);
},
blur: function () {
$target.removeClass(options.focusClass);
$target.removeClass(options.activeClass);
},
mouseenter: function () {
$target.addClass(options.hoverClass);
},
mouseleave: function () {
$target.removeClass(options.hoverClass);
$target.removeClass(options.activeClass);
},
"mousedown touchbegin": function () {
if (!$el.is(":disabled")) {
$target.addClass(options.activeClass);
}
},
"mouseup touchend": function () {
$target.removeClass(options.activeClass);
}
});
}
/**
* Remove the hover, focus, active classes.
*
* @param jQuery $el Element with classes
* @param Object options Uniform options for the element
*/
function classClearStandard($el, options) {
$el.removeClass(options.hoverClass + " " + options.focusClass + " " + options.activeClass);
}
/**
* Add or remove a class, depending on if it's "enabled"
*
* @param jQuery $el Element that has the class added/removed
* @param String className Class or classes to add/remove
* @param Boolean enabled True to add the class, false to remove
*/
function classUpdate($el, className, enabled) {
if (enabled) {
$el.addClass(className);
} else {
$el.removeClass(className);
}
}
/**
* Updating the "checked" property can be a little tricky. This
* changed in jQuery 1.6 and now we can pass booleans to .prop().
* Prior to that, one either adds an attribute ("checked=checked") or
* removes the attribute.
*
* @param jQuery $tag Our Uniform span/div
* @param jQuery $el Original form element
* @param Object options Uniform options for this element
*/
function classUpdateChecked($tag, $el, options) {
setTimeout(function() { // sunhater@sunhater.com
var c = "checked",
isChecked = $el.is(":" + c);
if ($el.prop) {
// jQuery 1.6+
$el.prop(c, isChecked);
} else {
// jQuery 1.5 and below
if (isChecked) {
$el.attr(c, c);
} else {
$el.removeAttr(c);
}
}
classUpdate($tag, options.checkedClass, isChecked);
}, 1);
}
/**
* Set or remove the "disabled" class for disabled elements, based on
* if the element is detected to be disabled.
*
* @param jQuery $tag Our Uniform span/div
* @param jQuery $el Original form element
* @param Object options Uniform options for this element
*/
function classUpdateDisabled($tag, $el, options) {
classUpdate($tag, options.disabledClass, $el.is(":disabled"));
}
/**
* Wrap an element inside of a container or put the container next
* to the element. See the code for examples of the different methods.
*
* Returns the container that was added to the HTML.
*
* @param jQuery $el Element to wrap
* @param jQuery $container Add this new container around/near $el
* @param String method One of "after", "before" or "wrap"
* @return $container after it has been cloned for adding to $el
*/
function divSpanWrap($el, $container, method) {
switch (method) {
case "after":
// Result:
$el.after($container);
return $el.next();
case "before":
// Result:
$el.before($container);
return $el.prev();
case "wrap":
// Result:
$el.wrap($container);
return $el.parent();
}
return null;
}
/**
* Create a div/span combo for uniforming an element
*
* @param jQuery $el Element to wrap
* @param Object options Options for the element, set by the user
* @param Object divSpanConfig Options for how we wrap the div/span
* @return Object Contains the div and span as properties
*/
function divSpan($el, options, divSpanConfig) {
var $div, $span, id;
if (!divSpanConfig) {
divSpanConfig = {};
}
divSpanConfig = $.extend({
bind: {},
divClass: null,
divWrap: "wrap",
spanClass: null,
spanHtml: null,
spanWrap: "wrap"
}, divSpanConfig);
$div = $('');
$span = $('');
// Automatically hide this div/span if the element is hidden.
// Do not hide if the element is hidden because a parent is hidden.
if (options.autoHide && $el.is(':hidden') && $el.css('display') === 'none') {
$div.hide();
}
if (divSpanConfig.divClass) {
$div.addClass(divSpanConfig.divClass);
}
if (options.wrapperClass) {
$div.addClass(options.wrapperClass);
}
if (divSpanConfig.spanClass) {
$span.addClass(divSpanConfig.spanClass);
}
id = attrOrProp($el, 'id');
if (options.useID && id) {
attrOrProp($div, 'id', options.idPrefix + '-' + id);
}
if (divSpanConfig.spanHtml) {
$span.html(divSpanConfig.spanHtml);
}
$div = divSpanWrap($el, $div, divSpanConfig.divWrap);
$span = divSpanWrap($el, $span, divSpanConfig.spanWrap);
classUpdateDisabled($div, $el, options);
return {
div: $div,
span: $span
};
}
/**
* Wrap an element with a span to apply a global wrapper class
*
* @param jQuery $el Element to wrap
* @param object options
* @return jQuery Wrapper element
*/
function wrapWithWrapperClass($el, options) {
var $span;
if (!options.wrapperClass) {
return null;
}
$span = $('').addClass(options.wrapperClass);
$span = divSpanWrap($el, $span, "wrap");
return $span;
}
/**
* Test if high contrast mode is enabled.
*
* In high contrast mode, background images can not be set and
* they are always returned as 'none'.
*
* @return boolean True if in high contrast mode
*/
function highContrast() {
var c, $div, el, rgb;
// High contrast mode deals with white and black
rgb = 'rgb(120,2,153)';
$div = $('');
$('body').append($div);
el = $div.get(0);
// $div.css() will get the style definition, not
// the actually displaying style
if (wind.getComputedStyle) {
c = wind.getComputedStyle(el, '').color;
} else {
c = (el.currentStyle || el.style || {}).color;
}
$div.remove();
return c.replace(/ /g, '') !== rgb;
}
/**
* Change text into safe HTML
*
* @param String text
* @return String HTML version
*/
function htmlify(text) {
if (!text) {
return "";
}
return $('
').text(text).html();
}
/**
* If not MSIE, return false.
* If it is, return the version number.
*
* @return false|number
*/
function isMsie() {
return navigator.cpuClass && !navigator.product;
}
/**
* Return true if this version of IE allows styling
*
* @return boolean
*/
function isMsieSevenOrNewer() {
if (wind.XMLHttpRequest !== undefined) {
return true;
}
return false;
}
/**
* Test if the element is a multiselect
*
* @param jQuery $el Element
* @return boolean true/false
*/
function isMultiselect($el) {
var elSize;
if ($el[0].multiple) {
return true;
}
elSize = attrOrProp($el, "size");
if (!elSize || elSize <= 1) {
return false;
}
return true;
}
/**
* Meaningless utility function. Used mostly for improving minification.
*
* @return false
*/
function returnFalse() {
return false;
}
/**
* noSelect plugin, very slightly modified
* http://mths.be/noselect v1.0.3
*
* @param jQuery $elem Element that we don't want to select
* @param Object options Uniform options for the element
*/
function noSelect($elem, options) {
var none = 'none';
bindMany($elem, options, {
'selectstart dragstart mousedown': returnFalse
});
$elem.css({
MozUserSelect: none,
msUserSelect: none,
webkitUserSelect: none,
userSelect: none
});
}
/**
* Updates the filename tag based on the value of the real input
* element.
*
* @param jQuery $el Actual form element
* @param jQuery $filenameTag Span/div to update
* @param Object options Uniform options for this element
*/
function setFilename($el, $filenameTag, options) {
var filename = $el.val();
if (filename === "") {
filename = options.fileDefaultHtml;
} else {
filename = filename.split(/[\/\\]+/);
filename = filename[(filename.length - 1)];
}
$filenameTag.text(filename);
}
/**
* Function from jQuery to swap some CSS values, run a callback,
* then restore the CSS. Modified to pass JSLint and handle undefined
* values with 'use strict'.
*
* @param jQuery $el Element
* @param object newCss CSS values to swap out
* @param Function callback Function to run
*/
function swap($elements, newCss, callback) {
var restore, item;
restore = [];
$elements.each(function () {
var name;
for (name in newCss) {
if (Object.prototype.hasOwnProperty.call(newCss, name)) {
restore.push({
el: this,
name: name,
old: this.style[name]
});
this.style[name] = newCss[name];
}
}
});
callback();
while (restore.length) {
item = restore.pop();
item.el.style[item.name] = item.old;
}
}
/**
* The browser doesn't provide sizes of elements that are not visible.
* This will clone an element and add it to the DOM for calculations.
*
* @param jQuery $el
* @param String method
*/
function sizingInvisible($el, callback) {
var targets;
// We wish to target ourselves and any parents as long as
// they are not visible
targets = $el.parents();
targets.push($el[0]);
targets = targets.not(':visible');
swap(targets, {
visibility: "hidden",
display: "block",
position: "absolute"
}, callback);
}
/**
* Standard way to unwrap the div/span combination from an element
*
* @param jQuery $el Element that we wish to preserve
* @param Object options Uniform options for the element
* @return Function This generated function will perform the given work
*/
function unwrapUnwrapUnbindFunction($el, options) {
return function () {
$el.unwrap().unwrap().unbind(options.eventNamespace);
};
}
var allowStyling = true, // False if IE6 or other unsupported browsers
highContrastTest = false, // Was the high contrast test ran?
uniformHandlers = [ // Objects that take care of "unification"
{
// Buttons
match: function ($el) {
return $el.is("a, button, :submit, :reset, input[type='button']");
},
apply: function ($el, options) {
var $div, defaultSpanHtml, ds, getHtml, doingClickEvent;
defaultSpanHtml = options.submitDefaultHtml;
if ($el.is(":reset")) {
defaultSpanHtml = options.resetDefaultHtml;
}
if ($el.is("a, button")) {
// Use the HTML inside the tag
getHtml = function () {
return $el.html() || defaultSpanHtml;
};
} else {
// Use the value property of the element
getHtml = function () {
return htmlify(attrOrProp($el, "value")) || defaultSpanHtml;
};
}
ds = divSpan($el, options, {
divClass: options.buttonClass,
spanHtml: getHtml()
});
$div = ds.div;
bindUi($el, $div, options);
doingClickEvent = false;
bindMany($div, options, {
"click touchend": function () {
var ev, res, target, href;
if (doingClickEvent) {
return;
}
if ($el.is(':disabled')) {
return;
}
doingClickEvent = true;
if ($el[0].dispatchEvent) {
ev = document.createEvent("MouseEvents");
ev.initEvent("click", true, true);
res = $el[0].dispatchEvent(ev);
if ($el.is('a') && res) {
target = attrOrProp($el, 'target');
href = attrOrProp($el, 'href');
if (!target || target === '_self') {
document.location.href = href;
} else {
wind.open(href, target);
}
}
} else {
$el.click();
}
doingClickEvent = false;
}
});
noSelect($div, options);
return {
remove: function () {
// Move $el out
$div.after($el);
// Remove div and span
$div.remove();
// Unbind events
$el.unbind(options.eventNamespace);
return $el;
},
update: function () {
classClearStandard($div, options);
classUpdateDisabled($div, $el, options);
$el.detach();
ds.span.html(getHtml()).append($el);
}
};
}
},
{
// Checkboxes
match: function ($el) {
return $el.is(":checkbox");
},
apply: function ($el, options) {
var ds, $div, $span;
ds = divSpan($el, options, {
divClass: options.checkboxClass
});
$div = ds.div;
$span = ds.span;
// Add focus classes, toggling, active, etc.
bindUi($el, $div, options);
bindMany($el, options, {
"click touchend": function () {
classUpdateChecked($span, $el, options);
}
});
classUpdateChecked($span, $el, options);
return {
remove: unwrapUnwrapUnbindFunction($el, options),
update: function () {
classClearStandard($div, options);
$span.removeClass(options.checkedClass);
classUpdateChecked($span, $el, options);
classUpdateDisabled($div, $el, options);
}
};
}
},
{
// File selection / uploads
match: function ($el) {
return $el.is(":file");
},
apply: function ($el, options) {
var ds, $div, $filename, $button;
// The "span" is the button
ds = divSpan($el, options, {
divClass: options.fileClass,
spanClass: options.fileButtonClass,
spanHtml: options.fileButtonHtml,
spanWrap: "after"
});
$div = ds.div;
$button = ds.span;
$filename = $("
").html(options.fileDefaultHtml);
$filename.addClass(options.filenameClass);
$filename = divSpanWrap($el, $filename, "after");
// Set the size
if (!attrOrProp($el, "size")) {
attrOrProp($el, "size", $div.width() / 10);
}
// Actions
function filenameUpdate() {
setFilename($el, $filename, options);
}
bindUi($el, $div, options);
// Account for input saved across refreshes
filenameUpdate();
// IE7 doesn't fire onChange until blur or second fire.
if (isMsie()) {
// IE considers browser chrome blocking I/O, so it
// suspends tiemouts until after the file has
// been selected.
bindMany($el, options, {
click: function () {
$el.trigger("change");
setTimeout(filenameUpdate, 0);
}
});
} else {
// All other browsers behave properly
bindMany($el, options, {
change: filenameUpdate
});
}
noSelect($filename, options);
noSelect($button, options);
return {
remove: function () {
// Remove filename and button
$filename.remove();
$button.remove();
// Unwrap parent div, remove events
return $el.unwrap().unbind(options.eventNamespace);
},
update: function () {
classClearStandard($div, options);
setFilename($el, $filename, options);
classUpdateDisabled($div, $el, options);
}
};
}
},
{
// Input fields (text)
match: function ($el) {
if ($el.is("input")) {
var t = (" " + attrOrProp($el, "type") + " ").toLowerCase(),
allowed = " color date datetime datetime-local email month number password search tel text time url week ";
return allowed.indexOf(t) >= 0;
}
return false;
},
apply: function ($el, options) {
var elType, $wrapper;
elType = attrOrProp($el, "type");
$el.addClass(options.inputClass);
$wrapper = wrapWithWrapperClass($el, options);
bindUi($el, $el, options);
if (options.inputAddTypeAsClass) {
$el.addClass(elType);
}
return {
remove: function () {
$el.removeClass(options.inputClass);
if (options.inputAddTypeAsClass) {
$el.removeClass(elType);
}
if ($wrapper) {
$el.unwrap();
}
},
update: returnFalse
};
}
},
{
// Radio buttons
match: function ($el) {
return $el.is(":radio");
},
apply: function ($el, options) {
var ds, $div, $span;
ds = divSpan($el, options, {
divClass: options.radioClass
});
$div = ds.div;
$span = ds.span;
// Add classes for focus, handle active, checked
bindUi($el, $div, options);
bindMany($el, options, {
"click touchend": function () {
// Find all radios with the same name, then update
// them with $.uniform.update() so the right
// per-element options are used
$.uniform.update($(':radio[name="' + attrOrProp($el, "name") + '"]'));
}
});
classUpdateChecked($span, $el, options);
return {
remove: unwrapUnwrapUnbindFunction($el, options),
update: function () {
classClearStandard($div, options);
classUpdateChecked($span, $el, options);
classUpdateDisabled($div, $el, options);
}
};
}
},
{
// Select lists, but do not style multiselects here
match: function ($el) {
if ($el.is("select") && !isMultiselect($el)) {
return true;
}
return false;
},
apply: function ($el, options) {
var ds, $div, $span, origElemWidth;
if (options.selectAutoWidth) {
sizingInvisible($el, function () {
origElemWidth = $el.width();
});
}
ds = divSpan($el, options, {
divClass: options.selectClass,
spanHtml: ($el.find(":selected:first") || $el.find("option:first")).html(),
spanWrap: "before"
});
$div = ds.div;
$span = ds.span;
if (options.selectAutoWidth) {
// Use the width of the select and adjust the
// span and div accordingly
sizingInvisible($el, function () {
// Force "display: block" - related to bug #287
swap($([ $span[0], $div[0] ]), {
display: "block"
}, function () {
var spanPad;
spanPad = $span.outerWidth() - $span.width();
$div.width(origElemWidth + spanPad);
$span.width(origElemWidth);
});
});
} else {
// Force the select to fill the size of the div
$div.addClass('fixedWidth');
}
// Take care of events
bindUi($el, $div, options);
bindMany($el, options, {
change: function () {
$span.html($el.find(":selected").html());
$div.removeClass(options.activeClass);
},
"click touchend": function () {
// IE7 and IE8 may not update the value right
// until after click event - issue #238
var selHtml = $el.find(":selected").html();
if ($span.html() !== selHtml) {
// Change was detected
// Fire the change event on the select tag
$el.trigger('change');
}
},
keyup: function () {
$span.html($el.find(":selected").html());
}
});
noSelect($span, options);
return {
remove: function () {
// Remove sibling span
$span.remove();
// Unwrap parent div
$el.unwrap().unbind(options.eventNamespace);
return $el;
},
update: function () {
if (options.selectAutoWidth) {
// Easier to remove and reapply formatting
$.uniform.restore($el);
$el.uniform(options);
} else {
classClearStandard($div, options);
// Reset current selected text
$span.html($el.find(":selected").html());
classUpdateDisabled($div, $el, options);
}
}
};
}
},
{
// Select lists - multiselect lists only
match: function ($el) {
if ($el.is("select") && isMultiselect($el)) {
return true;
}
return false;
},
apply: function ($el, options) {
var $wrapper;
$el.addClass(options.selectMultiClass);
$wrapper = wrapWithWrapperClass($el, options);
bindUi($el, $el, options);
return {
remove: function () {
$el.removeClass(options.selectMultiClass);
if ($wrapper) {
$el.unwrap();
}
},
update: returnFalse
};
}
},
{
// Textareas
match: function ($el) {
return $el.is("textarea");
},
apply: function ($el, options) {
var $wrapper;
$el.addClass(options.textareaClass);
$wrapper = wrapWithWrapperClass($el, options);
bindUi($el, $el, options);
return {
remove: function () {
$el.removeClass(options.textareaClass);
if ($wrapper) {
$el.unwrap();
}
},
update: returnFalse
};
}
}
];
// IE6 can't be styled - can't set opacity on select
if (isMsie() && !isMsieSevenOrNewer()) {
allowStyling = false;
}
$.uniform = {
// Default options that can be overridden globally or when uniformed
// globally: $.uniform.defaults.fileButtonHtml = "Pick A File";
// on uniform: $('input').uniform({fileButtonHtml: "Pick a File"});
defaults: {
activeClass: "active",
autoHide: true,
buttonClass: "button",
checkboxClass: "checker",
checkedClass: "checked",
disabledClass: "disabled",
eventNamespace: ".uniform",
fileButtonClass: "action",
fileButtonHtml: "Choose File",
fileClass: "uploader",
fileDefaultHtml: "No file selected",
filenameClass: "filename",
focusClass: "focus",
hoverClass: "hover",
idPrefix: "uniform",
inputAddTypeAsClass: true,
inputClass: "uniform-input",
radioClass: "radio",
resetDefaultHtml: "Reset",
resetSelector: false, // We'll use our own function when you don't specify one
selectAutoWidth: true,
selectClass: "selector",
selectMultiClass: "uniform-multiselect",
submitDefaultHtml: "Submit", // Only text allowed
textareaClass: "uniform",
useID: true,
wrapperClass: null
},
// All uniformed elements - DOM objects
elements: []
};
$.fn.uniform = function (options) {
var el = this;
options = $.extend({}, $.uniform.defaults, options);
// If we are in high contrast mode, do not allow styling
if (!highContrastTest) {
highContrastTest = true;
if (highContrast()) {
allowStyling = false;
}
}
// Only uniform on browsers that work
if (!allowStyling) {
return this;
}
// Code for specifying a reset button
if (options.resetSelector) {
$(options.resetSelector).mouseup(function () {
wind.setTimeout(function () {
$.uniform.update(el);
}, 10);
});
}
return this.each(function () {
var $el = $(this), i, handler, callbacks;
// Avoid uniforming elements already uniformed - just update
if ($el.data("uniformed")) {
$.uniform.update($el);
return;
}
// See if we have any handler for this type of element
for (i = 0; i < uniformHandlers.length; i = i + 1) {
handler = uniformHandlers[i];
if (handler.match($el, options)) {
callbacks = handler.apply($el, options);
$el.data("uniformed", callbacks);
// Store element in our global array
$.uniform.elements.push($el.get(0));
return;
}
}
// Could not style this element
});
};
$.uniform.restore = $.fn.uniform.restore = function (elem) {
if (elem === undef) {
elem = $.uniform.elements;
}
$(elem).each(function () {
var $el = $(this), index, elementData;
elementData = $el.data("uniformed");
// Skip elements that are not uniformed
if (!elementData) {
return;
}
// Unbind events, remove additional markup that was added
elementData.remove();
// Remove item from list of uniformed elements
index = $.inArray(this, $.uniform.elements);
if (index >= 0) {
$.uniform.elements.splice(index, 1);
}
$el.removeData("uniformed");
});
};
$.uniform.update = $.fn.uniform.update = function (elem) {
if (elem === undef) {
elem = $.uniform.elements;
}
$(elem).each(function () {
var $el = $(this), elementData;
elementData = $el.data("uniformed");
// Skip elements that are not uniformed
if (!elementData) {
return;
}
elementData.update($el, elementData.options);
});
};
}(this, jQuery));/** This file is part of KCFinder project
*
* @desc My jQuery UI & Uniform fixes
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
(function($) {
$.fn.oldMenu = $.fn.menu;
$.fn.menu = function(p1, p2, p3) {
var ret = $(this).oldMenu(p1, p2, p3);
$(this).each(function() {
if (!$(this).hasClass('sh-menu')) {
$(this).addClass('sh-menu')
.children().first().addClass('ui-menu-item-first');
$(this).children().last().addClass('ui-menu-item-last');
$(this).find('.ui-menu').addClass('sh-menu').each(function() {
$(this).children().first().addClass('ui-menu-item-first');
$(this).children().last().addClass('ui-menu-item-last');
});
}
});
return ret;
};
$.fn.oldUniform = $.fn.uniform;
$.fn.uniform = function(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10) {
var ret = $(this).oldUniform(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
$(this).each(function() {
var t = $(this);
if (!t.hasClass('sh-uniform')) {
t.addClass('sh-uniform');
// Fix upload filename width
if (t.is('input[type="file"]')) {
var f = t.parent().find('.filename');
f.css('width', f.innerWidth());
}
// Add an icon into select boxes
if (t.is('select') && !t.attr('multiple')) {
var p = t.parent(),
height = p.height(),
width = p.outerWidth(),
width2 = p.find('span').outerWidth();
$('').addClass('ui-icon').css({
'float': "right",
marginTop: - parseInt((height / 2) + 8),
marginRight: - parseInt((width - width2) / 2) - 7
}).appendTo(p);
}
}
});
return ret;
};
})(jQuery);/** This file is part of KCFinder project
*
* @desc Right Click jQuery Plugin
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
(function($) {
$.fn.rightClick = function(func) {
var events = "contextmenu rightclick";
$(this).each(function() {
$(this).unbind(events).bind(events, function(e) {
e.preventDefault();
$.clearSelection();
if ($.isFunction(func))
func(this, e);
});
});
return $(this);
};
})(jQuery);// @author Rich Adams
// Implements a tap and hold functionality. If you click/tap and release, it will trigger a normal
// click event. But if you click/tap and hold for 1s (default), it will trigger a taphold event instead.
;(function($)
{
// Default options
var defaults = {
duration: 1000, // ms
clickHandler: null
}
// When start of a taphold event is triggered.
function startHandler(event)
{
var $elem = jQuery(this);
// Merge the defaults and any user defined settings.
settings = jQuery.extend({}, defaults, event.data);
// If object also has click handler, store it and unbind. Taphold will trigger the
// click itself, rather than normal propagation.
if (typeof $elem.data("events") != "undefined"
&& typeof $elem.data("events").click != "undefined")
{
// Find the one without a namespace defined.
for (var c in $elem.data("events").click)
{
if ($elem.data("events").click[c].namespace == "")
{
var handler = $elem.data("events").click[c].handler
$elem.data("taphold_click_handler", handler);
$elem.unbind("click", handler);
break;
}
}
}
// Otherwise, if a custom click handler was explicitly defined, then store it instead.
else if (typeof settings.clickHandler == "function")
{
$elem.data("taphold_click_handler", settings.clickHandler);
}
// Reset the flags
$elem.data("taphold_triggered", false); // If a hold was triggered
$elem.data("taphold_clicked", false); // If a click was triggered
$elem.data("taphold_cancelled", false); // If event has been cancelled.
// Set the timer for the hold event.
$elem.data("taphold_timer",
setTimeout(function()
{
// If event hasn't been cancelled/clicked already, then go ahead and trigger the hold.
if (!$elem.data("taphold_cancelled")
&& !$elem.data("taphold_clicked"))
{
// Trigger the hold event, and set the flag to say it's been triggered.
$elem.trigger(jQuery.extend(event, jQuery.Event("taphold")));
$elem.data("taphold_triggered", true);
}
}, settings.duration));
}
// When user ends a tap or click, decide what we should do.
function stopHandler(event)
{
var $elem = jQuery(this);
// If taphold has been cancelled, then we're done.
if ($elem.data("taphold_cancelled")) { return; }
// Clear the hold timer. If it hasn't already triggered, then it's too late anyway.
clearTimeout($elem.data("taphold_timer"));
// If hold wasn't triggered and not already clicked, then was a click event.
if (!$elem.data("taphold_triggered")
&& !$elem.data("taphold_clicked"))
{
// If click handler, trigger it.
if (typeof $elem.data("taphold_click_handler") == "function")
{
$elem.data("taphold_click_handler")(jQuery.extend(event, jQuery.Event("click")));
}
// Set flag to say we've triggered the click event.
$elem.data("taphold_clicked", true);
}
}
// If a user prematurely leaves the boundary of the object we're working on.
function leaveHandler(event)
{
// Cancel the event.
$(this).data("taphold_cancelled", true);
}
// Determine if touch events are supported.
var touchSupported = ("ontouchstart" in window) // Most browsers
|| ("onmsgesturechange" in window); // Microsoft
var taphold = $.event.special.taphold =
{
setup: function(data)
{
$(this).bind((touchSupported ? "touchstart" : "mousedown"), data, startHandler)
.bind((touchSupported ? "touchend" : "mouseup"), stopHandler)
.bind((touchSupported ? "touchmove touchcancel" : "mouseleave"), leaveHandler);
},
teardown: function(namespaces)
{
$(this).unbind((touchSupported ? "touchstart" : "mousedown"), startHandler)
.unbind((touchSupported ? "touchend" : "mouseup"), stopHandler)
.unbind((touchSupported ? "touchmove touchcancel" : "mouseleave"), leaveHandler);
}
};
})(jQuery);/** This file is part of KCFinder project
*
* @desc User Agent jQuery Plugin
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
(function($) {
$.agent = {};
var agent = " " + navigator.userAgent,
patterns = [
{
expr: / [a-z]+\/[0-9a-z\.]+/ig,
delim: "/"
}, {
expr: / [a-z]+:[0-9a-z\.]+/ig,
delim: ":",
keys: ["rv", "version"]
}, {
expr: / [a-z]+\s+[0-9a-z\.]+/ig,
delim: /\s+/,
keys: ["opera", "msie", "firefox", "android"]
}, {
expr: /[ \/\(]([a-z0-9_]+)[ ;\)\/]/ig,
keys: "i386|i486|i586|i686|x86|x64|x86_64|intel|ppc|powerpc|windows|macintosh|darwin|unix|linux|sunos|android|iphone|ipad|ipod|amiga|amigaos|beos|wii|playstation|gentoo|fedora|slackware|ubuntu|archlinux|debian|mint|mageia|mandriva|freebsd|openbsd|netbsd|solaris|opensolaris|x11|mobile|phone".split('|'),
sub: "platform"
}
];
$.each(patterns, function(i, pattern) {
var elements = agent.match(pattern.expr);
if (elements === null)
return;
$.each(elements, function(j, ag) {
ag = ag.replace(/^\s+/, "").toLowerCase();
var key = ag.replace(pattern.expr, "$1"),
val = true;
if (typeof pattern.delim != "undefined") {
ag = ag.split(pattern.delim);
key = ag[0];
val = ag[1];
}
if (typeof pattern.keys != "undefined") {
var exists = false, k = 0;
for (; k < pattern.keys.length; k++)
if (pattern.keys[k] == key) {
exists = true;
break;
}
if (!exists)
return;
}
if (typeof pattern.sub != "undefined") {
if (typeof $.agent[pattern.sub] != "object")
$.agent[pattern.sub] = {};
if (typeof $.agent[pattern.sub][key] == "undefined")
$.agent[pattern.sub][key] = val;
} else if (typeof $.agent[key] == "undefined")
$.agent[key] = val;
});
});
if (!$.agent.platform)
$.agent.platform = {};
// Check for mobile device
$.mobile = false;
var keys = "mobile|android|iphone|ipad|ipod|iemobile|phone".split('|');
a = $.agent;
$.each([a, a.platform], function(i, p) {
for (var j = 0; j < keys.length; j++) {
if (p[keys[j]]) {
$.mobile = true;
return false;
}
}
});
})(jQuery);/** This file is part of KCFinder project
*
* @desc Helper functions integrated in jQuery
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
(function($) {
$.fn.selection = function(start, end) {
var field = this.get(0);
if (field.createTextRange) {
var selRange = field.createTextRange();
selRange.collapse(true);
selRange.moveStart('character', start);
selRange.moveEnd('character', end-start);
selRange.select();
} else if (field.setSelectionRange) {
field.setSelectionRange(start, end);
} else if (field.selectionStart) {
field.selectionStart = start;
field.selectionEnd = end;
}
field.focus();
};
$.fn.disableTextSelect = function() {
return this.each(function() {
if ($.agent.firefox) { // Firefox
$(this).css('MozUserSelect', "none");
} else if ($.agent.msie) { // IE
$(this).bind('selectstart', function() {
return false;
});
} else { //Opera, etc.
$(this).mousedown(function() {
return false;
});
}
});
};
$.fn.outerSpace = function(type, mbp) {
var selector = this.get(0),
r = 0, x;
if (!mbp) mbp = "mbp";
if (/m/i.test(mbp)) {
x = parseInt($(selector).css('margin-' + type));
if (x) r += x;
}
if (/b/i.test(mbp)) {
x = parseInt($(selector).css('border-' + type + '-width'));
if (x) r += x;
}
if (/p/i.test(mbp)) {
x = parseInt($(selector).css('padding-' + type));
if (x) r += x;
}
return r;
};
$.fn.outerLeftSpace = function(mbp) {
return this.outerSpace('left', mbp);
};
$.fn.outerTopSpace = function(mbp) {
return this.outerSpace('top', mbp);
};
$.fn.outerRightSpace = function(mbp) {
return this.outerSpace('right', mbp);
};
$.fn.outerBottomSpace = function(mbp) {
return this.outerSpace('bottom', mbp);
};
$.fn.outerHSpace = function(mbp) {
return (this.outerLeftSpace(mbp) + this.outerRightSpace(mbp));
};
$.fn.outerVSpace = function(mbp) {
return (this.outerTopSpace(mbp) + this.outerBottomSpace(mbp));
};
$.fn.fullscreen = function() {
if (!$(this).get(0))
return
var t = $(this).get(0),
requestMethod =
t.requestFullScreen ||
t.requestFullscreen ||
t.webkitRequestFullScreen ||
t.mozRequestFullScreen ||
t.msRequestFullscreen;
if (requestMethod)
requestMethod.call(t);
else if (typeof window.ActiveXObject !== "undefined") {
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null)
wscript.SendKeys("{F11}");
}
};
$.fn.toggleFullscreen = function(doc) {
if ($.isFullscreen(doc))
$.exitFullscreen(doc);
else
$(this).fullscreen();
};
$.exitFullscreen = function(doc) {
var d = doc ? doc : document,
requestMethod =
d.cancelFullScreen ||
d.cancelFullscreen ||
d.webkitCancelFullScreen ||
d.mozCancelFullScreen ||
d.msExitFullscreen ||
d.exitFullscreen;
if (requestMethod)
requestMethod.call(d);
else if (typeof window.ActiveXObject !== "undefined") {
var wscript = new ActiveXObject("WScript.Shell");
if (wscript !== null)
wscript.SendKeys("{F11}");
}
};
$.isFullscreen = function(doc) {
var d = doc ? doc : document;
return (d.fullScreenElement && (d.fullScreenElement !== null)) ||
(d.fullscreenElement && (d.fullscreenElement !== null)) ||
(d.msFullscreenElement && (d.msFullscreenElement !== null)) ||
d.mozFullScreen || d.webkitIsFullScreen;
};
$.clearSelection = function() {
if (document.selection)
document.selection.empty();
else if (window.getSelection)
window.getSelection().removeAllRanges();
};
$.$ = {
htmlValue: function(value) {
return value
.replace(/\&/g, "&")
.replace(/\"/g, """)
.replace(/\'/g, "'");
},
htmlData: function(value) {
return value.toString()
.replace(/\&/g, "&")
.replace(/\/g, ">")
.replace(/\ /g, " ")
.replace(/\"/g, """)
.replace(/\'/g, "'");
},
jsValue: function(value) {
return value
.replace(/\\/g, "\\\\")
.replace(/\r?\n/, "\\\n")
.replace(/\"/g, "\\\"")
.replace(/\'/g, "\\'");
},
basename: function(path) {
var expr = /^.*\/([^\/]+)\/?$/g;
return expr.test(path)
? path.replace(expr, "$1")
: path;
},
dirname: function(path) {
var expr = /^(.*)\/[^\/]+\/?$/g;
return expr.test(path)
? path.replace(expr, "$1")
: '';
},
inArray: function(needle, arr) {
if (!$.isArray(arr))
return false;
for (var i = 0; i < arr.length; i++)
if (arr[i] == needle)
return true;
return false;
},
getFileExtension: function(filename, toLower) {
if (typeof toLower == 'undefined') toLower = true;
if (/^.*\.[^\.]*$/.test(filename)) {
var ext = filename.replace(/^.*\.([^\.]*)$/, "$1");
return toLower ? ext.toLowerCase(ext) : ext;
} else
return "";
},
escapeDirs: function(path) {
var fullDirExpr = /^([a-z]+)\:\/\/([^\/^\:]+)(\:(\d+))?\/(.+)$/,
prefix = "";
if (fullDirExpr.test(path)) {
var port = path.replace(fullDirExpr, "$4");
prefix = path.replace(fullDirExpr, "$1://$2");
if (port.length)
prefix += ":" + port;
prefix += "/";
path = path.replace(fullDirExpr, "$5");
}
var dirs = path.split('/'),
escapePath = '', i = 0;
for (; i < dirs.length; i++)
escapePath += encodeURIComponent(dirs[i]) + '/';
return prefix + escapePath.substr(0, escapePath.length - 1);
},
kuki: {
prefix: '',
duration: 356,
domain: '',
path: '',
secure: false,
set: function(name, value, duration, domain, path, secure) {
name = this.prefix + name;
if (duration == null) duration = this.duration;
if (secure == null) secure = this.secure;
if ((domain == null) && this.domain) domain = this.domain;
if ((path == null) && this.path) path = this.path;
secure = secure ? true : false;
var date = new Date();
date.setTime(date.getTime() + (duration * 86400000));
var expires = date.toGMTString();
var str = name + '=' + value + '; expires=' + expires;
if (domain != null) str += '; domain=' + domain;
if (path != null) str += '; path=' + path;
if (secure) str += '; secure';
return (document.cookie = str) ? true : false;
},
get: function(name) {
name = this.prefix + name;
var nameEQ = name + '=';
var kukis = document.cookie.split(';');
var kuki;
for (var i = 0; i < kukis.length; i++) {
kuki = kukis[i];
while (kuki.charAt(0) == ' ')
kuki = kuki.substring(1, kuki.length);
if (kuki.indexOf(nameEQ) == 0)
return kuki.substring(nameEQ.length, kuki.length);
}
return null;
},
del: function(name) {
return this.set(name, '', -1);
},
isSet: function(name) {
return (this.get(name) != null);
}
}
};
})(jQuery);
/** This file is part of KCFinder project
*
* @desc Helper MD5 checksum function
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
(function($) {
$.$.utf8encode = function(string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
};
$.$.md5 = function(string) {
string = $.$.utf8encode(string);
var RotateLeft = function(lValue, iShiftBits) {
return (lValue<>>(32-iShiftBits));
},
AddUnsigned = function(lX, lY) {
var lX8 = (lX & 0x80000000),
lY8 = (lY & 0x80000000),
lX4 = (lX & 0x40000000),
lY4 = (lY & 0x40000000),
lResult = (lX & 0x3FFFFFFF) + (lY & 0x3FFFFFFF);
if (lX4 & lY4)
return (lResult ^ 0x80000000 ^ lX8 ^ lY8);
if (lX4 | lY4)
return (lResult & 0x40000000)
? (lResult ^ 0xC0000000 ^ lX8 ^ lY8)
: (lResult ^ 0x40000000 ^ lX8 ^ lY8);
else
return (lResult ^ lX8 ^ lY8);
},
F = function(x, y, z) { return (x & y) | ((~x) & z); },
G = function(x, y, z) { return (x & z) | (y & (~z)); },
H = function(x, y, z) { return (x ^ y ^ z); },
I = function(x, y, z) { return (y ^ (x | (~z))); },
FF = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
GG = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
HH = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
II = function(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return AddUnsigned(RotateLeft(a, s), b);
},
ConvertToWordArray = function(string) {
var lWordCount,
lMessageLength = string.length,
lNumberOfWords_temp1 = lMessageLength + 8,
lNumberOfWords_temp2 = (lNumberOfWords_temp1 - (lNumberOfWords_temp1 % 64)) / 64,
lNumberOfWords = (lNumberOfWords_temp2 + 1) * 16,
lWordArray = [lNumberOfWords - 1],
lBytePosition = 0,
lByteCount = 0;
while (lByteCount < lMessageLength) {
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount) << lBytePosition));
lByteCount++;
}
lWordCount = (lByteCount - (lByteCount % 4)) / 4;
lBytePosition = (lByteCount % 4) * 8;
lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80 << lBytePosition);
lWordArray[lNumberOfWords - 2] = lMessageLength << 3;
lWordArray[lNumberOfWords - 1] = lMessageLength >>> 29;
return lWordArray;
},
WordToHex = function(lValue) {
var lByte, lCount = 0,
WordToHexValue = "",
WordToHexValue_temp = "";
for (; lCount <= 3; lCount++) {
lByte = (lValue >>> (lCount * 8)) & 255;
WordToHexValue_temp = "0" + lByte.toString(16);
WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length - 2,2);
}
return WordToHexValue;
},
AA, BB, CC, DD, k = 0,
x = ConvertToWordArray(string),
a = 0x67452301, b = 0xEFCDAB89,
c = 0x98BADCFE, d = 0x10325476,
S11 = 7, S12 = 12, S13 = 17, S14 = 22,
S21 = 5, S22 = 9, S23 = 14, S24 = 20,
S31 = 4, S32 = 11, S33 = 16, S34 = 23,
S41 = 6, S42 = 10, S43 = 15, S44 = 21;
for (; k < x.length; k += 16) {
AA = a; BB = b; CC = c; DD = d;
a = FF(a, b, c, d, x[k + 0], S11, 0xD76AA478);
d = FF(d, a, b, c, x[k + 1], S12, 0xE8C7B756);
c = FF(c, d, a, b, x[k + 2], S13, 0x242070DB);
b = FF(b, c, d, a, x[k + 3], S14, 0xC1BDCEEE);
a = FF(a, b, c, d, x[k + 4], S11, 0xF57C0FAF);
d = FF(d, a, b, c, x[k + 5], S12, 0x4787C62A);
c = FF(c, d, a, b, x[k + 6], S13, 0xA8304613);
b = FF(b, c, d, a, x[k + 7], S14, 0xFD469501);
a = FF(a, b, c, d, x[k + 8], S11, 0x698098D8);
d = FF(d, a, b, c, x[k + 9], S12, 0x8B44F7AF);
c = FF(c, d, a, b, x[k + 10], S13, 0xFFFF5BB1);
b = FF(b, c, d, a, x[k + 11], S14, 0x895CD7BE);
a = FF(a, b, c, d, x[k + 12], S11, 0x6B901122);
d = FF(d, a, b, c, x[k + 13], S12, 0xFD987193);
c = FF(c, d, a, b, x[k + 14], S13, 0xA679438E);
b = FF(b, c, d, a, x[k + 15], S14, 0x49B40821);
a = GG(a, b, c, d, x[k + 1], S21, 0xF61E2562);
d = GG(d, a, b, c, x[k + 6], S22, 0xC040B340);
c = GG(c, d, a, b, x[k + 11], S23, 0x265E5A51);
b = GG(b, c, d, a, x[k + 0], S24, 0xE9B6C7AA);
a = GG(a, b, c, d, x[k + 5], S21, 0xD62F105D);
d = GG(d, a, b, c, x[k + 10], S22, 0x2441453);
c = GG(c, d, a, b, x[k + 15], S23, 0xD8A1E681);
b = GG(b, c, d, a, x[k + 4], S24, 0xE7D3FBC8);
a = GG(a, b, c, d, x[k + 9], S21, 0x21E1CDE6);
d = GG(d, a, b, c, x[k + 14], S22, 0xC33707D6);
c = GG(c, d, a, b, x[k + 3], S23, 0xF4D50D87);
b = GG(b, c, d, a, x[k + 8], S24, 0x455A14ED);
a = GG(a, b, c, d, x[k + 13], S21, 0xA9E3E905);
d = GG(d, a, b, c, x[k + 2], S22, 0xFCEFA3F8);
c = GG(c, d, a, b, x[k + 7], S23, 0x676F02D9);
b = GG(b, c, d, a, x[k + 12], S24, 0x8D2A4C8A);
a = HH(a, b, c, d, x[k + 5], S31, 0xFFFA3942);
d = HH(d, a, b, c, x[k + 8], S32, 0x8771F681);
c = HH(c, d, a, b, x[k + 11], S33, 0x6D9D6122);
b = HH(b, c, d, a, x[k + 14], S34, 0xFDE5380C);
a = HH(a, b, c, d, x[k + 1], S31, 0xA4BEEA44);
d = HH(d, a, b, c, x[k + 4], S32, 0x4BDECFA9);
c = HH(c, d, a, b, x[k + 7], S33, 0xF6BB4B60);
b = HH(b, c, d, a, x[k + 10], S34, 0xBEBFBC70);
a = HH(a, b, c, d, x[k + 13], S31, 0x289B7EC6);
d = HH(d, a, b, c, x[k + 0], S32, 0xEAA127FA);
c = HH(c, d, a, b, x[k + 3], S33, 0xD4EF3085);
b = HH(b, c, d, a, x[k + 6], S34, 0x4881D05);
a = HH(a, b, c, d, x[k + 9], S31, 0xD9D4D039);
d = HH(d, a, b, c, x[k + 12], S32, 0xE6DB99E5);
c = HH(c, d, a, b, x[k + 15], S33, 0x1FA27CF8);
b = HH(b, c, d, a, x[k + 2], S34, 0xC4AC5665);
a = II(a, b, c, d, x[k + 0], S41, 0xF4292244);
d = II(d, a, b, c, x[k + 7], S42, 0x432AFF97);
c = II(c, d, a, b, x[k + 14], S43, 0xAB9423A7);
b = II(b, c, d, a, x[k + 5], S44, 0xFC93A039);
a = II(a, b, c, d, x[k + 12], S41, 0x655B59C3);
d = II(d, a, b, c, x[k + 3], S42, 0x8F0CCC92);
c = II(c, d, a, b, x[k + 10], S43, 0xFFEFF47D);
b = II(b, c, d, a, x[k + 1], S44, 0x85845DD1);
a = II(a, b, c, d, x[k + 8], S41, 0x6FA87E4F);
d = II(d, a, b, c, x[k + 15], S42, 0xFE2CE6E0);
c = II(c, d, a, b, x[k + 6], S43, 0xA3014314);
b = II(b, c, d, a, x[k + 13], S44, 0x4E0811A1);
a = II(a, b, c, d, x[k + 4], S41, 0xF7537E82);
d = II(d, a, b, c, x[k + 11], S42, 0xBD3AF235);
c = II(c, d, a, b, x[k + 2], S43, 0x2AD7D2BB);
b = II(b, c, d, a, x[k + 9], S44, 0xEB86D391);
a = AddUnsigned(a, AA);
b = AddUnsigned(b, BB);
c = AddUnsigned(c, CC);
d = AddUnsigned(d, DD);
}
return (WordToHex(a) + WordToHex(b) + WordToHex(c) + WordToHex(d)).toLowerCase();
};
})(jQuery);/** This file is part of KCFinder project
*
* @desc Base JavaScript object properties
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
var _ = {
opener: {},
support: {},
files: [],
clipboard: [],
labels: [],
shows: [],
orders: [],
cms: "",
scrollbarWidth: 20
};
/** This file is part of KCFinder project
*
* @desc Dialog boxes functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.alert = function(text, field, options) {
var close = !field
? function() {}
: ($.isFunction(field)
? field
: function() { setTimeout(function() {field.focus(); }, 1); }
),
o = {
close: function() {
close();
if ($(this).hasClass('ui-dialog-content'))
$(this).dialog('destroy').detach();
}
};
$.extend(o, options);
return _.dialog(_.label("Warning"), text.replace("\n", "
\n"), o);
};
_.confirm = function(text, callback, options) {
var o = {
buttons: [
{
text: _.label("Yes"),
icons: {primary: "ui-icon-check"},
click: function() {
callback();
$(this).dialog('destroy').detach();
}
},
{
text: _.label("No"),
icons: {primary: "ui-icon-closethick"},
click: function() {
$(this).dialog('destroy').detach();
}
}
]
};
$.extend(o, options);
return _.dialog(_.label("Confirmation"), text, o);
};
_.dialog = function(title, content, options) {
if (!options) options = {};
var dlg = $('');
dlg.hide().attr('title', title).html(content).appendTo('body');
if (dlg.find('form').get(0) && !dlg.find('form [type="submit"]').get(0))
dlg.find('form').append('');
var o = {
resizable: false,
minHeight: false,
modal: true,
width: 351,
buttons: [
{
text: _.label("OK"),
icons: {primary: "ui-icon-check"},
click: function() {
if (typeof options.close != "undefined")
options.close();
if ($(this).hasClass('ui-dialog-content'))
$(this).dialog('destroy').detach();
}
}
],
close: function() {
if ($(this).hasClass('ui-dialog-content'))
$(this).dialog('destroy').detach();
},
closeText: false,
zindex: 1000000,
alone: false,
blur: false,
legend: false,
nopadding: false,
show: { effect: "fade", duration: 250 },
hide: { effect: "fade", duration: 250 }
};
$.extend(o, options);
if (o.alone)
$('.ui-dialog .ui-dialog-content').dialog('destroy').detach();
dlg.dialog(o);
if (o.nopadding)
dlg.css({padding: 0});
if (o.blur)
dlg.parent().find('.ui-dialog-buttonpane button').first().get(0).blur();
if (o.legend)
dlg.parent().find('.ui-dialog-buttonpane').prepend('' + o.legend + '
');
if ($.agent && $.agent.firefox)
dlg.css('overflow-x', "hidden");
return dlg;
};
_.fileNameDialog = function(post, inputName, inputValue, url, labels, callBack, selectAll) {
var html = '',
submit = function() {
var name = dlg.find('[type="text"]').get(0);
name.value = $.trim(name.value);
if (name.value == "") {
_.alert(_.label(labels.errEmpty), function() {
name.focus();
});
return false;
} else if (/[\/\\]/g.test(name.value)) {
_.alert(_.label(labels.errSlash), function() {
name.focus();
});
return false;
} else if (name.value.substr(0, 1) == ".") {
_.alert(_.label(labels.errDot), function() {
name.focus();
});
return false;
}
post[inputName] = name.value;
$.ajax({
type: "post",
dataType: "json",
url: url,
data: post,
async: false,
success: function(data) {
if (_.check4errors(data, false))
return;
if (callBack) callBack(data);
dlg.dialog("destroy").detach();
},
error: function() {
_.alert(_.label("Unknown error."));
}
});
return false;
},
dlg = _.dialog(_.label(labels.title), html, {
width: 351,
buttons: [
{
text: _.label("OK"),
icons: {primary: "ui-icon-check"},
click: function() {
submit();
}
},
{
text: _.label("Cancel"),
icons: {primary: "ui-icon-closethick"},
click: function() {
$(this).dialog('destroy').detach();
}
}
]
}),
field = dlg.find('[type="text"]');
field.uniform().attr('value', inputValue).css('width', 310);
dlg.find('form').submit(submit);
if (!selectAll && /^(.+)\.[^\.]+$/ .test(inputValue))
field.selection(0, inputValue.replace(/^(.+)\.[^\.]+$/, "$1").length);
else {
field.get(0).focus();
field.get(0).select();
}
};/** This file is part of KCFinder project
*
* @desc Object initializations
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.init = function() {
if (!_.checkAgent()) return;
$('body').click(function() {
_.menu.hide();
}).rightClick();
$('#menu').unbind().click(function() {
return false;
});
_.initOpeners();
_.initSettings();
_.initContent();
_.initToolbar();
_.initResizer();
_.initDropUpload();
var div = $('')
.css({width: 100, height: 100, overflow: 'auto', position: 'absolute', top: -1000, left: -1000})
.prependTo('body').append('').find('div').css({width: '100%', height: 200});
_.scrollbarWidth = 100 - div.width();
div.parent().remove();
$.each($.agent, function(i) {
if (i != "platform")
$('body').addClass(i)
});
if ($.agent.platform)
$.each($.agent.platform, function(i) {
$('body').addClass(i)
});
if ($.mobile)
$('body').addClass("mobile");
};
_.checkAgent = function() {
if (($.agent.msie && !$.agent.opera && !$.agent.chromeframe && (parseInt($.agent.msie) < 9)) ||
($.agent.opera && (parseInt($.agent.version) < 10)) ||
($.agent.firefox && (parseFloat($.agent.firefox) < 1.8))
) {
var html = '';
$('body').html(html);
return false;
}
return true;
};
_.initOpeners = function() {
try {
// TinyMCE 3
if (_.opener.name == "tinymce") {
if (typeof tinyMCEPopup == "undefined")
_.opener.name = null;
else
_.opener.callBack = true;
// TinyMCE 4
} else if (_.opener.name == "tinymce4")
_.opener.callBack = true;
// CKEditor
else if (_.opener.name == "ckeditor") {
if (window.parent && window.parent.CKEDITOR)
_.opener.CKEditor.object = window.parent.CKEDITOR;
else if (window.opener && window.opener.CKEDITOR) {
_.opener.CKEditor.object = window.opener.CKEDITOR;
_.opener.callBack = true;
} else
_.opener.CKEditor = null;
// FCKeditor
} else if ((!_.opener.name || (_.opener.name == "fckeditor")) && window.opener && window.opener.SetUrl) {
_.opener.name = "fckeditor";
_.opener.callBack = true;
}
// Custom callback
if (!_.opener.callBack) {
if ((window.opener && window.opener.KCFinder && window.opener.KCFinder.callBack) ||
(window.parent && window.parent.KCFinder && window.parent.KCFinder.callBack)
)
_.opener.callBack = window.opener
? window.opener.KCFinder.callBack
: window.parent.KCFinder.callBack;
if ((
window.opener &&
window.opener.KCFinder &&
window.opener.KCFinder.callBackMultiple
) || (
window.parent &&
window.parent.KCFinder &&
window.parent.KCFinder.callBackMultiple
)
)
_.opener.callBackMultiple = window.opener
? window.opener.KCFinder.callBackMultiple
: window.parent.KCFinder.callBackMultiple;
}
} catch(e) {}
};
_.initContent = function() {
$('div#folders').html(_.label("Loading folders..."));
$('div#files').html(_.label("Loading files..."));
$.ajax({
type: "get",
dataType: "json",
url: _.getURL("init"),
async: false,
success: function(data) {
if (_.check4errors(data))
return;
_.dirWritable = data.dirWritable;
$('#folders').html(_.buildTree(data.tree));
_.setTreeData(data.tree);
_.setTitle("KCFinder: /" + _.dir);
_.initFolders();
_.files = data.files ? data.files : [];
_.orderFiles();
},
error: function() {
$('div#folders').html(_.label("Unknown error."));
$('div#files').html(_.label("Unknown error."));
}
});
};
_.initResizer = function() {
var cursor = ($.agent.opera) ? 'move' : 'col-resize';
$('#resizer').css('cursor', cursor).draggable({
axis: 'x',
start: function() {
$(this).css({
opacity: "0.4",
filter: "alpha(opacity=40)"
});
$('#all').css('cursor', cursor);
},
stop: function() {
$(this).css({
opacity: "0",
filter: "alpha(opacity=0)"
});
$('#all').css('cursor', "");
var jLeft = $('#left'),
jRight = $('#right'),
jFiles = $('#files'),
jFolders = $('#folders'),
left = parseInt($(this).css('left')) + parseInt($(this).css('width')),
w = 0, r;
$('#toolbar a').each(function() {
if ($(this).css('display') != "none")
w += $(this).outerWidth(true);
});
r = $(window).width() - w;
if (left < 100)
left = 100;
if (left > r)
left = r;
var right = $(window).width() - left;
jLeft.css('width', left);
jRight.css('width', right);
jFiles.css('width', jRight.innerWidth() - jFiles.outerHSpace());
$('#resizer').css({
left: jLeft.outerWidth() - jFolders.outerRightSpace('m'),
width: jFolders.outerRightSpace('m') + jFiles.outerLeftSpace('m')
});
_.fixFilesHeight();
}
});
};
_.resize = function() {
var jLeft = $('#left'),
jRight = $('#right'),
jStatus = $('#status'),
jFolders = $('#folders'),
jFiles = $('#files'),
jResizer = $('#resizer'),
jWindow = $(window);
jLeft.css({
width: "25%",
height: jWindow.height() - jStatus.outerHeight()
});
jRight.css({
width: "75%",
height: jWindow.height() - jStatus.outerHeight()
});
$('#toolbar').css('height', $('#toolbar a').outerHeight());
jResizer.css('height', $(window).height());
jFolders.css('height', jLeft.outerHeight() - jFolders.outerVSpace());
_.fixFilesHeight();
var width = jLeft.outerWidth() + jRight.outerWidth();
jStatus.css('width', width);
while (jStatus.outerWidth() > width)
jStatus.css('width', parseInt(jStatus.css('width')) - 1);
while (jStatus.outerWidth() < width)
jStatus.css('width', parseInt(jStatus.css('width')) + 1);
jFiles.css('width', jRight.innerWidth() - jFiles.outerHSpace());
jResizer.css({
left: jLeft.outerWidth() - jFolders.outerRightSpace('m'),
width: jFolders.outerRightSpace('m') + jFiles.outerLeftSpace('m')
});
};
_.setTitle = function(title) {
document.title = title;
if (_.opener.name == "tinymce")
tinyMCEPopup.editor.windowManager.setTitle(window, title);
else if (_.opener.name == "tinymce4") {
var ifr = $('iframe[src*="browse.php?opener=tinymce4&"]', window.parent.document),
path = ifr.attr('src').split('browse.php?')[0];
ifr.parent().parent().find('div.mce-title').html('' + title + '');
}
};
_.fixFilesHeight = function() {
var jFiles = $('#files'),
jSettings = $('#settings');
jFiles.css('height',
$('#left').outerHeight() - $('#toolbar').outerHeight() - jFiles.outerVSpace() -
((jSettings.css('display') != "none") ? jSettings.outerHeight() : 0)
);
};
/** This file is part of KCFinder project
*
* @desc Toolbar functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.initToolbar = function() {
$('#toolbar').disableTextSelect();
$('#toolbar a').click(function() {
_.menu.hide();
});
if (!$.$.kuki.isSet('displaySettings'))
$.$.kuki.set('displaySettings', "off");
if ($.$.kuki.get('displaySettings') == "on") {
$('#toolbar a[href="kcact:settings"]').addClass('selected');
$('#settings').show();
_.resize();
}
$('#toolbar a[href="kcact:settings"]').click(function () {
var jSettings = $('#settings');
if (jSettings.css('display') == "none") {
$(this).addClass('selected');
$.$.kuki.set('displaySettings', "on");
jSettings.show();
_.fixFilesHeight();
} else {
$(this).removeClass('selected');
$.$.kuki.set('displaySettings', "off");
jSettings.hide();
_.fixFilesHeight();
}
return false;
});
$('#toolbar a[href="kcact:refresh"]').click(function() {
_.refresh();
return false;
});
$('#toolbar a[href="kcact:maximize"]').click(function() {
_.maximize(this);
return false;
});
$('#toolbar a[href="kcact:about"]').click(function() {
var html = '' +
'
';
if (_.support.check4Update)
html += '
' + _.label("Checking for new version...") + '
';
html +=
'
' +
'
Copyright ©2010-2014 Pavel Tzonkov
' +
'
';
var dlg = _.dialog(_.label("About"), html, {width: 301});
setTimeout(function() {
$.ajax({
dataType: "json",
url: _.getURL('check4Update'),
async: true,
success: function(data) {
if (!dlg.html().length)
return;
var span = $('#checkver');
span.removeClass('loading');
if (!data.version) {
span.html(_.label("Unable to connect!"));
return;
}
if (_.version < data.version)
span.html('' + _.label("Download version {version} now!", {version: data.version}) + '');
else
span.html(_.label("KCFinder is up to date!"));
},
error: function() {
if (!dlg.html().length)
return;
$('#checkver').removeClass('loading').html(_.label("Unable to connect!"));
}
});
}, 1000);
return false;
});
_.initUploadButton();
};
_.initUploadButton = function() {
var btn = $('#toolbar a[href="kcact:upload"]');
if (!_.access.files.upload) {
btn.hide();
return;
}
var top = btn.get(0).offsetTop,
width = btn.outerWidth(),
height = btn.outerHeight(),
jInput = $('#upload input');
$('#toolbar').prepend('');
jInput.css('margin-left', "-" + (jInput.outerWidth() - width));
$('#upload').mouseover(function() {
$('#toolbar a[href="kcact:upload"]').addClass('hover');
}).mouseout(function() {
$('#toolbar a[href="kcact:upload"]').removeClass('hover');
});
};
_.uploadFile = function(form) {
if (!_.dirWritable) {
_.alert(_.label("Cannot write to upload folder."));
$('#upload').detach();
_.initUploadButton();
return;
}
form.elements[1].value = _.dir;
$('').prependTo(document.body);
$('#loading').html(_.label("Uploading file...")).show();
form.submit();
$('#uploadResponse').load(function() {
var response = $(this).contents().find('body').text();
$('#loading').hide();
response = response.split("\n");
var selected = [], errors = [];
$.each(response, function(i, row) {
if (row.substr(0, 1) == "/")
selected[selected.length] = row.substr(1, row.length - 1);
else
errors[errors.length] = row;
});
if (errors.length) {
errors = errors.join("\n");
if (errors.replace(/^\s+/g, "").replace(/\s+$/g, "").length)
_.alert(errors);
}
if (!selected.length)
selected = null;
_.refresh(selected);
$('#upload').detach();
setTimeout(function() {
$('#uploadResponse').detach();
}, 1);
_.initUploadButton();
});
};
_.maximize = function(button) {
// TINYMCE 3
if (_.opener.name == "tinymce") {
var par = window.parent.document,
ifr = $('iframe[src*="browse.php?opener=tinymce&"]', par),
id = parseInt(ifr.attr('id').replace(/^mce_(\d+)_ifr$/, "$1")),
win = $('#mce_' + id, par);
if ($(button).hasClass('selected')) {
$(button).removeClass('selected');
win.css({
left: _.maximizeMCE.left,
top: _.maximizeMCE.top,
width: _.maximizeMCE.width,
height: _.maximizeMCE.height
});
ifr.css({
width: _.maximizeMCE.width - _.maximizeMCE.Hspace,
height: _.maximizeMCE.height - _.maximizeMCE.Vspace
});
} else {
$(button).addClass('selected')
_.maximizeMCE = {
width: parseInt(win.css('width')),
height: parseInt(win.css('height')),
left: win.position().left,
top: win.position().top,
Hspace: parseInt(win.css('width')) - parseInt(ifr.css('width')),
Vspace: parseInt(win.css('height')) - parseInt(ifr.css('height'))
};
var width = $(window.top).width(),
height = $(window.top).height();
win.css({
left: $(window.parent).scrollLeft(),
top: $(window.parent).scrollTop(),
width: width,
height: height
});
ifr.css({
width: width - _.maximizeMCE.Hspace,
height: height - _.maximizeMCE.Vspace
});
}
// TINYMCE 4
} else if (_.opener.name == "tinymce4") {
var par = window.parent.document,
ifr = $('iframe[src*="browse.php?opener=tinymce4&"]', par).parent(),
win = ifr.parent();
if ($(button).hasClass('selected')) {
$(button).removeClass('selected');
win.css({
left: _.maximizeMCE4.left,
top: _.maximizeMCE4.top,
width: _.maximizeMCE4.width,
height: _.maximizeMCE4.height
});
ifr.css({
width: _.maximizeMCE4.width,
height: _.maximizeMCE4.height - _.maximizeMCE4.Vspace
});
} else {
$(button).addClass('selected');
_.maximizeMCE4 = {
width: parseInt(win.css('width')),
height: parseInt(win.css('height')),
left: win.position().left,
top: win.position().top,
Vspace: win.outerHeight(true) - ifr.outerHeight(true) - 1
};
var width = $(window.top).width(),
height = $(window.top).height();
win.css({
left: 0,
top: 0,
width: width,
height: height
});
ifr.css({
width: width,
height: height - _.maximizeMCE4.Vspace
});
}
// PUPUP WINDOW
} else if (window.opener) {
window.moveTo(0, 0);
width = screen.availWidth;
height = screen.availHeight;
if ($.agent.opera)
height -= 50;
window.resizeTo(width, height);
} else {
if (window.parent) {
var el = null;
$(window.parent.document).find('iframe').each(function() {
if (this.src.replace('/?', '?') == window.location.href.replace('/?', '?')) {
el = this;
return false;
}
});
// IFRAME
if (el !== null)
$(el).toggleFullscreen(window.parent.document);
// SELF WINDOW
else
$('body').toggleFullscreen();
} else
$('body').toggleFullscreen();
}
};
_.refresh = function(selected) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("chDir"),
data: {dir: _.dir},
async: false,
success: function(data) {
if (_.check4errors(data)) {
$('#files > div').css({opacity: "", filter: ""});
return;
}
_.dirWritable = data.dirWritable;
_.files = data.files ? data.files : [];
_.orderFiles(null, selected);
_.statusDir();
},
error: function() {
$('#files > div').css({opacity: "", filter: ""});
$('#files').html(_.label("Unknown error."));
}
});
};
/** This file is part of KCFinder project
*
* @desc Settings panel functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.initSettings = function() {
$('#settings').disableTextSelect();
$('#settings fieldset, #settings input, #settings label').uniform();
if (!_.shows.length)
$('#show input[type="checkbox"]').each(function(i) {
_.shows[i] = this.name;
});
var shows = _.shows;
if (!$.$.kuki.isSet('showname')) {
$.$.kuki.set('showname', "on");
$.each(shows, function (i, val) {
if (val != "name") $.$.kuki.set('show' + val, "off");
});
}
$('#show input[type="checkbox"]').click(function() {
$.$.kuki.set('show' + this.name, this.checked ? "on" : "off")
$('#files .file div.' + this.name).css('display', this.checked ? "block" : "none");
});
$.each(shows, function(i, val) {
$('#show input[name="' + val + '"]').get(0).checked = ($.$.kuki.get('show' + val) == "on") ? "checked" : "";
});
if (!_.orders.length)
$('#order input[type="radio"]').each(function(i) {
_.orders[i] = this.value;
})
var orders = _.orders;
if (!$.$.kuki.isSet('order'))
$.$.kuki.set('order', "name");
if (!$.$.kuki.isSet('orderDesc'))
$.$.kuki.set('orderDesc', "off");
$('#order input[value="' + $.$.kuki.get('order') + '"]').get(0).checked = true;
$('#order input[name="desc"]').get(0).checked = ($.$.kuki.get('orderDesc') == "on");
$('#order input[type="radio"]').click(function() {
$.$.kuki.set('order', this.value);
_.orderFiles();
});
$('#order input[name="desc"]').click(function() {
$.$.kuki.set('orderDesc', this.checked ? 'on' : "off");
_.orderFiles();
});
if (!$.$.kuki.isSet('view'))
$.$.kuki.set('view', "thumbs");
if ($.$.kuki.get('view') == "list")
$('#show').parent().hide();
$('#view input[value="' + $.$.kuki.get('view') + '"]').get(0).checked = true;
$('#view input').click(function() {
var view = this.value;
if ($.$.kuki.get('view') != view) {
$.$.kuki.set('view', view);
if (view == "list")
$('#show').parent().hide();
else
$('#show').parent().show();
}
_.fixFilesHeight();
_.refresh();
});
};
/** This file is part of KCFinder project
*
* @desc File related functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.initFiles = function() {
$(document).unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
$('#files').unbind().scroll(function() {
_.menu.hide();
}).disableTextSelect();
$('.file').unbind().click(function(e) {
_.selectFile($(this), e);
}).rightClick(function(el, e) {
_.menuFile($(el), e);
}).dblclick(function() {
_.returnFile($(this));
});
if ($.mobile)
$('.file').on('taphold', function() {
_.menuFile($(this), {
pageX: $(this).offset().left,
pageY: $(this).offset().top + $(this).outerHeight()
});
});
$.each(_.shows, function(i, val) {
$('#files .file div.' + val).css('display', ($.$.kuki.get('show' + val) == "off") ? "none" : "block");
});
_.statusDir();
};
_.showFiles = function(callBack, selected) {
_.fadeFiles();
setTimeout(function() {
var c = $('');
$.each(_.files, function(i, file) {
var f, icon,
stamp = file.size + "|" + file.mtime;
// List
if ($.$.kuki.get('view') == "list") {
if (!i) c.html('');
icon = $.$.getFileExtension(file.name);
if (file.thumb)
icon = ".image";
else if (!icon.length || !file.smallIcon)
icon = ".";
icon = "themes/" + _.theme + "/img/files/small/" + icon + ".png";
f = $(' | | |
');
f.appendTo(c.find('table'));
// Thumbnails
} else {
if (file.thumb)
icon = _.getURL('thumb') + "&file=" + encodeURIComponent(file.name) + "&dir=" + encodeURIComponent(_.dir) + "&stamp=" + stamp;
else if (file.smallThumb) {
icon = _.uploadURL + "/" + _.dir + "/" + encodeURIComponent(file.name);
icon = $.$.escapeDirs(icon).replace(/\'/g, "%27");
} else {
icon = file.bigIcon ? $.$.getFileExtension(file.name) : ".";
if (!icon.length) icon = ".";
icon = "themes/" + _.theme + "/img/files/big/" + icon + ".png";
}
f = $('');
f.appendTo(c);
}
f.find('.thumb').css({backgroundImage: 'url("' + icon + '")'});
f.find('.name').html($.$.htmlData(file.name));
f.find('.time').html(file.date);
f.find('.size').html(_.humanSize(file.size));
f.data(file);
if ((file.name === selected) || $.$.inArray(file.name, selected))
f.addClass('selected');
});
c.css({opacity:'', filter:''});
$('#files').html(c);
if (callBack) callBack();
_.initFiles();
}, 200);
};
_.selectFile = function(file, e) {
// Click with Ctrl, Meta or Shift key
if (e.ctrlKey || e.metaKey || e.shiftKey) {
// Click with Shift key
if (e.shiftKey && !file.hasClass('selected')) {
var f = file.prev();
while (f.get(0) && !f.hasClass('selected')) {
f.addClass('selected');
f = f.prev();
}
}
file.toggleClass('selected');
// Update statusbar
var files = $('.file.selected').get(),
size = 0, data;
if (!files.length)
_.statusDir();
else {
$.each(files, function(i, cfile) {
size += $(cfile).data('size');
});
size = _.humanSize(size);
if (files.length > 1)
$('#fileinfo').html(files.length + " " + _.label("selected files") + " (" + size + ")");
else {
data = $(files[0]).data();
$('#fileinfo').html($.$.htmlData(data.name) + " (" + _.humanSize(data.size) + ", " + data.date + ")");
}
}
// Normal click
} else {
data = file.data();
$('.file').removeClass('selected');
file.addClass('selected');
$('#fileinfo').html($.$.htmlData(data.name) + " (" + _.humanSize(data.size) + ", " + data.date + ")");
}
};
_.selectAll = function(e) {
if ((!e.ctrlKey && !e.metaKey) || ((e.keyCode != 65) && (e.keyCode != 97))) // Ctrl-A
return false;
var files = $('.file'),
size = 0;
if (files.length) {
files.addClass('selected').each(function() {
size += $(this).data('size');
});
$('#fileinfo').html(files.length + " " + _.label("selected files") + " (" + _.humanSize(size) + ")");
}
return true;
};
_.returnFile = function(file) {
var button, win, fileURL = file.substr
? file : _.uploadURL + "/" + _.dir + "/" + file.data('name');
fileURL = $.$.escapeDirs(fileURL);
if (_.opener.name == "ckeditor") {
_.opener.CKEditor.object.tools.callFunction(_.opener.CKEditor.funcNum, fileURL, "");
window.close();
} else if (_.opener.name == "fckeditor") {
window.opener.SetUrl(fileURL) ;
window.close() ;
} else if (_.opener.name == "tinymce") {
win = tinyMCEPopup.getWindowArg('window');
win.document.getElementById(tinyMCEPopup.getWindowArg('input')).value = fileURL;
if (win.getImageData) win.getImageData();
if (typeof(win.ImageDialog) != "undefined") {
if (win.ImageDialog.getImageData)
win.ImageDialog.getImageData();
if (win.ImageDialog.showPreviewImage)
win.ImageDialog.showPreviewImage(fileURL);
}
tinyMCEPopup.close();
} else if (_.opener.name == "tinymce4") {
win = (window.opener ? window.opener : window.parent);
$(win.document).find('#' + _.opener.TinyMCE.field).val(fileURL);
win.tinyMCE.activeEditor.windowManager.close();
} else if (_.opener.callBack) {
if (window.opener && window.opener.KCFinder) {
_.opener.callBack(fileURL);
window.close();
}
if (window.parent && window.parent.KCFinder) {
button = $('#toolbar a[href="kcact:maximize"]');
if (button.hasClass('selected'))
_.maximize(button);
_.opener.callBack(fileURL);
}
} else if (_.opener.callBackMultiple) {
if (window.opener && window.opener.KCFinder) {
_.opener.callBackMultiple([fileURL]);
window.close();
}
if (window.parent && window.parent.KCFinder) {
button = $('#toolbar a[href="kcact:maximize"]');
if (button.hasClass('selected'))
_.maximize(button);
_.opener.callBackMultiple([fileURL]);
}
}
};
_.returnFiles = function(files) {
if (_.opener.callBackMultiple && files.length) {
var rfiles = [];
$.each(files, function(i, file) {
rfiles[i] = _.uploadURL + "/" + _.dir + "/" + $(file).data('name');
rfiles[i] = $.$.escapeDirs(rfiles[i]);
});
_.opener.callBackMultiple(rfiles);
if (window.opener) window.close()
}
};
_.returnThumbnails = function(files) {
if (_.opener.callBackMultiple) {
var rfiles = [], j = 0;
$.each(files, function(i, file) {
if ($(file).data('thumb')) {
rfiles[j] = _.thumbsURL + "/" + _.dir + "/" + $(file).data('name');
rfiles[j] = $.$.escapeDirs(rfiles[j++]);
}
});
_.opener.callBackMultiple(rfiles);
if (window.opener) window.close()
}
};
/** This file is part of KCFinder project
*
* @desc Folder related functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.initFolders = function() {
$('#folders').scroll(function() {
_.menu.hide();
}).disableTextSelect();
$('div.folder > a').unbind().click(function() {
_.menu.hide();
return false;
});
$('div.folder > a > span.brace').unbind().click(function() {
if ($(this).hasClass('opened') || $(this).hasClass('closed'))
_.expandDir($(this).parent());
});
$('div.folder > a > span.folder').unbind().click(function() {
_.changeDir($(this).parent());
}).rightClick(function(el, e) {
_.menuDir($(el).parent(), e);
});
if ($.mobile) {
$('div.folder > a > span.folder').on('taphold', function() {
_.menuDir($(this).parent(), {
pageX: $(this).offset().left + 1,
pageY: $(this).offset().top + $(this).outerHeight()
});
});
}
};
_.setTreeData = function(data, path) {
if (!path)
path = "";
else if (path.length && (path.substr(path.length - 1, 1) != '/'))
path += "/";
path += data.name;
var selector = '#folders a[href="kcdir:/' + $.$.escapeDirs(path) + '"]';
$(selector).data({
name: data.name,
path: path,
readable: data.readable,
writable: data.writable,
removable: data.removable,
hasDirs: data.hasDirs
});
$(selector + ' span.folder').addClass(data.current ? 'current' : 'regular');
if (data.dirs && data.dirs.length) {
$(selector + ' span.brace').addClass('opened');
$.each(data.dirs, function(i, cdir) {
_.setTreeData(cdir, path + "/");
});
} else if (data.hasDirs)
$(selector + ' span.brace').addClass('closed');
};
_.buildTree = function(root, path) {
if (!path) path = "";
path += root.name;
var cdir, html = ' ' + $.$.htmlData(root.name) + '';
if (root.dirs) {
html += '
';
for (var i = 0; i < root.dirs.length; i++) {
cdir = root.dirs[i];
html += _.buildTree(cdir, path + "/");
}
html += '
';
}
html += '
';
return html;
};
_.expandDir = function(dir) {
var path = dir.data('path');
if (dir.children('.brace').hasClass('opened')) {
dir.parent().children('.folders').hide(500, function() {
if (path == _.dir.substr(0, path.length))
_.changeDir(dir);
});
dir.children('.brace').removeClass('opened').addClass('closed');
} else {
if (dir.parent().children('.folders').get(0)) {
dir.parent().children('.folders').show(500);
dir.children('.brace').removeClass('closed').addClass('opened');
} else if (!$('#loadingDirs').get(0)) {
dir.parent().append('' + _.label("Loading folders...") + '
');
$('#loadingDirs').hide().show(200, function() {
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("expand"),
data: {dir: path},
async: false,
success: function(data) {
$('#loadingDirs').hide(200, function() {
$('#loadingDirs').detach();
});
if (_.check4errors(data))
return;
var html = "";
$.each(data.dirs, function(i, cdir) {
html += '';
});
if (html.length) {
dir.parent().append('' + html + '
');
var folders = $(dir.parent().children('.folders').first());
folders.hide();
$(folders).show(500);
$.each(data.dirs, function(i, cdir) {
_.setTreeData(cdir, path);
});
}
if (data.dirs.length)
dir.children('.brace').removeClass('closed').addClass('opened');
else
dir.children('.brace').removeClass('opened closed');
_.initFolders();
_.initDropUpload();
},
error: function() {
$('#loadingDirs').detach();
_.alert(_.label("Unknown error."));
}
});
});
}
}
};
_.changeDir = function(dir) {
if (dir.children('span.folder').hasClass('regular')) {
$('div.folder > a > span.folder').removeClass('current regular').addClass('regular');
dir.children('span.folder').removeClass('regular').addClass('current');
$('#files').html(_.label("Loading files..."));
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("chDir"),
data: {dir: dir.data('path')},
async: false,
success: function(data) {
if (_.check4errors(data))
return;
_.files = data.files;
_.orderFiles();
_.dir = dir.data('path');
_.dirWritable = data.dirWritable;
_.setTitle("KCFinder: /" + _.dir);
_.statusDir();
},
error: function() {
$('#files').html(_.label("Unknown error."));
}
});
}
};
_.statusDir = function() {
var i = 0, size = 0;
for (; i < _.files.length; i++)
size += _.files[i].size;
size = _.humanSize(size);
$('#fileinfo').html(_.files.length + " " + _.label("files") + " (" + size + ")");
};
_.refreshDir = function(dir) {
var path = dir.data('path');
if (dir.children('.brace').hasClass('opened') || dir.children('.brace').hasClass('closed'))
dir.children('.brace').removeClass('opened').addClass('closed');
dir.parent().children('.folders').first().detach();
if (path == _.dir.substr(0, path.length))
_.changeDir(dir);
_.expandDir(dir);
return true;
};
/** This file is part of KCFinder project
*
* @desc Context menus
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.menu = {
init: function() {
$('#menu').html("").css('display', 'none');
},
addItem: function(href, label, callback, denied) {
if (typeof denied == "undefined")
denied = false;
$('#menu ul').append('' + label + '');
if (!denied && $.isFunction(callback))
$('#menu a[href="' + href + '"]').click(function() {
_.menu.hide();
return callback();
});
},
addDivider: function() {
if ($('#menu ul').html().length)
$('#menu ul').append("-");
},
show: function(e) {
var dlg = $('#menu'),
ul = $('#menu ul');
if (ul.html().length) {
dlg.find('ul').first().menu();
if (typeof e != "undefined") {
var left = e.pageX,
top = e.pageY,
win = $(window);
if ((dlg.outerWidth() + left) > win.width())
left = win.width() - dlg.outerWidth();
if ((dlg.outerHeight() + top) > win.height())
top = win.height() - dlg.outerHeight();
dlg.hide().css({
left: left,
top: top,
width: ""
}).fadeIn('fast');
} else
dlg.fadeIn('fast');
} else
ul.detach();
},
hide: function() {
$('#clipboard').removeClass('selected');
$('div.folder > a > span.folder').removeClass('context');
$('#menu').hide().css('width', "").html("").data('title', null).unbind().click(function() {
return false;
});
$(document).unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
}
};
// FILE CONTEXT MENU
_.menuFile = function(file, e) {
_.menu.init();
var data = file.data(),
files = $('.file.selected').get();
// MULTIPLE FILES MENU
if (file.hasClass('selected') && files.length && (files.length > 1)) {
var thumb = false,
notWritable = 0,
cdata;
$.each(files, function(i, cfile) {
cdata = $(cfile).data();
if (cdata.thumb) thumb = true;
if (!data.writable) notWritable++;
});
if (_.opener.callBackMultiple) {
// SELECT FILES
_.menu.addItem("kcact:pick", _.label("Select"), function() {
_.returnFiles(files);
return false;
});
// SELECT THUMBNAILS
if (thumb)
_.menu.addItem("kcact:pick_thumb", _.label("Select Thumbnails"), function() {
_.returnThumbnails(files);
return false;
});
}
if (data.thumb || data.smallThumb || _.support.zip) {
_.menu.addDivider();
// VIEW IMAGE
if (data.thumb || data.smallThumb)
_.menu.addItem("kcact:view", _.label("View"), function() {
_.viewImage(data);
});
// DOWNLOAD
if (_.support.zip)
_.menu.addItem("kcact:download", _.label("Download"), function() {
var pfiles = [];
$.each(files, function(i, cfile) {
pfiles[i] = $(cfile).data('name');
});
_.post(_.getURL('downloadSelected'), {dir:_.dir, files:pfiles});
return false;
});
}
// ADD TO CLIPBOARD
if (_.access.files.copy || _.access.files.move) {
_.menu.addDivider();
_.menu.addItem("kcact:clpbrdadd", _.label("Add to Clipboard"), function() {
var msg = '';
$.each(files, function(i, cfile) {
var cdata = $(cfile).data(),
failed = false;
for (i = 0; i < _.clipboard.length; i++)
if ((_.clipboard[i].name == cdata.name) &&
(_.clipboard[i].dir == _.dir)
) {
failed = true;
msg += cdata.name + ": " + _.label("This file is already added to the Clipboard.") + "\n";
break;
}
if (!failed) {
cdata.dir = _.dir;
_.clipboard[_.clipboard.length] = cdata;
}
});
_.initClipboard();
if (msg.length) _.alert(msg.substr(0, msg.length - 1));
return false;
});
}
// DELETE
if (_.access.files['delete']) {
_.menu.addDivider();
_.menu.addItem("kcact:rm", _.label("Delete"), function() {
if ($(this).hasClass('denied')) return false;
var failed = 0,
dfiles = [];
$.each(files, function(i, cfile) {
var cdata = $(cfile).data();
if (!cdata.writable)
failed++;
else
dfiles[dfiles.length] = _.dir + "/" + cdata.name;
});
if (failed == files.length) {
_.alert(_.label("The selected files are not removable."));
return false;
}
var go = function(callBack) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("rm_cbd"),
data: {files:dfiles},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} selected files are not removable. Do you want to delete the rest?", {count:failed}),
go
);
else
_.confirm(
_.label("Are you sure you want to delete all selected files?"),
go
);
return false;
}, (notWritable == files.length));
}
_.menu.show(e);
// SINGLE FILE MENU
} else {
$('.file').removeClass('selected');
file.addClass('selected');
$('#fileinfo').html($.$.htmlData(data.name) + " (" + _.humanSize(data.size) + ", " + data.date + ")");
if (_.opener.callBack || _.opener.callBackMultiple) {
// SELECT FILE
_.menu.addItem("kcact:pick", _.label("Select"), function() {
_.returnFile(file);
return false;
});
// SELECT THUMBNAIL
if (data.thumb)
_.menu.addItem("kcact:pick_thumb", _.label("Select Thumbnail"), function() {
_.returnFile(_.thumbsURL + "/" + _.dir + "/" + data.name);
return false;
});
_.menu.addDivider();
}
// VIEW IMAGE
if (data.thumb || data.smallThumb)
_.menu.addItem("kcact:view", _.label("View"), function() {
_.viewImage(data);
});
// DOWNLOAD
_.menu.addItem("kcact:download", _.label("Download"), function() {
$('#menu').html('');
$('#downloadForm input').get(0).value = _.dir;
$('#downloadForm input').get(1).value = data.name;
$('#downloadForm').submit();
return false;
});
// ADD TO CLIPBOARD
if (_.access.files.copy || _.access.files.move) {
_.menu.addDivider();
_.menu.addItem("kcact:clpbrdadd", _.label("Add to Clipboard"), function() {
for (i = 0; i < _.clipboard.length; i++)
if ((_.clipboard[i].name == data.name) &&
(_.clipboard[i].dir == _.dir)
) {
_.alert(_.label("This file is already added to the Clipboard."));
return false;
}
var cdata = data;
cdata.dir = _.dir;
_.clipboard[_.clipboard.length] = cdata;
_.initClipboard();
return false;
});
}
if (_.access.files.rename || _.access.files['delete'])
_.menu.addDivider();
// RENAME
if (_.access.files.rename)
_.menu.addItem("kcact:mv", _.label("Rename..."), function() {
if (!data.writable) return false;
_.fileNameDialog(
{dir: _.dir, file: data.name},
'newName', data.name, _.getURL("rename"), {
title: "New file name:",
errEmpty: "Please enter new file name.",
errSlash: "Unallowable characters in file name.",
errDot: "File name shouldn't begins with '.'"
},
_.refresh
);
return false;
}, !data.writable);
// DELETE
if (_.access.files['delete'])
_.menu.addItem("kcact:rm", _.label("Delete"), function() {
if (!data.writable) return false;
_.confirm(_.label("Are you sure you want to delete this file?"),
function(callBack) {
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("delete"),
data: {dir: _.dir, file: data.name},
async: false,
success: function(data) {
if (callBack) callBack();
_.clearClipboard();
if (_.check4errors(data))
return;
_.refresh();
},
error: function() {
if (callBack) callBack();
_.alert(_.label("Unknown error."));
}
});
}
);
return false;
}, !data.writable);
_.menu.show(e);
}
};
// FOLDER CONTEXT MENU
_.menuDir = function(dir, e) {
_.menu.init();
var data = dir.data(),
html = '';
if (_.clipboard && _.clipboard.length) {
// COPY CLIPBOARD
if (_.access.files.copy)
_.menu.addItem("kcact:cpcbd", _.label("Copy {count} files", {count: _.clipboard.length}), function() {
_.copyClipboard(data.path);
return false;
}, !data.writable);
// MOVE CLIPBOARD
if (_.access.files.move)
_.menu.addItem("kcact:mvcbd", _.label("Move {count} files", {count: _.clipboard.length}), function() {
_.moveClipboard(data.path);
return false;
}, !data.writable);
if (_.access.files.copy || _.access.files.move)
_.menu.addDivider();
}
// REFRESH
_.menu.addItem("kcact:refresh", _.label("Refresh"), function() {
_.refreshDir(dir);
return false;
});
// DOWNLOAD
if (_.support.zip) {
_.menu.addDivider();
_.menu.addItem("kcact:download", _.label("Download"), function() {
_.post(_.getURL("downloadDir"), {dir:data.path});
return false;
});
}
if (_.access.dirs.create || _.access.dirs.rename || _.access.dirs['delete'])
_.menu.addDivider();
// NEW SUBFOLDER
if (_.access.dirs.create)
_.menu.addItem("kcact:mkdir", _.label("New Subfolder..."), function(e) {
if (!data.writable) return false;
_.fileNameDialog(
{dir: data.path},
"newDir", "", _.getURL("newDir"), {
title: "New folder name:",
errEmpty: "Please enter new folder name.",
errSlash: "Unallowable characters in folder name.",
errDot: "Folder name shouldn't begins with '.'"
}, function() {
_.refreshDir(dir);
_.initDropUpload();
if (!data.hasDirs) {
dir.data('hasDirs', true);
dir.children('span.brace').addClass('closed');
}
}
);
return false;
}, !data.writable);
// RENAME
if (_.access.dirs.rename)
_.menu.addItem("kcact:mvdir", _.label("Rename..."), function(e) {
if (!data.removable) return false;
_.fileNameDialog(
{dir: data.path},
"newName", data.name, _.getURL("renameDir"), {
title: "New folder name:",
errEmpty: "Please enter new folder name.",
errSlash: "Unallowable characters in folder name.",
errDot: "Folder name shouldn't begins with '.'"
}, function(dt) {
if (!dt.name) {
_.alert(_.label("Unknown error."));
return;
}
var currentDir = (data.path == _.dir);
dir.children('span.folder').html($.$.htmlData(dt.name));
dir.data('name', dt.name);
dir.data('path', $.$.dirname(data.path) + '/' + dt.name);
if (currentDir)
_.dir = dir.data('path');
_.initDropUpload();
},
true
);
return false;
}, !data.removable);
// DELETE
if (_.access.dirs['delete'])
_.menu.addItem("kcact:rmdir", _.label("Delete"), function() {
if (!data.removable) return false;
_.confirm(
_.label("Are you sure you want to delete this folder and all its content?"),
function(callBack) {
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("deleteDir"),
data: {dir: data.path},
async: false,
success: function(data) {
if (callBack) callBack();
if (_.check4errors(data))
return;
dir.parent().hide(500, function() {
var folders = dir.parent().parent();
var pDir = folders.parent().children('a').first();
dir.parent().detach();
if (!folders.children('div.folder').get(0)) {
pDir.children('span.brace').first().removeClass('opened closed');
pDir.parent().children('.folders').detach();
pDir.data('hasDirs', false);
}
if (pDir.data('path') == _.dir.substr(0, pDir.data('path').length))
_.changeDir(pDir);
_.initDropUpload();
});
},
error: function() {
if (callBack) callBack();
_.alert(_.label("Unknown error."));
}
});
}
);
return false;
}, !data.removable);
_.menu.show(e);
$('div.folder > a > span.folder').removeClass('context');
if (dir.children('span.folder').hasClass('regular'))
dir.children('span.folder').addClass('context');
};
// CLIPBOARD MENU
_.openClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
// CLOSE MENU
if ($('#menu a[href="kcact:clrcbd"]').html()) {
$('#clipboard').removeClass('selected');
_.menu.hide();
return;
}
setTimeout(function() {
_.menu.init();
var dlg = $('#menu'),
jStatus = $('#status'),
html = '';
// CLIPBOARD FILES
$.each(_.clipboard, function(i, val) {
var icon = $.$.getFileExtension(val.name);
if (val.thumb)
icon = ".image";
else if (!val.smallIcon || !icon.length)
icon = ".";
icon = "themes/" + _.theme + "/img/files/small/" + icon + ".png";
html += '
' + $.$.htmlData($.$.basename(val.name)) + '';
});
html += '
- -
';
$('#menu ul').append(html);
// DOWNLOAD
if (_.support.zip)
_.menu.addItem("kcact:download", _.label("Download files"), function() {
_.downloadClipboard();
return false;
});
if (_.access.files.copy || _.access.files.move || _.access.files['delete'])
_.menu.addDivider();
// COPY
if (_.access.files.copy)
_.menu.addItem("kcact:cpcbd", _.label("Copy files here"), function() {
if (!_.dirWritable) return false;
_.copyClipboard(_.dir);
return false;
}, !_.dirWritable);
// MOVE
if (_.access.files.move)
_.menu.addItem("kcact:mvcbd", _.label("Move files here"), function() {
if (!_.dirWritable) return false;
_.moveClipboard(_.dir);
return false;
}, !_.dirWritable);
// DELETE
if (_.access.files['delete'])
_.menu.addItem("kcact:rmcbd", _.label("Delete files"), function() {
_.confirm(
_.label("Are you sure you want to delete all files in the Clipboard?"),
function(callBack) {
if (callBack) callBack();
_.deleteClipboard();
}
);
return false;
});
_.menu.addDivider();
// CLEAR CLIPBOARD
_.menu.addItem("kcact:clrcbd", _.label("Clear the Clipboard"), function() {
_.clearClipboard();
return false;
});
$('#clipboard').addClass('selected');
_.menu.show();
var left = $(window).width() - dlg.css({width: ""}).outerWidth(),
top = $(window).height() - dlg.outerHeight() - jStatus.outerHeight(),
lheight = top + dlg.outerTopSpace();
dlg.find('.list').css({
'max-height': lheight,
'overflow-y': "auto",
'overflow-x': "hidden",
width: ""
});
top = $(window).height() - dlg.outerHeight(true) - jStatus.outerHeight(true);
dlg.css({
left: left - 5,
top: top
}).fadeIn("fast");
var a = dlg.find('.list').outerHeight(),
b = dlg.find('.list div').outerHeight();
if (b - a > 10) {
dlg.css({
left: parseInt(dlg.css('left')) - _.scrollbarWidth,
}).width(dlg.width() + _.scrollbarWidth);
}
}, 1);
};/** This file is part of KCFinder project
*
* @desc Image viewer
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.viewImage = function(data) {
var ts = new Date().getTime(),
dlg = false,
images = [],
showImage = function(data) {
_.lock = true;
$('#loading').html(_.label("Loading image...")).show();
var url = $.$.escapeDirs(_.uploadURL + "/" + _.dir + "/" + data.name) + "?ts=" + ts,
img = new Image(),
i = $(img),
w = $(window),
d = $(document);
onImgLoad = function() {
_.lock = false;
$('#files .file').each(function() {
if ($(this).data('name') == data.name) {
_.ssImage = this;
return false;
}
});
i.hide().appendTo('body');
var o_w = i.width(),
o_h = i.height(),
i_w = o_w,
i_h = o_h,
goTo = function(i) {
if (!_.lock) {
var nimg = images[i];
_.currImg = i;
showImage(nimg);
}
},
nextFunc = function() {
goTo((_.currImg >= images.length - 1) ? 0 : (_.currImg + 1));
},
prevFunc = function() {
goTo((_.currImg ? _.currImg : images.length) - 1);
},
t = $('');
i.detach().appendTo(t);
t.addClass("img");
if (!dlg) {
var ww = w.width() - 60,
closeFunc = function() {
d.unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
dlg.dialog('destroy').detach();
};
if ((ww % 2)) ww++;
dlg = _.dialog($.$.htmlData(data.name), t.get(0), {
width: ww,
height: w.height() - 36,
position: [30, 30],
draggable: false,
nopadding: true,
close: closeFunc,
show: false,
hide: false,
buttons: [
{
text: _.label("Previous"),
icons: {primary: "ui-icon-triangle-1-w"},
click: prevFunc
}, {
text: _.label("Next"),
icons: {secondary: "ui-icon-triangle-1-e"},
click: nextFunc
}, {
text: _.label("Select"),
icons: {primary: "ui-icon-check"},
click: function(e) {
d.unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
if (_.ssImage) {
_.selectFile($(_.ssImage), e);
}
dlg.dialog('destroy').detach();
}
}, {
text: _.label("Close"),
icons: {primary: "ui-icon-closethick"},
click: closeFunc
}
]
});
dlg.addClass('kcfImageViewer').css('overflow', "hidden").parent().find('.ui-dialog-buttonpane button').get(2).focus();
} else {
dlg.prev().find('.ui-dialog-title').html($.$.htmlData(data.name));
dlg.html(t.get(0));
}
dlg.unbind('click').click(nextFunc).disableTextSelect();
var d_w = dlg.innerWidth(),
d_h = dlg.innerHeight();
if ((o_w > d_w) || (o_h > d_h)) {
i_w = d_w;
i_h = d_h;
if ((d_w / d_h) > (o_w / o_h))
i_w = parseInt((o_w * d_h) / o_h);
else if ((d_w / d_h) < (o_w / o_h))
i_h = parseInt((o_h * d_w) / o_w);
}
i.css({
width: i_w,
height: i_h
}).show().parent().css({
display: "block",
margin: "0 auto",
width: i_w,
height: i_h,
marginTop: parseInt((d_h - i_h) / 2)
});
$('#loading').hide();
d.unbind('keydown').keydown(function(e) {
if (!_.lock) {
var kc = e.keyCode;
if ((kc == 37)) prevFunc();
if ((kc == 39)) nextFunc();
}
});
};
img.src = url;
if (img.complete)
onImgLoad();
else {
img.onload = onImgLoad;
img.onerror = function() {
_.lock = false;
$('#loading').hide();
_.alert(_.label("Unknown error."));
d.unbind('keydown').keydown(function(e) {
return !_.selectAll(e);
});
_.refresh();
};
}
};
$.each(_.files, function(i, file) {
var i = images.length;
if (file.thumb || file.smallThumb)
images[i] = file;
if (file.name == data.name)
_.currImg = i;
});
showImage(data);
return false;
};
/** This file is part of KCFinder project
*
* @desc Clipboard functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.initClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
var size = 0,
jClipboard = $('#clipboard');
$.each(_.clipboard, function(i, val) {
size += val.size;
});
size = _.humanSize(size);
jClipboard.disableTextSelect().html('');
var resize = function() {
jClipboard.css({
left: $(window).width() - jClipboard.outerWidth(),
top: $(window).height() - jClipboard.outerHeight()
});
};
resize();
jClipboard.show();
$(window).unbind().resize(function() {
_.resize();
resize();
});
};
_.removeFromClipboard = function(i) {
if (!_.clipboard || !_.clipboard[i]) return false;
if (_.clipboard.length == 1) {
_.clearClipboard();
_.menu.hide();
return;
}
if (i < _.clipboard.length - 1) {
var last = _.clipboard.slice(i + 1);
_.clipboard = _.clipboard.slice(0, i);
_.clipboard = _.clipboard.concat(last);
} else
_.clipboard.pop();
_.initClipboard();
_.menu.hide();
_.openClipboard();
return true;
};
_.copyClipboard = function(dir) {
if (!_.clipboard || !_.clipboard.length) return;
var files = [],
failed = 0;
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
else
failed++;
if (_.clipboard.length == failed) {
_.alert(_.label("The files in the Clipboard are not readable."));
return;
}
var go = function(callBack) {
if (dir == _.dir)
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("cp_cbd"),
data: {dir: dir, files: files},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.clearClipboard();
if (dir == _.dir)
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} files in the Clipboard are not readable. Do you want to copy the rest?", {count:failed}),
go
)
else
go();
};
_.moveClipboard = function(dir) {
if (!_.clipboard || !_.clipboard.length) return;
var files = [],
failed = 0;
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable && _.clipboard[i].writable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
else
failed++;
if (_.clipboard.length == failed) {
_.alert(_.label("The files in the Clipboard are not movable."))
return;
}
var go = function(callBack) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("mv_cbd"),
data: {dir: dir, files: files},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.clearClipboard();
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} files in the Clipboard are not movable. Do you want to move the rest?", {count: failed}),
go
);
else
go();
};
_.deleteClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
var files = [],
failed = 0;
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable && _.clipboard[i].writable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
else
failed++;
if (_.clipboard.length == failed) {
_.alert(_.label("The files in the Clipboard are not removable."))
return;
}
var go = function(callBack) {
_.fadeFiles();
$.ajax({
type: "post",
dataType: "json",
url: _.getURL("rm_cbd"),
data: {files:files},
async: false,
success: function(data) {
if (callBack) callBack();
_.check4errors(data);
_.clearClipboard();
_.refresh();
},
error: function() {
if (callBack) callBack();
$('#files > div').css({
opacity: "",
filter: ""
});
_.alert(_.label("Unknown error."));
}
});
};
if (failed)
_.confirm(
_.label("{count} files in the Clipboard are not removable. Do you want to delete the rest?", {count: failed}),
go
);
else
go();
};
_.downloadClipboard = function() {
if (!_.clipboard || !_.clipboard.length) return;
var files = [];
for (i = 0; i < _.clipboard.length; i++)
if (_.clipboard[i].readable)
files[i] = _.clipboard[i].dir + "/" + _.clipboard[i].name;
if (files.length)
_.post(_.getURL('downloadClipboard'), {files:files});
};
_.clearClipboard = function() {
$('#clipboard').html("");
_.clipboard = [];
};
/** This file is part of KCFinder project
*
* @desc Upload files using drag and drop
* @package KCFinder
* @version 3.12
* @author Forum user (updated by Pavel Tzonkov)
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.initDropUpload = function() {
if ((typeof XMLHttpRequest == "undefined") ||
(typeof document.addEventListener == "undefined") ||
(typeof File == "undefined") ||
(typeof FileReader == "undefined")
)
return;
if (!XMLHttpRequest.prototype.sendAsBinary) {
XMLHttpRequest.prototype.sendAsBinary = function(datastr) {
var ords = Array.prototype.map.call(datastr, function(x) {
return x.charCodeAt(0) & 0xff;
}),
ui8a = new Uint8Array(ords);
this.send(ui8a.buffer);
}
}
var uploadQueue = [],
uploadInProgress = false,
filesCount = 0,
errors = [],
files = $('#files'),
folders = $('div.folder > a'),
boundary = "------multipartdropuploadboundary" + (new Date).getTime(),
currentFile,
filesDragOver = function(e) {
if (e.preventDefault) e.preventDefault();
$('#files').addClass('drag');
return false;
},
filesDragEnter = function(e) {
if (e.preventDefault) e.preventDefault();
return false;
},
filesDragLeave = function(e) {
if (e.preventDefault) e.preventDefault();
$('#files').removeClass('drag');
return false;
},
filesDrop = function(e) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
$('#files').removeClass('drag');
if (!$('#folders span.current').first().parent().data('writable')) {
_.alert("Cannot write to upload folder.");
return false;
}
filesCount += e.dataTransfer.files.length;
for (var i = 0; i < e.dataTransfer.files.length; i++) {
var file = e.dataTransfer.files[i];
file.thisTargetDir = _.dir;
uploadQueue.push(file);
}
processUploadQueue();
return false;
},
folderDrag = function(e) {
if (e.preventDefault) e.preventDefault();
return false;
},
folderDrop = function(e, dir) {
if (e.preventDefault) e.preventDefault();
if (e.stopPropagation) e.stopPropagation();
if (!$(dir).data('writable')) {
_.alert(_.label("Cannot write to upload folder."));
return false;
}
filesCount += e.dataTransfer.files.length;
for (var i = 0; i < e.dataTransfer.files.length; i++) {
var file = e.dataTransfer.files[i];
file.thisTargetDir = $(dir).data('path');
uploadQueue.push(file);
}
processUploadQueue();
return false;
};
files.get(0).removeEventListener('dragover', filesDragOver, false);
files.get(0).removeEventListener('dragenter', filesDragEnter, false);
files.get(0).removeEventListener('dragleave', filesDragLeave, false);
files.get(0).removeEventListener('drop', filesDrop, false);
files.get(0).addEventListener('dragover', filesDragOver, false);
files.get(0).addEventListener('dragenter', filesDragEnter, false);
files.get(0).addEventListener('dragleave', filesDragLeave, false);
files.get(0).addEventListener('drop', filesDrop, false);
folders.each(function() {
var folder = this,
dragOver = function(e) {
$(folder).children('span.folder').addClass('context');
return folderDrag(e);
},
dragLeave = function(e) {
$(folder).children('span.folder').removeClass('context');
return folderDrag(e);
},
drop = function(e) {
$(folder).children('span.folder').removeClass('context');
return folderDrop(e, folder);
};
this.removeEventListener('dragover', dragOver, false);
this.removeEventListener('dragenter', folderDrag, false);
this.removeEventListener('dragleave', dragLeave, false);
this.removeEventListener('drop', drop, false);
this.addEventListener('dragover', dragOver, false);
this.addEventListener('dragenter', folderDrag, false);
this.addEventListener('dragleave', dragLeave, false);
this.addEventListener('drop', drop, false);
});
function updateProgress(evt) {
var progress = evt.lengthComputable
? Math.round((evt.loaded * 100) / evt.total) + '%'
: Math.round(evt.loaded / 1024) + " KB";
$('#loading').html(_.label("Uploading file {number} of {count}... {progress}", {
number: filesCount - uploadQueue.length,
count: filesCount,
progress: progress
}));
}
function processUploadQueue() {
if (uploadInProgress)
return false;
if (uploadQueue && uploadQueue.length) {
var file = uploadQueue.shift();
currentFile = file;
$('#loading').html(_.label("Uploading file {number} of {count}... {progress}", {
number: filesCount - uploadQueue.length,
count: filesCount,
progress: ""
})).show();
var reader = new FileReader();
reader.thisFileName = file.name;
reader.thisFileType = file.type;
reader.thisFileSize = file.size;
reader.thisTargetDir = file.thisTargetDir;
reader.onload = function(evt) {
uploadInProgress = true;
var postbody = '--' + boundary + '\r\nContent-Disposition: form-data; name="upload[]"';
if (evt.target.thisFileName)
postbody += '; filename="' + $.$.utf8encode(evt.target.thisFileName) + '"';
postbody += '\r\n';
if (evt.target.thisFileSize)
postbody += "Content-Length: " + evt.target.thisFileSize + "\r\n";
postbody += "Content-Type: " + evt.target.thisFileType + "\r\n\r\n" + evt.target.result + "\r\n--" + boundary + '\r\nContent-Disposition: form-data; name="dir"\r\n\r\n' + $.$.utf8encode(evt.target.thisTargetDir) + "\r\n--" + boundary + "\r\n--" + boundary + "--\r\n";
var xhr = new XMLHttpRequest();
xhr.thisFileName = evt.target.thisFileName;
if (xhr.upload) {
xhr.upload.thisFileName = evt.target.thisFileName;
xhr.upload.addEventListener("progress", updateProgress, false);
}
xhr.open('post', _.getURL('upload'), true);
xhr.setRequestHeader('Content-Type', "multipart/form-data; boundary=" + boundary);
//xhr.setRequestHeader('Content-Length', postbody.length);
xhr.onload = function(e) {
$('#loading').hide();
if (_.dir == reader.thisTargetDir)
_.fadeFiles();
uploadInProgress = false;
processUploadQueue();
if (xhr.responseText.substr(0, 1) != "/")
errors[errors.length] = xhr.responseText;
};
xhr.sendAsBinary(postbody);
};
reader.onerror = function(evt) {
$('#loading').hide();
uploadInProgress = false;
processUploadQueue();
errors[errors.length] = _.label("Failed to upload {filename}!", {
filename: evt.target.thisFileName
});
};
reader.readAsBinaryString(file);
} else {
filesCount = 0;
var loop = setInterval(function() {
if (uploadInProgress) return;
boundary = "------multipartdropuploadboundary" + (new Date).getTime();
uploadQueue = [];
clearInterval(loop);
if (currentFile.thisTargetDir == _.dir)
_.refresh();
if (errors.length) {
errors = errors.join("\n");
if (errors.replace(/^\s+/g, "").replace(/\s+$/g, "").length)
_.alert(errors);
errors = [];
}
}, 333);
}
}
};
/** This file is part of KCFinder project
*
* @desc Miscellaneous functionality
* @package KCFinder
* @version 3.12
* @author Pavel Tzonkov
* @copyright 2010-2014 KCFinder Project
* @license http://opensource.org/licenses/GPL-3.0 GPLv3
* @license http://opensource.org/licenses/LGPL-3.0 LGPLv3
* @link http://kcfinder.sunhater.com
*/
_.orderFiles = function(callBack, selected) {
var order = $.$.kuki.get('order'),
desc = ($.$.kuki.get('orderDesc') == "on"),
a1, b1, arr;
if (!_.files || !_.files.sort)
_.files = [];
_.files = _.files.sort(function(a, b) {
if (!order) order = "name";
if (order == "date") {
a1 = a.mtime;
b1 = b.mtime;
} else if (order == "type") {
a1 = $.$.getFileExtension(a.name);
b1 = $.$.getFileExtension(b.name);
} else if (order == "size") {
a1 = a.size;
b1 = b.size;
} else {
a1 = a[order].toLowerCase();
b1 = b[order].toLowerCase();
}
if ((order == "size") || (order == "date")) {
if (a1 < b1) return desc ? 1 : -1;
if (a1 > b1) return desc ? -1 : 1;
}
if (a1 == b1) {
a1 = a.name.toLowerCase();
b1 = b.name.toLowerCase();
arr = [a1, b1];
arr = arr.sort();
return (arr[0] == a1) ? -1 : 1;
}
arr = [a1, b1];
arr = arr.sort();
if (arr[0] == a1) return desc ? 1 : -1;
return desc ? -1 : 1;
});
_.showFiles(callBack, selected);
_.initFiles();
};
_.humanSize = function(size) {
if (size < 1024) {
size = size.toString() + " B";
} else if (size < 1048576) {
size /= 1024;
size = parseInt(size).toString() + " KB";
} else if (size < 1073741824) {
size /= 1048576;
size = parseInt(size).toString() + " MB";
} else if (size < 1099511627776) {
size /= 1073741824;
size = parseInt(size).toString() + " GB";
} else {
size /= 1099511627776;
size = parseInt(size).toString() + " TB";
}
return size;
};
_.getURL = function(act) {
var url = "browse.php?type=" + encodeURIComponent(_.type) + "&lng=" + encodeURIComponent(_.lang);
if (_.opener.name)
url += "&opener=" + encodeURIComponent(_.opener.name);
if (act)
url += "&act=" + encodeURIComponent(act);
if (_.cms)
url += "&cms=" + encodeURIComponent(_.cms);
return url;
};
_.label = function(index, data) {
var label = _.labels[index] ? _.labels[index] : index;
if (data)
$.each(data, function(key, val) {
label = label.replace("{" + key + "}", val);
});
return label;
};
_.check4errors = function(data) {
if (!data.error)
return false;
var msg = data.error.join
? data.error.join("\n")
: data.error;
_.alert(msg);
return true;
};
_.post = function(url, data) {
var html = '';
$('#menu').html(html).show();
$('#postForm').get(0).submit();
};
_.fadeFiles = function() {
$('#files > div').css({
opacity: "0.4",
filter: "alpha(opacity=40)"
});
};