").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);
\ No newline at end of file
diff --git a/kcfinder/js/006.jquery.uniform.js b/kcfinder/js/006.jquery.uniform.js
new file mode 100644
index 00000000..e936be42
--- /dev/null
+++ b/kcfinder/js/006.jquery.uniform.js
@@ -0,0 +1,1071 @@
+/*
+
+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));
\ No newline at end of file
diff --git a/kcfinder/js/010.jquery.fixes.js b/kcfinder/js/010.jquery.fixes.js
new file mode 100644
index 00000000..3fd46967
--- /dev/null
+++ b/kcfinder/js/010.jquery.fixes.js
@@ -0,0 +1,67 @@
+/** 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);
\ No newline at end of file
diff --git a/kcfinder/js/020.jquery.rightClick.js b/kcfinder/js/020.jquery.rightClick.js
new file mode 100644
index 00000000..4266e126
--- /dev/null
+++ b/kcfinder/js/020.jquery.rightClick.js
@@ -0,0 +1,26 @@
+/** 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);
\ No newline at end of file
diff --git a/kcfinder/js/021.jquery.taphold.js b/kcfinder/js/021.jquery.taphold.js
new file mode 100644
index 00000000..96f4d701
--- /dev/null
+++ b/kcfinder/js/021.jquery.taphold.js
@@ -0,0 +1,117 @@
+// @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);
\ No newline at end of file
diff --git a/kcfinder/js/029.jquery.agent.js b/kcfinder/js/029.jquery.agent.js
new file mode 100644
index 00000000..9ba84de2
--- /dev/null
+++ b/kcfinder/js/029.jquery.agent.js
@@ -0,0 +1,89 @@
+/** 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);
\ No newline at end of file
diff --git a/kcfinder/js/030.jquery.helper.js b/kcfinder/js/030.jquery.helper.js
new file mode 100644
index 00000000..c4c65434
--- /dev/null
+++ b/kcfinder/js/030.jquery.helper.js
@@ -0,0 +1,295 @@
+/** 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);
diff --git a/kcfinder/js/031.jquery.md5.js b/kcfinder/js/031.jquery.md5.js
new file mode 100644
index 00000000..a25c7b39
--- /dev/null
+++ b/kcfinder/js/031.jquery.md5.js
@@ -0,0 +1,212 @@
+/** 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);
\ No newline at end of file
diff --git a/kcfinder/js/040.object.js b/kcfinder/js/040.object.js
new file mode 100644
index 00000000..def317f6
--- /dev/null
+++ b/kcfinder/js/040.object.js
@@ -0,0 +1,23 @@
+/** 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
+};
diff --git a/kcfinder/js/041.dialogs.js b/kcfinder/js/041.dialogs.js
new file mode 100644
index 00000000..8a9c5f32
--- /dev/null
+++ b/kcfinder/js/041.dialogs.js
@@ -0,0 +1,190 @@
+/** 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('Submit ');
+
+ 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();
+ }
+};
\ No newline at end of file
diff --git a/kcfinder/js/050.init.js b/kcfinder/js/050.init.js
new file mode 100644
index 00000000..d032415b
--- /dev/null
+++ b/kcfinder/js/050.init.js
@@ -0,0 +1,259 @@
+/** 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)
+ );
+};
diff --git a/kcfinder/js/060.toolbar.js b/kcfinder/js/060.toolbar.js
new file mode 100644
index 00000000..4c71b0a3
--- /dev/null
+++ b/kcfinder/js/060.toolbar.js
@@ -0,0 +1,309 @@
+/** 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."));
+ }
+ });
+};
diff --git a/kcfinder/js/070.settings.js b/kcfinder/js/070.settings.js
new file mode 100644
index 00000000..ce52b744
--- /dev/null
+++ b/kcfinder/js/070.settings.js
@@ -0,0 +1,86 @@
+/** 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();
+ });
+};
diff --git a/kcfinder/js/080.files.js b/kcfinder/js/080.files.js
new file mode 100644
index 00000000..610c4ad2
--- /dev/null
+++ b/kcfinder/js/080.files.js
@@ -0,0 +1,248 @@
+/** 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()
+ }
+};
diff --git a/kcfinder/js/090.folders.js b/kcfinder/js/090.folders.js
new file mode 100644
index 00000000..3ee2146e
--- /dev/null
+++ b/kcfinder/js/090.folders.js
@@ -0,0 +1,184 @@
+/** 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;
+};
diff --git a/kcfinder/js/091.menus.js b/kcfinder/js/091.menus.js
new file mode 100644
index 00000000..d587abda
--- /dev/null
+++ b/kcfinder/js/091.menus.js
@@ -0,0 +1,589 @@
+/** 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);
+};
\ No newline at end of file
diff --git a/kcfinder/js/091.viewImage.js b/kcfinder/js/091.viewImage.js
new file mode 100644
index 00000000..4d4f13d7
--- /dev/null
+++ b/kcfinder/js/091.viewImage.js
@@ -0,0 +1,192 @@
+/** 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;
+};
diff --git a/kcfinder/js/100.clipboard.js b/kcfinder/js/100.clipboard.js
new file mode 100644
index 00000000..85f0b77b
--- /dev/null
+++ b/kcfinder/js/100.clipboard.js
@@ -0,0 +1,216 @@
+/** 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 = [];
+};
diff --git a/kcfinder/js/110.dropUpload.js b/kcfinder/js/110.dropUpload.js
new file mode 100644
index 00000000..6837c82b
--- /dev/null
+++ b/kcfinder/js/110.dropUpload.js
@@ -0,0 +1,230 @@
+/** 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);
+ }
+ }
+};
diff --git a/kcfinder/js/120.misc.js b/kcfinder/js/120.misc.js
new file mode 100644
index 00000000..f7161785
--- /dev/null
+++ b/kcfinder/js/120.misc.js
@@ -0,0 +1,130 @@
+/** 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)"
+ });
+};
diff --git a/kcfinder/js/index.php b/kcfinder/js/index.php
new file mode 100644
index 00000000..627bae5d
--- /dev/null
+++ b/kcfinder/js/index.php
@@ -0,0 +1,22 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+chdir("..");
+require "core/autoload.php";
+$min = new minifier("js");
+$min->minify("cache/base.js");
+
+?>
\ No newline at end of file
diff --git a/kcfinder/js_localize.php b/kcfinder/js_localize.php
new file mode 100644
index 00000000..d84df78d
--- /dev/null
+++ b/kcfinder/js_localize.php
@@ -0,0 +1,48 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+require "core/autoload.php";
+
+if (!isset($_GET['lng']) || ($_GET['lng'] == 'en') ||
+ ($_GET['lng'] != basename($_GET['lng'])) ||
+ !is_file("lang/" . $_GET['lng'] . ".php")
+) {
+ header("Content-Type: text/javascript");
+ die;
+}
+
+$file = "lang/" . $_GET['lng'] . ".php";
+$mtime = @filemtime($file);
+
+if ($mtime)
+ httpCache::checkMTime($mtime, "Content-Type: text/javascript");
+
+require $file;
+header("Content-Type: text/javascript");
+
+echo "_.labels={";
+
+$i = 0;
+foreach ($lang as $english => $native) {
+ if (substr($english, 0, 1) != "_") {
+ echo "'" . text::jsValue($english) . "':\"" . text::jsValue($native) . "\"";
+ if (++$i < count($lang))
+ echo ",";
+ }
+}
+
+echo "}";
+
+?>
diff --git a/kcfinder/lang/.htaccess b/kcfinder/lang/.htaccess
new file mode 100644
index 00000000..d61b264c
--- /dev/null
+++ b/kcfinder/lang/.htaccess
@@ -0,0 +1,4 @@
+
+Order allow,deny
+Deny from all
+
diff --git a/kcfinder/lang/af.php b/kcfinder/lang/af.php
new file mode 100644
index 00000000..0dd3a25d
--- /dev/null
+++ b/kcfinder/lang/af.php
@@ -0,0 +1,245 @@
+ "af-ZA.UTF-8",
+ '_charset' => "utf-8",
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%d %B %Y %H:%M",
+ '_dateTimeMid' => "%d %b %Y %H:%M",
+ '_dateTimeSmall' => "%d %b %Y %H:%M",
+
+ "You don't have permissions to upload files." =>
+ "Jy het nie toestemming om lêers op te laai nie oplaai nie.",
+
+ "You don't have permissions to browse server." =>
+ "Jy het nie toestemming tot die bediener nie.",
+
+ "Cannot move uploaded file to target folder." =>
+ "Jy kannie die lêer beweeg na die gids toe nie.",
+
+ "Unknown error." =>
+ "Onbekende fout.",
+
+ "The uploaded file exceeds {size} bytes." =>
+ "Die foto's lêer oorskry {size} grepe.",
+
+ "The uploaded file was only partially uploaded." =>
+ "Die foto's lêer is slegs gedeeltelik opgelaai.",
+
+ "No file was uploaded." =>
+ "Geen lêer is opgelaai.",
+
+ "Missing a temporary folder." =>
+ "'N tydelike gids ontbreek.",
+
+ "Failed to write file." =>
+ "Misluk om lêer te kryf.",
+
+ "Denied file extension." =>
+ "Lêer uitbreiding verloën.",
+
+ "Unknown image format/encoding." =>
+ "Onbekende prentjie-formaat / kodering.",
+
+ "The image is too big and/or cannot be resized." =>
+ "Die beeld is te groot en / of kan nie verander word nie.",
+
+ "Cannot create {dir} folder." =>
+ "Kan nie {dir} gids skep nie.",
+
+ "Cannot write to upload folder." =>
+ "Kan nie skryf na die oplaai gids nie.",
+
+ "Cannot read .htaccess" =>
+ "Kan nie .htaccess lees nie.",
+
+ "Incorrect .htaccess file. Cannot rewrite it!" =>
+ "Verkeerde .htaccess lêer. Kan nie herskryf dit!",
+
+ "Cannot fetch content of {dir} folder." =>
+ "Kan nie haal inhoud van {dir} gids nie.",
+
+ "Cannot read upload folder." =>
+ "Kan nie oplaai gids lees nie.",
+
+ "Cannot access or create thumbnails folder." =>
+ "Kan nie toegang tot of duimnaels gids skep.",
+
+ "Cannot access or write to upload folder." =>
+ "Kan nie toegang tot of skryf na oplaai gids nie.",
+
+ "Please enter new folder name." =>
+ "Gee die nuwe gidsnaam.",
+
+ "Unallowed characters in folder name." =>
+ "Ongeoorloofd karakters in gidsnaam.",
+
+ "Folder name shouldn't begins with '.'" =>
+ "Gidsnaam moet nie begin met '.'",
+
+ "Please enter new file name." =>
+ "Gee nuwe lêernaam.",
+
+ "Unallowed characters in file name." =>
+ "Ongeoorloofd karakters in die lêernaam.",
+
+ "File name shouldn't begins with '.'" =>
+ "Lêer naam moet nie begin met '.'",
+
+ "Are you sure you want to delete this file?" =>
+ "Is jy seker jy wil hierdie lêer te verwyder ?",
+
+ "Are you sure you want to delete this folder and all its content?" =>
+ "Is jy seker jy wil hierdie gids en al die inhoud daarin te verwyder ?",
+
+ "Unexisting directory type." =>
+ "Nie Bestaande gids tipe.",
+
+ "Undefined MIME types." =>
+ "Ongedefinieerd MIME-tipes.",
+
+ "Fileinfo PECL extension is missing." =>
+ "Fileinfo PECL uitbreiding is weg.",
+
+ "Opening fileinfo database failed." =>
+ "Opening van fileinfo databasis het misluk.",
+
+ "You can't upload such files." =>
+ "Jy kan nie sulke lêers oplaai.",
+
+ "The file '{file}' does not exist." =>
+ "Die lêer '{file}' bestaan nie.",
+
+ "Cannot read '{file}'." =>
+ "Kan nie '{file}' lees nie.",
+
+ "Cannot copy '{file}'." =>
+ "Kan nie '{file}' kopieer nie.",
+
+ "Cannot move '{file}'." =>
+ "Kan nie '{file}' beweeg nie.",
+
+ "Cannot delete '{file}'." =>
+ "Kan nie '{file}' verwyder .",
+
+ "Click to remove from the Clipboard" =>
+ "Klik om te verwyder van die Klembord",
+
+ "This file is already added to the Clipboard." =>
+ "Hierdie lêer is reeds aan die Klembord bygevoeg.",
+
+ "Copy files here" =>
+ "Kopieer lêers hier",
+
+ "Move files here" =>
+ "Skuif lêers hier",
+
+ "Delete files" =>
+ "Verwyder lêers ",
+
+ "Clear the Clipboard" => //
+ "Vee Klembord Skoon",
+
+ "Are you sure you want to delete all files in the Clipboard?" =>
+ "Is jy seker jy wil al die lêers in die Klembord te verwyder?",
+
+ "Copy {count} files" =>
+ "Kopieer {count} lêers",
+
+ "Move {count} files" =>
+ "Beweeg {count} lêers",
+
+ "Add to Clipboard" =>
+ "Voeg na klembord",
+ "New folder name:" => "Nuwe gids naam:",
+ "New file name:" => "Nuwe lêer naam:",
+ "Folders" => "Gidse",
+
+ "Upload" => "Oplaai",
+ "Refresh" => "Herlaai",
+ "Settings" => "Stellings",
+ "Maximize" => "Maksimaliseer",
+ "About" => "About",
+ "files" => "lêers",
+ "View:" => "Bekyk:",
+ "Show:" => "Wys:",
+ "Order by:" => "Sorteer volgens:",
+ "Thumbnails" => "Duimnaels",
+ "List" => "Lys",
+ "Name" => "Naam",
+ "Size" => "Grootte",
+ "Date" => "Datum",
+ "Descending" => "Aflopend",
+ "Uploading file..." => "Lêer Besig Met Oplaai...",
+ "Loading image..." => "Besig om beeld te laai...",
+ "Loading folders..." => "Besig om Gidse te laai...",
+ "Loading files..." => "Besig om Lêers te laai...",
+ "New Subfolder..." => "Nuwe subgids...",
+ "Rename..." => "Naam verander...",
+ "Delete" => "Verwyder",
+ "OK" => "REG",
+ "Cancel" => "Kanselleer",
+ "Select" => "Kies",
+ "Select Thumbnail" => "Kies Duimnaelskets",
+ "View" => "Bekyk",
+ "Download" => "Aflaai",
+ 'Clipboard' => "Klembord",
+
+ // VERSION 2 NEW LABELS
+
+ "Cannot rename the folder." =>
+ "Kan nie die gids naam vernader nie.",
+
+ "Non-existing directory type." =>
+ "Nie-bestaande gids tipe.",
+
+ "Cannot delete the folder." =>
+ "Kan nie die gids verwyder nie.",
+
+ "The files in the Clipboard are not readable." =>
+ "Die lêers in die Klembord is nie leesbaar is.",
+
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" =>
+ "{count} lêers in die Klembord is nie leesbaar is. Wil jy die res te kopieer ?",
+
+ "The files in the Clipboard are not movable." =>
+ "Die lêers in die Klembord kan verskuif word nie.",
+
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" =>
+ "{count} lêers in die Klembord kan nie verskuif word nie. Wil jy die res te beweeg ?",
+
+ "The files in the Clipboard are not removable." =>
+ "Die lêers in die Klembord kan nie verwyder word nie.",
+
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" =>
+ "{count} lêers in die Klembord kan nie verwyder word nie. Wil jy die res te verwyder ?",
+
+ "The selected files are not removable." =>
+ "Die geselekteerde lêers kan nie verwyder word nie",
+
+ "{count} selected files are not removable. Do you want to delete the rest?" =>
+ "{count} geselekteerde lêers kan nie verwyder word nie. Wil jy die res te verwyder ?",
+
+ "Are you sure you want to delete all selected files?" =>
+ "Is jy seker jy wil all geselekteerde lêers te verwyder ?",
+
+ "Failed to delete {count} files/folders." =>
+ "Misluk {count} lêers/gidse te verwyder.",
+
+ "A file or folder with that name already exists." =>
+ "'N lêer of gids met daardie naam bestaan reeds.",
+
+ "Inexistant or inaccessible folder." =>
+ "Nie-bestaande of ontoeganklik gids.",
+
+ "selected files" => "geselekteerde lêers",
+ "Type" => "Tipe",
+ "Select Thumbnails" => "Kies duimnaels",
+ "Download files" => "Laai lêers af",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/bg.php b/kcfinder/lang/bg.php
new file mode 100644
index 00000000..0215916b
--- /dev/null
+++ b/kcfinder/lang/bg.php
@@ -0,0 +1,270 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "bg_BG.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." =>
+ "Нямате права за качване.",
+
+ "You don't have permissions to browse server." =>
+ "Нямате права за разглеждане на сървъра.",
+
+ "Cannot move uploaded file to target folder." =>
+ "Файлът не може да се премести в целевата папка.",
+
+ "Unknown error." =>
+ "Непозната грешка.",
+
+ "The uploaded file exceeds {size} bytes." =>
+ "Каченият файл надхвърля {size} байта.",
+
+ "The uploaded file was only partially uploaded." =>
+ "Каченият файл беше качен само частично.",
+
+ "No file was uploaded." =>
+ "Файлът не беше качен",
+
+ "Missing a temporary folder." =>
+ "Липсва временна папка.",
+
+ "Failed to write file." =>
+ "Грешка при записване на файла.",
+
+ "Denied file extension." =>
+ "Забранено файлово разширение.",
+
+ "Unknown image format/encoding." =>
+ "Файлът не може да бъде разпознат като изображение.",
+
+ "The image is too big and/or cannot be resized." =>
+ "Изображението е много голямо и/или не може да бъде преоразмерено.",
+
+ "Cannot create {dir} folder." =>
+ "Невъзможност да се създаде папка {dir}.",
+
+ "Cannot rename the folder." =>
+ "Папката не може да се преимеува.",
+
+ "Cannot write to upload folder." =>
+ "Не е възможно записването на файлове в папката за качване.",
+
+ "Cannot read .htaccess" =>
+ "Не е възможно прочитането на .htaccess",
+
+ "Incorrect .htaccess file. Cannot rewrite it!" =>
+ "Невалиден .htaccess файл. Не може да се презапише автоматично!",
+
+ "Cannot read upload folder." =>
+ "Не е възможно прочитането на папката за качване.",
+
+ "Cannot access or create thumbnails folder." =>
+ "Невъзможен достъп или невъзможно създаване на папката за thumbnails.",
+
+ "Cannot access or write to upload folder." =>
+ "Папката не може да се достъпи или не може да се записва в нея.",
+
+ "Please enter new folder name." =>
+ "Моля въведете име на папката.",
+
+ "Unallowable characters in folder name." =>
+ "Непозволени знаци в името на папката.",
+
+ "Folder name shouldn't begins with '.'" =>
+ "Името на папката не трябва да започва с '.'",
+
+ "Please enter new file name." =>
+ "Моля въведете ново име на файла",
+
+ "Unallowable characters in file name." =>
+ "Непозволени знаци в името на файла.",
+
+ "File name shouldn't begins with '.'" =>
+ "Името на файла не трябва да започва с '.'",
+
+ "Are you sure you want to delete this file?" =>
+ "Наистина ли искате да изтриете този файл?",
+
+
+ "Are you sure you want to delete this folder and all its content?" =>
+ "Наистина ли искате да изтриете тази папка и цялото ѝ съдържание?",
+
+ "Non-existing directory type." =>
+ "Несъществуващ специален тип на папка.",
+
+ "Undefined MIME types." =>
+ "Не са дефинирани MIME типове.",
+
+ "Fileinfo PECL extension is missing." =>
+ "Липсва Fileinfo PECL разширение.",
+
+ "Opening fileinfo database failed." =>
+ "Грешка при отваряне на fileinfo дефиниции.",
+
+ "You can't upload such files." =>
+ "Не можете да качвате такива файлове.",
+
+ "The file '{file}' does not exist." =>
+ "Фаълът '{file}' не съществува.",
+
+ "Cannot read '{file}'." =>
+ "Файлът '{file}' не може да бъде прочетен.",
+
+ "Cannot copy '{file}'." =>
+ "Файлът '{file}' не може да бъде копиран.",
+
+ "Cannot move '{file}'." =>
+ "Файлът '{file}' не може да бъде преместен.",
+
+ "Cannot delete '{file}'." =>
+ "Файлът '{file}' не може да бъде изтрит.",
+
+ "Cannot delete the folder." =>
+ "Папката не може да бъде изтрита.",
+
+ "Click to remove from the Clipboard" =>
+ "Цъкнете за да премахнете файла от клипборда",
+
+ "This file is already added to the Clipboard." =>
+ "Този файл вече е добавен към клипборда.",
+
+ "The files in the Clipboard are not readable." =>
+ "Файловете в клипборда не могат да се прочетат.",
+
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" =>
+ "{count} файла в клипборда не могат да се прочетат. Искате ли да копирате останалите?",
+
+ "The files in the Clipboard are not movable." =>
+ "Файловете в клипборда не могат да бъдат преместени.",
+
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" =>
+ "{count} файла в клипборда не могат да бъдат преместени. Искате ли да преместите останалите?",
+
+ "The files in the Clipboard are not removable." =>
+ "Файловете в клипборда не могат да бъдат изтрити.",
+
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" =>
+ "{count} файла в клипборда не могат да бъдат изтрити. Искате ли да изтриете останалите?",
+
+ "The selected files are not removable." =>
+ "Избраните файлове не могат да бъдат изтрити.",
+
+ "{count} selected files are not removable. Do you want to delete the rest?" =>
+ "{count} от избраните файлове не могат да бъдат изтрити. Искате ли да изтриете останалите?",
+
+ "Are you sure you want to delete all selected files?" =>
+ "Наистина ли искате да изтриете всички избрани файлове?",
+
+ "Failed to delete {count} files/folders." =>
+ "{count} файла/папки не могат да бъдат изтрити.",
+
+ "A file or folder with that name already exists." =>
+ "Вече има файл или папка с такова име.",
+
+ "Copy files here" =>
+ "Копирай файловете тук",
+
+ "Move files here" =>
+ "Премести файловете тук",
+
+ "Delete files" =>
+ "Изтрий файловете",
+
+ "Clear the Clipboard" =>
+ "Изчисти клипборда",
+
+ "Are you sure you want to delete all files in the Clipboard?" =>
+ "Наистина ли искате да изтриете всички файлове от клипборда?",
+
+ "Copy {count} files" =>
+ "Копирай {count} файла",
+
+ "Move {count} files" =>
+ "Премести {count} файла",
+
+ "Add to Clipboard" =>
+ "Добави към клипборда",
+
+ "Inexistant or inaccessible folder." =>
+ "Несъществуваща или недостъпна папка.",
+
+ "New folder name:" => "Име на папката:",
+ "New file name:" => "Ново име на файла:",
+
+ "Upload" => "Качи",
+ "Refresh" => "Актуализирай",
+ "Settings" => "Настройки",
+ "Maximize" => "Разпъни",
+ "About" => "Информация",
+ "files" => "файла",
+ "selected files" => "избрани файла",
+ "View:" => "Изглед:",
+ "Show:" => "Покажи:",
+ "Order by:" => "Подреди по:",
+ "Thumbnails" => "Картинки",
+ "List" => "Списък",
+ "Name" => "Име",
+ "Type" => "Тип",
+ "Size" => "Размер",
+ "Date" => "Дата",
+ "Descending" => "Обратен ред",
+ "Uploading file..." => "Файлът се качва...",
+ "Loading image..." => "Изображението се зарежда...",
+ "Loading folders..." => "Зареждане на папките...",
+ "Loading files..." => "Зареждане на папката...",
+ "New Subfolder..." => "Нова подпапка...",
+ "Rename..." => "Преименуване...",
+ "Delete" => "Изтрий",
+ "OK" => "OK",
+ "Cancel" => "Отказ",
+ "Select" => "Избери",
+ "Select Thumbnail" => "Избери малък вариант",
+ "Select Thumbnails" => "Избери малки варианти",
+ "View" => "Преглед",
+ "Download" => "Свали",
+ "Download files" => "Свали файловете",
+ "Clipboard" => "Клипборд",
+
+ // SINCE 2.4
+
+ "Checking for new version..." => "Проверка за нова версия...",
+ "Unable to connect!" => "Не може да се свърже!",
+ "Download version {version} now!" => "Свалете версия {version} сега!",
+ "KCFinder is up to date!" => "KCFinder е актуален!",
+ "Licenses:" => "Лицензи:",
+ "Attention" => "Внимание",
+ "Question" => "Въпрос",
+ "Yes" => "Да",
+ "No" => "Не",
+
+ // SINCE 2.41
+
+ "You cannot rename the extension of files!" =>
+ "Не можете да преименувате разширенията на файловете!",
+
+ // SINCE 2.5
+
+ "Uploading file {number} of {count}... {progress}" =>
+ "Качване на файл {number} от {count}... {progress}",
+
+ "Failed to upload {filename}!" => "Несполучливо качване на {filename}!",
+
+ // SINCE 3.0
+ "Close" => "Затвори",
+ "Previous" => "Предишно",
+ "Next" => "Следващо",
+ "Confirmation" => "Потвърждение",
+ "Warning" => "Внимание"
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/ca.php b/kcfinder/lang/ca.php
new file mode 100644
index 00000000..9e9c6c2f
--- /dev/null
+++ b/kcfinder/lang/ca.php
@@ -0,0 +1,128 @@
+ "ca_ES.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "No teniu permisos per pujar arxius.",
+ "You don't have permissions to browse server." => "No teniu permisos per visualitzar arxius.",
+ "Cannot move uploaded file to target folder." => "No es pot moure el fitxer pujat al directori destí",
+ "Unknown error." => "Error desconegut.",
+ "The uploaded file exceeds {size} bytes." => "El fitxer seleccionat excedeix el pes màxim permès ( {size} bytes ).",
+ "The uploaded file was only partially uploaded." => "El fitxer seleccionat només s'ha carregat parcialment.",
+ "No file was uploaded." => "No s'ha carregat cap fitxer.",
+ "Missing a temporary folder." => "Manca un directori temporal.",
+ "Failed to write file." => "No s'ha pogut escriure el fitxer.",
+ "Denied file extension." => "Extensió de fitxer no permesa.",
+ "Unknown image format/encoding." => "Format d'imatge desconegut.",
+ "The image is too big and/or cannot be resized." => "La imatge és massa gran i/o no es pot redimensionar.",
+ "Cannot create {dir} folder." => "No s'ha pogut crear el directori {dir}",
+ "Cannot rename the folder." => "No es pot reanomenar el directori.",
+ "Cannot write to upload folder." => "No es pot escriure al directori de càrrega de fitxers.",
+ "Cannot read .htaccess" => "No s'ha pogut llegir .htaccess.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Fitxer .htaccess incorrecte. No es pot reescriure!",
+ "Cannot read upload folder." => "No s'ha pogut llegir la carpeta de càrrega de fitxers.",
+ "Cannot access or create thumbnails folder." => "No s'ha pogut accedir o crear la carpeta de miniatures.",
+ "Cannot access or write to upload folder." => "No s'ha pogut accedir o escriure la carpeta de càrrega de fitxers.",
+ "Please enter new folder name." => "Si us plau, introduïu el nom del nou directori.",
+ "Unallowable characters in folder name." => "Caràcters no permesos en el nom del directori.",
+ "Folder name shouldn't begins with '.'" => "El nom d'un directori no hauria de començar amb un punt '.'",
+ "Please enter new file name." => "Si us plau, introduïu el nom del nou fitxer.",
+ "Unallowable characters in file name." => "Caràcters no permesos en el nom del fitxer.",
+ "File name shouldn't begins with '.'" => "El nom d'un fitxer no hauria de començar amb un punt '.'",
+ "Are you sure you want to delete this file?" => "Esteu segur que voleu eliminar aquest fitxer?",
+ "Are you sure you want to delete this folder and all its content?" => "Esteu segur que voleu eliminar aquest directori i tot el seu contingut?",
+ "Non-existing directory type." => "Tipus de directori inexistent.",
+ "Undefined MIME types." => "Tipus MIME no definit.",
+ "Fileinfo PECL extension is missing." => "Manca arxiu d'informació de l'extensió PECL.",
+ "Opening fileinfo database failed." => "Error obrint el fitxer d'informació de la base de dades.",
+ "You can't upload such files." => "No podeu carregar tants fitxers.",
+ "The file '{file}' does not exist." => "El fitxer '{file}' no existeix.",
+ "Cannot read '{file}'." => "No s'ha pogut llegir '{file}'.",
+ "Cannot copy '{file}'." => "No s'ha pogut copiar '{file}'.",
+ "Cannot move '{file}'." => "No s'ha pogut moure '{file}'.",
+ "Cannot delete '{file}'." => "No s'ha pogut eliminar '{file}'.",
+ "Cannot delete the folder." => "No es pot eliminar el directori.",
+ "Click to remove from the Clipboard" => "Feu clic per eliminar del portapapers",
+ "This file is already added to the Clipboard." => "Aquest arxiu ja es troba al portapapers.",
+ "The files in the Clipboard are not readable." => "No es poden llegir els fitxers del portapapers.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fitxers del portapapers no es poden llegir. Voleu copiar la resta?",
+ "The files in the Clipboard are not movable." => "No es poden moure els fitxers del portapapers.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fitxers del portapapers no es poden moure. Voleu moure la resta?",
+ "The files in the Clipboard are not removable." => "Els fitxers del portapapers no es poden eliminar.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fitxers del portapapers no es poden eliminar. Voleu eliminar la resta?",
+ "The selected files are not removable." => "Els fitxers seleccionats no es poden eliminar.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} fitxers dels seleccionats no es poden eliminar. Voleu eliminar la resta?",
+ "Are you sure you want to delete all selected files?" => "Esteu segur que voleu eliminar els fitxers seleccionats?",
+ "Failed to delete {count} files/folders." => "Error al eliminar {count} fitxers/directoris.",
+ "A file or folder with that name already exists." => "Ja existeix un directori o fitxer amb aquest nom.",
+ "Copy files here" => "Copia els fitxers aquí",
+ "Move files here" => "Mou els fitxers aquí",
+ "Delete files" => "Elimina els fitxers",
+ "Clear the Clipboard" => "Buida el portapapers",
+ "Are you sure you want to delete all files in the Clipboard?" => "Esteu segur que voleu eliminar tots els fitxers del portapapers?",
+ "Copy {count} files" => "Copia els {count} fitxers aquí",
+ "Move {count} files" => "Mou els {count} fitxers aquí",
+ "Add to Clipboard" => "Afegeix al portapapers",
+ "Inexistant or inaccessible folder." => "Directori inexistent o inaccessible.",
+ "New folder name:" => "Nom del nou directori:",
+ "New file name:" => "Nom del nou fitxer:",
+ "Upload" => "Carrega arxius",
+ "Refresh" => "Refresca",
+ "Settings" => "Opcions",
+ "Maximize" => "Maximitza",
+ "About" => "Sobre...",
+ "files" => "Fitxers",
+ "selected files" => "Fitxers seleccionats",
+ "View:" => "Veure:",
+ "Show:" => "Mostra:",
+ "Order by:" => "Ordena per:",
+ "Thumbnails" => "Miniatures",
+ "List" => "Llistat",
+ "Name" => "Nom",
+ "Type" => "Tipus",
+ "Size" => "Mida",
+ "Date" => "Data",
+ "Descending" => "Descendent",
+ "Uploading file..." => "Carregant fitxer...",
+ "Loading image..." => "Carregant imatge...",
+ "Loading folders..." => "Carregant directoris...",
+ "Loading files..." => "Carregant fitxers...",
+ "New Subfolder..." => "Nou subdirectori...",
+ "Rename..." => "Canvia el nom...",
+ "Delete" => "Elimina",
+ "OK" => "D'acord",
+ "Cancel" => "Cancel·la",
+ "Select" => "Selecciona",
+ "Select Thumbnail" => "Selecciona miniatura",
+ "Select Thumbnails" => "Selecciona miniatures",
+ "View" => "Veure",
+ "Download" => "Descarrega",
+ "Download files" => "Descarrega fitxers",
+ "Clipboard" => "Portapapers",
+ "Checking for new version..." => "Comprovant actualitzacions...",
+ "Unable to connect!" => "No es pot connectar!",
+ "Download version {version} now!" => "Descarregueu la versió {version}!",
+ "KCFinder is up to date!" => "KCFinder està actualitzat!",
+ "Licenses:" => "Llicències:",
+ "Attention" => "Atenció",
+ "Question" => "Pregunta",
+ "Yes" => "Sí",
+ "No" => "No",
+ "You cannot rename the extension of files!" => "No està permès canviar la extensió al fitxer.",
+ "Uploading file {number} of {count}... {progress}" => "Carregant arxiu {number} de {count}... {progress}",
+ "Failed to upload {filename}!" => "Error al carregar {filename}",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/cs.php b/kcfinder/lang/cs.php
new file mode 100644
index 00000000..bd672eac
--- /dev/null
+++ b/kcfinder/lang/cs.php
@@ -0,0 +1,132 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "cs_CZ.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B.%Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Nemáte práva pro nahrávání souborů.",
+ "You don't have permissions to browse server." => "Nemáte práva pro prohlížení serveru.",
+ "Cannot move uploaded file to target folder." => "Nelze přesunout soubor do určeného adresáře.",
+ "Unknown error." => "Neznámá chyba.",
+ "The uploaded file exceeds {size} bytes." => "Nahraný soubor přesahuje {size} bytů.",
+ "The uploaded file was only partially uploaded." => "Nahraný soubor byl nahrán pouze částečně.",
+ "No file was uploaded." => "Žádný soubor nebyl nahrán na server.",
+ "Missing a temporary folder." => "Chybí dočasný adresář.",
+ "Failed to write file." => "Soubor se nepodařilo se uložit.",
+ "Denied file extension." => "Nepodporovaný typ souboru.",
+ "Unknown image format/encoding." => "Neznámý formát obrázku/encoding.",
+ "The image is too big and/or cannot be resized." => "Obrázek je příliš velký/nebo nemohl být zmenšen.",
+ "Cannot create {dir} folder." => "Adresář {dir} nelze vytvořit.",
+ "Cannot rename the folder." => "Adresář nelze přejmenovat.",
+ "Cannot write to upload folder." => "Nelze ukládat do adresáře pro nahrávání.",
+ "Cannot read .htaccess" => "Není možno číst soubor .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Chybný soubor .htaccess. Soubor nelze přepsat!",
+ "Cannot read upload folder." => "Nelze číst z adresáře pro nahrávání souborů.",
+ "Cannot access or create thumbnails folder." => "Adresář pro náhledy nelze vytvořit nebo není přístupný.",
+ "Cannot access or write to upload folder." => "Nelze přistoupit, nebo zapisovat do adresáře pro nahrávání souborů.",
+ "Please enter new folder name." => "Vložte prosím nové jméno adresáře.",
+ "Unallowable characters in folder name." => "Nepovolené znaky v názvu adresáře.",
+ "Folder name shouldn't begins with '.'" => "Jméno adresáře nesmí začínat znakem '.'",
+ "Please enter new file name." => "Vložte prosím nové jméno souboru.",
+ "Unallowable characters in file name." => "Nepovolené znaky v názvu souboru.",
+ "File name shouldn't begins with '.'" => "Název soubor nesmí začínat znakem '.'",
+ "Are you sure you want to delete this file?" => "Jste si jistý že chcete smazat tento soubor?",
+ "Are you sure you want to delete this folder and all its content?" => "Jste si jistý že chcete smazat tento adresář a celý jeho obsah?",
+ "Non-existing directory type." => "Neexistující typ adresáře.",
+ "Undefined MIME types." => "Nedefinovaný MIME typ souboru.",
+ "Fileinfo PECL extension is missing." => "Rozříření PECL pro zjištění informací o souboru chybí.",
+ "Opening fileinfo database failed." => "Načtení informací o souboru selhalo.",
+ "You can't upload such files." => "Tyto soubory nemůžete nahrát na server.",
+ "The file '{file}' does not exist." => "Tento soubor '{file}' neexistuje.",
+ "Cannot read '{file}'." => "Nelze načíst '{file}'.",
+ "Cannot copy '{file}'." => "Nelze kopírovat '{file}'.",
+ "Cannot move '{file}'." => "Nelze přesunout '{file}'.",
+ "Cannot delete '{file}'." => "Nelze smazat '{file}'.",
+ "Cannot delete the folder." => "Adresář nelze smazat.",
+ "Click to remove from the Clipboard" => "Klikněte pro odstranění ze schránky",
+ "This file is already added to the Clipboard." => "Tento soubor je již ve schránce vložen.",
+ "The files in the Clipboard are not readable." => "Soubory ve schránce nelze načíst.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} souborů ve schránce nelze načíst. Chcete zkopírovat zbylé soubory?",
+ "The files in the Clipboard are not movable." => "Soubory ve schránce nelze přesunout.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} souborů ve schránce nelze přesunout. Chcete přesunout zbylé soubory?",
+ "The files in the Clipboard are not removable." => "Soubory ve schránce nelze smazat.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} souborů ve schránce nelze smazat. Chcete smazat zbylé soubory?",
+ "The selected files are not removable." => "Označené soubory nelze smazat.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} označených souborů nelze smazat. Chcete smazat zbylé soubory?",
+ "Are you sure you want to delete all selected files?" => "Jste si jistý že chcete smazat vybrané soubory?",
+ "Failed to delete {count} files/folders." => "Nebylo smazáno {count} souborů/adresářů.",
+ "A file or folder with that name already exists." => "Soubor nebo adresář s takovým jménem již existuje.",
+ "Copy files here" => "Kopírovat soubory na toto místo",
+ "Move files here" => "Přesunout soubory na toto místo",
+ "Delete files" => "Smazat soubory",
+ "Clear the Clipboard" => "Vyčistit schránku",
+ "Are you sure you want to delete all files in the Clipboard?" => "Jste si jistý že chcete vymazat všechny soubory ze schránky?",
+ "Copy {count} files" => "Kopírovat {count} souborů",
+ "Move {count} files" => "Přesunout {count} souborů",
+ "Add to Clipboard" => "Vložit do schránky",
+ "Inexistant or inaccessible folder." => "Neexistující nebo nepřístupný adresář.",
+ "New folder name:" => "Nový název adresáře:",
+ "New file name:" => "Nový název souboru:",
+ "Upload" => "Nahrát",
+ "Refresh" => "Obnovit",
+ "Settings" => "Nastavení",
+ "Maximize" => "Maximalizovat",
+ "About" => "O aplikaci",
+ "files" => "soubory",
+ "selected files" => "vybrané soubory",
+ "View:" => "Zobrazit:",
+ "Show:" => "Ukázat:",
+ "Order by:" => "Řadit podle:",
+ "Thumbnails" => "Náhledy",
+ "List" => "Seznam",
+ "Name" => "Jméno",
+ "Type" => "Typ",
+ "Size" => "Velikost",
+ "Date" => "Datum",
+ "Descending" => "Sestupně",
+ "Uploading file..." => "Nahrávání souboru...",
+ "Loading image..." => "Načítání obrázku...",
+ "Loading folders..." => "Načítání adresářů...",
+ "Loading files..." => "Načítání souborů...",
+ "New Subfolder..." => "Nový adresář...",
+ "Rename..." => "Přejmenovat...",
+ "Delete" => "Smazat",
+ "OK" => "OK",
+ "Cancel" => "Zrušit",
+ "Select" => "Vybrat",
+ "Select Thumbnail" => "Vybrat náhled",
+ "Select Thumbnails" => "Vybrat náhled",
+ "View" => "Zobrazit",
+ "Download" => "Stažení",
+ "Download files" => "Stáhnout soubory",
+ "Clipboard" => "Schránka",
+ "Checking for new version..." => "Zkontrolovat novou verzi...",
+ "Unable to connect!" => "Nelze připojit!",
+ "Download version {version} now!" => "Stáhnout verzi {version} nyní!",
+ "KCFinder is up to date!" => "KCFinder je aktuální!",
+ "Licenses:" => "Licence:",
+ "Attention" => "Upozornění",
+ "Question" => "Otázka",
+ "Yes" => "Ano",
+ "No" => "Ne",
+ "You cannot rename the extension of files!" => "Nemůžete přejmenovat příponu souborů!",
+ "Uploading file {number} of {count}... {progress}" => "Nahrávám soubor {number} z {count}... {progress}",
+ "Failed to upload {filename}!" => "Nepodařilo se nahrát soubor {filename}!",
+ "Close" => "Zavřít",
+ "Previous" => "Předchozí",
+ "Next" => "Další",
+ "Confirmation" => "Potvrzení",
+ "Warning" => "Varování",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/da.php b/kcfinder/lang/da.php
new file mode 100644
index 00000000..e6b18402
--- /dev/null
+++ b/kcfinder/lang/da.php
@@ -0,0 +1,127 @@
+
+ * Danish corrections by Mikael Lyngvig
+ */
+
+$lang = array(
+
+ '_locale' => "da_DK.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d/%m/%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Du har ikke tilladelser til at uploade filer.",
+ "You don't have permissions to browse server." => "Du har ikke tilladelser til at se filer.",
+ "Cannot move uploaded file to target folder." => "Kan ikke flytte fil til destinations mappe.",
+ "Unknown error." => "Ukendt fejl.",
+ "The uploaded file exceeds {size} bytes." => "Den uploadede fil overskrider {size} bytes.",
+ "The uploaded file was only partially uploaded." => "Den uploadede fil blev kun delvist uploadet.",
+ "No file was uploaded." => "Ingen fil blev uploadet.",
+ "Missing a temporary folder." => "Mangler en midlertidig mappe.",
+ "Failed to write file." => "Kunne ikke skrive fil.",
+ "Denied file extension." => "Nægtet filtypenavn.",
+ "Unknown image format/encoding." => "Ukendt billedformat / kodning.",
+ "The image is too big and/or cannot be resized." => "Billedet er for stort og / eller kan ikke ændres.",
+ "Cannot create {dir} folder." => "Kan ikke lave mappen {dir}.",
+ "Cannot rename the folder." => "Kan ikke omdøbe mappen.",
+ "Cannot write to upload folder." => "Kan ikke skrive til upload mappen.",
+ "Cannot read .htaccess" => "Ikke kan læse .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Forkert .htaccess fil. Kan ikke omskrive den!",
+ "Cannot read upload folder." => "Kan ikke læse upload mappen.",
+ "Cannot access or create thumbnails folder." => "Kan ikke få adgang til eller oprette miniature mappe.",
+ "Cannot access or write to upload folder." => "Kan ikke få adgang til eller skrive til upload mappe.",
+ "Please enter new folder name." => "Indtast venligst nyt mappenavn.",
+ "Unallowable characters in folder name." => "Ugyldige tegn i mappens navn.",
+ "Folder name shouldn't begins with '.'" => "Mappenavne bør ikke begynde med '.'",
+ "Please enter new file name." => "Indtast venligst nyt filnavn.",
+ "Unallowable characters in file name." => "Ugyldige tegn i filens navn",
+ "File name shouldn't begins with '.'" => "Filnavn bør ikke begynde med '.'",
+ "Are you sure you want to delete this file?" => "Er du sikker på du vil slette denne fil?",
+ "Are you sure you want to delete this folder and all its content?" => "Er du sikker på du vil slette denne mappe og al dens indhold?",
+ "Non-existing directory type." => "Ikke-eksisterende mappe type.",
+ "Undefined MIME types." => "Udefinerede MIME typer.",
+ "Fileinfo PECL extension is missing." => "Filinfo PECL udvidelse mangler.",
+ "Opening fileinfo database failed." => "Åbning af filinfo database mislykkedes.",
+ "You can't upload such files." => "Du kan ikke uploade sådanne filer.",
+ "The file '{file}' does not exist." => "Filen '{file}' eksisterer ikke.",
+ "Cannot read '{file}'." => "Kan ikke læse '{file}'.",
+ "Cannot copy '{file}'." => "Kan ikke kopiere '{file}'.",
+ "Cannot move '{file}'." => "Kan ikke flytte '{file}'.",
+ "Cannot delete '{file}'." => "Kan ikke slette '{file}'.",
+ "Cannot delete the folder." => "Kan ikke slette mappen.",
+ "Click to remove from the Clipboard" => "Klik for at fjerne fra udklipsholderen.",
+ "This file is already added to the Clipboard." => "Denne fil er allerede føjet til udklipsholderen.",
+ "The files in the Clipboard are not readable." => "Filerne i udklipsholderen ikke kan læses.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} filer i udklipsholderen ikke kan læses. Ønsker du at kopiere resten?",
+ "The files in the Clipboard are not movable." => "Filerne i udklipsholderen kan ikke flyttes.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} filer i udklipsholderen er ikke flytbare. Ønsker du at flytte resten?",
+ "The files in the Clipboard are not removable." => "Filerne i udklipsholderen kan ikke fjernes.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} filer i udklipsholderen kan ikke fjernes. Ønsker du at slette resten?",
+ "The selected files are not removable." => "De valgte filer er ikke flytbare.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} valgte filer kan ikke fjernes. Ønsker du at slette resten?",
+ "Are you sure you want to delete all selected files?" => "Er du sikker på du vil slette alle markerede filer?",
+ "Failed to delete {count} files/folders." => "Kunne ikke slette {count} filer/mapper.",
+ "A file or folder with that name already exists." => "En fil eller mappe med det navn findes allerede.",
+ "Copy files here" => "Kopier filer her.",
+ "Move files here" => "Flyt filer her.",
+ "Delete files" => "Slet filer.",
+ "Clear the Clipboard" => "Tøm udklipsholderen",
+ "Are you sure you want to delete all files in the Clipboard?" => "Tøm udklipsholderen?",
+ "Copy {count} files" => "Kopier {count} filer",
+ "Move {count} files" => "Flyt {count} filer",
+ "Add to Clipboard" => "Tilføj til udklipsholderen",
+ "Inexistant or inaccessible folder." => "Manglende eller utilgængelig mappe.",
+ "New folder name:" => "Nyt mappenavn:",
+ "New file name:" => "Nyt filnavn:",
+ "Upload" => "Upload",
+ "Refresh" => "Genopfrisk",
+ "Settings" => "Indstillinger",
+ "Maximize" => "Maksimer",
+ "About" => "Om",
+ "files" => "filer",
+ "selected files" => "Valgte filer",
+ "View:" => "Åben:",
+ "Show:" => "Vis:",
+ "Order by:" => "Sorter efter:",
+ "Thumbnails" => "Miniaturer",
+ "List" => "Liste",
+ "Name" => "Navn",
+ "Type" => "Type",
+ "Size" => "Størrelse",
+ "Date" => "Dato",
+ "Descending" => "Aftagende",
+ "Uploading file..." => "Uploader fil...",
+ "Loading image..." => "Indlæser billede...",
+ "Loading folders..." => "Indlæser mapper...",
+ "Loading files..." => "Indlæser filer...",
+ "New Subfolder..." => "Ny undermappe...",
+ "Rename..." => "Omdøb...",
+ "Delete" => "Slet",
+ "OK" => "Ok",
+ "Cancel" => "Fortryd",
+ "Select" => "Vælg",
+ "Select Thumbnail" => "Vælg miniature",
+ "Select Thumbnails" => "Vælg miniaturer",
+ "View" => "Åben",
+ "Download" => "Download",
+ "Download files" => "Download filer",
+ "Clipboard" => "Udklipsholder",
+ "Checking for new version..." => "Søger efter ny version...",
+ "Unable to connect!" => "Kan ikke forbinde!",
+ "Download version {version} now!" => "Hent version {version} nu!",
+ "KCFinder is up to date!" => "KCFinder er opdateret!",
+ "Licenses:" => "Licenser:",
+ "Attention" => "Vigtigt",
+ "Question" => "Spørgsmål",
+ "Yes" => "Ja",
+ "No" => "Nej",
+ "You cannot rename the extension of files!" => "Du kan ikke ændre typen på filer!",
+ "Uploading file {number} of {count}... {progress}" => "Uploader fil {number} af {count} ... {progress}",
+ "Failed to upload {filename}!" => "Kunne ikke uploade {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/de.php b/kcfinder/lang/de.php
new file mode 100644
index 00000000..42a4ae61
--- /dev/null
+++ b/kcfinder/lang/de.php
@@ -0,0 +1,132 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "de_DE.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B.%Y %k:%M",
+ '_dateTimeMid' => "%a %e %b %Y %k:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %k:%M",
+
+ "You don't have permissions to upload files." => "Du hast keine Berechtigung Dateien hoch zu laden.",
+ "You don't have permissions to browse server." => "Fehlende Berechtigung.",
+ "Cannot move uploaded file to target folder." => "Kann hochgeladene Datei nicht in den Zielordner verschieben.",
+ "Unknown error." => "Unbekannter Fehler.",
+ "The uploaded file exceeds {size} bytes." => "Die hochgeladene Datei überschreitet die erlaubte Dateigröße von {size} bytes.",
+ "The uploaded file was only partially uploaded." => "Die Datei wurde nur teilweise hochgeladen.",
+ "No file was uploaded." => "Keine Datei hochgeladen.",
+ "Missing a temporary folder." => "Temporärer Ordner fehlt.",
+ "Failed to write file." => "Fehler beim schreiben der Datei.",
+ "Denied file extension." => "Die Dateiendung ist nicht erlaubt.",
+ "Unknown image format/encoding." => "Unbekanntes Bildformat/encoding.",
+ "The image is too big and/or cannot be resized." => "Das Bild ist zu groß und/oder kann nicht verkleinert werden.",
+ "Cannot create {dir} folder." => "Ordner {dir} kann nicht angelegt werden.",
+ "Cannot rename the folder." => "Der Ordner kann nicht umbenannt werden.",
+ "Cannot write to upload folder." => "Kann nicht in den upload Ordner schreiben.",
+ "Cannot read .htaccess" => "Kann .htaccess Datei nicht lesen",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Falsche .htaccess Datei. Die Datei kann nicht geschrieben werden",
+ "Cannot read upload folder." => "Ziel Ordner kann nicht gelesen werden.",
+ "Cannot access or create thumbnails folder." => "Kann thumbnails Ordner nicht erstellen oder darauf zugreifen.",
+ "Cannot access or write to upload folder." => "Kann nicht auf den upload Ordner zugreifen oder darin schreiben.",
+ "Please enter new folder name." => "Bitte einen neuen Ordnernamen angeben.",
+ "Unallowable characters in folder name." => "Der Ordnername enthält unerlaubte Zeichen.",
+ "Folder name shouldn't begins with '.'" => "Ordnernamen sollten nicht mit '.' beginnen.",
+ "Please enter new file name." => "Bitte gib einen neuen Dateinamen an.",
+ "Unallowable characters in file name." => "Der Dateiname enthält unerlaubte Zeichen",
+ "File name shouldn't begins with '.'" => "Dateinamen sollten nicht mit '.' beginnen.",
+ "Are you sure you want to delete this file?" => "Willst Du die Datei wirklich löschen?",
+ "Are you sure you want to delete this folder and all its content?" => "Willst Du wirklich diesen Ordner und seinen gesamten Inhalt löschen?",
+ "Non-existing directory type." => "Der Ordner Typ existiert nicht.",
+ "Undefined MIME types." => "Unbekannte MIME Typen.",
+ "Fileinfo PECL extension is missing." => "PECL extension für Dateiinformationen fehlt",
+ "Opening fileinfo database failed." => "Öffnen der Dateiinfo Datenbank fehlgeschlagen.",
+ "You can't upload such files." => "Du kannst solche Dateien nicht hochladen.",
+ "The file '{file}' does not exist." => "Die Datei '{file}' existiert nicht.",
+ "Cannot read '{file}'." => "Kann Datei '{file}' nicht lesen.",
+ "Cannot copy '{file}'." => "Kann Datei '{file}' nicht kopieren.",
+ "Cannot move '{file}'." => "Kann Datei '{file}' nicht verschieben.",
+ "Cannot delete '{file}'." => "Kann Datei '{file}' nicht löschen.",
+ "Cannot delete the folder." => "Der Ordner kann nicht gelöscht werden.",
+ "Click to remove from the Clipboard" => "Zum entfernen aus der Zwischenablage, hier klicken.",
+ "This file is already added to the Clipboard." => "Diese Datei wurde bereits der Zwischenablage hinzugefügt.",
+ "The files in the Clipboard are not readable." => "Die Dateien in der Zwischenablage können nicht gelesen werden.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} Dateien in der Zwischenablage sind nicht lesbar. Möchtest Du die Übrigen trotzdem kopieren?",
+ "The files in the Clipboard are not movable." => "Die Dateien in der Zwischenablage können nicht verschoben werden.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} Dateien in der Zwischenablage sind nicht verschiebbar. Möchtest Du die Übrigen trotzdem verschieben?",
+ "The files in the Clipboard are not removable." => "Die Dateien in der Zwischenablage können nicht gelöscht werden.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} Dateien in der Zwischenablage können nicht gelöscht werden. Möchtest Du die Übrigen trotzdem löschen?",
+ "The selected files are not removable." => "Die ausgewählten Dateien können nicht gelöscht werden.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} der ausgewählten Dateien können nicht gelöscht werden. Möchtest Du die Übrigen trotzdem löschen?",
+ "Are you sure you want to delete all selected files?" => "Möchtest Du wirklich alle ausgewählten Dateien löschen?",
+ "Failed to delete {count} files/folders." => "Konnte {count} Dateien/Ordner nicht löschen.",
+ "A file or folder with that name already exists." => "Eine Datei oder ein Ordner mit dem Namen existiert bereits.",
+ "Copy files here" => "Kopiere Dateien hier hin.",
+ "Move files here" => "Verschiebe Dateien hier hin.",
+ "Delete files" => "Lösche Dateien.",
+ "Clear the Clipboard" => "Zwischenablage leeren",
+ "Are you sure you want to delete all files in the Clipboard?" => "Willst Du wirklich alle Dateien in der Zwischenablage löschen?",
+ "Copy {count} files" => "Kopiere {count} Dateien",
+ "Move {count} files" => "Verschiebe {count} Dateien",
+ "Add to Clipboard" => "Der Zwischenablage hinzufügen",
+ "Inexistant or inaccessible folder." => "Ordnertyp existiert nicht.",
+ "New folder name:" => "Neuer Ordnername:",
+ "New file name:" => "Neuer Dateiname:",
+ "Upload" => "Hochladen",
+ "Refresh" => "Aktualisieren",
+ "Settings" => "Einstellungen",
+ "Maximize" => "Maximieren",
+ "About" => "Über",
+ "files" => "Dateien",
+ "selected files" => "ausgewählte Dateien",
+ "View:" => "Ansicht:",
+ "Show:" => "Zeige:",
+ "Order by:" => "Ordnen nach:",
+ "Thumbnails" => "Miniaturansicht",
+ "List" => "Liste",
+ "Name" => "Name",
+ "Type" => "Typ",
+ "Size" => "Größe",
+ "Date" => "Datum",
+ "Descending" => "Absteigend",
+ "Uploading file..." => "Lade Datei hoch...",
+ "Loading image..." => "Lade Bild...",
+ "Loading folders..." => "Lade Ordner...",
+ "Loading files..." => "Lade Dateien...",
+ "New Subfolder..." => "Neuer Unterordner...",
+ "Rename..." => "Umbenennen...",
+ "Delete" => "Löschen",
+ "OK" => "OK",
+ "Cancel" => "Abbruch",
+ "Select" => "Auswählen",
+ "Select Thumbnail" => "Wähle Miniaturansicht",
+ "Select Thumbnails" => "Wähle Miniaturansicht",
+ "View" => "Ansicht",
+ "Download" => "Download",
+ "Download files" => "Dateien herunterladen",
+ "Clipboard" => "Zwischenablage",
+ "Checking for new version..." => "Nach neuer Version suchen",
+ "Unable to connect!" => "Kann keine Verbindung herstellen!",
+ "Download version {version} now!" => "Version {version} herunterladen!",
+ "KCFinder is up to date!" => "KCFinder ist aktuell!",
+ "Licenses:" => "Lizenz",
+ "Attention" => "Achtung",
+ "Question" => "Frage",
+ "Yes" => "Ja",
+ "No" => "Nein",
+ "You cannot rename the extension of files!" => "Die Umbenennung von Datei-Erweiterungen ist nicht möglich!",
+ "Uploading file {number} of {count}... {progress}" => "Lade Datei {number} von {count} hoch ... {progress}",
+ "Failed to upload {filename}!" => "Hochladen von {filename} fehlgeschlagen!",
+ "Close" => "Schließen",
+ "Previous" => "Vorherige",
+ "Next" => "Nächste",
+ "Confirmation" => "Bestätigung",
+ "Warning" => "Warnung"
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/el.php b/kcfinder/lang/el.php
new file mode 100644
index 00000000..e5fcfd91
--- /dev/null
+++ b/kcfinder/lang/el.php
@@ -0,0 +1,132 @@
+ "el_GR.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Δεν έχετε δικαίωμα να ανεβάσετε αρχεία.",
+ "You don't have permissions to browse server." => "Δεν έχετε δικαίωμα να δείτε τα αρχεία στο διακομιστή.",
+ "Cannot move uploaded file to target folder." => "Το αρχείο δε μπορεί να μεταφερθεί στο φάκελο προορισμού.",
+ "Unknown error." => "Άγνωστο σφάλμα.",
+ "The uploaded file exceeds {size} bytes." => "Το αρχείο υπερβαίνει το μέγεθος των {size} bytes.",
+ "The uploaded file was only partially uploaded." => "Ένα μόνο μέρος του αρχείου ανέβηκε.",
+ "No file was uploaded." => "Κανένα αρχείο δεν ανέβηκε.",
+ "Missing a temporary folder." => "Λείπει ο φάκελος των προσωρινών αρχείων.",
+ "Failed to write file." => "Σφάλμα στη τροποποίηση του αρχείου.",
+ "Denied file extension." => "Δεν επιτρέπονται αυτού του είδους αρχεία.",
+ "Unknown image format/encoding." => "Αγνωστη κωδικοποίηση εικόνας.",
+ "The image is too big and/or cannot be resized." => "Η εικόνα είναι πάρα πολύ μεγάλη και/η δεν μπορεί να αλλάξει μέγεθος.",
+ "Cannot create {dir} folder." => "Αδύνατον να δημιουργηθεί ο φάκελος {dir}.",
+ "Cannot rename the folder." => "Αδύνατη η μετονομασία του φακέλου.",
+ "Cannot write to upload folder." => "Αδύνατη η εγγραφή στο φάκελο προορισμού.",
+ "Cannot read .htaccess" => "Αδύνατη η ανάγνωση του .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Εσφαλμένο αρχείο .htaccess. Αδύνατη η τροποποίησή του!",
+ "Cannot read upload folder." => "Μη αναγνώσιμος φάκελος προορισμού.",
+ "Cannot access or create thumbnails folder." => "Αδύνατη η πρόσβαση και ανάγνωση του φακέλου με τις μικρογραφίες εικόνων.",
+ "Cannot access or write to upload folder." => "Αδύνατη η πρόσβαση και τροποποίηση του φακέλου προορισμού.",
+ "Please enter new folder name." => "Παρακαλούμε εισάγετε ένα νέο όνομα φακέλου. ",
+ "Unallowable characters in folder name." => "Μη επιτρεπτοί χαρακτήρες στο όνομα φακέλου.",
+ "Folder name shouldn't begins with '.'" => "Το όνομα του φακέλου δε πρέπει να αρχίζει με '.'",
+ "Please enter new file name." => "Παρακαλούμε εισάγετε ένα νέο όνομα αρχείου.",
+ "Unallowable characters in file name." => "Μη επιτρεπτοί χαρακτήρες στο όνομα αρχείου.",
+ "File name shouldn't begins with '.'" => "Το όνομα του αρχείου δεν πρέπει να αρχίζει με '.'",
+ "Are you sure you want to delete this file?" => "Σίγουρα θέλετε να διαγράψετε αυτό το αρχείο;",
+ "Are you sure you want to delete this folder and all its content?" => "Σίγουρα θέλετε να διαγράψετε αυτό το φάκελο μαζί με όλα τα περιεχόμενα;",
+ "Non-existing directory type." => "Ανύπαρκτος τύπος φακέλου.",
+ "Undefined MIME types." => "Απροσδιόριστοι τύποι MIME.",
+ "Fileinfo PECL extension is missing." => "Η επέκταση πληροφορίας αρχείου PECL δεν υπάρχει.",
+ "Opening fileinfo database failed." => "Η πρόσβαση στις πληροφορίες του αρχείου απέτυχε.",
+ "You can't upload such files." => "Δε μπορείτε να ανεβάσετε τέτοια αρχεία.",
+ "The file '{file}' does not exist." => "Το αρχείο '{file}' δεν υπάρχει.",
+ "Cannot read '{file}'." => "Αρχείο '{file}' μη αναγνώσιμο.",
+ "Cannot copy '{file}'." => "Αδύνατη η αντιγραφή του '{file}'.",
+ "Cannot move '{file}'." => "Αδύνατη η μετακίνηση του '{file}'.",
+ "Cannot delete '{file}'." => "Αδύνατη η διαγραφή του '{file}'.",
+ "Cannot delete the folder." => "Αδύνατη η διαγραφή του φακέλου.",
+ "Click to remove from the Clipboard" => "Πατήστε για διαγραφή από το Πρόχειρο.",
+ "This file is already added to the Clipboard." => "Αυτό το αρχείο βρίσκεται ήδη στο Πρόχειρο.",
+ "The files in the Clipboard are not readable." => "Τα αρχεία στο Πρόχειρο είναι μη αναγνώσιμα.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} αρχεία στο Πρόχειρο είναι μη αναγνώσιμα. Θέλετε να αντιγράψετε τα υπόλοιπα;",
+ "The files in the Clipboard are not movable." => "Τα αρχεία στο Πρόχειρο είναι αδύνατο να μετακινηθούν.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} αρχεία στο Πρόχειρο δεν είναι δυνατό να μετακινηθούν. Θέλετε να μετακινήσετε τα υπόλοιπα;",
+ "The files in the Clipboard are not removable." => "Τα αρχεία στο Πρόχειρο είναι αδύνατο να αφαιρεθούν.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} αρχεία στο Πρόχειρο δεν είναι δυνατό να αφαιρεθούν. Θέλετε να αφαιρέσετε τα υπόλοιπα;",
+ "The selected files are not removable." => "Τα επιλεγμένα αρχεία δε μπορούν να αφαιρεθούν.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} επιλεγμένα αρχεία δεν είναι δυνατό να αφαιρεθούν. Θέλετε να διαγράψετε τα υπόλοιπα;",
+ "Are you sure you want to delete all selected files?" => "Σίγουρα θέλετε να διαγράψετε όλα τα επιλεγμένα αρχεία;",
+ "Failed to delete {count} files/folders." => "Η διαγραφή {count} αρχείων/φακέλων απέτυχε.",
+ "A file or folder with that name already exists." => "Ένα αρχείο ή φάκελος με αυτό το όνομα υπάρχει ήδη.",
+ "Copy files here" => "Αντιγράψτε αρχεία εδώ.",
+ "Move files here" => "Μετακινήστε αρχεία εδώ.",
+ "Delete files" => "Διαγραφή αρχείων",
+ "Clear the Clipboard" => "Καθαρισμός Clipboard",
+ "Are you sure you want to delete all files in the Clipboard?" => "Σίγουρα θέλετε να διαγράψετε όλα τα αρχεία από το Πρόχειρο;",
+ "Copy {count} files" => "Αντιγραφή {count} αρχείων.",
+ "Move {count} files" => "Μετακίνηση {count} αρχείων.",
+ "Add to Clipboard" => "Προσθήκη στο Πρόχειρο",
+ "Inexistant or inaccessible folder." => "Ανύπαρκτος η μη προσβάσιμος φάκελος.",
+ "New folder name:" => "Νέο όνομα φακέλου:",
+ "New file name:" => "Νέο όνομα αρχείου:",
+ "Upload" => "Ανέβασμα",
+ "Refresh" => "Ανανέωση",
+ "Settings" => "Ρυθμίσεις",
+ "Maximize" => "Μεγιστοποίηση",
+ "About" => "Σχετικά",
+ "files" => "αρχεία",
+ "selected files" => "επιλεγμένα αρχεία",
+ "View:" => "Προβολή:",
+ "Show:" => "Εμφάνιση:",
+ "Order by:" => "Ταξινόμηση κατά:",
+ "Thumbnails" => "Μικρογραφίες",
+ "List" => "Λίστα",
+ "Name" => "Όνομα",
+ "Type" => "Τύπος",
+ "Size" => "Μέγεθος",
+ "Date" => "Ημερομηνία",
+ "Descending" => "Φθίνουσα",
+ "Uploading file..." => "Το αρχείο ανεβαίνει...",
+ "Loading image..." => "Η εικόνα φορτώνει...",
+ "Loading folders..." => "Οι φάκελοι φορτώνουν...",
+ "Loading files..." => "Τα αρχεία φορτώνουν...",
+ "New Subfolder..." => "Νέος υποφάκελος...",
+ "Rename..." => "Μετονομασία...",
+ "Delete" => "Διαγραφή",
+ "OK" => "OK",
+ "Cancel" => "Ακύρωση",
+ "Select" => "Επιλογή",
+ "Select Thumbnail" => "Επιλογή μικρογραφίας",
+ "Select Thumbnails" => "Επιλέξτε μικρογραφίες",
+ "View" => "Προβολή",
+ "Download" => "Κατέβασμα",
+ "Download files" => "Κατέβασμα αρχείων",
+ "Clipboard" => "Πρόχειρο",
+ "Checking for new version..." => "Ελεγχος για νέα έκδοση...",
+ "Unable to connect!" => "Αδύνατη η σύνδεση!",
+ "Download version {version} now!" => "Κατεβάστε την έκδοση {version} τώρα!",
+ "KCFinder is up to date!" => "Το KCFinder είναι ενημερωμένο με τη πιο πρόσφατη έκδοση!",
+ "Licenses:" => "Άδειες:",
+ "Attention" => "Προσοχή",
+ "Question" => "Ερώτηση",
+ "Yes" => "Ναι",
+ "No" => "Όχι",
+ "You cannot rename the extension of files!" => "Δεν έχετε δικαίωμα να αλλάζετε την κατάληξη των αρχείων!",
+ "Uploading file {number} of {count}... {progress}" => "Ανέβασμα αρχείου {number} από {count}... {progress}",
+ "Failed to upload {filename}!" => "Αποτυχία στο ανέβασμα του {filename}!",
+ "Close" => "Κλείσιμο",
+ "Previous" => "Προηγούμενη",
+ "Next" => "Επόμενη",
+ "Confirmation" => "Επιβεβαίωση",
+ "Warning" => "Προειδοποίηση",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/en.php b/kcfinder/lang/en.php
new file mode 100644
index 00000000..d5208004
--- /dev/null
+++ b/kcfinder/lang/en.php
@@ -0,0 +1,25 @@
+
+ * @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
+ */
+
+$lang = array(
+ '_locale' => "en_US.UTF-8",
+ '_charset' => "utf-8",
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %B %e, %Y %I:%M %p",
+ '_dateTimeMid' => "%a %b %e %Y %I:%M %p",
+ '_dateTimeSmall' => "%m/%d/%Y %I:%M %p",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/es.php b/kcfinder/lang/es.php
new file mode 100644
index 00000000..edb98f0a
--- /dev/null
+++ b/kcfinder/lang/es.php
@@ -0,0 +1,127 @@
+ "es_ES.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "No tiene permiso para subir archivos.",
+ "You don't have permissions to browse server." => "No tiene permiso para visualizar archivos.",
+ "Cannot move uploaded file to target folder." => "No puede mover archivos al directorio de destino.",
+ "Unknown error." => "Error desconocido.",
+ "The uploaded file exceeds {size} bytes." => "El archivo excede el tamaño permitido ({size} bytes).",
+ "The uploaded file was only partially uploaded." => "El archivo solo fué parcialmente cargado.",
+ "No file was uploaded." => "El archivo no fué cargado.",
+ "Missing a temporary folder." => "No se puede encontrar el directorio temporal.",
+ "Failed to write file." => "No se pudo crear el archivo.",
+ "Denied file extension." => "Extensión de archivo denegada.",
+ "Unknown image format/encoding." => "Formato / codificación de imagen desconocido.",
+ "The image is too big and/or cannot be resized." => "La imagen es muy grande o no se puede redimensionar.",
+ "Cannot create {dir} folder." => "No se puede crear la carpeta {dir}.",
+ "Cannot rename the folder." => "No se puede renombrar la carpeta.",
+ "Cannot write to upload folder." => "No se puede escribir en directorio de carga de archivos.",
+ "Cannot read .htaccess" => "No se puede leer el archivo .htaccess.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Archivo .htaccess incorrecto. ¡No puede sobreescribirlo!",
+ "Cannot read upload folder." => "No se puede leer la carpeta de carga de archivos.",
+ "Cannot access or create thumbnails folder." => "No se puede leer o crear carpeta de miniaturas.",
+ "Cannot access or write to upload folder." => "No se puede leer o escribir en la carpeta de carga de archivos.",
+ "Please enter new folder name." => "Por favor introduzca el nombre de la nueva carpeta.",
+ "Unallowable characters in folder name." => "Caracteres inválidos en el nombre de carpeta.",
+ "Folder name shouldn't begins with '.'" => "El nombre de carpeta no puede comenzar con punto '.'",
+ "Please enter new file name." => "Por favor introduzca el nuevo nombre del archivo.",
+ "Unallowable characters in file name." => "Carácteres inválidos en el nombre de archivo.",
+ "File name shouldn't begins with '.'" => "El nombre de archivo no puede comenzar con punto '.'",
+ "Are you sure you want to delete this file?" => "Esta seguro de que desea borrar este archivo?",
+ "Are you sure you want to delete this folder and all its content?" => "Esta seguro de que desea borrar esta carpeta y todo su contenido?",
+ "Non-existing directory type." => "El tipo de directorio no existe.",
+ "Undefined MIME types." => "Tipo MIME no definido.",
+ "Fileinfo PECL extension is missing." => "Archivo PECL con estructura errónea.",
+ "Opening fileinfo database failed." => "Error abriendo el archivo de información de la base de datos.",
+ "You can't upload such files." => "No puede cargar tantos archivos.",
+ "The file '{file}' does not exist." => "El archivo '{file}' no existe.",
+ "Cannot read '{file}'." => "No se puede leer '{file}'.",
+ "Cannot copy '{file}'." => "No se puede copiar '{file}'.",
+ "Cannot move '{file}'." => "No se puede mover '{file}'.",
+ "Cannot delete '{file}'." => "No se puede borrar '{file}'.",
+ "Cannot delete the folder." => "No se puede borrrar la carpeta.",
+ "Click to remove from the Clipboard" => "Haga Click para borrar del portapapeles",
+ "This file is already added to the Clipboard." => "Este archivo ya fué agregado al portapapeles.",
+ "The files in the Clipboard are not readable." => "Los archivos en el portapapeles no son legibles.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} archivos en el portapapeles no son legibles. Desea copiar el resto?",
+ "The files in the Clipboard are not movable." => "Los archivos en el portapapeles no se pueden mover.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} archivos en el portapapeles no se pueden mover. Desea mover el resto?",
+ "The files in the Clipboard are not removable." => "Los archivos en el portapapeles no se pueden remover.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} archivos en el portapapeles no se pueden remover. Desea borrar el resto?",
+ "The selected files are not removable." => "Los archivos seleccionados no son removibles.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} archivos seleccionados no son removibles. Desea borrar el resto?",
+ "Are you sure you want to delete all selected files?" => "Esta seguro de que desea borrar todos los archivos seleccionados?",
+ "Failed to delete {count} files/folders." => "Falló al borrar {count} archivos/carpetas.",
+ "A file or folder with that name already exists." => "Existe una carpeta o archivo con el mismo nombre.",
+ "Copy files here" => "Copiar archivos aquí",
+ "Move files here" => "Mover archivos aquí",
+ "Delete files" => "Borrar archivos",
+ "Clear the Clipboard" => "Limpiar el portapapeles",
+ "Are you sure you want to delete all files in the Clipboard?" => "Esta seguro de que desea borrar todos los archivos del portapapeles?",
+ "Copy {count} files" => "Copiar {count} archivos",
+ "Move {count} files" => "Mover {count} archivos ",
+ "Add to Clipboard" => "Agregar al portapapeles",
+ "Inexistant or inaccessible folder." => "Carpeta inexistente o inaccesible.",
+ "New folder name:" => "Nuevo nombre de carpeta:",
+ "New file name:" => "Nuevo nombre de archivo:",
+ "Upload" => "Cargar",
+ "Refresh" => "Refrescar",
+ "Settings" => "Preferencias",
+ "Maximize" => "Maximizar",
+ "About" => "Acerca de",
+ "files" => "Archivos",
+ "selected files" => "Archivos seleccionados",
+ "View:" => "Ver:",
+ "Show:" => "Mostrar:",
+ "Order by:" => "Ordenar por:",
+ "Thumbnails" => "Miniaturas",
+ "List" => "Lista",
+ "Name" => "Nombre",
+ "Type" => "Tipo",
+ "Size" => "Tamaño",
+ "Date" => "Fecha",
+ "Descending" => "Decendente",
+ "Uploading file..." => "Cargando archivo...",
+ "Loading image..." => "Cargando imagen...",
+ "Loading folders..." => "Cargando carpetas...",
+ "Loading files..." => "Cargando archivos...",
+ "New Subfolder..." => "Nuevo subdirectorio...",
+ "Rename..." => "Renombrar...",
+ "Delete" => "Eliminar",
+ "OK" => "OK",
+ "Cancel" => "Cancelar",
+ "Select" => "Seleccionar",
+ "Select Thumbnail" => "Seleccionar miniatura",
+ "Select Thumbnails" => "Seleccionar miniaturas",
+ "View" => "Ver",
+ "Download" => "Descargar",
+ "Download files" => "Descargar archivos",
+ "Clipboard" => "Portapapeles",
+ "Checking for new version..." => "Verificando nuevas versiones...",
+ "Unable to connect!" => "¡No se pudo realizar la conexión!",
+ "Download version {version} now!" => "¡Descarga la versión {version} ahora!",
+ "KCFinder is up to date!" => "¡KCFinder está actualizado!",
+ "Licenses:" => "Licencias:",
+ "Attention" => "Atención",
+ "Question" => "Pregunta",
+ "Yes" => "Si",
+ "No" => "No",
+ "You cannot rename the extension of files!" => "¡Usted no puede renombrar la extensión de los archivos!",
+ "Uploading file {number} of {count}... {progress}" => "Cargando archivo {number} de {count}... {progress}",
+ "Failed to upload {filename}!" => "¡No se pudo cargar el archivo {filename}!",
+);
+
+?>
diff --git a/kcfinder/lang/et.php b/kcfinder/lang/et.php
new file mode 100644
index 00000000..3553b16b
--- /dev/null
+++ b/kcfinder/lang/et.php
@@ -0,0 +1,127 @@
+ "et_EE.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%e. %B %Y %H:%M",
+ '_dateTimeMid' => "%e. %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Sul pole failide üleslaadimiseks vajalikke õiguseid.",
+ "You don't have permissions to browse server." => "Sul ei ole serveri sirvimiseks vajalikke õiguseid.",
+ "Cannot move uploaded file to target folder." => "Üleslaetud faili liigutamine ebaõnnestus.",
+ "Unknown error." => "Tundmatu viga.",
+ "The uploaded file exceeds {size} bytes." => "Üleslaetud fail on suurem kui lubatud {size} baiti",
+ "The uploaded file was only partially uploaded." => "Fail laeti üles ainult osaliselt.",
+ "No file was uploaded." => "Faili ei õnnestunud üles laadida.",
+ "Missing a temporary folder." => "Failide ajutine kataloog on puudu.",
+ "Failed to write file." => "Faili loomine ebaõnnestus.",
+ "Denied file extension." => "Faili laiend ei ole lubatud.",
+ "Unknown image format/encoding." => "Tundmatu pildi formaat/kodeering.",
+ "The image is too big and/or cannot be resized." => "Pilt on liiga suur ja/või selle suurust ei saa muuta.",
+ "Cannot create {dir} folder." => "Kataloogi {dir} loomine ebaõnnestus.",
+ "Cannot rename the folder." => "Kataloogi ei saa ümber nimetada.",
+ "Cannot write to upload folder." => "Üleslaadimise kataloogi ei saa kirjutada.",
+ "Cannot read .htaccess" => ".htaccess faili ei saa lugeda.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Vigane .htacess fail. Ümberkirjutamine ebaõnnestus.",
+ "Cannot read upload folder." => "Üleslaadimise kataloogi ei saa lugeda.",
+ "Cannot access or create thumbnails folder." => "Pisipiltide kataloogi ei saa lugeda või seda luua.",
+ "Cannot access or write to upload folder." => "Üleslaadimise kataloogi ei saa lugeda või seda luua.",
+ "Please enter new folder name." => "Sisesta uus kataloogi nimi.",
+ "Unallowable characters in folder name." => "Keelatud tähemärk kataloogi nimes.",
+ "Folder name shouldn't begins with '.'" => "Kataloogi nimi ei tohi alata punktiga.",
+ "Please enter new file name." => "Sisesta uus faili nimi.",
+ "Unallowable characters in file name." => "Keelatud tähemärgid faili nimes.",
+ "File name shouldn't begins with '.'" => "Failinimi ei tohi alata punktiga.",
+ "Are you sure you want to delete this file?" => "Oled sa kindel, et soovid selle faili kustutada?",
+ "Are you sure you want to delete this folder and all its content?" => "Oled sa kindel, et soovid selle kataloogi koos sisuga kustutada?",
+ "Non-existing directory type." => "Olematu kataloogi tüüp.",
+ "Undefined MIME types." => "Määramata MIME tüüp.",
+ "Fileinfo PECL extension is missing." => "Fileinfo PECL laiendus on puudu.",
+ "Opening fileinfo database failed." => "Failiinfo andmebaasi avamine ebaõnnestus.",
+ "You can't upload such files." => "Selliseid faile ei saa üles laadida.",
+ "The file '{file}' does not exist." => "Faili '{file}' ei ole olemas.",
+ "Cannot read '{file}'." => "Faili '{file}' ei õnnestunud lugeda.",
+ "Cannot copy '{file}'." => "Faili '{file}' ei õnnestunud kopeerida.",
+ "Cannot move '{file}'." => "Faili '{file}' ei õnnestunud liigutada.",
+ "Cannot delete '{file}'." => "Faili '{file}' ei õnnestunud kustutada.",
+ "Cannot delete the folder." => "Kataloogi ei saa kustutada.",
+ "Click to remove from the Clipboard" => "Kliki, et eemaldada lõikelaualt.",
+ "This file is already added to the Clipboard." => "Fail on juba lõikelauale lisatud.",
+ "The files in the Clipboard are not readable." => "Lõikelaual olevad failid ei ole loetavad.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} faili lõikelaual ei ole loetavad. Kas sa soovid ülejäänud kopeerida?",
+ "The files in the Clipboard are not movable." => "Lõikelaul olevad failid ei ole liigutatavad.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} faili lõikelaual ei ole liigutatavad. Kas sa soovid ülejäänud liigutada?",
+ "The files in the Clipboard are not removable." => "Lõikelaul olevad failid ei ole kustutatavad.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} faili lõikelaual ei ole kustutatavad. Kas sa soovid ülejäänud kustutada?",
+ "The selected files are not removable." => "Valitud faile ei saa kustutada.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} valitud faili ei saa kustutada. Kas sa soovid ülejäänud kustutada?",
+ "Are you sure you want to delete all selected files?" => "Oled sa kindel, et soovid kõik valitud failid kustutada?",
+ "Failed to delete {count} files/folders." => "{count} faili/kataloogi kustutamine ebaõnnestus.",
+ "A file or folder with that name already exists." => "Selle nimega fail/kataloog on juba olemas.",
+ "Copy files here" => "Kopeeri failid siia",
+ "Move files here" => "Liiguta failid siia",
+ "Delete files" => "Kustuta failid",
+ "Clear the Clipboard" => "Tühjenda lõikelaud",
+ "Are you sure you want to delete all files in the Clipboard?" => "Oled sa kindel, et soovid kustutada kõik lõikelaual olevad failid?",
+ "Copy {count} files" => "Kopeeri {count} faili",
+ "Move {count} files" => "Liiguta {count} faili",
+ "Add to Clipboard" => "Lisa lõikelauale",
+ "Inexistant or inaccessible folder." => "Olematu või ligipääsmatu kataloog.",
+ "New folder name:" => "Uus kataloogi nimi:",
+ "New file name:" => "Uus faili nimi:",
+ "Upload" => "Lae üles",
+ "Refresh" => "Värskenda",
+ "Settings" => "Seaded",
+ "Maximize" => "Täisekraan",
+ "About" => "Info",
+ "files" => "failid",
+ "selected files" => "valitud failid",
+ "View:" => "Vaade:",
+ "Show:" => "Näita:",
+ "Order by:" => "Sorteeri:",
+ "Thumbnails" => "Pisipildid",
+ "List" => "Nimekiri",
+ "Name" => "Nimi",
+ "Type" => "Tüüp",
+ "Size" => "Suurus",
+ "Date" => "Kuupäev",
+ "Descending" => "Kahanev",
+ "Uploading file..." => "Laen faili...",
+ "Loading image..." => "Laen pilti...",
+ "Loading folders..." => "Laen katalooge...",
+ "Loading files..." => "Laen faile...",
+ "New Subfolder..." => "Uus alamkataloog...",
+ "Rename..." => "Nimeta ümber...",
+ "Delete" => "Kustuta",
+ "OK" => "OK",
+ "Cancel" => "Loobu",
+ "Select" => "Vali",
+ "Select Thumbnail" => "Vali pisipilt",
+ "Select Thumbnails" => "Vali pisipildid",
+ "View" => "Vaata",
+ "Download" => "Lae alla",
+ "Download files" => "Lae failid alla",
+ "Clipboard" => "Lõikelaud",
+ "Checking for new version..." => "Kontrollin uut versiooni...",
+ "Unable to connect!" => "Ühendus ebaõnnestus!",
+ "Download version {version} now!" => "Lae versioon {version} alla!",
+ "KCFinder is up to date!" => "Uuendusi ei ole!",
+ "Licenses:" => "Litsentsid:",
+ "Attention" => "Tähelepanu",
+ "Question" => "Küsimus",
+ "Yes" => "Jah",
+ "No" => "Ei",
+ "You cannot rename the extension of files!" => "Failide laiendit ei saa muuta!",
+ "Uploading file {number} of {count}... {progress}" => "Laen üles faili {number} {count}-st... {progress}",
+ "Failed to upload {filename}!" => "{filename} üleslaadimine ebaõnnestus!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/fa.php b/kcfinder/lang/fa.php
new file mode 100644
index 00000000..3f63f777
--- /dev/null
+++ b/kcfinder/lang/fa.php
@@ -0,0 +1,267 @@
+
+ * @copyright 2010 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
+ */
+
+$lang = array(
+ '_locale' => "fa_IR.UTF-8",
+ '_charset' => "utf-8",
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %B %e, %Y %H:%M",
+ '_dateTimeMid' => "%a %b %e %Y %H:%M",
+ '_dateTimeSmall' => "%Y/%m/%d %H:%M",
+
+ "You don't have permissions to upload files." =>
+ ".شما فاقد مجوز برای ارسال فایل ها هستید",
+
+ "You don't have permissions to browse server." =>
+ ".شما فاقد مجوز برای جستجو در سرور هستید",
+
+ "Cannot move uploaded file to target folder." =>
+ ".برنامه نمی تواند فایل بارگذاری شده را انتقال دهد به پوشه مورد نظر",
+
+ "Unknown error." =>
+ ".خطای نامشخص",
+
+ "The uploaded file exceeds {size} bytes." =>
+ ".بایت است {size} حجم فایل بارگذاری شده بیشتر از",
+
+ "The uploaded file was only partially uploaded." =>
+ ".فایل ناقص بارگذاری شد",
+
+ "No file was uploaded." =>
+ ".فایل ارسال نشد",
+
+ "Missing a temporary folder." =>
+ ".پوشه تمپ پیدا نشد",
+
+ "Failed to write file." =>
+ ".خطا در نوشتن فایل",
+
+ "Denied file extension." =>
+ ".پسوند فایل غیر مجاز است",
+
+ "Unknown image format/encoding." =>
+ ".عکس معتبر نیست format/encoding",
+
+ "The image is too big and/or cannot be resized." =>
+ ".عکس انتخابی یا بزرگ است یا تغییر اندازه داده نمی شود",
+
+ "Cannot create {dir} folder." =>
+ ".{dir}مشکل در ساخت پوشه",
+
+ "Cannot write to upload folder." =>
+ ".مشکل در نوشتن اطلاعات در پوشه بارگذاری",
+
+ "Cannot read .htaccess" =>
+ ".htaccess خطا در خواندن فایل",
+
+ "Incorrect .htaccess file. Cannot rewrite it!" =>
+ ".غیرقابل بازنویسی است .htaccess فایل",
+
+ "Cannot read upload folder." =>
+ ".مشکل در خواندن پوشه بارگذاری",
+
+ "Cannot access or create thumbnails folder." =>
+ ".مشکل در دسترسی یا ساخت پوشه تام",
+
+ "Cannot access or write to upload folder." =>
+ ".مشکل در دسترسی برای نوشتن اطلاعات در پوشه بارگذاری",
+
+ "Please enter new folder name." =>
+ ".لطفا نام پوشه جدید را وارد کنید",
+
+ "Unallowable characters in folder name." =>
+ ".نام پوشه دارای حروف غیر مجاز است",
+
+ "Folder name shouldn't begins with '.'" =>
+ ".نام پوشه نباید با '.' شروع شود",
+
+ "Please enter new file name." =>
+ ".لطفا نام فایل جدید را وارد کنید",
+
+ "Unallowable characters in file name." =>
+ ".نام فایل دارای حروف غیر مجاز است",
+
+ "File name shouldn't begins with '.'" =>
+ ".نام فایل نباید با '.' شروع شود",
+
+ "Are you sure you want to delete this file?" =>
+ "آیا از حذف این فایل اطمینان دارید؟",
+
+ "Are you sure you want to delete this folder and all its content?" =>
+ "آیا از حذف این پوشه و تمام محتویات داخل آن اطمینان دارید؟",
+
+ "Inexistant or inaccessible folder." =>
+ "Tipo di cartella non esistente.",
+
+ "Undefined MIME types." =>
+ ".تعریف نشده اند MIME پسوند های ",
+
+ "Fileinfo PECL extension is missing." =>
+ "Manca estensione PECL del file.",
+
+ "Opening fileinfo database failed." =>
+ ".خطا در بازکردن بانک اطلاعاتی مشخصات فایل",
+
+ "You can't upload such files." =>
+ ".شما امکان بارگذاری این فایل ها را ندارید",
+
+ "The file '{file}' does not exist." =>
+ ".موجود نیست '{file}' فایل",
+
+ "Cannot read '{file}'." =>
+ ".'{file}' مشکل در خواندن",
+
+ "Cannot copy '{file}'." =>
+ ".'{file}' نمی توانید کپی کنید",
+
+ "Cannot move '{file}'." =>
+ ".'{file}' نمی توانید انتقال دهید",
+
+ "Cannot delete '{file}'." =>
+ ".'{file}'نمی توانید حذف کنید",
+
+ "Click to remove from the Clipboard" =>
+ ".برای حذف از کلیپ برد کلیک کنید",
+
+ "This file is already added to the Clipboard." =>
+ ".این فایل قبلا در حافظه کلیپ برد افزوده شده است",
+
+ "Copy files here" =>
+ "کپی فایل ها به اینجا",
+
+ "Move files here" =>
+ "انتقال فایل ها به اینجا",
+
+ "Delete files" =>
+ "حذف فایل ها",
+
+ "Clear the Clipboard" =>
+ "پاک کردن حافظه کلیپ برد",
+
+ "Are you sure you want to delete all files in the Clipboard?" =>
+ "آیا از حذف فایل های موجود در کلیپ برد اطمینان دارید؟",
+
+ "Copy {count} files" =>
+ "...تعداد {count} فایل آماده کپی به",
+
+ "Move {count} files" =>
+ "...تعداد {count} فایل آماده انتقال به",
+
+ "Add to Clipboard" =>
+ "افزودن در کلیپ برد",
+
+ "New folder name:" => "نام پوشه جدید:",
+ "New file name:" => "نام فایل جدید:",
+
+ "Upload" => "ارسال فايل",
+ "Refresh" => "بارگذاری مجدد",
+ "Settings" => "تنظيمات",
+ "Maximize" => "تمام صفحه",
+ "About" => "درباره",
+ "files" => "فايل ها",
+ "View:" => ": نمایش",
+ "Show:" => ": نمايش",
+ "Order by:" => ": مرتب کردن بر مبناي",
+ "Thumbnails" => "نمايش کوچک عکسها",
+ "List" => "ليست",
+ "Name" => "نام",
+ "Size" => "حجم",
+ "Date" => "تاريخ",
+ "Type" => "پسوند",
+ "Descending" => "نزولي",
+ "Uploading file..." => "... درحال ارسال فایل",
+ "Loading image..." => "... درحال بارگذاری عکس",
+ "Loading folders..." => "... درحال بارگذاری پوشه ها",
+ "Loading files..." => "... درحال بارگذاری فایل ها",
+ "New Subfolder..." => "...ساخت زیرپوشه جدید",
+ "Rename..." => "... تغییر نام",
+ "Delete" => "حذف",
+ "OK" => "ادامه",
+ "Cancel" => "انصراف",
+ "Select" => "انتخاب",
+ "Select Thumbnail" => "انتخاب عکس با اندازه کوچک",
+ "View" => "نمایش",
+ "Download" => "دریافت فایل",
+ "Clipboard" => "حافضه کلیپ برد",
+
+ // VERSION 2 NEW LABELS
+
+ "Cannot rename the folder." =>
+ ".نام وارد شده تکراری است. پوشه ای با این نام وجود دارد. لطفا نام جدیدی انتخاب کنید",
+
+ "Non-existing directory type." =>
+ ".نوع فهرست وجود ندارد",
+
+ "Cannot delete the folder." =>
+ ".نمی توانید این پوشه را حذف کنید",
+
+ "The files in the Clipboard are not readable." =>
+ ".فایل های موجود در کلیپ برد قابل خواندن نیستند",
+
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" =>
+ "تعداد {count} فایل موجود در کلیپ برد قابل خواندن نیستند. آیا مایلید بقیه فایل ها کپی شوند؟",
+
+ "The files in the Clipboard are not movable." =>
+ ".فایل های موجود در کلیپ برد غیر قابل انتقال هستند. لطفا دسترسی فایل ها را چک کنید",
+
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" =>
+ "تعداد {count} فایل از فایل های موجود در کلیپ برد غیر قابل انتقال هستند. آیا مایلید بقیه فایل ها منتقل شوند؟",
+
+ "The files in the Clipboard are not removable." =>
+ ".فایل های موجود در کلیپ برد قابل پاک شدن نیستند. دسترسی فایل ها را چک کنید",
+
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" =>
+ "تعداد {count} فایل از فایل های موجود در کلیپ برد غیر قابل حذف هستند. آیا مایلید بقیه فایل ها حذف شوند؟",
+
+ "The selected files are not removable." =>
+ ".فایل های انتخاب شده قابل برداشتن نیست",
+
+ "{count} selected files are not removable. Do you want to delete the rest?" =>
+ "تعداد {count} فایل از فایل های انتخابی غیر قابل حذف هستند.آیا مایلید بقیه فایل ها حذف شوند؟",
+
+ "Are you sure you want to delete all selected files?" =>
+ "آیا از حذف تمام فایل های انتخابی اطمینان دارید؟",
+
+ "Failed to delete {count} files/folders." =>
+ ".فایل/پوشه {count} خطا در پاک کردن",
+
+ "A file or folder with that name already exists." =>
+ ".یک پوشه یا فایل با این نام وجود دارد.لطفا نام دیگری انتخاب کنید",
+
+ "selected files" => "فایل های انتخاب شده",
+ "Select Thumbnails" => "انتخاب عکس های کوچک",
+ "Download files" => "دریافت فایل ها",
+
+ // SINCE 2.4
+
+ "Checking for new version..." => "...وجود نسخه جدید را بررسی کن",
+ "Unable to connect!" => "!مشکل در برقراری ارتباط",
+ "Download version {version} now!" => "!را دانلود کن {version} همسین حالا نسخه ",
+ "KCFinder is up to date!" => "!بروز است KCFinder",
+ "Licenses:" => "مجوز",
+ "Attention" => "توجه",
+ "Question" => "پرسش",
+ "Yes" => "بله",
+ "No" => "خیر",
+
+ // SINCE 2.41
+
+ "You cannot rename the extension of files!" => "!شما نمی توانید پسوند فایلها را تغییر دهید",
+ "Uploading file {number} of {count}... {progress}" => "{progress} ...ارسال شد {count} فایل از {number}",
+ "Failed to upload {filename}!" => "! {filename} خطا در ارسال"
+
+);
+
+?>
diff --git a/kcfinder/lang/fi.php b/kcfinder/lang/fi.php
new file mode 100644
index 00000000..ab17048a
--- /dev/null
+++ b/kcfinder/lang/fi.php
@@ -0,0 +1,127 @@
+ "fi_FI.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Sinulla ei ole oikeuksia ladata tiedostoja.",
+ "You don't have permissions to browse server." => "Sinulla ei ole riittäviä oikeuksia tiedostoselaimeen.",
+ "Cannot move uploaded file to target folder." => "Ladattua tiedostoa ei voi siirtää kohdekansioon. ",
+ "Unknown error." => "Tuntematon virhe.",
+ "The uploaded file exceeds {size} bytes." => "Tiedoston koko ylittää {size} tavua.",
+ "The uploaded file was only partially uploaded." => "Valitsemasi tiedosto latautui vain osittain.",
+ "No file was uploaded." => "Yhtään tiedostoja ei ladattu.",
+ "Missing a temporary folder." => "Puuttuu väliaikainen kansio.",
+ "Failed to write file." => "Tiedostoon kirjoitus epäonnistui.",
+ "Denied file extension." => "Kielletty tiedostopääte.",
+ "Unknown image format/encoding." => "Tuntematon kuvatiedosto/koodaus.",
+ "The image is too big and/or cannot be resized." => "Kuva on liian iso, koon muuttaminen ei onnistu.",
+ "Cannot create {dir} folder." => "Kansiota {dir} ei voi luoda.",
+ "Cannot rename the folder." => "Kansiota ei voi nimetä uudelleen.",
+ "Cannot write to upload folder." => "Latauskansioon ei voi kirjoittaa.",
+ "Cannot read .htaccess" => ".htaccess tiedostoa ei voi lukea.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Virheellinen .htaccess tiedosto. Tiedostoon ei voi kirjoittaa.",
+ "Cannot read upload folder." => "Latauskansiota ei voi lukea.",
+ "Cannot access or create thumbnails folder." => "Esikatselukuvien kansiota ei voi lukea tai kirjoittaa.",
+ "Cannot access or write to upload folder." => "Latauskansiota ei voi lukea tai kirjoittaa.",
+ "Please enter new folder name." => "Kirjoita uuden kansion nimi.",
+ "Unallowable characters in folder name." => "Kiellettyjä merkkejä kansion nimessä.",
+ "Folder name shouldn't begins with '.'" => "Kansion nimi ei voi alkaa '.'",
+ "Please enter new file name." => "Kirjoita uusi tiedostonimi.",
+ "Unallowable characters in file name." => "Kiellettyjä merkkejä tiedoston nimessä.",
+ "File name shouldn't begins with '.'" => "Tiedoston nimi ei voi alkaa '.'",
+ "Are you sure you want to delete this file?" => "Haluatko varmasti poistaa tiedoston?",
+ "Are you sure you want to delete this folder and all its content?" => "Haluatko varmasti poistaa tiedoston sekä kaiken sen sisällön?",
+ "Non-existing directory type." => "Hakemisto tyyppi ei ole olemassa.",
+ "Undefined MIME types." => "Määrittämättömät MIME tyypit.",
+ "Fileinfo PECL extension is missing." => "Fileinfo PECL pääte puuttuu.",
+ "Opening fileinfo database failed." => "Opening fileinfo database failed.",
+ "You can't upload such files." => "Tiedostoja ei voi ladata.",
+ "The file '{file}' does not exist." => "Tiedostoa '{file}' ei ole luotu.",
+ "Cannot read '{file}'." => "Tiedostoa '{file}' ei voi lukea.",
+ "Cannot copy '{file}'." => "Tiedostoa '{file}' ei voi kopioda.",
+ "Cannot move '{file}'." => "Tiedostoa '{file}' ei voi siirtää.",
+ "Cannot delete '{file}'." => "Tiedostoa '{file}' ei voi poistaa.",
+ "Cannot delete the folder." => "Kansiota ei voi poistaa.",
+ "Click to remove from the Clipboard" => "Klikkaa poistaaksesi Leikepöydältä.",
+ "This file is already added to the Clipboard." => "Tiedosto on jo lisätty Leikepöydälle.",
+ "The files in the Clipboard are not readable." => "Leikepöydän tiedostot eivät ole luettavissa.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi lukea. Haluatko kopioida loput?",
+ "The files in the Clipboard are not movable." => "Leikepöydän tiedostoja ei voi siirtää.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi siirtää. Haluatko siirtää loput?",
+ "The files in the Clipboard are not removable." => "Leikepöydän tiedostoja ei voi poistaa.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi poistaa. Haluatko siirtää loput?",
+ "The selected files are not removable." => "Valittuja tiedostoja ei voi poistaa.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi poistaa. Haluatko poistaa loput?",
+ "Are you sure you want to delete all selected files?" => "Haluatko varmasti poistaa kaikki valitut tiedostot?",
+ "Failed to delete {count} files/folders." => "{count} tiedoston/kansion poistaminen epäonnistui.",
+ "A file or folder with that name already exists." => "Tiedosto tai kansio nimellä on jo luoto.",
+ "Copy files here" => "Kopio tähän",
+ "Move files here" => "Siirrä tähän",
+ "Delete files" => "Poista tiedostot",
+ "Clear the Clipboard" => "Pyyhi leikepöytä.",
+ "Are you sure you want to delete all files in the Clipboard?" => "Haluatko varmasti poistaa kaikki tiedostot Leikepöydältä?",
+ "Copy {count} files" => "Kopio {count} tiedostoa",
+ "Move {count} files" => "Siirrä {count} tiedostoa",
+ "Add to Clipboard" => "Lisää Leikepöydälle",
+ "Inexistant or inaccessible folder." => "Kansiota ei ole olemassa tai sitä ei voi avata.",
+ "New folder name:" => "Uusi kansion nimi:",
+ "New file name:" => "Uusi tiedostonimi:",
+ "Upload" => "Lataa",
+ "Refresh" => "Päivitä",
+ "Settings" => "Asetukset",
+ "Maximize" => "Koko ruutu",
+ "About" => "Lisätietoja",
+ "files" => "tiedostot",
+ "selected files" => "valitut tiedostot",
+ "View:" => "Näkymä:",
+ "Show:" => "Näytä:",
+ "Order by:" => "Järjestä:",
+ "Thumbnails" => "Esikatselukuvat",
+ "List" => "Lista",
+ "Name" => "Nimi",
+ "Type" => "Tyyppi",
+ "Size" => "Koko",
+ "Date" => "Päiväys",
+ "Descending" => "Laskeva",
+ "Uploading file..." => "Siirretään tiedostoa...",
+ "Loading image..." => "Ladataan tiedostoa...",
+ "Loading folders..." => "Ladataan kansioita...",
+ "Loading files..." => "Ladataan tiedostoja...",
+ "New Subfolder..." => "Uusi alikansio...",
+ "Rename..." => "Nimeä uudelleen...",
+ "Delete" => "Poista",
+ "OK" => "OK",
+ "Cancel" => "Peru",
+ "Select" => "Valitse",
+ "Select Thumbnail" => "Valitse esikatselukuva",
+ "Select Thumbnails" => "Valitse esikatselukuvat",
+ "View" => "Näytä",
+ "Download" => "Lataa",
+ "Download files" => "Lataa tiedostot",
+ "Clipboard" => "Leikepöytä",
+ "Checking for new version..." => "Tarkastetaan uusin versio...",
+ "Unable to connect!" => "Yhteys epäonnistui!",
+ "Download version {version} now!" => "Lataa versio {version} nyt!",
+ "KCFinder is up to date!" => "KCFinder uusin versio on käytössä!",
+ "Licenses:" => "Lisenssit:",
+ "Attention" => "Huomio",
+ "Question" => "Kysymys",
+ "Yes" => "Kyllä",
+ "No" => "Ei",
+ "You cannot rename the extension of files!" => "Et voi nimetä uudelleen tiedostopäätettä!",
+ "Uploading file {number} of {count}... {progress}" => "Siirretään tiedostoa {number}/{count} ... {progress}",
+ "Failed to upload {filename}!" => "Siirto epäonnistui {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/fr.php b/kcfinder/lang/fr.php
new file mode 100644
index 00000000..b55500e6
--- /dev/null
+++ b/kcfinder/lang/fr.php
@@ -0,0 +1,133 @@
+ "fr_FR.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A %e %B %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d/%m/%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Vous n'avez pas les droits nécessaires pour télécharger des fichiers.",
+ "You don't have permissions to browse server." => "Vous n'avez pas les droits nécessaires pour parcourir le serveur.",
+ "Cannot move uploaded file to target folder." => "Impossible de déplacer le fichier téléchargé vers le dossier de destination.",
+ "Unknown error." => "Erreur inconnue.",
+ "The uploaded file exceeds {size} bytes." => "Le fichier envoyé dépasse la taille maximale de {size} octects.",
+ "The uploaded file was only partially uploaded." => "Le fichier n'a été que partiellement téléchargé.",
+ "No file was uploaded." => "Aucun fichier n'a été téléchargé.",
+ "Missing a temporary folder." => "Dossier temporaire absent.",
+ "Failed to write file." => "Impossible de créer le fichier.",
+ "Denied file extension." => "Extension non autorisée.",
+ "Unknown image format/encoding." => "Format/encodage d'image inconnu.",
+ "The image is too big and/or cannot be resized." => "L'image est trop grande et/ou ne peut être redimensionnée.",
+ "Cannot create {dir} folder." => "Impossible de créer le dossier {dir}.",
+ "Cannot rename the folder." => "Impossible de renommer le dossier.",
+ "Cannot write to upload folder." => "Impossible d'écrire dans le dossier de destination.",
+ "Cannot read .htaccess" => "Impossible de lire le fichier .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Fichier .htaccess incorrect. Réécriture du fichier impossible!",
+ "Cannot read upload folder." => "Impossible de lire le dossier de destination.",
+ "Cannot access or create thumbnails folder." => "Impossible d'accéder ou de créer le dossier des miniatures.",
+ "Cannot access or write to upload folder." => "Impossible d'accéder ou d'écrire dans le dossier de destination.",
+ "Please enter new folder name." => "Merci d'entrer le nouveau nom de dossier.",
+ "Unallowable characters in folder name." => "Caractères non autorisés dans le nom du dossier.",
+ "Folder name shouldn't begins with '.'" => "Le nom du dossier ne peut pas commencer par '.'",
+ "Please enter new file name." => "Merci d'entrer le nouveau nom de fichier",
+ "Unallowable characters in file name." => "Caractères non autorisés dans le nom du fichier.",
+ "File name shouldn't begins with '.'" => "Le nom du fichier ne peut pas commencer par '.'",
+ "Are you sure you want to delete this file?" => "Êtes vous sûr du vouloir supprimer ce fichier?",
+ "Are you sure you want to delete this folder and all its content?" => "Êtes vous sûr du vouloir supprimer ce dossier et tous les fichiers qu'il contient?",
+ "Non-existing directory type." => "Type de répertoire inexistant.",
+ "Undefined MIME types." => "Type MIME indéterminé.",
+ "Fileinfo PECL extension is missing." => "L'extension Fileinfo PECL est manquante.",
+ "Opening fileinfo database failed." => "Ouverture de la base de données fileinfo echouée.",
+ "You can't upload such files." => "Vous ne pouvez pas télécharger ce type de fichiers.",
+ "The file '{file}' does not exist." => "Le fichier '{file}' n'existe pas.",
+ "Cannot read '{file}'." => "Impossible de lire le fichier '{file}'.",
+ "Cannot copy '{file}'." => "Impossible de copier le fichier '{file}'.",
+ "Cannot move '{file}'." => "Impossible de déplacer le fichier '{file}'.",
+ "Cannot delete '{file}'." => "Impossible de supprimer le fichier '{file}'.",
+ "Cannot delete the folder." => "Impossible de supprimer le dossier.",
+ "Click to remove from the Clipboard" => "Cliquez pour enlever du presse-papier",
+ "This file is already added to the Clipboard." => "Ce fichier a déja été ajouté au presse-papier.",
+ "The files in the Clipboard are not readable." => "Les fichiers du presse-papier ne sont pas lisibles.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fichiers dans le presse-papier ne sont pas lisibles. Voulez vous copier le reste?",
+ "The files in the Clipboard are not movable." => "Les fichiers du presse-papier ne peuvent pas être déplacés.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fichiers du presse-papier ne peuvent pas être déplacées. Voulez vous déplacer le reste?",
+ "The files in the Clipboard are not removable." => "Les fichiers du presse-papier ne peuvent pas être enlevés.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fichiers du presse-papier ne peuvent pas être enlevés. Voulez vous supprimer le reste?",
+ "The selected files are not removable." => "Les fichiers sélectionnés ne peuvent pas être enlevés.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} fichier sélectionnés ne peuvent pas être enlevés. Voulez vous supprimer le reste?",
+ "Are you sure you want to delete all selected files?" => "Êtes vous sûr de vouloir supprimer tous les fichiers sélectionnés?",
+ "Failed to delete {count} files/folders." => "Echec de la suppression de {count} fichiers/dossiers.",
+ "A file or folder with that name already exists." => "Un fichier/dossier du même nom existe déja.",
+ "Copy files here" => "Copier les fichiers ici",
+ "Move files here" => "Déplacer les fichiers ici",
+ "Delete files" => "Supprimer les fichiers",
+ "Clear the Clipboard" => "Vider le presse-papier",
+ "Are you sure you want to delete all files in the Clipboard?" => "Êtes vous sûr de vouloir supprimer tous les fichiers du presse-papier?",
+ "Copy {count} files" => "Copie de {count} fichiers",
+ "Move {count} files" => "Déplacement de {count} fichiers",
+ "Add to Clipboard" => "Ajouter au presse-papier",
+ "Inexistant or inaccessible folder." => "Dossier inexistant ou innacessible.",
+ "New folder name:" => "Nom du nouveau dossier:",
+ "New file name:" => "Nom du nouveau fichier:",
+ "Upload" => "Envoyer",
+ "Refresh" => "Actualiser",
+ "Settings" => "Paramètres",
+ "Maximize" => "Agrandir",
+ "About" => "A propos",
+ "files" => "fichiers",
+ "selected files" => "fichiers sélectionnés",
+ "View:" => "Voir:",
+ "Show:" => "Montrer:",
+ "Order by:" => "Trier par:",
+ "Thumbnails" => "Miniatures",
+ "List" => "Liste",
+ "Name" => "Nom",
+ "Type" => "Type",
+ "Size" => "Taille",
+ "Date" => "Date",
+ "Descending" => "Décroissant",
+ "Uploading file..." => "Téléchargement en cours...",
+ "Loading image..." => "Chargement de l'image...",
+ "Loading folders..." => "Chargement des dossiers...",
+ "Loading files..." => "Chargement des fichiers...",
+ "New Subfolder..." => "Nouveau sous-dossier...",
+ "Rename..." => "Renommer...",
+ "Delete" => "Supprimer",
+ "OK" => "OK",
+ "Cancel" => "Annuler",
+ "Select" => "Sélectionner",
+ "Select Thumbnail" => "Sélectionner la miniature",
+ "Select Thumbnails" => "Sélectionner les miniatures",
+ "View" => "Voir",
+ "Download" => "Télécharger",
+ "Download files" => "Télécharger les fichiers",
+ "Clipboard" => "Presse-papier",
+ "Checking for new version..." => "Vérifier les mises à jours...",
+ "Unable to connect!" => "Connexion impossible !",
+ "Download version {version} now!" => "Télécharger la version {version} maintenant !",
+ "KCFinder is up to date!" => "KCFinder est à jour !",
+ "Licenses:" => "Licences:",
+ "Attention" => "Alerte",
+ "Question" => "Question",
+ "Yes" => "Oui",
+ "No" => "Non",
+ "You cannot rename the extension of files!" => "Vous ne pouvez modifier l'extension des fichiers !",
+ "Uploading file {number} of {count}... {progress}" => "Envoi du fichier {number} sur {count}... {progress}",
+ "Failed to upload {filename}!" => "Échec du téléchargement du fichier {filename} !",
+ "Close" => "Fermer",
+ "Previous" => "Précédent",
+ "Next" => "Suivant",
+ "Confirmation" => "Confirmation",
+ "Warning" => "Avertissement",
+);
+
+?>
diff --git a/kcfinder/lang/he.php b/kcfinder/lang/he.php
new file mode 100644
index 00000000..56b31a23
--- /dev/null
+++ b/kcfinder/lang/he.php
@@ -0,0 +1,127 @@
+ "he_IL.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%H:%M %Y %B %e %A",
+ '_dateTimeMid' => "%H:%M %d/%m/%Y",
+ '_dateTimeSmall' => "%H:%M %d/%m/%Y",
+
+ "You don't have permissions to upload files." => "אין לך הרשאות להעלות קבצים.",
+ "You don't have permissions to browse server." => "איך לך הרשאות לצפות בקבצים.",
+ "Cannot move uploaded file to target folder." => "לא ניתן להעביר את הקבצים שהועלו לתקייה שנבחרה.",
+ "Unknown error." => "שגיאה לא ידועה.",
+ "The uploaded file exceeds {size} bytes." => "הקובץ המועלה עובר את הגודל המקסימלי. ({size} בתים).",
+ "The uploaded file was only partially uploaded." => "הקובץ הועלה חלקית.",
+ "No file was uploaded." => "לא הועלו קבצים.",
+ "Missing a temporary folder." => "חסר תקייה זמנית.",
+ "Failed to write file." => "כתיבת הקובץ נכשלה.",
+ "Denied file extension." => "סיומת קובץ לא מורשית.",
+ "Unknown image format/encoding." => "סוג תמונה לא מוכר.",
+ "The image is too big and/or cannot be resized." => "התמונה גדולה מדי או שלא ניתן למזערה.",
+ "Cannot create {dir} folder." => "לא יכול ליצור את '{dir}'.",
+ "Cannot rename the folder." => "לא ניתן לשנות את שם התקיה",
+ "Cannot write to upload folder." => "לא ניתן לכתובת לתקיית ההעלאה",
+ "Cannot read .htaccess" => "לא ניתן לקרא את .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "קובץ .htaccess לא חוקי, לא ניתן לשכתב קובץ \\זה.",
+ "Cannot read upload folder." => "לא ניתן לקרא מתקיית ההעלאות.",
+ "Cannot access or create thumbnails folder." => "לא ניתן לגשת לתקייה התמונות הממוזערות.",
+ "Cannot access or write to upload folder." => "לא ניתן לגשת לתקיית ההעלאה.",
+ "Please enter new folder name." => "אנא בחר בשם לתקייה החדשה.",
+ "Unallowable characters in folder name." => "אותיות לא מורשות בשם התקיה.",
+ "Folder name shouldn't begins with '.'" => "שם תקיה אינו יכול להתחיל בנקודה.",
+ "Please enter new file name." => "אנא הכנס שם לקובץ החדש",
+ "Unallowable characters in file name." => "אותיות לא מורשות בשם הקובץ.",
+ "File name shouldn't begins with '.'" => "שם קובץ אינו יכול להתחיל בנקודה.",
+ "Are you sure you want to delete this file?" => "הנך בטוח שברצונך למחוק קבצים אילו?",
+ "Are you sure you want to delete this folder and all its content?" => "האם ברצונך למחוק תקיה זו וכל תוכנה?",
+ "Non-existing directory type." => "סוג תקייה לא קיימת.",
+ "Undefined MIME types." => "סוג MIME לא מוגדר.",
+ "Fileinfo PECL extension is missing." => "פרטי PECL חסרים.",
+ "Opening fileinfo database failed." => "פתיחת מסד פרטי הקבצים נכשלה.",
+ "You can't upload such files." => "לא ניתן להעלות קבצים מסוג זה.",
+ "The file '{file}' does not exist." => "הקובץ '{file}' לא קיים.",
+ "Cannot read '{file}'." => "לא יכול לפתוח '{file}'.",
+ "Cannot copy '{file}'." => "לא יכול להעתיק '{file}'.",
+ "Cannot move '{file}'." => "לא יכול להעביר '{file}'.",
+ "Cannot delete '{file}'." => "לא יכול למחוק '{file}'.",
+ "Cannot delete the folder." => "לא ניתן למחוק את התקייה",
+ "Click to remove from the Clipboard" => "לחץ להסיר מהלוח",
+ "This file is already added to the Clipboard." => "קובץ זה קיים בלוח.",
+ "The files in the Clipboard are not readable." => "הקבצים בלוח אינם קריאים.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} קבצים בלוח אינם קריאים. להעתיק את השאר?",
+ "The files in the Clipboard are not movable." => "הקבצים בלוח אינם ניתן להעברה.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} קבצים בלוח אינם ניתן להעברה. להעביר את השאר?",
+ "The files in the Clipboard are not removable." => "הקבצים בלוח אינם נתנים להסרה.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} קבצים בלוח אינם נתנים להסרה. להסיר את השאר?",
+ "The selected files are not removable." => "הקבצים הנבחרים אינם נתנים להסרה.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} קבצים בלוח אינם נתנים להסרה. למחוק את השאר?",
+ "Are you sure you want to delete all selected files?" => "האם ברצונך למחוק את הקבצים בנבחרים?",
+ "Failed to delete {count} files/folders." => "מחיקת {count} קבצים נכשלה.",
+ "A file or folder with that name already exists." => "תקייה/קובץ בשם זה כבר קיימים.",
+ "Copy files here" => "העתק קבצים לכאן",
+ "Move files here" => "העבר קבצים לכאן",
+ "Delete files" => "מחק קובץ",
+ "Clear the Clipboard" => "נקה לוח",
+ "Are you sure you want to delete all files in the Clipboard?" => "האם ברצונך לרוקן את הלוח?",
+ "Copy {count} files" => "העתק {count} קבצים.",
+ "Move {count} files" => "העבר {count} קבצים.",
+ "Add to Clipboard" => "הוסף ללוח",
+ "Inexistant or inaccessible folder." => "תקיה או קובץ לא קיימים.",
+ "New folder name:" => "שם תקיה חדשה:",
+ "New file name:" => "שם קובץ חדש:",
+ "Upload" => "העלה",
+ "Refresh" => "רענן",
+ "Settings" => "הגדרות",
+ "Maximize" => "הגדל",
+ "About" => "אודות",
+ "files" => "קבצים",
+ "selected files" => "קבצים מסומנים",
+ "View:" => "צפה:",
+ "Show:" => "הראה:",
+ "Order by:" => "מיין ע\"פ:",
+ "Thumbnails" => "תמונות ממוזערות",
+ "List" => "רשימה",
+ "Name" => "שם",
+ "Type" => "סוג",
+ "Size" => "גודל",
+ "Date" => "תאריך",
+ "Descending" => "יורד",
+ "Uploading file..." => "מעלה קבצים...",
+ "Loading image..." => "טוען תמונות...",
+ "Loading folders..." => "טוען תקיות...",
+ "Loading files..." => "טוען קבצים...",
+ "New Subfolder..." => "תת תקיה חדשה...",
+ "Rename..." => "שנה שם...",
+ "Delete" => "מחק",
+ "OK" => "אישור",
+ "Cancel" => "ביטול",
+ "Select" => "סמן",
+ "Select Thumbnail" => "סמן תמונות ממוזערות",
+ "Select Thumbnails" => "סמן תמונות ממוזערות",
+ "View" => "צפה",
+ "Download" => "הורד",
+ "Download files" => "הורד קובץ/ים",
+ "Clipboard" => "לוח",
+ "Checking for new version..." => "בודק גרסא עדכנית...",
+ "Unable to connect!" => "שגיאת התחברות!",
+ "Download version {version} now!" => "הורד גרסא {version} עכשיו!",
+ "KCFinder is up to date!" => "המערכת עדכנית!",
+ "Licenses:" => "רשיון",
+ "Attention" => "לתשומת לב",
+ "Question" => "שאלה",
+ "Yes" => "כן",
+ "No" => "לא",
+ "You cannot rename the extension of files!" => "לא ניתו לערוך סיומות קבצים!",
+ "Uploading file {number} of {count}... {progress}" => "מעלה קובץ {number} מתוך {count}... {progress}",
+ "Failed to upload {filename}!" => "העלאת הקובץ נכשלה!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/hu.php b/kcfinder/lang/hu.php
new file mode 100644
index 00000000..0387860a
--- /dev/null
+++ b/kcfinder/lang/hu.php
@@ -0,0 +1,132 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "hu_HU.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B.%Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d/%m/%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Nincs jogosultsága fájlokat feltölteni.",
+ "You don't have permissions to browse server." => "Nincs jogosultsága a kiszolgálón böngészni.",
+ "Cannot move uploaded file to target folder." => "Nem lehet áthelyezni a feltöltött fájlt a célkönyvtárba.",
+ "Unknown error." => "Ismeretlen hiba.",
+ "The uploaded file exceeds {size} bytes." => "A feltöltött fájl mérete meghaladja a {size} bájtot.",
+ "The uploaded file was only partially uploaded." => "A feltöltendő fájl csak részben sikerült feltölteni.",
+ "No file was uploaded." => "Nem történt fájlfeltöltés.",
+ "Missing a temporary folder." => "Hiányzik az ideiglenes könyvtár.",
+ "Failed to write file." => "Nem sikerült a fájl írása.",
+ "Denied file extension." => "Tiltott fájlkiterjesztés.",
+ "Unknown image format/encoding." => "Ismeretlen képformátum vagy kódolás.",
+ "The image is too big and/or cannot be resized." => "A kép mérete túl nagy és/vagy nem lehet átméretezni.",
+ "Cannot create {dir} folder." => "Nem lehet létrehozni a {dir} könyvtárat.",
+ "Cannot rename the folder." => "A könyvtárat nem lehet átnevezni.",
+ "Cannot write to upload folder." => "Nem lehet írni a feltöltési könyvtárba.",
+ "Cannot read .htaccess" => "Nem lehet olvasni a .htaccess fájlt",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Hibás .htaccess fájl. Nem lehet írni.",
+ "Cannot read upload folder." => "Nem lehet olvasni a feltöltési könyvtárat.",
+ "Cannot access or create thumbnails folder." => "Nem lehet elérni vagy létrehozni a bélyegképek könyvtárat.",
+ "Cannot access or write to upload folder." => "Nem lehet elérni vagy létrehozni a feltöltési könyvtárat.",
+ "Please enter new folder name." => "Kérem, adja meg az új könyvtár nevét.",
+ "Unallowable characters in folder name." => "Meg nem engedett karakter(ek) a könyvtár nevében.",
+ "Folder name shouldn't begins with '.'" => "Könyvtárnév nem kezdődhet '.'-tal",
+ "Please enter new file name." => "Kérem adja meg az új fájl nevét.",
+ "Unallowable characters in file name." => "Meg nem engedett karakter(ek) a fájl nevében.",
+ "File name shouldn't begins with '.'" => "Fájlnév nem kezdődhet '.'-tal",
+ "Are you sure you want to delete this file?" => "Biztos benne, hogy törölni kívánja ezt a fájlt?",
+ "Are you sure you want to delete this folder and all its content?" => "Biztos benne hogy törölni kívánja ezt a könyvtárat és minden tartalmát?",
+ "Non-existing directory type." => "Nem létező könyvtártípus.",
+ "Undefined MIME types." => "Meghatározatlan MIME típusok.",
+ "Fileinfo PECL extension is missing." => "Hiányzó PECL Fileinfo PHP kiegészítés.",
+ "Opening fileinfo database failed." => "Nem sikerült megnyitni a Fileinfo adatbázist.",
+ "You can't upload such files." => "Nem tölthet fel ilyen fájlokat.",
+ "The file '{file}' does not exist." => "A '{file}' fájl nem létezik.",
+ "Cannot read '{file}'." => "A '{file}' fájlt nem lehet olvasni.",
+ "Cannot copy '{file}'." => "A '{file}' fájlt nem lehet másolni.",
+ "Cannot move '{file}'." => "A '{file}' fájlt nem lehet áthelyezni.",
+ "Cannot delete '{file}'." => "A '{file}' fájlt nem lehet törölni.",
+ "Cannot delete the folder." => "Nem lehet törölni a könyvtárat.",
+ "Click to remove from the Clipboard" => "kattintson ide, hogy eltávolítsa a vágólapról",
+ "This file is already added to the Clipboard." => "Ezt a fájlt már hozzáadta a vágólaphoz.",
+ "The files in the Clipboard are not readable." => "A vágólapon lévő fájlok nem olvashatók.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fájl a vágólapon nem olvasható. Akarja másolni a többit?",
+ "The files in the Clipboard are not movable." => "A vágólapon lévő fájlokat nem lehet áthelyezni.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fájlt a vágólapon nem lehet áthelyezni. Akarja áthelyezni a többit?",
+ "The files in the Clipboard are not removable." => "A vágólapon lévő fájlokat nem lehet eltávolítani.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fájlt a vágólapon nem lehet eltávolítani. Akarja törölni a többit?",
+ "The selected files are not removable." => "A kiválasztott fájlokat nem lehet eltávolítani.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} kiválasztott fájlt nem lehet eltávolítani. Akarja törölni a többit?",
+ "Are you sure you want to delete all selected files?" => "Biztosan törölni kíván minden kijelölt fájlt?",
+ "Failed to delete {count} files/folders." => "Nem sikerült törölni {count} fájlt.",
+ "A file or folder with that name already exists." => "Egy fájl vagy könyvtár már létezik ugyan ezzel a névvel.",
+ "Copy files here" => "Fájlok másolása ide",
+ "Move files here" => "Fájlok áthelyezése ide",
+ "Delete files" => "Fájlok törlése",
+ "Clear the Clipboard" => "Vágólap ürítése",
+ "Are you sure you want to delete all files in the Clipboard?" => "Biztosan törölni kívánja a vágólapon lévő összes fájlt?",
+ "Copy {count} files" => "{count} fájl másolása",
+ "Move {count} files" => "{count} fájl áthelyezése",
+ "Add to Clipboard" => "Hozzáadás vágólaphoz",
+ "Inexistant or inaccessible folder." => "Nem létező vagy elérhetetlen könyvtár.",
+ "New folder name:" => "Új könyvtár neve:",
+ "New file name:" => "Új fájl neve:",
+ "Upload" => "Feltöltés",
+ "Refresh" => "Frissítés",
+ "Settings" => "Beállítások",
+ "Maximize" => "Maximalizálás",
+ "About" => "Névjegy",
+ "files" => "fájlok",
+ "selected files" => "kiválasztott fájlok",
+ "View:" => "Nézet:",
+ "Show:" => "Mutat:",
+ "Order by:" => "Rendezés:",
+ "Thumbnails" => "Bélyegképek",
+ "List" => "Lista",
+ "Name" => "Név",
+ "Type" => "Típus",
+ "Size" => "Méret",
+ "Date" => "Datum",
+ "Descending" => "Csökkenő",
+ "Uploading file..." => "Fájl feltöltése...",
+ "Loading image..." => "Képek betöltése...",
+ "Loading folders..." => "Könyvtárak betöltése...",
+ "Loading files..." => "Fájlok betöltése...",
+ "New Subfolder..." => "Új alkönyvtár...",
+ "Rename..." => "Átnevezés...",
+ "Delete" => "Törlés",
+ "OK" => "OK",
+ "Cancel" => "Mégse",
+ "Select" => "Kiválaszt",
+ "Select Thumbnail" => "Bélyegkép kiválasztása",
+ "Select Thumbnails" => "Bélyegképek kiválasztása",
+ "View" => "Nézet",
+ "Download" => "Letöltés",
+ "Download files" => "Fájlok letöltése",
+ "Clipboard" => "Vágólap",
+ "Checking for new version..." => "Új verzió keresése ...",
+ "Unable to connect!" => "Nem lehet csatlakozni!",
+ "Download version {version} now!" => "Töltse le a {version} verziót most!",
+ "KCFinder is up to date!" => "Ez a KCFinder verzió a legfrissebb",
+ "Licenses:" => "Licenszek:",
+ "Attention" => "Figyelem",
+ "Question" => "Kérdés",
+ "Yes" => "Igen",
+ "No" => "Nem",
+ "You cannot rename the extension of files!" => "Nem változtathatja meg a fájlok kiterjezstését",
+ "Uploading file {number} of {count}... {progress}" => "A(z) {number}. fájl feltöltése (összesen {count}) ... {progress}",
+ "Failed to upload {filename}!" => "Nem sikerült feltölteni a '{filename}' fájlt.",
+ "Close" => "Bezár",
+ "Previous" => "Előző",
+ "Next" => "Következő",
+ "Confirmation" => "Megerősítés",
+ "Warning" => "Figyelem"
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/id.php b/kcfinder/lang/id.php
new file mode 100644
index 00000000..6e8311cb
--- /dev/null
+++ b/kcfinder/lang/id.php
@@ -0,0 +1,127 @@
+ "id_ID.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Anda tidak punya izin untuk mengunggah file.",
+ "You don't have permissions to browse server." => "Anda tidak punya izin untuk menelusuri server.",
+ "Cannot move uploaded file to target folder." => "Gagal memindahkan file yang di unggah ke target folder.",
+ "Unknown error." => "Error yang tidak diketahui.",
+ "The uploaded file exceeds {size} bytes." => "File yang anda unggah melebihi {size} bytes.",
+ "The uploaded file was only partially uploaded." => "Hanya sebagian file yang anda unggah telah di upload.",
+ "No file was uploaded." => "Tidak ada file yang di unggah.",
+ "Missing a temporary folder." => "Temporary folder hilang.",
+ "Failed to write file." => "Gagal untuk menulis file.",
+ "Denied file extension." => "File extension ditolak.",
+ "Unknown image format/encoding." => "Format gambar/encoding tidak diketahui.",
+ "The image is too big and/or cannot be resized." => "Gambar terlalu besar dan/atau tidak bisa di ubah ukurannya.",
+ "Cannot create {dir} folder." => "Gagal membuat {dir} folder",
+ "Cannot rename the folder." => "Gagal mengganti nama folder.",
+ "Cannot write to upload folder." => "Gagal menulis ke server unggah.",
+ "Cannot read .htaccess" => "Gagal membaca .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Salah .htaccess file. Tidak bisa menulis file itu kembali!",
+ "Cannot read upload folder." => "Gagal membaca folder unggah.",
+ "Cannot access or create thumbnails folder." => "Gagal mengakses atau membuat miniatur folder.",
+ "Cannot access or write to upload folder." => "Gagal mengakses atau menulis ke folder unggah.",
+ "Please enter new folder name." => "Tolong masukkan nama folder baru.",
+ "Unallowable characters in folder name." => "Ada karakter yang tidak di izinkan di nama folder.",
+ "Folder name shouldn't begins with '.'" => "Nama folder seharusnya tidak dimulai dengan '.'",
+ "Please enter new file name." => "Tolong masukkan nama file baru.",
+ "Unallowable characters in file name." => "Ada karakter yang tidak di izinkan di nama file.",
+ "File name shouldn't begins with '.'" => "Nama file seharusnya tidak dimulai dengan '.'",
+ "Are you sure you want to delete this file?" => "Yakin anda akan menghapus file ini?",
+ "Are you sure you want to delete this folder and all its content?" => "Yakin anda akan menghapus folder ini dan semua konten nya?",
+ "Non-existing directory type." => "Jenis direktory tidak ada.",
+ "Undefined MIME types." => "Jenis MIME tidak diketahui.",
+ "Fileinfo PECL extension is missing." => "extensi Fileinfo PECL hilang.",
+ "Opening fileinfo database failed." => "Membuka fileinfo database gagal.",
+ "You can't upload such files." => "Anda tidak bisa mengunggah file seperti ini.",
+ "The file '{file}' does not exist." => "File '{file}' tidak ada.",
+ "Cannot read '{file}'." => "Gagal membaca '{file}'",
+ "Cannot copy '{file}'." => "Gagal menyalin '{file}'",
+ "Cannot move '{file}'." => "Gagal pindahkan '{file}'",
+ "Cannot delete '{file}'." => "Gagal menghapus '{file}'",
+ "Cannot delete the folder." => "Gagal menghapus folder. ",
+ "Click to remove from the Clipboard" => "Klik untuk memusnahkan dari Clipboard.",
+ "This file is already added to the Clipboard." => "File ini memang sudah ditambahkan ke Clipboard.",
+ "The files in the Clipboard are not readable." => "File-File yang di Clipboard tidak bisa di baca.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} file-file di Clipboard tidak bisa di baca. Apakah anda mau menyalin sisa-nya?",
+ "The files in the Clipboard are not movable." => "File-file yang di clipboard tidak memungkinkan untuk di pindah.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} file-file yang di Clipboard tidak bisa di pindah. Apakan anda mau memindahkan sisa-nya?",
+ "The files in the Clipboard are not removable." => "File file yang di Clipboard tidak memungkinkan untuk di hapus.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} file-file di Clipboard tidak memungkinkan untuk di hapus. Apakah anda mau menghapus sisa-nya?",
+ "The selected files are not removable." => "File-file yang anda pilih tidak memungkinkan untuk di hapus.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} file-file yang terpilih tidak memungkinkan untuk di hapus. Apakah anda mau menghapus sisa-nya?",
+ "Are you sure you want to delete all selected files?" => "Yakin anda akan menghapus semua file-file yang di pilih?",
+ "Failed to delete {count} files/folders." => "Gagal menghapus {count} file/folder.",
+ "A file or folder with that name already exists." => "File atau folder dengan nama itu sudah ada.",
+ "Copy files here" => "Salin file-file kesini",
+ "Move files here" => "Pindah file-file kesini",
+ "Delete files" => "Hapus file",
+ "Clear the Clipboard" => "Bersihkan Clipboard",
+ "Are you sure you want to delete all files in the Clipboard?" => "Yakin anda akan menghapus semua file-file yang ada di Clipboard?",
+ "Copy {count} files" => "Salin {count} file-file",
+ "Move {count} files" => "Pindah {count} file-file",
+ "Add to Clipboard" => "Tambahkan ke Clipboard",
+ "Inexistant or inaccessible folder." => "Folder tidak ada atau tidak bisa di akses.",
+ "New folder name:" => "Nama folder baru:",
+ "New file name:" => "Nama file baru:",
+ "Upload" => "Unggah",
+ "Refresh" => "Refresh",
+ "Settings" => "Pengaturan",
+ "Maximize" => "Maksimalkan",
+ "About" => "Tentang",
+ "files" => "File",
+ "selected files" => "File-file yang di pilih",
+ "View:" => "Lihat:",
+ "Show:" => "Tampilkan:",
+ "Order by:" => "Sortir dengan:",
+ "Thumbnails" => "Miniatur",
+ "List" => "Daftar",
+ "Name" => "Nama",
+ "Type" => "Jenis",
+ "Size" => "Ukuran",
+ "Date" => "Tanggal",
+ "Descending" => "Menurun",
+ "Uploading file..." => "Mengunggah file...",
+ "Loading image..." => "Memuat gambar...",
+ "Loading folders..." => "Memuat folder...",
+ "Loading files..." => "Memuat file...",
+ "New Subfolder..." => "Subfolder baru...",
+ "Rename..." => "Ganti nama...",
+ "Delete" => "Hapus...",
+ "OK" => "OK",
+ "Cancel" => "Batalkan",
+ "Select" => "Pilih",
+ "Select Thumbnail" => "Pilih Thumbnail",
+ "Select Thumbnails" => "Pilih Thumbnails",
+ "View" => "Lihat",
+ "Download" => "Unggah",
+ "Download files" => "Unggah file",
+ "Clipboard" => "Clipboard",
+ "Checking for new version..." => "Mengecek untuk versi baru...",
+ "Unable to connect!" => "Gagal untuk mengkoneksi!",
+ "Download version {version} now!" => "Unduh versi {version} sekarang!",
+ "KCFinder is up to date!" => "KCFinder adalah versi terbaru!",
+ "Licenses:" => "Lisensi:",
+ "Attention" => "Perhatian",
+ "Question" => "Pertanyaan",
+ "Yes" => "Ya",
+ "No" => "Tidak",
+ "You cannot rename the extension of files!" => "Anda tidak bisa mengubah ekstensi file!",
+ "Uploading file {number} of {count}... {progress}" => "Mengunggah file {number} of {count}... {progress}",
+ "Failed to upload {filename}!" => "Gagal untuk mengunggah {filename}",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/it.php b/kcfinder/lang/it.php
new file mode 100644
index 00000000..e56482b4
--- /dev/null
+++ b/kcfinder/lang/it.php
@@ -0,0 +1,132 @@
+ "it_IT.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Non hai il permesso di caricare files.",
+ "You don't have permissions to browse server." => "Non hai il permesso di elencare i files.",
+ "Cannot move uploaded file to target folder." => "Non puoi spostare il file caricato nella cartella di destinazione.",
+ "Unknown error." => "Errore sconosciuto.",
+ "The uploaded file exceeds {size} bytes." => "Il file caricato eccede {size} bytes.",
+ "The uploaded file was only partially uploaded." => "Il file è stato caricato parzialmente.",
+ "No file was uploaded." => "Nessun file è stato caricato",
+ "Missing a temporary folder." => "Cartella temporanea non trovata.",
+ "Failed to write file." => "Scrittura del file fallita.",
+ "Denied file extension." => "Estensione del file non consentita.",
+ "Unknown image format/encoding." => "Il format/encoding dell'immagine è sconosciuto.",
+ "The image is too big and/or cannot be resized." => "L'immagine è troppo grande e/o non può essere rimpicciolita",
+ "Cannot create {dir} folder." => "La cartella {dir} non può essere creata.",
+ "Cannot rename the folder." => "Non è possibile rinominare la cartella.",
+ "Cannot write to upload folder." => "Cartella di destinazione protetta in scrittura.",
+ "Cannot read .htaccess" => "Impossibile leggere il file .htaccess.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Il file .htaccess è corrotto. Impossibile riscriverlo!",
+ "Cannot read upload folder." => "Impossibile leggere il contenuto della cartella di destinazione.",
+ "Cannot access or create thumbnails folder." => "Impossibile creare o accedere alla cartella delle miniature.",
+ "Cannot access or write to upload folder." => "Impossibile accedere o scrivere nella cartella di destinazione.",
+ "Please enter new folder name." => "Scrivi il nome della nuova cartella.",
+ "Unallowable characters in folder name." => "Caratteri non permessi nel nome della cartella.",
+ "Folder name shouldn't begins with '.'" => "Il nome della cartella non può iniziare con'.'",
+ "Please enter new file name." => "Inserisci il nuovo nome del file",
+ "Unallowable characters in file name." => "Caratteri non permessi nel nome del file.",
+ "File name shouldn't begins with '.'" => "Il nome del file non può iniziare con '.'",
+ "Are you sure you want to delete this file?" => "Sei sicuro che vuoi cancellare questo file?",
+ "Are you sure you want to delete this folder and all its content?" => "Sei sicuro di voler cancellare questa cartella e il suo contenuto?",
+ "Non-existing directory type." => "Il tipo di cartella non esiste.",
+ "Undefined MIME types." => "Tipo MIME non definito.",
+ "Fileinfo PECL extension is missing." => "Manca estensione PECL del file.",
+ "Opening fileinfo database failed." => "Apertura del database delle informazioni del file fallita.",
+ "You can't upload such files." => "Non è possibile caricare questi files.",
+ "The file '{file}' does not exist." => "Il file '{file}' non esiste.",
+ "Cannot read '{file}'." => "Impossibile leggere il file '{file}'.",
+ "Cannot copy '{file}'." => "Impossibile copiare il file '{file}'.",
+ "Cannot move '{file}'." => "Impossibile spostare il file '{file}'.",
+ "Cannot delete '{file}'." => "Impossibile cancellare il file '{file}'.",
+ "Cannot delete the folder." => "Non è possibile cancellare la cartella.",
+ "Click to remove from the Clipboard" => "Click per rimuoverlo dalla Clipboard",
+ "This file is already added to the Clipboard." => "Questo file è già stato aggiunto alla Clipboard.",
+ "The files in the Clipboard are not readable." => "I files nella Clipboard non sono leggibili.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} files nella Clipboard non sono leggibili. Copiare il resto?",
+ "The files in the Clipboard are not movable." => "I files nella Clipboard non sono spostabili.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} files nella Clipboard non sono spostabili. Spostare il resto?",
+ "The files in the Clipboard are not removable." => "I files nella Clipboard non si possono rimuovere.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} files nella Clipboard non si possono rimuovere. Cancellare il resto?",
+ "The selected files are not removable." => "Il file selezionato non è rimovibile.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} files selezionati non sono rimovibili. Cancellare il resto?",
+ "Are you sure you want to delete all selected files?" => "Sei sicuro che vuoi cancellare tutti i files selezionati?",
+ "Failed to delete {count} files/folders." => "Cancellazione fallita {count} files/cartelle.",
+ "A file or folder with that name already exists." => "Un file o cartella con questo nome già esiste.",
+ "Copy files here" => "Copia i files qui",
+ "Move files here" => "Sposta i files qui",
+ "Delete files" => "Cancella i files",
+ "Clear the Clipboard" => "Pulisci la Clipboard",
+ "Are you sure you want to delete all files in the Clipboard?" => "Sei sicuro che vuoi cancellare tutti i files dalla Clipboard?",
+ "Copy {count} files" => "Copio {count} files",
+ "Move {count} files" => "Sposto {count} files",
+ "Add to Clipboard" => "Aggiungi alla Clipboard",
+ "Inexistant or inaccessible folder." => "La cartella non esiste o è inacessibile.",
+ "New folder name:" => "Nuovo nome della cartella:",
+ "New file name:" => "Nuovo nome del file:",
+ "Upload" => "Carica",
+ "Refresh" => "Aggiorna",
+ "Settings" => "Preferenze",
+ "Maximize" => "Massimizza",
+ "About" => "Chi siamo",
+ "files" => "files",
+ "selected files" => "files selezionati",
+ "View:" => "Vista:",
+ "Show:" => "Mostra:",
+ "Order by:" => "Ordina per:",
+ "Thumbnails" => "Miniature",
+ "List" => "Lista",
+ "Name" => "Nome",
+ "Type" => "Tipo",
+ "Size" => "Grandezza",
+ "Date" => "Data",
+ "Descending" => "Discendente",
+ "Uploading file..." => "Carico file...",
+ "Loading image..." => "Caricamento immagine...",
+ "Loading folders..." => "Caricamento cartella...",
+ "Loading files..." => "Caricamento files...",
+ "New Subfolder..." => "Nuova sottocartella...",
+ "Rename..." => "Rinomina...",
+ "Delete" => "Elimina",
+ "OK" => "OK",
+ "Cancel" => "Cancella",
+ "Select" => "Seleziona",
+ "Select Thumbnail" => "Seleziona miniatura",
+ "Select Thumbnails" => "Seleziona miniature",
+ "View" => "Vista",
+ "Download" => "Scarica",
+ "Download files" => "Scarica files",
+ "Clipboard" => "Clipboard",
+ "Checking for new version..." => "Controllo nuova versione...",
+ "Unable to connect!" => "Connessione impossibile",
+ "Download version {version} now!" => "Prelevo la versione {version} adesso!",
+ "KCFinder is up to date!" => "KCFinder è aggiornato!",
+ "Licenses:" => "Licenze:",
+ "Attention" => "Attenzione",
+ "Question" => "Domanda",
+ "Yes" => "Si",
+ "No" => "No",
+ "You cannot rename the extension of files!" => "Non puoi rinominare l'estensione del file!",
+ "Uploading file {number} of {count}... {progress}" => "Caricmento del file {number} di {count}... {progress}",
+ "Failed to upload {filename}!" => "Il caricamento del file {filename} è fallito ",
+ "Close" => "Chiudi",
+ "Previous" => "Precedente",
+ "Next" => "Successivo",
+ "Confirmation" => "Conferma",
+ "Warning" => "Attenzione",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/ja.php b/kcfinder/lang/ja.php
new file mode 100644
index 00000000..85095960
--- /dev/null
+++ b/kcfinder/lang/ja.php
@@ -0,0 +1,133 @@
+ "ja_JP.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%Y/%m/%d %H:%M",
+ '_dateTimeMid' => "%Y/%m/%d %H:%M",
+ '_dateTimeSmall' => "%Y/%m/%d %H:%M",
+
+ "You don't have permissions to upload files." => "アップロード権限がありません。",
+ "You don't have permissions to browse server." => "サーバーを閲覧する権限がありません",
+ "Cannot move uploaded file to target folder." => "ファイルを移動できません。",
+ "Unknown error." => "原因不明のエラーです。",
+ "The uploaded file exceeds {size} bytes." => "アップロードしたファイルは {size} バイトを越えました。",
+ "The uploaded file was only partially uploaded." => "アップロードしたファイルは、一部のみ処理されました。",
+ "No file was uploaded." => "ファイルはありません。",
+ "Missing a temporary folder." => "tempフォルダが見つかりません。",
+ "Failed to write file." => "ファイルの書き込みに失敗しました。",
+ "Denied file extension." => "このファイルは扱えません。",
+ "Unknown image format/encoding." => "この画像ファイルの種別を判定できません。",
+ "The image is too big and/or cannot be resized." => "画像ファイルのサイズが大き過ぎます。",
+ "Cannot create {dir} folder." => "「{dir}」フォルダを作成できません。",
+ "Cannot rename the folder." => "フォルダ名を変更できません",
+ "Cannot write to upload folder." => "アップロードフォルダに書き込みできません。",
+ "Cannot read .htaccess" => ".htaccessが読み込めません。",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "不正な .htaccess ファイルです。再編集できません!",
+ "Cannot read upload folder." => "アップロードフォルダを読み取れません。",
+ "Cannot access or create thumbnails folder." => "サムネイルフォルダにアクセス、または作成できません。",
+ "Cannot access or write to upload folder." => "アップロードフォルダにアクセス、または書き込みできません。",
+ "Please enter new folder name." => "新しいフォルダ名を入力して下さい。",
+ "Unallowable characters in folder name." => "フォルダ名に使用できない文字が含まれています。",
+ "Folder name shouldn't begins with '.'" => "フォルダ名は、'.'で開始しないで下さい。",
+ "Please enter new file name." => "新しいファイル名を入力して下さい。",
+ "Unallowable characters in file name." => "ファイル名に使用できない文字が含まれています。",
+ "File name shouldn't begins with '.'" => "ファイル名は「. 」で始めることはできません。",
+ "Are you sure you want to delete this file?" => "このファイルを本当に削除してもよろしいですか?",
+ "Are you sure you want to delete this folder and all its content?" => "このフォルダとフォルダ内の全てのコンテンツを本当に削除してもよろしいですか?",
+ "Non-existing directory type." => "存在しないディレクトリの種類です。",
+ "Undefined MIME types." => "定義されていないMIMEタイプです。",
+ "Fileinfo PECL extension is missing." => "Fileinfo PECL 拡張モジュールが見付かりません。",
+ "Opening fileinfo database failed." => "fileinfo データベースを開くのに失敗しました。",
+ "You can't upload such files." => "このようなファイルをアップロードできません。",
+ "The file '{file}' does not exist." => "ファイル「{file}」は存在しません。",
+ "Cannot read '{file}'." => "「{file}」を読み取れません。",
+ "Cannot copy '{file}'." => "「{file}」をコピーできません。",
+ "Cannot move '{file}'." => "「{file}」を移動できません。",
+ "Cannot delete '{file}'." => "「{file}」を削除できません。",
+ "Cannot delete the folder." => "フォルダを削除できません",
+ "Click to remove from the Clipboard" => "クリップボードから削除する",
+ "This file is already added to the Clipboard." => "このファイルは既にクリップボードに追加されています。",
+ "The files in the Clipboard are not readable." => "クリップボードからファイルを読み取れません",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "クリップボード内の {count} 個のファイルが読み取れません。残りをコピーしてもよろしいですか?",
+ "The files in the Clipboard are not movable." => "クリップボードからファイルを移動できません",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "クリップボード内の {count} 個のファイルが移動できません。残りを移動してもよろしいですか?",
+ "The files in the Clipboard are not removable." => "クリップボードを初期化できません",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "クリップボード内の {count} 個のファイルが削除出来ません。残りを削除してもよろしいですか?",
+ "The selected files are not removable." => "選択したファイルは削除できません。",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "選択された {count} 個のファイルは削除できません。残りを削除してもよろしいですか?",
+ "Are you sure you want to delete all selected files?" => "選択された全てのファイルを本当に削除してもよろしいですか?",
+ "Failed to delete {count} files/folders." => "{count} 個のファイル / フォルダの削除に失敗しました。",
+ "A file or folder with that name already exists." => "その名前のファイル、またはフォルダは既に存在します。",
+ "Copy files here" => "ここにコピー",
+ "Move files here" => "ここに移動",
+ "Delete files" => "これらを全て削除",
+ "Clear the Clipboard" => "クリップボードを初期化",
+ "Are you sure you want to delete all files in the Clipboard?" => "クリップボードに記憶した全てのファイルを実際に削除します。",
+ "Copy {count} files" => "ファイル({count}個)をここに複写",
+ "Move {count} files" => "ファイル({count}個)をここに移動",
+ "Add to Clipboard" => "クリップボードに記憶",
+ "Inexistant or inaccessible folder." => "存在しない、またはアクセスできないフォルダです。",
+ "New folder name:" => "フォルダ名(半角英数):",
+ "New file name:" => "ファイル名(半角英数):",
+ "Upload" => "アップロード",
+ "Refresh" => "再表示",
+ "Settings" => "表示設定",
+ "Maximize" => "最大化",
+ "About" => "About",
+ "files" => "ファイル",
+ "selected files" => "選択したファイル",
+ "View:" => "表示スタイル:",
+ "Show:" => "表示項目:",
+ "Order by:" => "表示順:",
+ "Thumbnails" => "サムネイル",
+ "List" => "リスト",
+ "Name" => "ファイル名",
+ "Type" => "タイプ",
+ "Size" => "サイズ",
+ "Date" => "日付",
+ "Descending" => "順序を反転",
+ "Uploading file..." => "ファイルをアップロード中",
+ "Loading image..." => "画像を読み込み中",
+ "Loading folders..." => "フォルダを読み込み中",
+ "Loading files..." => "読み込み中",
+ "New Subfolder..." => "フォルダを作る",
+ "Rename..." => "名前の変更",
+ "Delete" => "削除",
+ "OK" => "OK",
+ "Cancel" => "キャンセル",
+ "Select" => "このファイルを選択",
+ "Select Thumbnail" => "サムネイルを選択",
+ "Select Thumbnails" => "サムネイルを選択",
+ "View" => "プレビュー",
+ "Download" => "ダウンロード",
+ "Download files" => "ファイルをダウンロードする",
+ "Clipboard" => "クリップボード",
+ "Checking for new version..." => "新しいバージョンを確認中",
+ "Unable to connect!" => "接続できません",
+ "Download version {version} now!" => "新しいバージョン({version})をダウンロードできます",
+ "KCFinder is up to date!" => "KCFinderは最新です。",
+ "Licenses:" => "ライセンス",
+ "Attention" => "注意",
+ "Question" => "確認",
+ "Yes" => "はい",
+ "No" => "いいえ",
+ "You cannot rename the extension of files!" => "ファイルの拡張子を変更できませんでした",
+ "Uploading file {number} of {count}... {progress}" => "ファイルをアップロード中({number}/{count})... {progress}",
+ "Failed to upload {filename}!" => "{filename}のアップロードに失敗しました",
+);
+
+?>
diff --git a/kcfinder/lang/lt.php b/kcfinder/lang/lt.php
new file mode 100644
index 00000000..cded0e68
--- /dev/null
+++ b/kcfinder/lang/lt.php
@@ -0,0 +1,130 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "lt_LT.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%F %T",
+ '_dateTimeMid' => "%F %T",
+ '_dateTimeSmall' => "%F %T",
+
+ "You don't have permissions to upload files." => "Jūs neturite teisių įkelti failus",
+ "You don't have permissions to browse server." => "Jūs neturite teisių naršyti po failus",
+ "Cannot move uploaded file to target folder." => "Nepavyko įkelti failo į reikiamą katalogą.",
+ "Unknown error." => "Nežinoma klaida.",
+ "The uploaded file exceeds {size} bytes." => "Įkeliamas failas viršija {size} baitų(-us).",
+ "The uploaded file was only partially uploaded." => "Failas buvo tik dalinai įkeltas.",
+ "No file was uploaded." => "Failas nebuvo įkeltas.",
+ "Missing a temporary folder." => "Nėra laikino katalogo.",
+ "Failed to write file." => "Nepavyko įrašyti failo.",
+ "Denied file extension." => "Draudžiama įkelti šio tipo failus.",
+ "Unknown image format/encoding." => "Nežinomas paveikslėlio formatas/kodavimas.",
+ "The image is too big and/or cannot be resized." => "Paveikslėlis yra per didelis ir/arba negali būti sumažintas.",
+ "Cannot create {dir} folder." => "Nepavyko sukurti {dir} katalogo.",
+ "Cannot rename the folder." => "Nepavyko pervadinti katalogo.",
+ "Cannot write to upload folder." => "Nepavyko įrašyti į įkeliamų failų katalogą.",
+ "Cannot read .htaccess" => "Nepavyko nuskaityti .htaccess failo",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Blogas .htaccess failas. Nepavyko jo perrašyti",
+ "Cannot read upload folder." => "Nepavyko atidaryti įkeliamų failų katalogo.",
+ "Cannot access or create thumbnails folder." => "Nepavyko atidaryti ar sukurti sumažintų paveikslėlių katalogo.",
+ "Cannot access or write to upload folder." => "Nepavyko atidaryti ar įrašyti į įkeliamų failų katalogą.",
+ "Please enter new folder name." => "Įveskite katalogo pavadinimą.",
+ "Unallowable characters in folder name." => "Katalogo pavadinime yra neleistinų simbolių.",
+ "Folder name shouldn't begins with '.'" => "Katalogo pavadinimas negali prasidėti '.'",
+ "Please enter new file name." => "Įveskite failo pavadinimą.",
+ "Unallowable characters in file name." => "Failo pavadinime yra neleistinų simbolių",
+ "File name shouldn't begins with '.'" => "Failo pavadinimas negali prasidėti '.'",
+ "Are you sure you want to delete this file?" => "Ar tikrai ištrinti šį failą?",
+ "Are you sure you want to delete this folder and all its content?" => "Ar tikrai ištrinti šį katalogą su visu jo turiniu?",
+ "Non-existing directory type." => "Neegzistuojantis katalogo tipas.",
+ "Undefined MIME types." => "Nenurodytas MIME tipas.",
+ "Fileinfo PECL extension is missing." => "Trūksa PECL plėtinio Fileinfo",
+ "Opening fileinfo database failed." => "Nepavyko atidaryti Fileinfo duomenų bazės.",
+ "You can't upload such files." => "Negalima įkelti tokių failų.",
+ "The file '{file}' does not exist." => "Failas '{file}' neegzistuoja.",
+ "Cannot read '{file}'." => "Nepavyko atidaryti '{file}' failo.",
+ "Cannot copy '{file}'." => "Nepavyko nukopijuoti '{file}' failo.",
+ "Cannot move '{file}'." => "Nepavyko perkelti '{file}' failo.",
+ "Cannot delete '{file}'." => "Nepavyko ištrinti '{file}' failo.",
+ "Cannot delete the folder." => "Nepavyko ištrinti katalogo.",
+ "Click to remove from the Clipboard" => "Zum entfernen aus der Zwischenablage, hier klicken.",
+ "This file is already added to the Clipboard." => "Šis failas jau įkeltas į laikinąją atmintį.",
+ "The files in the Clipboard are not readable." => "Nepavyko nuskaityti failų iš laikinosios atminties.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Nepavyko atidaryti {count} failų(-ai) iš laikinosios atminties. Ar kopijuoti likusius?",
+ "The files in the Clipboard are not movable." => "Nepavyko perkelti failų iš laikinosios atminties.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Nepavyko perkelti {count} failų(-ai) iš laikinosios atminties. Ar perkelti likusius?",
+ "The files in the Clipboard are not removable." => "Nepavyko perkelti failų iš laikinosios atminties.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Nepavyko ištrinti {count} failų(-ai) iš laikinosios atminties. Ar ištrinti likusius?",
+ "The selected files are not removable." => "Nepavyko perkelti pažymėtų failų.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "Nepavyko ištrinti {count} failų(-ai) iš laikinosios atminties. Ar ištrinti likusius?",
+ "Are you sure you want to delete all selected files?" => "Ar tikrai ištrinti visus pažymėtus failus?",
+ "Failed to delete {count} files/folders." => "Nepavyko ištrinti {count} failų/katalogų.",
+ "A file or folder with that name already exists." => "Failas arba katalogas tokiu pavadinimu jau egzistuoja.",
+ "Copy files here" => "Kopijuoti failus čia.",
+ "Move files here" => "Perkelti failus čia.",
+ "Delete files" => "Ištrinti failus.",
+ "Clear the Clipboard" => "Išvalyti laikinąją atmintį",
+ "Are you sure you want to delete all files in the Clipboard?" => "Ar tikrai ištrinti visus failus, esančius laikinojoje atmintyje?",
+ "Copy {count} files" => "Kopijuoti {count} failų(-us)",
+ "Move {count} files" => "Perkelti {count} failų(-us)",
+ "Add to Clipboard" => "Įkelti į laikinąją atmintį",
+ "Inexistant or inaccessible folder." => "Katalogas neegzistuoja arba yra neprieinamas.",
+ "New folder name:" => "Naujo katalogo pavadinimas:",
+ "New file name:" => "Naujo failo pavadinimas:",
+ "Upload" => "Įkelti",
+ "Refresh" => "Atnaujinti",
+ "Settings" => "Nustatymai",
+ "Maximize" => "Padidinti",
+ "About" => "Apie",
+ "files" => "Failai",
+ "selected files" => "Pasirinkti failus",
+ "View:" => "Peržiūra:",
+ "Show:" => "Rodyti:",
+ "Order by:" => "Rikiuoti:",
+ "Thumbnails" => "Sumažintos iliustracijos",
+ "List" => "Sąrašas",
+ "Name" => "Pavadinimas",
+ "Type" => "Tipas",
+ "Size" => "Dydis",
+ "Date" => "Data",
+ "Descending" => "Mažejančia tvarka",
+ "Uploading file..." => "Įkeliamas failas...",
+ "Loading image..." => "Kraunami paveikslėliai...",
+ "Loading folders..." => "Kraunami katalogai...",
+ "Loading files..." => "Kraunami failai...",
+ "New Subfolder..." => "Naujas katalogas...",
+ "Rename..." => "Pervadinti...",
+ "Delete" => "Ištrinti",
+ "OK" => "OK",
+ "Cancel" => "Atšaukti",
+ "Select" => "Pažymėti",
+ "Select Thumbnail" => "Pasirinkti sumažintą paveikslėlį",
+ "Select Thumbnails" => "Pasirinkti sumažintus paveikslėlius",
+ "View" => "Peržiūra",
+ "Download" => "Atsisiųsti",
+ "Download files" => "Atsisiųsti failus",
+ "Clipboard" => "Laikinoji atmintis",
+ "Checking for new version..." => "Tikrinama nauja versija...",
+ "Unable to connect!" => "Nepavyko prisijungti!",
+ "Download version {version} now!" => "Siųsti versiją {version} dabar!",
+ "KCFinder is up to date!" => "KCFinder yra naujausios versijos!",
+ "Licenses:" => "Licenzijos:",
+ "Attention" => "Dėmesio",
+ "Question" => "Klausimas",
+ "Yes" => "Taip",
+ "No" => "Ne",
+ "You cannot rename the extension of files!" => "Negalima keisti failų plėtinių!",
+ "Uploading file {number} of {count}... {progress}" => "Įkeliamas {number} failas iš {count}... {progress}",
+ "Failed to upload {filename}!" => "Nepavyko įkelti {filename}!",
+ "Close" => "Uždaryti",
+ "Previous" => "Ankstesnis",
+ "Next" => "Kitas",
+ "Confirmation" => "Patvirtinimas",
+ "Warning" => "Įspėjimas",
+);
diff --git a/kcfinder/lang/lv.php b/kcfinder/lang/lv.php
new file mode 100644
index 00000000..a6be842b
--- /dev/null
+++ b/kcfinder/lang/lv.php
@@ -0,0 +1,127 @@
+ "lv_LV.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %Y. gada %e. %B",
+ '_dateTimeMid' => "%a, %Y. %e. %b",
+ '_dateTimeSmall' => "%Y.%m.%d %H:%M",
+
+ "You don't have permissions to upload files." => "Jums nav atļaujas, lai augšupielādētu failu.",
+ "You don't have permissions to browse server." => "Jums nav atļaujas pārlūkot serverī.",
+ "Cannot move uploaded file to target folder." => "Nevar augšupielādēt failu uz mērķa mapi.",
+ "Unknown error." => "Nezināma kļūda.",
+ "The uploaded file exceeds {size} bytes." => "Augšupielādētais fails pārsniedz {size} baitus.",
+ "The uploaded file was only partially uploaded." => "Augšupielādētais fails tika augšupielādēts tikai daļēji.",
+ "No file was uploaded." => "Neviens fails netika augšupielādēts.",
+ "Missing a temporary folder." => "Trūkst pagaidu mapē.",
+ "Failed to write file." => "Neizdevās ierakstīt failā.",
+ "Denied file extension." => "Liegta piekļuve faila paplašinājums.",
+ "Unknown image format/encoding." => "Nezināms attēlu formāts / kodējumu.",
+ "The image is too big and/or cannot be resized." => "Attēls ir pārāk liels un / vai izmērus nevar mainīt.",
+ "Cannot create {dir} folder." => "Nevar izveidot {dir} mapē.",
+ "Cannot rename the folder." => "Nevar pārdēvēt mapi.",
+ "Cannot write to upload folder." => "Nevar ierakstīt augšupielādes mape.",
+ "Cannot read .htaccess" => "Nevar lasīt failu .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Nepareizs fails .htaccess būs jānoņem. Nevar pārrakstīt!",
+ "Cannot read upload folder." => "Nevar lasīt failu augšupielāde mapē.",
+ "Cannot access or create thumbnails folder." => "Nevar piekļūt vai izveidot sīktēlu mapei.",
+ "Cannot access or write to upload folder." => "Nevar piekļūt vai rakstīt augšupielādēt mapes.",
+ "Please enter new folder name." => "Lūdzu, ievadiet jaunu mapes nosaukumu.",
+ "Unallowable characters in folder name." => "Nepieļaujamas mapes nosaukuma rakstzīmes.",
+ "Folder name shouldn't begins with '.'" => "Mapes nosaukums nedrīkst sāk ar '.'",
+ "Please enter new file name." => "Lūdzu, ievadiet jaunu faila nosaukumu.",
+ "Unallowable characters in file name." => "Nepieļaujami rakstzīmes faila nosaukumu.",
+ "File name shouldn't begins with '.'" => "Faila nosaukums nedrīkst sāk ar '.'",
+ "Are you sure you want to delete this file?" => "Vai tiešām vēlaties izdzēst šo failu?",
+ "Are you sure you want to delete this folder and all its content?" => "Vai tiešām vēlaties izdzēst šo mapi un visu tās saturu?",
+ "Non-existing directory type." => "Minimāla direktorija tips.",
+ "Undefined MIME types." => "Nedefinēts MIME tipu.",
+ "Fileinfo PECL extension is missing." => "Trūkst faila paplašinājuma Fileinfo PECL.",
+ "Opening fileinfo database failed." => "Atverot fileinfo datu bāzi neizdevās.",
+ "You can't upload such files." => "Nevar augšupielādēt šo failu.",
+ "The file '{file}' does not exist." => "Fails' {file} 'nepastāv.",
+ "Cannot read '{file}'." => "Nevar nolasīt '{file}'.",
+ "Cannot copy '{file}'." => "Nevar kopēt '{file}'.",
+ "Cannot move '{file}'." => "Nevar pārvietot '{file}'.",
+ "Cannot delete '{file}'." => "Nevar izdzēst '{file}'.",
+ "Cannot delete the folder." => "Nevar izdzēst mapi.",
+ "Click to remove from the Clipboard" => "Noklikšķiniet, lai noņemtu no starpliktuves",
+ "This file is already added to the Clipboard." => "Šis fails jau ir pievienots starpliktuvē.",
+ "The files in the Clipboard are not readable." => "Failu starpliktuvē nav lasāms.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} failu starpliktuvē nav lasāms. Vai vēlaties kopēt visu?",
+ "The files in the Clipboard are not movable." => "Failu starpliktuvē nav pārvietojams.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} failu starpliktuvē nav pārvietojams. Vai vēlaties pārvietot citur?",
+ "The files in the Clipboard are not removable." => "Failu starpliktuvē nav noņemami.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} failu starpliktuvē nav noņemami. Vai vēlaties dzēst visu?",
+ "The selected files are not removable." => "Atlasītie faili nav noņemama.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} atlasītie faili nav noņemama. Vai vēlaties dzēst visu?",
+ "Are you sure you want to delete all selected files?" => "Vai tiešām vēlaties izdzēst visus atlasītos failus?",
+ "Failed to delete {count} files/folders." => "Neizdevās izdzēst {count} failus / mapes.",
+ "A file or folder with that name already exists." => "Fails vai mape ar šādu nosaukumu jau pastāv.",
+ "Copy files here" => "Kopēt failus šeit",
+ "Move files here" => "Pārvietot failus šeit",
+ "Delete files" => "Dzēst failus",
+ "Clear the Clipboard" => "Notīrīt starpliktuvi",
+ "Are you sure you want to delete all files in the Clipboard?" => "Vai tiešām vēlaties dzēst visus failus no starpliktuves? ",
+ "Copy {count} files" => "Kopēt {count} faili ",
+ "Move {count} files" => "Pārvietot {count} faili ",
+ "Add to Clipboard" => "Pievienot starpliktuvei ",
+ "Inexistant or inaccessible folder." => "Inexistant vai piekļūt mapei.",
+ "New folder name:" => "Jaunās mapes nosaukums:",
+ "New file name:" => "Jauns faila nosaukums:",
+ "Upload" => "Augšupielādēt",
+ "Refresh" => "Atsvaidzināt",
+ "Settings" => "Iestatījumi",
+ "Maximize" => "Maksimizēt",
+ "About" => "Par",
+ "files" => "faili",
+ "selected files" => "atlasītie faili",
+ "View:" => "Skatīt:",
+ "Show:" => "Rādīt:",
+ "Order by:" => "Kārtot pēc: ",
+ "Thumbnails" => "Sīktēli ",
+ "List" => "Saraksts ",
+ "Name" => "Nosaukums ",
+ "Type" => "Tips ",
+ "Size" => "Izmērs ",
+ "Date" => "Datums",
+ "Descending" => "Dilstošā secībā",
+ "Uploading file..." => "... faila augšupielāde",
+ "Loading image..." => "Ielādē attēlu...",
+ "Loading folders..." => "Ielādē mapes...",
+ "Loading files..." => "... failu ielāde",
+ "New Subfolder..." => "Jauna apakšmape...",
+ "Rename..." => "Pārdēvēt...",
+ "Delete" => "Dzēst",
+ "OK" => "Labi",
+ "Cancel" => "Atcelt",
+ "Select" => "Izvēlieties",
+ "Select Thumbnail" => "Izvēlieties sīktēlu",
+ "Select Thumbnails" => "Atlasiet sīktēlus",
+ "View" => "Skats",
+ "Download" => "Lejupielādēt",
+ "Download files" => "Lejupielādēt failus",
+ "Clipboard" => "Starpliktuve",
+ "Checking for new version..." => "... jaunās versijas pārbaude",
+ "Unable to connect!" => "Nevar izveidot savienojumu.",
+ "Download version {version} now!" => "Lejupielādēt versiju {version} tagad!",
+ "KCFinder is up to date!" => "KCFinder ir aktuāla!",
+ "Licenses:" => "Licences:",
+ "Attention" => "Uzmanību",
+ "Question" => "Jautājums",
+ "Yes" => "Jā",
+ "No" => "Nr.",
+ "You cannot rename the extension of files!" => "Paplašinājums nevar pārdēvēt failu!",
+ "Uploading file {number} of {count}... {progress}" => "Augšupielādējot failu {number} no {count}... {progress}",
+ "Failed to upload {filename}!" => "Neizdevās augšupielādēt {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/nl.php b/kcfinder/lang/nl.php
new file mode 100644
index 00000000..434ca850
--- /dev/null
+++ b/kcfinder/lang/nl.php
@@ -0,0 +1,133 @@
+
+ * update: Richard Leurs
+ */
+
+$lang = array(
+
+ '_locale' => "nl_NL.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B.%Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d/%m/%Y %H:%M",
+
+ "You don't have permissions to upload files." => "U heeft geen toestemming om bestanden te uploaden.",
+ "You don't have permissions to browse server." => "U heeft geen toegang tot de server.",
+ "Cannot move uploaded file to target folder." => "Het te uploaden bestand kon niet naar de doelmap verplaatst worden.",
+ "Unknown error." => "Onbekende foutmelding.",
+ "The uploaded file exceeds {size} bytes." => "De bestandsgrootte van het bestand overschrijdt de limiet {size} bytes.",
+ "The uploaded file was only partially uploaded." => "Het te uploaden bestand is slechts gedeeltelijk geupload.",
+ "No file was uploaded." => "Er is geen bestand geupload.",
+ "Missing a temporary folder." => "Een tijdelijke map ontbreekt.",
+ "Failed to write file." => "Poging tot schrijven van bestand is mislukt.",
+ "Denied file extension." => "De extensie van dit bestand is niet toegestaan.",
+ "Unknown image format/encoding." => "Onbekende afbeeldingsformaats/-codering.",
+ "The image is too big and/or cannot be resized." => "De afbeelding is te groot en/of de grootte kan niet aangepast worden.",
+ "Cannot create {dir} folder." => "Kan de map {dir} niet aanmaken.",
+ "Cannot rename the folder." => "De map kan niet hernoemd worden.",
+ "Cannot write to upload folder." => "Kan niet naar de uploadmap schrijven.",
+ "Cannot read .htaccess" => "Kan .htaccess niet lezen.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Verkeerd .htaccess bestand. Bestand kan niet herschreven worden!",
+ "Cannot read upload folder." => "Uploadmap kan niet uitgelezen worden.",
+ "Cannot access or create thumbnails folder." => "Het is niet mogelijk om een miniatuurweergaven map aan te maken of te benaderen.",
+ "Cannot access or write to upload folder." => "Het is niet mogelijk om in de uploadmap te schrijven of deze te benaderen.",
+ "Please enter new folder name." => "Vul a.u.b. een nieuwe mapnaam in.",
+ "Unallowable characters in folder name." => "Er zijn niet toegestane karakters gebruikt in de mapnaam.",
+ "Folder name shouldn't begins with '.'" => "Een mapnaam mag niet met '.' beginnen.",
+ "Please enter new file name." => "Vul a.u.b. een nieuwe bestandsnaam in.",
+ "Unallowable characters in file name." => "Er zijn niet toegestane karakters gebruikt in de bestandsnaam.",
+ "File name shouldn't begins with '.'" => "Een bestandsnaam mag niet met '.' beginnen.",
+ "Are you sure you want to delete this file?" => "Weet u zeker dat u dit bestand wilt verwijderen?",
+ "Are you sure you want to delete this folder and all its content?" => "Weet u zeker dat u deze map en alle inhoud ervan wilt verwijderen?",
+ "Non-existing directory type." => "Het maptype bestaat niet.",
+ "Undefined MIME types." => "Onbekend MIME type.",
+ "Fileinfo PECL extension is missing." => "Bestandsinformatie PECL extensie ontbreekt.",
+ "Opening fileinfo database failed." => "Openen van bestandsinformatie database is mislukt.",
+ "You can't upload such files." => "Uploaden van dergelijke bestanden is niet mogelijk.",
+ "The file '{file}' does not exist." => "Het bestand '{file}' bestaat niet.",
+ "Cannot read '{file}'." => "Kan bestand '{file}' niet lezen.",
+ "Cannot copy '{file}'." => "Kan bestand '{file}' niet kopiëren.",
+ "Cannot move '{file}'." => "Kan bestand '{file}' niet verplaatsen.",
+ "Cannot delete '{file}'." => "Kan bestand '{file}' niet verwijderen.",
+ "Cannot delete the folder." => "De map kan niet verwijderd worden.",
+ "Click to remove from the Clipboard" => "Klik om te verwijderen van het klembord.",
+ "This file is already added to the Clipboard." => "Dit bestand was reeds toegevoegd aan het klembord.",
+ "The files in the Clipboard are not readable." => "De bestanden op het klembord kunnen niet gelezen worden.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} bestanden op het klembord zijn niet leesbaar. Wilt u de rest toch kopiëren?",
+ "The files in the Clipboard are not movable." => "De bestanden op het klembord kunnen niet verplaatst worden.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} bestanden op het klembord kunnen niet verplaatst worden. Wilt u de rest toch verplaatsen?",
+ "The files in the Clipboard are not removable." => "De bestanden op het klembord kunnen niet verwijderd worden.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} bestanden op het klembord kunnen niet verwijderd worden. Wilt u de rest toch verwijderen?",
+ "The selected files are not removable." => "De geselecteerde bestanden kunnen niet verwijderd worden.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} geselecteerde bestanden kunnen niet verwijderd worden. Wilt u de rest toch verwijderen?",
+ "Are you sure you want to delete all selected files?" => "Weet u zeker dat u alle geselcteerde bestanden wilt verwijderen?",
+ "Failed to delete {count} files/folders." => "{count} bestanden/mappen konden niet verwijderd worden.",
+ "A file or folder with that name already exists." => "Er bestaat reeds een bestand of map met die naam.",
+ "Copy files here" => "Kopieer bestanden hierheen",
+ "Move files here" => "Verplaats bestanden hierheen",
+ "Delete files" => "Verwijder bestanden",
+ "Clear the Clipboard" => "Klembord leegmaken",
+ "Are you sure you want to delete all files in the Clipboard?" => "Weet u zeker dat u alle bestanden op het klembord wilt verwijderen?",
+ "Copy {count} files" => "Kopieer {count} bestanden",
+ "Move {count} files" => "Verplaats {count} bestanden",
+ "Add to Clipboard" => "Voeg toe aan klembord",
+ "Inexistant or inaccessible folder." => "Map bestaat niet of kon niet worden benaderd.",
+ "New folder name:" => "Nieuwe mapnaam:",
+ "New file name:" => "Nieuwe bestandsnaam:",
+ "Upload" => "Upload",
+ "Refresh" => "Verversen",
+ "Settings" => "Instellingen",
+ "Maximize" => "Maximaliseren",
+ "About" => "Over",
+ "files" => "bestanden",
+ "selected files" => "geselecteerde bestanden",
+ "View:" => "Beeld:",
+ "Show:" => "Weergeven:",
+ "Order by:" => "Sorteren op:",
+ "Thumbnails" => "Miniatuurweergaven",
+ "List" => "Lijst",
+ "Name" => "Naam",
+ "Type" => "Type",
+ "Size" => "Grootte",
+ "Date" => "Datum",
+ "Descending" => "Aflopend",
+ "Uploading file..." => "Bestand uploaden...",
+ "Loading image..." => "Afbeelding wordt geladen...",
+ "Loading folders..." => "Mappen worden geladen...",
+ "Loading files..." => "Bestanden worden geladen ...",
+ "New Subfolder..." => "Nieuwe submap...",
+ "Rename..." => "Hernoemen...",
+ "Delete" => "Verwijderen",
+ "OK" => "OK",
+ "Cancel" => "Annuleren",
+ "Select" => "Selecteer",
+ "Select Thumbnail" => "Selecteer miniatuurweergave",
+ "Select Thumbnails" => "Kies miniatuurweergaven",
+ "View" => "Beeld",
+ "Download" => "Download",
+ "Download files" => "Bestanden downloaden",
+ "Clipboard" => "Klembord",
+ "Checking for new version..." => "Zoeken naar een nieuwere versie...",
+ "Unable to connect!" => "Kan geen verbinding maken!",
+ "Download version {version} now!" => "Download versie {version} nu!",
+ "KCFinder is up to date!" => "KCFinder is up to date!",
+ "Licenses:" => "Licenties:",
+ "Attention" => "Attentie",
+ "Question" => "Vraag",
+ "Yes" => "Ja",
+ "No" => "Nee",
+ "You cannot rename the extension of files!" => "U kan de extensie van bestanden niet hernoemen!",
+ "Uploading file {number} of {count}... {progress}" => "Bestand {number} van de {count} aan het uploaden... {progress}",
+ "Failed to upload {filename}!" => "Uploaden van {filename} mislukt!",
+ "Close" => "Vorige",
+ "Previous" => "Terug",
+ "Next" => "Volgende",
+ "Confirmation" => "Bevestiging",
+ "Warning" => "Waarschuwing",
+);
+
+?>
diff --git a/kcfinder/lang/no.php b/kcfinder/lang/no.php
new file mode 100644
index 00000000..80aaf6a6
--- /dev/null
+++ b/kcfinder/lang/no.php
@@ -0,0 +1,242 @@
+ "nb_NO.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." =>
+ "Du har ikke tilgang til å laste opp filer",
+
+ "You don't have permissions to browse server." =>
+ "Du har ikke tilgang til å bla igjennom server",
+
+ "Cannot move uploaded file to target folder." =>
+ "Kan ikke flytte fil til denne mappen",
+
+ "Unknown error." =>
+ "Ukjent feil.",
+
+ "The uploaded file exceeds {size} bytes." =>
+ "Filen er for stor.",
+
+ "The uploaded file was only partially uploaded." =>
+ "Opplastning delvis fullført.",
+
+ "No file was uploaded." =>
+ "Ingen filer lastet opp",
+
+ "Missing a temporary folder." =>
+ "Mangler midlertidig mappe.",
+
+ "Failed to write file." =>
+ "Feil ved skriving til fil.",
+
+ "Denied file extension." =>
+ "Feil filformat",
+
+ "Unknown image format/encoding." =>
+ "Ukjent bildeformat.",
+
+ "The image is too big and/or cannot be resized." =>
+ "Bildet er for stort eller kan ikke skaleres ned.",
+
+ "Cannot create {dir} folder." =>
+ "Kan ikke opprette mappe.",
+
+ "Cannot write to upload folder." =>
+ "Ingen tilgang til å skrive til denne mappen.",
+
+ "Cannot read .htaccess" =>
+ "Kan ikke lese .htaccess.",
+
+ "Incorrect .htaccess file. Cannot rewrite it!" =>
+ "Feil! Kan ikke skrive til denne filen",
+
+ "Cannot read upload folder." =>
+ "Kan ikke lese denne mappen.",
+
+ "Cannot access or create thumbnails folder." =>
+ "Ikke tilgang til mappen for miniatyrbilder",
+
+ "Cannot access or write to upload folder." =>
+ "Ikke tilgang til opplastningsmappe.",
+
+ "Please enter new folder name." =>
+ "Skriv inn nytt navn til denne mappen.",
+
+ "Unallowable characters in folder name." =>
+ "Ulovlige tegn i mappenavn.",
+
+ "Folder name shouldn't begins with '.'" =>
+ "Mappenavnet kan ikke begynne med '.'",
+
+ "Please enter new file name." =>
+ "Skriv inn nytt filnavn ",
+
+ "Unallowable characters in file name." =>
+ "Ulovlige tegn i filnavn.",
+
+ "File name shouldn't begins with '.'" =>
+ "Filnavn kan ikke starte med '.'",
+
+ "Are you sure you want to delete this file?" =>
+ "Er du sikker på at du vil slette denne filen?",
+
+ "Are you sure you want to delete this folder and all its content?" =>
+ "Er du sikker på at du vil slette denne mappen og innholdet i den?",
+
+ "Inexistant or inaccessible folder." =>
+ "Kan ikke lese mappe.",
+
+ "Undefined MIME types." =>
+ "Undefined MIME types.",
+
+ "Fileinfo PECL extension is missing." =>
+ "Fileinfo PECL extension is missing.",
+
+ "Opening fileinfo database failed." =>
+ "Opening fileinfo database failed",
+
+ "You can't upload such files." =>
+ "Du kan ikke laste opp denne typen filer",
+
+ "The file '{file}' does not exist." =>
+ "Filen '{file}' finnes ikke.",
+
+ "Cannot read '{file}'." =>
+ "Kan ikke lese '{file}'.",
+
+ "Cannot copy '{file}'." =>
+ "Kan ikke kopiere '{file}'.",
+
+ "Cannot move '{file}'." =>
+ "Kan ikke flytte '{file}'.",
+
+ "Cannot delete '{file}'." =>
+ "Kan ikke slette '{file}'.",
+
+ "Click to remove from the Clipboard" =>
+ "Klikk for å fjerne fra utklippstavle",
+
+ "This file is already added to the Clipboard." =>
+ "Filen finnes allerede på utklippstavlen",
+
+ "Copy files here" =>
+ "Kopier filene til ;",
+
+ "Move files here" =>
+ "Flytt filene til ;",
+
+ "Delete files" =>
+ "Slett filer",
+
+ "Clear the Clipboard" =>
+ "Tøm utklippstavle",
+
+ "Are you sure you want to delete all files in the Clipboard?" =>
+ "Er du sikker på at du vil slette alle filene i utklippstavlen?",
+
+ "Copy {count} files" =>
+ "Kopier {count} filer",
+
+ "Move {count} files" =>
+ "Flytt {count} filer ",
+
+ "Add to Clipboard" =>
+ "Legg til i utklippstavle",
+
+ "New folder name:" => "Nytt mappenavn:",
+ "New file name:" => "Nytt filnavn:",
+
+ "Upload" => "Last opp",
+ "Refresh" => "Oppdater",
+ "Settings" => "Innstillinger",
+ "Maximize" => "Maksimer",
+ "About" => "Om/Hjelp",
+ "files" => "filer",
+ "View:" => "Vis:",
+ "Show:" => "Vis:",
+ "Order by:" => "Sorter etter:",
+ "Thumbnails" => "Miniatyrbilder",
+ "List" => "Liste",
+ "Name" => "Navn",
+ "Size" => "Størrelse",
+ "Date" => "Dato",
+ "Descending" => "Synkende",
+ "Uploading file..." => "Laster opp fil...",
+ "Loading image..." => "Laster bilde...",
+ "Loading folders..." => "Laster mapper...",
+ "Loading files..." => "Laster filer...",
+ "New Subfolder..." => "Ny undermappe...",
+ "Rename..." => "Endre navn...",
+ "Delete" => "Slett",
+ "OK" => "OK",
+ "Cancel" => "Avbryt",
+ "Select" => "Velg",
+ "Select Thumbnail" => "Velg miniatyrbilde",
+ "View" => "Vis",
+ "Download" => "Last ned",
+ "Clipboard" => "Utklippstavle",
+
+ // VERSION 2 NEW LABELS
+
+ "Cannot rename the folder." =>
+ "Kan ikke endre navnet på mappen.",
+
+ "Non-existing directory type." =>
+ "Denne finnes ikke.",
+
+ "Cannot delete the folder." =>
+ "Kan ikke slette mappe.",
+
+ "The files in the Clipboard are not readable." =>
+ "Kan ikke lese filene i utklippstavlen.",
+
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" =>
+ "{count} filer i utklippstavlen kan ikke leses, ønsker du kopiere resten av filene?",
+
+ "The files in the Clipboard are not movable." =>
+ "Filene i utklippstavlen kan ikke flyttes",
+
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" =>
+ "{count} filer i utklippstavlen kan ikke flyttes, ønsker du å flytte resten?",
+
+ "The files in the Clipboard are not removable." =>
+ "Filene i utklippstavlen kan ikke flyttes.",
+
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" =>
+ "{count} filer i utklippstavlen kan ikke flyttes, ønsker du å flytte resten?",
+
+ "The selected files are not removable." =>
+ "Merkede filer kan ikke flyttes.",
+
+ "{count} selected files are not removable. Do you want to delete the rest?" =>
+ "{count} filer kan ikke flyttes, ønsker du å flytte resten?",
+
+ "Are you sure you want to delete all selected files?" =>
+ "Er du sikker på at du ønsker å slette alle merkede filer?",
+
+ "Failed to delete {count} files/folders." =>
+ "Feil ved sletting av {count} filer/mapper.",
+
+ "A file or folder with that name already exists." =>
+ "En fil eller mappe finnes allerede med dette navnet",
+
+ "selected files" => "merkede filer",
+ "Type" => "Type",
+ "Select Thumbnails" => "Velg miniatyrbilde",
+ "Download files" => "Last ned filer",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/pl.php b/kcfinder/lang/pl.php
new file mode 100644
index 00000000..413b5f92
--- /dev/null
+++ b/kcfinder/lang/pl.php
@@ -0,0 +1,127 @@
+ "pl_PL.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Nie masz zezwolenia na wysyłanie plików.",
+ "You don't have permissions to browse server." => "Nie masz zezwolenia na przeglądanie serwera.",
+ "Cannot move uploaded file to target folder." => "Nie można przenieść wysłanego pliku do folderu plików wysłanych.",
+ "Unknown error." => "Nieokreślony błąd.",
+ "The uploaded file exceeds {size} bytes." => "Wysyłany plik przekroczył rozmiar {size} bajtów",
+ "The uploaded file was only partially uploaded." => "Wysyłany plik nie został przesłany w całości.",
+ "No file was uploaded." => "Żaden plik nie został przesłany",
+ "Missing a temporary folder." => "Brak katalogu domyślnego.",
+ "Failed to write file." => "Błąd zapisu pliku.",
+ "Denied file extension." => "Niedozwolone rozszerzenie pliku.",
+ "Unknown image format/encoding." => "Nie znany format/kodowanie pliku.",
+ "The image is too big and/or cannot be resized." => "Obraz jest zbyt duży i/lub nie może zostać zmieniony jego rozmiar.",
+ "Cannot create {dir} folder." => "Nie można utworzyć katalogu {dir}.",
+ "Cannot rename the folder." => "Nie można zmienić nazwy katalogu.",
+ "Cannot write to upload folder." => "Nie można zapisywać do katalogu plików wysłanych.",
+ "Cannot read .htaccess" => "Nie można odczytać pliku .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Nie prawidłowy plik .htaccess. Nie można go zapisać!",
+ "Cannot read upload folder." => "Nie można odczytać katalogu plików wysłanych.",
+ "Cannot access or create thumbnails folder." => "Nie ma dostępu lub nie można utworzyć katalogu miniatur.",
+ "Cannot access or write to upload folder." => "Nie ma dostępu lub nie można zapisywać do katalogu plików wysłanych.",
+ "Please enter new folder name." => "Proszę podać nową nazwę katalogu.",
+ "Unallowable characters in folder name." => "Niedozwolony znak w nazwie folderu.",
+ "Folder name shouldn't begins with '.'" => "Nazwa katalogu nie może zaczynać się od '.'",
+ "Please enter new file name." => "Proszę podać nową nazwę pliku",
+ "Unallowable characters in file name." => "Nie dozwolony znak w nazwie pliku.",
+ "File name shouldn't begins with '.'" => "Nazwa pliku nie powinna zaczynać się od '.'",
+ "Are you sure you want to delete this file?" => "Czy jesteś pewien, że chcesz skasować ten plik?",
+ "Are you sure you want to delete this folder and all its content?" => "Czy jesteś pewien, że chcesz skasować ten katalog i jego zawartość?",
+ "Non-existing directory type." => "Nie istniejący katalog.",
+ "Undefined MIME types." => "Niezidentyfikowany typ MIME.",
+ "Fileinfo PECL extension is missing." => "Brak rozszerzenia Fileinfo PECL.",
+ "Opening fileinfo database failed." => "Otwieranie bazy danych fileinfo nie udane.",
+ "You can't upload such files." => "Nie możesz wysyłać plików tego typu.",
+ "The file '{file}' does not exist." => "Plik {file} nie istnieje.",
+ "Cannot read '{file}'." => "Nie można odczytać pliku '{file}'.",
+ "Cannot copy '{file}'." => "Nie można skopiować pliku '{file}'.",
+ "Cannot move '{file}'." => "Nie można przenieść pliku '{file}'.",
+ "Cannot delete '{file}'." => "Nie można usunąć pliku '{file}'.",
+ "Cannot delete the folder." => "Nie można usunąć katalogu.",
+ "Click to remove from the Clipboard" => "Kliknij aby usunąć ze Schowka",
+ "This file is already added to the Clipboard." => "Ten plik już został dodany do Schowka.",
+ "The files in the Clipboard are not readable." => "Pliki w Schowku nie mogą zostać odczytane.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} plik(i/ów) ze Schowka nie może zostać odczytanych. Czy chcesz skopiować pozostałe?",
+ "The files in the Clipboard are not movable." => "Pliki w Schowku nie mogą zostać przeniesione.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} plik(i/ów) ze Schowka nie może zostać przeniesionych. Czy chcesz przenieść pozostałe?",
+ "The files in the Clipboard are not removable." => "Nie można usunąć plików ze Schowka.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} plik(i/ów) ze Schowka nie może zostać usunięty(ch). Czy usunąć pozostałe?",
+ "The selected files are not removable." => "Wybrane pliki nie mogą zostać usunięte.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} wybrany(ch) plików nie może zostać usunięte. Czy usunąć pozostałe?",
+ "Are you sure you want to delete all selected files?" => "Czy jesteś pewien że, chcesz usunąć wszystkie wybrane pliki?",
+ "Failed to delete {count} files/folders." => "Nie udało się usunąć {count} plik(i/ów) / folder(u/ów).",
+ "A file or folder with that name already exists." => "Plik lub katalog o tej nazwie już istnieje.",
+ "Copy files here" => "Kopiuj pliki tutaj",
+ "Move files here" => "Przenieś pliki tutaj",
+ "Delete files" => "Usuń pliki",
+ "Clear the Clipboard" => "Wyczyść Schowek",
+ "Are you sure you want to delete all files in the Clipboard?" => "Czy jesteś pewien, że chcesz usunąć wszystkie pliki ze schowka?",
+ "Copy {count} files" => "Kopiowanie {count} plików",
+ "Move {count} files" => "Przenoszenie {count} plików",
+ "Add to Clipboard" => "Dodaj do Schowka",
+ "Inexistant or inaccessible folder." => "Nieistniejący lub niedostępny folder.",
+ "New folder name:" => "Nazwa nowego katalogu:",
+ "New file name:" => "Nowa nazwa pliku:",
+ "Upload" => "Wyślij",
+ "Refresh" => "Odśwież",
+ "Settings" => "Ustawienia",
+ "Maximize" => "Maksymalizuj",
+ "About" => "O...",
+ "files" => "pliki",
+ "selected files" => "wybrane pliki",
+ "View:" => "Widok:",
+ "Show:" => "Pokaż:",
+ "Order by:" => "Sortuj według:",
+ "Thumbnails" => "Miniatury",
+ "List" => "Lista",
+ "Name" => "Nazwa",
+ "Type" => "Typ",
+ "Size" => "Rozmiar",
+ "Date" => "Data",
+ "Descending" => "Malejąco",
+ "Uploading file..." => "Wysyłanie pliku...",
+ "Loading image..." => "Ładowanie obrazu...",
+ "Loading folders..." => "Ładowanie katalogów...",
+ "Loading files..." => "Ładowanie plików...",
+ "New Subfolder..." => "Nowy pod-katalog...",
+ "Rename..." => "Zmień nazwę...",
+ "Delete" => "Usuń",
+ "OK" => "OK",
+ "Cancel" => "Anuluj",
+ "Select" => "Wybierz",
+ "Select Thumbnail" => "Wybierz miniaturę",
+ "Select Thumbnails" => "Wybierz miniatury",
+ "View" => "Podgląd",
+ "Download" => "Pobierz",
+ "Download files" => "Pobierz pliki",
+ "Clipboard" => "Schowek",
+ "Checking for new version..." => "Sprawdzanie najnowszej dostępnej wersji ...",
+ "Unable to connect!" => "Nie udało się nawiązać połączenia!",
+ "Download version {version} now!" => "Pobierz wersję {version}.",
+ "KCFinder is up to date!" => "Korzystasz z najnowszej wersji KCFinder!",
+ "Licenses:" => "Licencja:",
+ "Attention" => "Uwaga",
+ "Question" => "Pytanie",
+ "Yes" => "Tak",
+ "No" => "Nie",
+ "You cannot rename the extension of files!" => "Nie możesz zmienić rozszerzeń plików!",
+ "Uploading file {number} of {count}... {progress}" => "Wysyłanie pliku nr {number} spośród {count} ... {progress}",
+ "Failed to upload {filename}!" => "Wysyłanie pliku {filename} nie powiodło się!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/pt-br.php b/kcfinder/lang/pt-br.php
new file mode 100644
index 00000000..8d609535
--- /dev/null
+++ b/kcfinder/lang/pt-br.php
@@ -0,0 +1,130 @@
+ "pt_BR.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Você não tem permissões para fazer upload de arquivos.",
+ "You don't have permissions to browse server." => "Você não tem permissões para procurar no servidor.",
+ "Cannot move uploaded file to target folder." => "Não é possível mover o arquivo enviado para a pasta de destino.",
+ "Unknown error." => "Erro desconhecido.",
+ "The uploaded file exceeds {size} bytes." => "O arquivo enviado excede {size} bytes.",
+ "The uploaded file was only partially uploaded." => "O arquivo enviado foi apenas parcialmente carregado.",
+ "No file was uploaded." => "Nenhum arquivo foi transferido.",
+ "Missing a temporary folder." => "Faltando uma pasta temporária.",
+ "Failed to write file." => "Falha ao gravar arquivo.",
+ "Denied file extension." => "Extensão de arquivo não permitida.",
+ "Unknown image format/encoding." => "Formato de imagem desconhecido/codificação.",
+ "The image is too big and/or cannot be resized." => "A imagem é muito grande e/ou não pode ser redimensionada.",
+ "Cannot create {dir} folder." => "Não é possível criar pasta em '{dir}'.",
+ "Cannot rename the folder." => "Não é possível renomear a pasta.",
+ "Cannot write to upload folder." => "Não é possível salvar na pasta.",
+ "Cannot read .htaccess" => "Não é possível ler '.htaccess'.",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Arquivo '.htaccess' incorreto. Não é possível alterar.",
+ "Cannot read upload folder." => "Não é possível ler a pasta de upload.",
+ "Cannot access or create thumbnails folder." => "Não é possível acessar ou criar pasta de miniaturas.",
+ "Cannot access or write to upload folder." => "Não é possível acessar ou salvar para a pasta.",
+ "Please enter new folder name." => "Por favor, digite o nome da nova pasta.",
+ "Unallowable characters in folder name." => "Caracteres no nome da pasta não Autorizado.",
+ "Folder name shouldn't begins with '.'" => "Nome da pasta não deve começar com '.'.",
+ "Please enter new file name." => "Por favor, digite o novo nome de arquivo.",
+ "Unallowable characters in file name." => "Caracteres no nome do arquivo não Autorizado.",
+ "File name shouldn't begins with '.'" => "O nome da pasta não deve começar por '.'.",
+ "Are you sure you want to delete this file?" => "Tem a certeza de que deseja excluir este arquivo?",
+ "Are you sure you want to delete this folder and all its content?" => "Tem a certeza de que deseja excluir esta pasta e todo o seu conte�do?",
+ "Non-existing directory type." => "Tipo de diretório não existente.",
+ "Undefined MIME types." => "Tipos MIME indefinidos.",
+ "Fileinfo PECL extension is missing." => "Está faltando Informações do arquivo extensão PECL.",
+ "Opening fileinfo database failed." => "Abrir banco de dados de fileinfo falhou.",
+ "You can't upload such files." => "Você não pode enviar esses arquivos.",
+ "The file '{file}' does not exist." => "O arquivo '{file}' não existe.",
+ "Cannot read '{file}'." => "Não é possível ler '{file}'.",
+ "Cannot copy '{file}'." => "Não é possível copiar '{file}'.",
+ "Cannot move '{file}'." => "Não é possível mover '{file}'.",
+ "Cannot delete '{file}'." => "Não é possível deletar '{file}'.",
+ "Cannot delete the folder." => "Não é possível excluir a pasta.",
+ "Click to remove from the Clipboard" => "Clique para remover da área de transferência",
+ "This file is already added to the Clipboard." => "Este arquivo já foi adicionado à área de transferência.",
+ "The files in the Clipboard are not readable." => "Os arquivos da área de transferência não podem ser lidos.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} arquivos da área de transferência não podem ser lidos. Você deseja copiar o resto?",
+ "The files in the Clipboard are not movable." => "Os arquivos da área de transferência não podem ser removidos.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} arquivos da área de transferência não podem ser movidos. Você deseja mover o resto?",
+ "The files in the Clipboard are not removable." => "Os arquivos da área de transferência não podem ser removidos.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} arquivos da área de transferência não são removíveis. Você deseja excluir o restante?",
+ "The selected files are not removable." => "Os arquivos selecionados não são removíveis.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} arquivos selecionados não são removíveis. Você deseja excluir o restante?",
+ "Are you sure you want to delete all selected files?" => "Tem a certeza de que deseja excluir todos os arquivos selecionados?",
+ "Failed to delete {count} files/folders." => "Não conseguiu excluir {count} arquivos/pastas.",
+ "A file or folder with that name already exists." => "Já existe um arquivo ou pasta com esse nome.",
+ "Copy files here" => "Copiar arquivos aqui",
+ "Move files here" => "Mover arquivos aqui",
+ "Delete files" => "Deletar arquivos",
+ "Clear the Clipboard" => "Limpar a área de transferência",
+ "Are you sure you want to delete all files in the Clipboard?" => "Tem a certeza de que deseja excluir todos os arquivos da área de transferência?",
+ "Copy {count} files" => "Copiar {count} arquivos",
+ "Move {count} files" => "Mover {count} arquivos",
+ "Add to Clipboard" => "Adicionar à área de transferência",
+ "Inexistant or inaccessible folder." => "Pasta inacessível ou inexistente.",
+ "New folder name:" => "Nome da nova pasta:",
+ "New file name:" => "Novo nome do arquivo:",
+ "Upload" => "Enviar arquivo",
+ "Refresh" => "Atualizar",
+ "Settings" => "Configurações",
+ "Maximize" => "Maximizar",
+ "About" => "Sobre",
+ "files" => "Arquivos",
+ "selected files" => "arquivos selecionados",
+ "View:" => "Exibir:",
+ "Show:" => "Mostrar:",
+ "Order by:" => "Ordenar por:",
+ "Thumbnails" => "Miniaturas",
+ "List" => "Lista",
+ "Name" => "Nome",
+ "Type" => "Tipo",
+ "Size" => "Tamanho",
+ "Date" => "Data",
+ "Descending" => "Descendente",
+ "Uploading file..." => "Carregando arquivo...",
+ "Loading image..." => "Carregando imagem...",
+ "Loading folders..." => "Carregando pastas...",
+ "Loading files..." => "Carregando arquivos...",
+ "New Subfolder..." => "Nova subpasta...",
+ "Rename..." => "Renomear...",
+ "Delete" => "Excluir",
+ "OK" => "OK",
+ "Cancel" => "Cancelar",
+ "Select" => "Selecionar",
+ "Select Thumbnail" => "Selecionar miniatura",
+ "Select Thumbnails" => "Selecionar miniaturas",
+ "View" => "Exibir",
+ "Download" => "Download",
+ "Download files" => "Baixar arquivos",
+ "Clipboard" => "área de transferência",
+ "Checking for new version..." => "Checando por nova versão...",
+ "Unable to connect!" => "Não foi possível conectar!",
+ "Download version {version} now!" => "Baixe a versão {version} agora!",
+ "KCFinder is up to date!" => "KCFinder está atualizado!",
+ "Licenses:" => "Licenças",
+ "Attention" => "Atenção",
+ "Question" => "Pergunta",
+ "Yes" => "Sim",
+ "No" => "Não",
+ "You cannot rename the extension of files!" => "Você não pode renomear a extensão de arquivos!",
+ "Uploading file {number} of {count}... {progress}" => "Enviando arquivo {number} de {count}... {progress}",
+ "Failed to upload {filename}!" => "Falha no envio do arquivo {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/pt.php b/kcfinder/lang/pt.php
new file mode 100644
index 00000000..0c9d4be9
--- /dev/null
+++ b/kcfinder/lang/pt.php
@@ -0,0 +1,243 @@
+ "pt_PT.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." =>
+ "Não tem permissão para enviar ficheiros.",
+
+ "You don't have permissions to browse server." =>
+ "Não tem permissão para navegar no servidor.",
+
+ "Cannot move uploaded file to target folder." =>
+ "Não pode mover ficheiros enviados para a pasta definida.",
+
+ "Unknown error." =>
+ "Erro indefinido.",
+
+ "The uploaded file exceeds {size} bytes." =>
+ "O ficheiro enviado tem mais que {size} bytes.",
+
+ "The uploaded file was only partially uploaded." =>
+ "O ficheiro foi apenas enviado parcialmente.",
+
+ "No file was uploaded." =>
+ "Nenhum ficheiro enviado.",
+
+ "Missing a temporary folder." =>
+ "Falta a pasta temporária.",
+
+ "Failed to write file." =>
+ "Não foi possível guardar o ficheiro.",
+
+ "Denied file extension." =>
+ "Extensão do ficheiro inválida.",
+
+ "Unknown image format/encoding." =>
+ "Formato/codificação da imagem desconhecido.",
+
+ "The image is too big and/or cannot be resized." =>
+ "A imagem é muito grande e não pode ser redimensionada.",
+
+ "Cannot create {dir} folder." =>
+ "Não foi possível criar a pasta '{dir}'.",
+
+ "Cannot write to upload folder." =>
+ "Não foi possível guardar o ficheiro.",
+
+ "Cannot read .htaccess" =>
+ "Não foi possível ler o ficheiro .htaccess",
+
+ "Incorrect .htaccess file. Cannot rewrite it!" =>
+ "Ficheiro '.htaccess' incorrecto. Não foi possível altera-lo.",
+
+ "Cannot read upload folder." =>
+ "Não foi possível ler a pasta de upload.",
+
+ "Cannot access or create thumbnails folder." =>
+ "Não foi possível aceder ou criar a pasta de miniaturas.",
+
+ "Cannot access or write to upload folder." =>
+ "Não foi possível aceder ou criar a pasta de upload.",
+
+ "Please enter new folder name." =>
+ "Por favor insira o nome da pasta.",
+
+ "Unallowable characters in folder name." =>
+ "Caracteres não autorizados no nome da pasta.",
+
+ "Folder name shouldn't begins with '.'" =>
+ "O nome da pasta não deve começar por '.'",
+
+ "Please enter new file name." =>
+ "Por favor defina o nome do ficheiro.",
+
+ "Unallowable characters in file name." =>
+ "Caracteres não autorizados no nome do ficheiro.",
+
+ "File name shouldn't begins with '.'" =>
+ "O nome do ficheiro não deve começar por '.'",
+
+ "Are you sure you want to delete this file?" =>
+ "Tem a certeza que deseja apagar este ficheiro?",
+
+ "Are you sure you want to delete this folder and all its content?" =>
+ "Tem a certeza que deseja apagar esta pasta e todos os seus conteúdos?",
+
+ "Inexistant or inaccessible folder." =>
+ "Pasta inexistente ou inacessível.",
+
+ "Undefined MIME types." =>
+ "Tipos MIME indefinidos.",
+
+ "Fileinfo PECL extension is missing." =>
+ "Falta a extensão PECL nas informações do ficheiro.",
+
+ "Opening fileinfo database failed." =>
+ "Erro a abrir a informação do ficheiro.",
+
+ "You can't upload such files." =>
+ "Não pode enviar esse tipo de ficheiros.",
+
+ "The file '{file}' does not exist." =>
+ "O ficheiro '{file}' não existe.",
+
+ "Cannot read '{file}'." =>
+ "Não pode ler '{file}'.",
+
+ "Cannot copy '{file}'." =>
+ "Não pode copiar '{file}'.",
+
+ "Cannot move '{file}'." =>
+ "Não pode mover '{file}'.",
+
+ "Cannot delete '{file}'." =>
+ "Não pode apagar '{file}'.",
+
+ "Click to remove from the Clipboard" =>
+ "Clique aqui para remover do Clipboard",
+
+ "This file is already added to the Clipboard." =>
+ "Este ficheiros já foi adicionado ao Clipboard.",
+
+ "Copy files here" =>
+ "Copiar ficheiros para aqui",
+
+ "Move files here" =>
+ "Mover ficheiros para aqui",
+
+ "Delete files" =>
+ "Apagar ficheiros",
+
+ "Clear the Clipboard" =>
+ "Limpar Clipboard",
+
+ "Are you sure you want to delete all files in the Clipboard?" =>
+ "Tem a certeza que deseja apagar todos os ficheiros que estão no Clipboard?",
+
+ "Copy {count} files" =>
+ "Copiar {count} ficheiros",
+
+ "Move {count} files" =>
+ "Mover {count} ficheiros",
+
+ "Add to Clipboard" =>
+ "Adicionar ao Clipboard",
+
+ "New folder name:" => "Nome da pasta:",
+ "New file name:" => "Nome do ficheiro:",
+
+ "Upload" => "Enviar",
+ "Refresh" => "Actualizar",
+ "Settings" => "Preferências",
+ "Maximize" => "Maximizar",
+ "About" => "Acerca de",
+ "files" => "Ficheiros",
+ "View:" => "Ver:",
+ "Show:" => "Mostrar:",
+ "Order by:" => "Ordenar por:",
+ "Thumbnails" => "Miniatura",
+ "List" => "Lista",
+ "Name" => "Nome",
+ "Size" => "Tamanho",
+ "Date" => "Data",
+ "Descending" => "",
+ "Uploading file..." => "Carregando ficheiro...",
+ "Loading image..." => "Carregando imagens...",
+ "Loading folders..." => "Carregando pastas...",
+ "Loading files..." => "Carregando ficheiros...",
+ "New Subfolder..." => "Nova pasta...",
+ "Rename..." => "Alterar nome...",
+ "Delete" => "Eliminar",
+ "OK" => "OK",
+ "Cancel" => "Cancelar",
+ "Select" => "Seleccionar",
+ "Select Thumbnail" => "Seleccionar miniatura",
+ "View" => "Ver",
+ "Download" => "Sacar",
+ "Clipboard" => "Clipboard",
+
+ // VERSION 2 NEW LABELS
+
+ "Cannot rename the folder." =>
+ "Não pode alterar o nome da pasta.",
+
+ "Non-existing directory type." =>
+ "Tipo de pasta inexistente.",
+
+ "Cannot delete the folder." =>
+ "Não pode apagar a pasta.",
+
+ "The files in the Clipboard are not readable." =>
+ "Os ficheiros que estão no Clipboard não podem ser copiados.",
+
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" =>
+ "{count} ficheiros do Clipboard não podem ser copiados. Pretende copiar os restantes?",
+
+ "The files in the Clipboard are not movable." =>
+ "Os ficheiros que estão no Clipboard não podem ser movidos.",
+
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" =>
+ "{count} ficheiros do Clipboard não podem ser movidos. Pretende mover os restantes?",
+
+ "The files in the Clipboard are not removable." =>
+ "Os ficheiros que estão no Clipboard não podem ser removidos.",
+
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" =>
+ "{count} ficheiros do Clipboard não podem ser removidos. Pretende apagar os restantes?",
+
+ "The selected files are not removable." =>
+ "Os ficheiros seleccionados não podem ser removidos.",
+
+ "{count} selected files are not removable. Do you want to delete the rest?" =>
+ "Não pode remover {count} ficheiros. Pretende apagar os restantes?",
+
+ "Are you sure you want to delete all selected files?" =>
+ "Tem a certeza que deseja apagar os ficheiros seleccionados?",
+
+ "Failed to delete {count} files/folders." =>
+ "Ocorreu um erro a apagar {count} ficheiros/pastas.",
+
+ "A file or folder with that name already exists." =>
+ "Já existe um ficheiro ou pasta com esse nome.",
+
+ "selected files" => "Ficheiros seleccionados",
+ "Type" => "Tipo",
+ "Select Thumbnails" => "Seleccionar miniaturas",
+ "Download files" => "Sacar ficheiros",
+);
+
+?>
diff --git a/kcfinder/lang/ro.php b/kcfinder/lang/ro.php
new file mode 100644
index 00000000..ecbe6ac2
--- /dev/null
+++ b/kcfinder/lang/ro.php
@@ -0,0 +1,126 @@
+ "ro_RO.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Nu aveți permisiunea de a încărca fișiere.",
+ "You don't have permissions to browse server." => "Nu aveți permisiunea de a naviga pe server.",
+ "Cannot move uploaded file to target folder." => "Fișierul încărcat nu poate fi mutat în dosarul țintă.",
+ "Unknown error." => "Eroare necunoscută.",
+ "The uploaded file exceeds {size} bytes." => "Fișierul încărcat depășește {size} biți.",
+ "The uploaded file was only partially uploaded." => "Fișierul încărcat a fost încărcat doar parțial.",
+ "No file was uploaded." => "Nu a fost încărcat niciun fișier.",
+ "Missing a temporary folder." => "Nu există un dosar de fișiere temporare.",
+ "Failed to write file." => "Fișierul nu a fost scris.",
+ "Denied file extension." => "Extensie de fișier respinsă.",
+ "Unknown image format/encoding." => "Format/Codificare imagine necunoscut/ă.",
+ "The image is too big and/or cannot be resized." => "Imaginea este prea mare și/sau nu poate fi redimensionată.",
+ "Cannot create {dir} folder." => "Dosarul {dir} nu poate fi creat.",
+ "Cannot rename the folder." => "Dosarul nu poate fi numit din nou.",
+ "Cannot write to upload folder." => "Nu se poate scrie la dosarul de încărcare.",
+ "Cannot read .htaccess" => "Nu se poate citi .htacces",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Fișier .htacces incorect. Nu poate fi rescris!",
+ "Cannot read upload folder." => "Dosarul de încărcare nu poate fi citit.",
+ "Cannot access or create thumbnails folder." => "Dosarul de imagini în miniatură nu poate fi accesat sau creat.",
+ "Cannot access or write to upload folder." => "Dosarul de încărcare nu poate fi accesat sau creat.",
+ "Please enter new folder name." => "Vă rugăm să introduceți un nume de dosar nou.",
+ "Unallowable characters in folder name." => "Caractere nepermise în numele dosarului.",
+ "Folder name shouldn't begins with '.'" => "Numele dosarului nu trebuie să înceapă cu '.' ",
+ "Please enter new file name." => "Vă rugăm să introduceți un nou nume al fișierului.",
+ "Unallowable characters in file name." => "Caractere nepermise în numele fișierului.",
+ "File name shouldn't begins with '.'" => "Numele fișierului nu ar trebui să înceapă cu '.' ",
+ "Are you sure you want to delete this file?" => "Sigur doriți să ștergeți acest fișier?",
+ "Are you sure you want to delete this folder and all its content?" => "Sigur doriți să ștergeți acest dosar și toate conținuturile sale?",
+ "Non-existing directory type." => "Tip director non-existent.",
+ "Undefined MIME types." => "Tipuri MIME nefedinite.",
+ "Fileinfo PECL extension is missing." => "Extensia PECL lipsește.",
+ "Opening fileinfo database failed." => "Deschiderea bazei de date fileinfo a eșuat.",
+ "You can't upload such files." => "Nu puteți încărca asemenea fișiere.",
+ "The file '{file}' does not exist." => "Fișierul '{file}' nu există.",
+ "Cannot read '{file}'." => "Fișierul '{file}' nu poate fi citit.",
+ "Cannot copy '{file}'." => "Fișierul '{file}' nu poate fi copiat.",
+ "Cannot move '{file}'." => "Fișierul '{file}' nu poate fi mutat.",
+ "Cannot delete '{file}'." => "Fișierul '{file}' nu poate fi șters.",
+ "Cannot delete the folder." => "Dosarul nu poate fi șters.",
+ "Click to remove from the Clipboard" => "Faceți clic pentru a elimina de pe clipboard.",
+ "This file is already added to the Clipboard." => "Acest fișier este adăugat deja pe clipboard.",
+ "The files in the Clipboard are not readable." => "Fișierele de pe clipboard nu pot fi citite.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fișiere de pe clipboard nu pot fi citite. Doriți să copiați restul fișierelor?",
+ "The files in the Clipboard are not movable." => "Fișierele de pe clipboard nu pot fi mutate.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fișiere de pe clipboard nu pot fi mutate. Doriți să mutați restul fișierelor?",
+ "The files in the Clipboard are not removable." => "Fișierele de pe clipboard nu pot fi fi mutate.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fișiere de pe clipboard nu pot fi înlăturate. Doriți să înlăturați restul fișierelor?",
+ "The selected files are not removable." => "Fișierele selectate nu pot fi mutate.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} fișiere selectate nu pot fi înlăturate. Doriți să ștergeți restul fișierelor?",
+ "Are you sure you want to delete all selected files?" => "Sigur doriți să ștergeți toate fișierele selectate?",
+ "Failed to delete {count} files/folders." => "{count} fișiere/dosare nu au putut fi șterse.",
+ "A file or folder with that name already exists." => "Există deja un fișier sau dosar cu acest nume.",
+ "Copy files here" => "Copiați fișierele aici",
+ "Move files here" => "Mutați fișierele aici",
+ "Delete files" => "Ștergeți fișierele",
+ "Clear the Clipboard" => "Eliberare clipboard",
+ "Are you sure you want to delete all files in the Clipboard?" => "Sigur doriți să ștergeți fișierele de pe clipboard?",
+ "Copy {count} files" => "Copiați {count} fișiere",
+ "Move {count} files" => "Mutați {count} fișiere",
+ "Add to Clipboard" => "Adăugați pe clipboard",
+ "Inexistant or inaccessible folder." => "Dosar inexistent sau inaccesibil.",
+ "New folder name:" => "Nume nou dosar:",
+ "New file name:" => "Nume nou fișier:",
+ "Upload" => "Încărcare",
+ "Refresh" => "Reîmprospătare",
+ "Settings" => "Setări",
+ "Maximize" => "Maximizare",
+ "About" => "Despre",
+ "files" => "fișiere",
+ "selected files" => "fișiere selectate",
+ "View:" => "Vizualizare:",
+ "Show:" => "Afișare:",
+ "Order by:" => "Ordonare după:",
+ "Thumbnails" => "Imagini în miniatură",
+ "List" => "Listă",
+ "Name" => "Nume",
+ "Type" => "Tip",
+ "Size" => "Mărime",
+ "Date" => "Dată",
+ "Descending" => "Ordine descrescătoare",
+ "Uploading file..." => "Încărcare fișier...",
+ "Loading image..." => "Încărcare imagine...",
+ "Loading folders..." => "Încărcare dosare...",
+ "Loading files..." => "Încărcare fișiere...",
+ "New Subfolder..." => "Sub-dosar nou...",
+ "Rename..." => "Redenumire...",
+ "Delete" => "Ștergere",
+ "OK" => "OK",
+ "Cancel" => "Anulare",
+ "Select" => "Selectare",
+ "Select Thumbnail" => "Selectare imagine în miniatură",
+ "Select Thumbnails" => "Selectare imagini în miniatură",
+ "View" => "Vizualizare",
+ "Download" => "Descărcare",
+ "Download files" => "Descărcare fișiere",
+ "Clipboard" => "Clipboard",
+ "Checking for new version..." => "Verificare versiune nouă...",
+ "Unable to connect!" => "Conectare imposibilă!",
+ "Download version {version} now!" => "Descărcați acum versiunea {version}!",
+ "KCFinder is up to date!" => "KCFinder este actualizat!",
+ "Licenses:" => "Licențe:",
+ "Attention" => "Atenție",
+ "Question" => "Întrebare",
+ "Yes" => "Da",
+ "No" => "Nu",
+ "You cannot rename the extension of files!" => "Nu puteți redenumi extensia fișierelor!",
+ "Uploading file {number} of {count}... {progress}" => "Încărcare fișier {number} din {count}... {progress}",
+ "Failed to upload {filename}!" => "Încărcare {filename} eșuată!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/ru.php b/kcfinder/lang/ru.php
new file mode 100644
index 00000000..74509325
--- /dev/null
+++ b/kcfinder/lang/ru.php
@@ -0,0 +1,133 @@
+ "ru_RU.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "У вас нет прав для загрузки файлов.",
+ "You don't have permissions to browse server." => "У вас нет прав для просмотра содержимого на сервере.",
+ "Cannot move uploaded file to target folder." => "Невозможно переместить загруженный файл в папку назначения.",
+ "Unknown error." => "Неизвестная ошибка.",
+ "The uploaded file exceeds {size} bytes." => "Загруженный файл превышает размер {size} байт.",
+ "The uploaded file was only partially uploaded." => "Загруженный файл был загружен только частично.",
+ "No file was uploaded." => "Файл не был загружен",
+ "Missing a temporary folder." => "Временная папка не существует.",
+ "Failed to write file." => "Невозможно записать файл.",
+ "Denied file extension." => "Файлы этого типа запрещены для загрузки.",
+ "Unknown image format/encoding." => "Неизвестный формат изображения.",
+ "The image is too big and/or cannot be resized." => "Изображение слишком большое и/или не может быть уменьшено.",
+ "Cannot create {dir} folder." => "Невозможно создать папку {dir}.",
+ "Cannot rename the folder." => "Невозможно переименовать папку.",
+ "Cannot write to upload folder." => "Невозможно записать в папку загрузки.",
+ "Cannot read .htaccess" => "Невозможно прочитать файл .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Неправильный файл .htaccess. Невозможно перезаписать!",
+ "Cannot read upload folder." => "Невозможно прочитать папку загрузки.",
+ "Cannot access or create thumbnails folder." => "Нет доступа или невозможно создать папку миниатюр.",
+ "Cannot access or write to upload folder." => "Нет доступа или невозможно записать в папку загрузки.",
+ "Please enter new folder name." => "Укажите имя новой папки.",
+ "Unallowable characters in folder name." => "Недопустимые символы в имени папки.",
+ "Folder name shouldn't begins with '.'" => "Имя папки не может начинаться с '.'",
+ "Please enter new file name." => "Укажите новое имя файла",
+ "Unallowable characters in file name." => "Недопустимые символны в имени файла.",
+ "File name shouldn't begins with '.'" => "Имя файла не может начинаться с '.'",
+ "Are you sure you want to delete this file?" => "Вы уверены, что хотите удалить этот файл?",
+ "Are you sure you want to delete this folder and all its content?" => "Вы уверены, что хотите удалить эту папку и всё её содержимое?",
+ "Non-existing directory type." => "Несуществующий тип папки.",
+ "Undefined MIME types." => "Неопределённые типы MIME.",
+ "Fileinfo PECL extension is missing." => "Расширение Fileinfo PECL отсутствует.",
+ "Opening fileinfo database failed." => "Невозможно открыть базу данных fileinfo.",
+ "You can't upload such files." => "Вы не можете загружать файлы этого типа.",
+ "The file '{file}' does not exist." => "Файл '{file}' не существует.",
+ "Cannot read '{file}'." => "Невозможно прочитать файл '{file}'.",
+ "Cannot copy '{file}'." => "Невозможно скопировать файл '{file}'.",
+ "Cannot move '{file}'." => "Невозможно переместить файл '{file}'.",
+ "Cannot delete '{file}'." => "Невозможно удалить файл '{file}'.",
+ "Cannot delete the folder." => "Невозможно удалить папку.",
+ "Click to remove from the Clipboard" => "Нажмите для удаления из буфера обмена",
+ "This file is already added to the Clipboard." => "Этот файл уже добавлен в буфер обмена.",
+ "The files in the Clipboard are not readable." => "Невозможно прочитать файлы в буфере обмена.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Невозможно прочитать {count} файл(ов) в буфере обмена. Вы хотите скопировать оставшиеся?",
+ "The files in the Clipboard are not movable." => "Невозможно переместить файлы в буфере обмена.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Невозможно переместить {count} файл(ов) в буфере обмена. Вы хотите переместить оставшиеся?",
+ "The files in the Clipboard are not removable." => "Невозможно удалить файлы в буфере обмена.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Невозможно удалить {count} файл(ов) в буфере обмена. Вы хотите удалить оставшиеся?",
+ "The selected files are not removable." => "Невозможно удалить выбранные файлы.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "Невозможно удалить выбранный(е) {count} файл(ы). Вы хотите удалить оставшиеся?",
+ "Are you sure you want to delete all selected files?" => "Вы уверены, что хотите удалить все выбранные файлы?",
+ "Failed to delete {count} files/folders." => "Невозможно удалить {count} файлов/папок.",
+ "A file or folder with that name already exists." => "Файл или папка с таким именем уже существуют.",
+ "Copy files here" => "Скопировать файлы сюда",
+ "Move files here" => "Переместить файлы сюда",
+ "Delete files" => "Удалить файлы",
+ "Clear the Clipboard" => "Очистить буфер обмена",
+ "Are you sure you want to delete all files in the Clipboard?" => "Вы уверены, что хотите удалить все файлы в буфере обмена?",
+ "Copy {count} files" => "Скопировать {count} файл(ов)",
+ "Move {count} files" => "Переместить {count} файл(ов)",
+ "Add to Clipboard" => "Добавить в буфер обмена",
+ "Inexistant or inaccessible folder." => "Несуществующая или недоступная папка.",
+ "New folder name:" => "Новое имя папки:",
+ "New file name:" => "Новое имя файла:",
+ "Upload" => "Загрузить",
+ "Refresh" => "Обновить",
+ "Settings" => "Установки",
+ "Maximize" => "Развернуть",
+ "About" => "О скрипте",
+ "files" => "файлы",
+ "selected files" => "выбранные файлы",
+ "View:" => "Просмотр:",
+ "Show:" => "Показывать:",
+ "Order by:" => "Упорядочить по:",
+ "Thumbnails" => "Миниатюры",
+ "List" => "Список",
+ "Name" => "Имя",
+ "Type" => "Тип",
+ "Size" => "Размер",
+ "Date" => "Дата",
+ "Descending" => "По убыванию",
+ "Uploading file..." => "Загрузка файла...",
+ "Loading image..." => "Загрузка изображения...",
+ "Loading folders..." => "Загрузка папок...",
+ "Loading files..." => "Загрузка файлов...",
+ "New Subfolder..." => "Создать папку...",
+ "Rename..." => "Переименовать...",
+ "Delete" => "Удалить",
+ "OK" => "OK",
+ "Cancel" => "Отмена",
+ "Select" => "Выбрать",
+ "Select Thumbnail" => "Выбрать миниатюру",
+ "Select Thumbnails" => "Выбрать миниатюры",
+ "View" => "Просмотр",
+ "Download" => "Скачать",
+ "Download files" => "Скачать файлы",
+ "Clipboard" => "Буфер обмена",
+ "Checking for new version..." => "Проверяем наличие обновлений...",
+ "Unable to connect!" => "Невозможно подключиться!",
+ "Download version {version} now!" => "Скачать версию {version} сейчас!",
+ "KCFinder is up to date!" => "Вы используете последнюю версию KCFinder'а!",
+ "Licenses:" => "Лицензии:",
+ "Attention" => "Внимание",
+ "Question" => "Вопрос",
+ "Yes" => "Да",
+ "No" => "Нет",
+ "You cannot rename the extension of files!" => "Вы не можете изменять расширения файлов!",
+ "Uploading file {number} of {count}... {progress}" => "Загрузка {number} файла из {count}... {progress}",
+ "Failed to upload {filename}!" => "Неудачная попытка загрузки {filename}!",
+ "Close" => "Закрыть",
+ "Previous" => "Предыдущий",
+ "Next" => "Следующий",
+ "Confirmation" => "Подтверждение",
+ "Warning" => "Предупреждение",
+);
+
+?>
diff --git a/kcfinder/lang/sk.php b/kcfinder/lang/sk.php
new file mode 100644
index 00000000..330fb7fc
--- /dev/null
+++ b/kcfinder/lang/sk.php
@@ -0,0 +1,127 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "sk_SK.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B.%Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Nemáte právo nahrávať súbory.",
+ "You don't have permissions to browse server." => "Nemáte právo prehliadať súbory na serveri.",
+ "Cannot move uploaded file to target folder." => "Nie je možné presunúť súbor do zvoleného adresára.",
+ "Unknown error." => "Neznáma chyba.",
+ "The uploaded file exceeds {size} bytes." => "Nahratý súbor presahuje {size} bytov.",
+ "The uploaded file was only partially uploaded." => "Nahratý súbor bol nahraný len čiastočne.",
+ "No file was uploaded." => "Žiadný súbor nebol nahraný na server.",
+ "Missing a temporary folder." => "Chyba dočasný adresár.",
+ "Failed to write file." => "Súbor sa nepodarilo uložiť.",
+ "Denied file extension." => "Nepodporovaný typ súboru.",
+ "Unknown image format/encoding." => "Neznamý formát obrázku/encoding.",
+ "The image is too big and/or cannot be resized." => "Obrázok je príliš veľký/alebo nemohol byť zmenšený.",
+ "Cannot create {dir} folder." => "Adresár {dir} nie je možné vytvoriť.",
+ "Cannot rename the folder." => "Adresár nie je možné premenovať.",
+ "Cannot write to upload folder." => "Nie je možné ukladať do adresára pre nahrávánie.",
+ "Cannot read .htaccess" => "Nie je možné čítať súbor .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Chybný súbor .htaccess. Súbor nemožno prepísať!",
+ "Cannot read upload folder." => "Nie je možné čítať z adresára pre nahrávánie súborov.",
+ "Cannot access or create thumbnails folder." => "Adresár pre náhľady nie je možné vytvoriť alebo nie je prístupný.",
+ "Cannot access or write to upload folder." => "Nie je možné pristupovať alebo zapisovať do adresára pre nahrávanie súborov.",
+ "Please enter new folder name." => "Zadajte prosím nové meno adresára.",
+ "Unallowable characters in folder name." => "Nepovolené znaky v názve adresára.",
+ "Folder name shouldn't begins with '.'" => "Meno adresára nesmie začínať znakom '.'",
+ "Please enter new file name." => "Vložte prosím nové meno súboru.",
+ "Unallowable characters in file name." => "Nepovolené znaky v názve súboru.",
+ "File name shouldn't begins with '.'" => "Názov súboru nesmie začínať znakom '.'",
+ "Are you sure you want to delete this file?" => "Ste si istý že chcete vymazať tento súbor?",
+ "Are you sure you want to delete this folder and all its content?" => "Ste si istý že chcete vymazať tento adresár a celý jeho obsah?",
+ "Non-existing directory type." => "Neexistujúci typ adresára.",
+ "Undefined MIME types." => "Nedefinovaný MIME typ súboru.",
+ "Fileinfo PECL extension is missing." => "Rozšírenie PECL pre zistenie informácií o súbore chýba.",
+ "Opening fileinfo database failed." => "Načítanie informácií o súbore zlyhalo.",
+ "You can't upload such files." => "Tieto súbory nemôžete nahrať na server.",
+ "The file '{file}' does not exist." => "Tento súbor '{file}' neexistuje.",
+ "Cannot read '{file}'." => "Nie je možné načítať '{file}'.",
+ "Cannot copy '{file}'." => "Nie je možné kopírovať '{file}'.",
+ "Cannot move '{file}'." => "Nie je možné presunúť '{file}'.",
+ "Cannot delete '{file}'." => "Nie je možné vymazať '{file}'.",
+ "Cannot delete the folder." => "Adresár nie je možné vymazať.",
+ "Click to remove from the Clipboard" => "Kliknite pre odstránenie zo schránky",
+ "This file is already added to the Clipboard." => "Tento súbor je už v schránke uložený.",
+ "The files in the Clipboard are not readable." => "Súbory v schránke nie je možné načítať.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} súborov v schránke nie je možné načítať. Chcete skopírovať ostatné súbory?",
+ "The files in the Clipboard are not movable." => "Súbory v schránke nie je možné presunúť.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} súborov v schránke nie je možné presunúť. Chcete presunúť ostatné súbory?",
+ "The files in the Clipboard are not removable." => "Súbory v schránke nie je možné vymazať.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} súborov v schránke nie je možné vymazať. Chcete vymazať ostatné súbory?",
+ "The selected files are not removable." => "Vybrané súbory nie je možné vymazať.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} vybraných súborov nie je možné vymazať. Chcete vymazať ostatné súbory?",
+ "Are you sure you want to delete all selected files?" => "Ste si istý že chcete vymazať vybrané súbory?",
+ "Failed to delete {count} files/folders." => "Nebolo vymazaných {count} súborov/adresárov.",
+ "A file or folder with that name already exists." => "Soubor alebo adresár s takovým menom už existuje.",
+ "Copy files here" => "Kopírovať súbory na toto miesto",
+ "Move files here" => "Presunúť súbory na toto miesto",
+ "Delete files" => "Vymazať súbory",
+ "Clear the Clipboard" => "Vyčistiť schránku",
+ "Are you sure you want to delete all files in the Clipboard?" => "Ste si istý že chcete vymazať všetky súbory zo schránky?",
+ "Copy {count} files" => "Kopírovať {count} súborov",
+ "Move {count} files" => "Presunúť {count} súborov",
+ "Add to Clipboard" => "Vložiť do schránky",
+ "Inexistant or inaccessible folder." => "Neexistujúci alebo neprístupný adresár.",
+ "New folder name:" => "Nový názov adresára:",
+ "New file name:" => "Nový názov súboru:",
+ "Upload" => "Nahrať",
+ "Refresh" => "Obnoviť",
+ "Settings" => "Nastavenia",
+ "Maximize" => "Maxializovať",
+ "About" => "O aplikácii",
+ "files" => "súbory",
+ "selected files" => "vybrané súbory",
+ "View:" => "Zobraziť:",
+ "Show:" => "Ukázať:",
+ "Order by:" => "Zoradiť podľa:",
+ "Thumbnails" => "Náhľady",
+ "List" => "Zoznam",
+ "Name" => "Meno",
+ "Type" => "Typ",
+ "Size" => "Veľkosť",
+ "Date" => "Dátum",
+ "Descending" => "Zostupne",
+ "Uploading file..." => "Nahrávanie súborov...",
+ "Loading image..." => "Načítanie obrázkov...",
+ "Loading folders..." => "Načítanie adresárov...",
+ "Loading files..." => "Načítanie súborov...",
+ "New Subfolder..." => "Nový adresár...",
+ "Rename..." => "Premenovať...",
+ "Delete" => "Zmazať",
+ "OK" => "OK",
+ "Cancel" => "Zrušit",
+ "Select" => "Vybrať",
+ "Select Thumbnail" => "Vybrať náhľad",
+ "Select Thumbnails" => "Vybrať náhľad",
+ "View" => "Zobraziť",
+ "Download" => "Stahnuť",
+ "Download files" => "Stiahnuť súbory",
+ "Clipboard" => "Schránka",
+ "Checking for new version..." => "Kontrolujem novú verziu...",
+ "Unable to connect!" => "Pripojenie zlyhalo!",
+ "Download version {version} now!" => "Stiahnuť verziu {version} teraz!",
+ "KCFinder is up to date!" => "KCFinder je aktuálny!",
+ "Licenses:" => "Licencie:",
+ "Attention" => "Upozornenie",
+ "Question" => "Otázka",
+ "Yes" => "Áno",
+ "No" => "Nie",
+ "You cannot rename the extension of files!" => "Nemôžete premenovať príponu súborov",
+ "Uploading file {number} of {count}... {progress}" => "Nahrávam súbor {number} z {count}... {progress}",
+ "Failed to upload {filename}!" => "Nepodarilo sa nahrať súbor {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/sv.php b/kcfinder/lang/sv.php
new file mode 100644
index 00000000..7a5f806a
--- /dev/null
+++ b/kcfinder/lang/sv.php
@@ -0,0 +1,127 @@
+ "sv_SE.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "den %e %B %Y",
+ '_dateTimeMid' => "%e %b %Y",
+ '_dateTimeSmall' => "%Y-%m-%d %H:%M",
+
+ "You don't have permissions to upload files." => "Du har inte behörighet att ladda upp filer. Kontakta vår support.",
+ "You don't have permissions to browse server." => "Du har inte behörighet att bläddra server.",
+ "Cannot move uploaded file to target folder." => "Kan inte flytta upp filen till målmappen.",
+ "Unknown error." => "Okänt fel.",
+ "The uploaded file exceeds {size} bytes." => "Den uppladdade filen överstiger {size} byte.",
+ "The uploaded file was only partially uploaded." => "Den uppladdade filen var endast delvis uppladdat.",
+ "No file was uploaded." => "Inga filer laddades upp.",
+ "Missing a temporary folder." => "Saknade en temporär mapp.",
+ "Failed to write file." => "Misslyckades att skriva fil.",
+ "Denied file extension." => "Nekad filtillägg.",
+ "Unknown image format/encoding." => "Okänt bildformat / kodning.",
+ "The image is too big and/or cannot be resized." => "Bilden är för stor och / eller kan inte ändras.",
+ "Cannot create {dir} folder." => "Kan inte skapa {dir} mapp.",
+ "Cannot rename the folder." => "Kan inte byta namn på mappen.",
+ "Cannot write to upload folder." => "Kan inte laddaup till mappen.",
+ "Cannot read .htaccess" => "Fel läser inte htacess filen",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Fel . htaccess fil. Inte skrivvänlig",
+ "Cannot read upload folder." => "Kan inte läsa upp mappen.",
+ "Cannot access or create thumbnails folder." => "Kan inte komma åt eller skapa thumbnails mapp.",
+ "Cannot access or write to upload folder." => "Kan inte komma åt eller skriva för att ladda upp mappen.",
+ "Please enter new folder name." => "Vänligen skriv in ny mapp-namn",
+ "Unallowable characters in folder name." => "Otillåtna tecken i mappnamnet.",
+ "Folder name shouldn't begins with '.'" => "Mappnamn bör inte börjar med '. \"",
+ "Please enter new file name." => "Ange nytt filnamn.",
+ "Unallowable characters in file name." => "Otillåtna tecken i filnamnet.",
+ "File name shouldn't begins with '.'" => "Filnamn bör inte börjar med '. \"",
+ "Are you sure you want to delete this file?" => "Är du säker du vill radera filen?",
+ "Are you sure you want to delete this folder and all its content?" => "Är du säker du vill radera denna mappen ink innehåll?",
+ "Non-existing directory type." => "Icke-existerande katalog typ.",
+ "Undefined MIME types." => "Odefinierat MIME-typer.",
+ "Fileinfo PECL extension is missing." => "Fileinfo PECL förlängning saknas.",
+ "Opening fileinfo database failed." => "databas öppning misslyckad.",
+ "You can't upload such files." => "Kan inte ladda upp sådan fil.",
+ "The file '{file}' does not exist." => "Filen '{file}' finns inte.",
+ "Cannot read '{file}'." => "Ej läsbar fil : '{file}'. ",
+ "Cannot copy '{file}'." => "Kan inte kopiera '{file}'.",
+ "Cannot move '{file}'." => "Kan inte flytta '{file}'.",
+ "Cannot delete '{file}'." => "Kan inte radera'{file}'.",
+ "Cannot delete the folder." => "Kan inte radera mappen.",
+ "Click to remove from the Clipboard" => "Tryck för att radera från Urklipp",
+ "This file is already added to the Clipboard." => "Den här filen är redan lagts till i Urklipp.",
+ "The files in the Clipboard are not readable." => "Filerna i Urklipp är inte läsbar.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} filer i Urklipp är inte läsbar. Vill du kopiera resten?",
+ "The files in the Clipboard are not movable." => "Filerna i Urklipp är inte flyttbara.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} filer i Urklipp är inte rörliga. Vill du flytta resten?",
+ "The files in the Clipboard are not removable." => "Filerna i Urklipp är inte avtagbara.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} filer i Urklipp är inte avtagbara. Vill du ta bort resten?",
+ "The selected files are not removable." => "De valda filerna inte tas bort.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} valda filerna inte tas bort. Vill du ta bort resten?",
+ "Are you sure you want to delete all selected files?" => "Är du säker på att du vill ta bort alla markerade filer?",
+ "Failed to delete {count} files/folders." => "Misslyckades att radera {count} filer/mappar.",
+ "A file or folder with that name already exists." => "En fil eller mapp med det namnet finns redan.",
+ "Copy files here" => "Kopiera filerna här",
+ "Move files here" => "Flytta filerna här",
+ "Delete files" => "Radera filer",
+ "Clear the Clipboard" => "Rensa Urklipp",
+ "Are you sure you want to delete all files in the Clipboard?" => "Är du säker på att du vill ta bort alla filer i Urklipp?",
+ "Copy {count} files" => "Kopiera {count} filer",
+ "Move {count} files" => "Flytta {count} filer",
+ "Add to Clipboard" => "Lägg till i Urklipp",
+ "Inexistant or inaccessible folder." => "Inexistant eller otillgängliga mapp.",
+ "New folder name:" => "Ny mappnamn:",
+ "New file name:" => "Nytt filnamn:",
+ "Upload" => "Ladda upp",
+ "Refresh" => "Uppdatera",
+ "Settings" => "Inställningar",
+ "Maximize" => "Maximera",
+ "About" => "Om",
+ "files" => "Filer",
+ "selected files" => "Välj filer",
+ "View:" => "Se",
+ "Show:" => "Visa:",
+ "Order by:" => "Sortera efter:",
+ "Thumbnails" => "Miniatyr",
+ "List" => "Lista",
+ "Name" => "Namn",
+ "Type" => "Typ",
+ "Size" => "Storlek",
+ "Date" => "Datum",
+ "Descending" => "Fallande",
+ "Uploading file..." => "Laddar upp fil",
+ "Loading image..." => "Laddar bilder...",
+ "Loading folders..." => "Laddar mappar...",
+ "Loading files..." => "Laddar filer...",
+ "New Subfolder..." => "Ny undermapp...",
+ "Rename..." => "Byt namn",
+ "Delete" => "Radera",
+ "OK" => "Ok",
+ "Cancel" => "Avbryt",
+ "Select" => "Välj",
+ "Select Thumbnail" => "Välj miniatyr",
+ "Select Thumbnails" => "Välj miniatyrer",
+ "View" => "Se",
+ "Download" => "Ladda ner",
+ "Download files" => "Ladda ner fil",
+ "Clipboard" => "Urklipp",
+ "Checking for new version..." => "Söka efter ny version ...",
+ "Unable to connect!" => "Kunde inte ansluta! ",
+ "Download version {version} now!" => "Ladda ner version {version} nu!",
+ "KCFinder is up to date!" => "KCFinder är uppdaterad!",
+ "Licenses:" => "Licenser:",
+ "Attention" => "Uppmärksamhet",
+ "Question" => "Fråga",
+ "Yes" => "Ja",
+ "No" => "Nä",
+ "You cannot rename the extension of files!" => "Du kan inte byta namn på en förlängning av filer!",
+ "Uploading file {number} of {count}... {progress}" => "Ladda upp fil {number} av {count} ... {progress}",
+ "Failed to upload {filename}!" => "Uppladdning misslyckad {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/tr.php b/kcfinder/lang/tr.php
new file mode 100644
index 00000000..48833f72
--- /dev/null
+++ b/kcfinder/lang/tr.php
@@ -0,0 +1,132 @@
+
+ */
+
+$lang = array(
+
+ '_locale' => "en_US.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e.%B.%Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d/%m/%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Dosya yüklemek için yetkiniz yok.",
+ "You don't have permissions to browse server." => "Sunucuyu gezmek için yetkiniz yok.",
+ "Cannot move uploaded file to target folder." => "Yüklenilen dosyalar hedef klasöre taşınamıyor.",
+ "Unknown error." => "Bilinmeyen hata.",
+ "The uploaded file exceeds {size} bytes." => "Gönderilen dosya boyutu, maksimum dosya boyutu limitini ({size} byte) aşıyor.",
+ "The uploaded file was only partially uploaded." => "Dosyanın sadece bir kısmı yüklendi. Yüklemeyi tekrar deneyin.",
+ "No file was uploaded." => "Dosya yüklenmedi.",
+ "Missing a temporary folder." => "Geçici dosya klasörü bulunamıyor. Klasörü kontrol edin.",
+ "Failed to write file." => "Dosya yazılamıyor. Klasör yetkilerini kontrol edin.",
+ "Denied file extension." => "Yasaklanmış dosya türü.",
+ "Unknown image format/encoding." => "Bilinmeyen resim formatı.",
+ "The image is too big and/or cannot be resized." => "Resim çok büyük ve/veya yeniden boyutlandırılamıyor.",
+ "Cannot create {dir} folder." => "{dir} klasörü oluşturulamıyor.",
+ "Cannot rename the folder." => "Klasör adı değiştirilemiyor.",
+ "Cannot write to upload folder." => "Dosya yükleme klasörüne yazılamıyor. Klasör yetkisini kontrol edin.",
+ "Cannot read .htaccess" => ".htaccess dosyası okunamıyor",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Hatalı .htaccess dosyası. Dosyaya yeniden yazılamıyor.",
+ "Cannot read upload folder." => "Dosya yükleme klasörü okunamıyor. Klasör yetkilerini kontrol edin.",
+ "Cannot access or create thumbnails folder." => "Önizleme dosyaları klasörüne erişilemiyor yada oluşturulamıyor.",
+ "Cannot access or write to upload folder." => "Dosya yükleme klasörüne ulaşılamıyor yada oluşturulamıyor.",
+ "Please enter new folder name." => "Lütfen yeni klasör adını girin.",
+ "Unallowable characters in folder name." => "Klasör adında izin verilmeyen karakter kullandınız.",
+ "Folder name shouldn't begins with '.'" => "Klasör adı '.' ile başlayamaz.",
+ "Please enter new file name." => "Lütfen yeni dosya adını girin.",
+ "Unallowable characters in file name." => "Dosya adında izin verilmeyen karakter kullandınız.",
+ "File name shouldn't begins with '.'" => "Dosya adı '.' ile başlayamaz.",
+ "Are you sure you want to delete this file?" => "Dosyayı silmek istediğinizden emin misiniz?",
+ "Are you sure you want to delete this folder and all its content?" => "Bu klasörü ve tüm içeriğini silmek istediğinizden emin misiniz?",
+ "Non-existing directory type." => "Geçersiz klasör türü.",
+ "Undefined MIME types." => "Tanımsız MIME türü.",
+ "Fileinfo PECL extension is missing." => "Dosya Bilgisi PECL uzantısı eksik.",
+ "Opening fileinfo database failed." => "Dosya Bilgisi veritabanı açılırken hata oluştu.",
+ "You can't upload such files." => "Bu tür dosyaları yükleyemezsiniz.",
+ "The file '{file}' does not exist." => "'{file}' dosyası yok.",
+ "Cannot read '{file}'." => "'{file}' dosyası okunamıyor.",
+ "Cannot copy '{file}'." => "'{file}' dosyası kopyalanamıyor.",
+ "Cannot move '{file}'." => "'{file}' dosyası taşınamıyor.",
+ "Cannot delete '{file}'." => "'{file}' dosyası silinemiyor.",
+ "Cannot delete the folder." => "Klasör silinemiyor.",
+ "Click to remove from the Clipboard" => "Panodan çıkarmak için tıklayın",
+ "This file is already added to the Clipboard." => "Bu dosya zaten panoya eklenmiş.",
+ "The files in the Clipboard are not readable." => "Panodaki dosyalar okunamıyor.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Panodaki {count} adet dosya okunamıyor. Geri kalanlarını kopyalamak istiyor musunuz?",
+ "The files in the Clipboard are not movable." => "Panodaki dosyalar taşınamıyor.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Panodaki {count} adet dosya taşınamıyor. Geri kalanlarını taşımak istiyor musunuz?",
+ "The files in the Clipboard are not removable." => "Dosyalar panodan çıkartılamıyor.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} adet dosya panodan çıkartılamıyor. Geri kalanları silmek istiyor musunuz?",
+ "The selected files are not removable." => "Seçilen dosyalar panodan çıkartılamıyor.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "Seçilen dosyaların {count} adedi panodan çıkartılamıyor. Geri kalanları silmek istiyor musunuz?",
+ "Are you sure you want to delete all selected files?" => "Seçilen tüm dosyaları silmek istediğinizden emin misiniz?",
+ "Failed to delete {count} files/folders." => "{count} adet dosya/klasör silinemedi.",
+ "A file or folder with that name already exists." => "Bu isimde bir klasör yada dosya zaten var.",
+ "Copy files here" => "Dosyaları Buraya Kopyala",
+ "Move files here" => "Dosyaları Buraya Taşı",
+ "Delete files" => "Dosyaları Sil",
+ "Clear the Clipboard" => "Panoyu Temizle",
+ "Are you sure you want to delete all files in the Clipboard?" => "Panodaki tüm dosyaları silmek istediğinizden emin misiniz?",
+ "Copy {count} files" => "{count} adet dosyayı kopyala",
+ "Move {count} files" => "{count} adet dosyayı taşı",
+ "Add to Clipboard" => "Panoya Ekle",
+ "Inexistant or inaccessible folder." => "Klasör yok yada ulaşılamıyor.",
+ "New folder name:" => "Yeni Klasör Adı:",
+ "New file name:" => "Yeni Dosya Adı:",
+ "Upload" => "Yükle",
+ "Refresh" => "Yenile",
+ "Settings" => "Ayarlar",
+ "Maximize" => "Pencereyi Büyüt",
+ "About" => "Hakkında",
+ "files" => "dosya",
+ "selected files" => "dosya seçildi",
+ "View:" => "Görüntüleme:",
+ "Show:" => "Göster:",
+ "Order by:" => "Sıralama:",
+ "Thumbnails" => "Önizleme",
+ "List" => "Liste",
+ "Name" => "Ad",
+ "Type" => "Tür",
+ "Size" => "Boyut",
+ "Date" => "Tarih",
+ "Descending" => "Azalarak",
+ "Uploading file..." => "Dosya Gönderiliyor...",
+ "Loading image..." => "Resim Yükleniyor...",
+ "Loading folders..." => "Klasörler Yükleniyor...",
+ "Loading files..." => "Dosyalar Yükleniyor...",
+ "New Subfolder..." => "Yeni Alt Klasör...",
+ "Rename..." => "İsim Değiştir...",
+ "Delete" => "Sil",
+ "OK" => "Tamam",
+ "Cancel" => "İptal",
+ "Select" => "Seç",
+ "Select Thumbnail" => "Önizleme Resmini Seç",
+ "Select Thumbnails" => "Önizleme Resimlerini Seç",
+ "View" => "Göster",
+ "Download" => "İndir",
+ "Download files" => "Dosyaları İndir",
+ "Clipboard" => "Pano",
+ "Checking for new version..." => "Yeni versiyon kontrol ediliyor...",
+ "Unable to connect!" => "Bağlantı yapılamıyor!",
+ "Download version {version} now!" => " {version} versiyonunu hemen indir!",
+ "KCFinder is up to date!" => "KCFinder güncel durumda!",
+ "Licenses:" => "Lisanslar:",
+ "Attention" => "Dikkat",
+ "Question" => "Soru",
+ "Yes" => "Evet",
+ "No" => "Hayır",
+ "You cannot rename the extension of files!" => "Dosya uzantılarını değiştiremezsiniz!",
+ "Uploading file {number} of {count}... {progress}" => "{number} / {count} dosya yükleniyor... {progress}",
+ "Failed to upload {filename}!" => "{filename} dosyası yüklenemedi!",
+ "Close" => "Kapat",
+ "Previous" => "Önceki",
+ "Next" => "Sonraki",
+ "Confirmation" => "Onay",
+ "Warning" => "Uyarı",
+);
+
+?>
diff --git a/kcfinder/lang/uk.php b/kcfinder/lang/uk.php
new file mode 100644
index 00000000..5caa120c
--- /dev/null
+++ b/kcfinder/lang/uk.php
@@ -0,0 +1,128 @@
+ "uk_UA.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "У вас нема прав для завантаження файлів.",
+ "You don't have permissions to browse server." => "У вас нема прав для перегляду вмісту на сервері.",
+ "Cannot move uploaded file to target folder." => "Неможливо перемістити завантажений файл в папку призначення.",
+ "Unknown error." => "Невідома помилка.",
+ "The uploaded file exceeds {size} bytes." => "Завантажений файл перевищує розмір {size} байтів.",
+ "The uploaded file was only partially uploaded." => "Завантажений файл було завантажено лише частково.",
+ "No file was uploaded." => "Файл не було завантажено",
+ "Missing a temporary folder." => "Тимчасова папка не існує.",
+ "Failed to write file." => "Неможливо записати файл.",
+ "Denied file extension." => "Файли цього типу заборонені для завантаження.",
+ "Unknown image format/encoding." => "Невідомий формат зображення.",
+ "The image is too big and/or cannot be resized." => "Зображення занадто велике і/або не може бути зменшене.",
+ "Cannot create {dir} folder." => "Неможливо створити папку {dir}.",
+ "Cannot rename the folder." => "Неможливо перейменувати папку.",
+ "Cannot write to upload folder." => "Неможливо записати в папку завантаження.",
+ "Cannot read .htaccess" => "Неможливо прочитати файл .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "Неправильний файл .htaccess. Неможливо перезаписати!",
+ "Cannot read upload folder." => "Неможливо прочитати папку завантаження.",
+ "Cannot access or create thumbnails folder." => "Нема доступу або неможливо створити папку мініатюр.",
+ "Cannot access or write to upload folder." => "Нма доступу або неможливо записати в папку завантаження.",
+ "Please enter new folder name." => "Вкажіть назву нової папки.",
+ "Unallowable characters in folder name." => "Недопустимі символи в назві папки.",
+ "Folder name shouldn't begins with '.'" => "Назва папки не может починатися з '.'",
+ "Please enter new file name." => "Вкажіть нову назву файла",
+ "Unallowable characters in file name." => "Недопустимі символи в назві файлу.",
+ "File name shouldn't begins with '.'" => "Назва файла не може починатися з '.'",
+ "Are you sure you want to delete this file?" => "Ви впевнені що хочете вилучити цей файл?",
+ "Are you sure you want to delete this folder and all its content?" => "Ви впевнені що хочете вилучити цю папку і весь її вміст?",
+ "Non-existing directory type." => "Неіснуючий тип папки.",
+ "Undefined MIME types." => "Невизначені MIME-типи.",
+ "Fileinfo PECL extension is missing." => "Розширення Fileinfo PECL відсутнє.",
+ "Opening fileinfo database failed." => "Неможливо відкрити базу даних fileinfo.",
+ "You can't upload such files." => "Ви не можете завантажувати файли цього типу.",
+ "The file '{file}' does not exist." => "Файл '{file}' не існує.",
+ "Cannot read '{file}'." => "Неможливо прочитати файл '{file}'.",
+ "Cannot copy '{file}'." => "Неможливо копіювати файл '{file}'.",
+ "Cannot move '{file}'." => "Неможливо перемістити файл '{file}'.",
+ "Cannot delete '{file}'." => "Неможливо вилучити файл '{file}'.",
+ "Cannot delete the folder." => "Неможливо вилучити папку.",
+ "Click to remove from the Clipboard" => "Натисніть для вилучення з буфера обміну",
+ "This file is already added to the Clipboard." => "Цей файл вже додано в буфер обміну.",
+ "The files in the Clipboard are not readable." => "Неможливо прочитати файли в буфері обміну.",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Неможливо прочитати {count} файл(ів) в буфері обміну. Ви хочете копіювати ті які залишилися?",
+ "The files in the Clipboard are not movable." => "Неможливо перемістити файли в буфері обміну.",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Неможливо перемістити {count} файл(ів) в буфері обміну. Ви хчете перемістити ті які залишилися?",
+ "The files in the Clipboard are not removable." => "Неможливо вилучити файли в буфері обміну.",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Неможливо вилучити {count} файл(ів) в буфері обміну. Ви хочете вилучити ті які залишилися?",
+ "The selected files are not removable." => "Неможливо вилучити вибрані файли.",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "Неможливо вилучити вибраний(ні) {count} файл(и). Ви хочете вилучити ті які залишилися?",
+ "Are you sure you want to delete all selected files?" => "Ви впевнені що хочете вилучити всі вибрані файли?",
+ "Failed to delete {count} files/folders." => "Неможливо вилучити {count} файлів/папок.",
+ "A file or folder with that name already exists." => "Файл або папка з таким іменем вже існують.",
+ "Copy files here" => "Копіювати файли сюди",
+ "Move files here" => "Перемістити файли сюда",
+ "Delete files" => "Вилучити файли",
+ "Clear the Clipboard" => "Очистити буфер обміну",
+ "Are you sure you want to delete all files in the Clipboard?" => "Ви впевнені що хочете вилучити всі файли в буфері обміну?",
+ "Copy {count} files" => "Копіювати {count} файл(ів)",
+ "Move {count} files" => "Перемістити {count} файл(ів)",
+ "Add to Clipboard" => "Додати в буфер обміну",
+ "Inexistant or inaccessible folder." => "Неіснуюча або недоступна папка.",
+ "New folder name:" => "Нова назва папки:",
+ "New file name:" => "Нова назва файлу:",
+ "Upload" => "Завантажити",
+ "Refresh" => "Оновити",
+ "Settings" => "Налаштування",
+ "Maximize" => "Максимізувати",
+ "About" => "Про скрипт",
+ "files" => "файли",
+ "selected files" => "вибрані файли",
+ "View:" => "Перегляд:",
+ "Show:" => "Показувати:",
+ "Order by:" => "Впорядкувати за:",
+ "Thumbnails" => "Мініатюри",
+ "List" => "Список",
+ "Name" => "Назва",
+ "Type" => "Тип",
+ "Size" => "Розмір",
+ "Date" => "Дата",
+ "Descending" => "По спаданню",
+ "Uploading file..." => "Завантаження файлу...",
+ "Loading image..." => "Завантаження зображення...",
+ "Loading folders..." => "Завантаження папок...",
+ "Loading files..." => "Завантаження файлів...",
+ "New Subfolder..." => "Створити папку...",
+ "Rename..." => "Перейменувати...",
+ "Delete" => "Вилучити",
+ "OK" => "OK",
+ "Cancel" => "Скасувати",
+ "Select" => "Вибрати",
+ "Select Thumbnail" => "Вибрати мініатюру",
+ "Select Thumbnails" => "Вибрати мініатюри",
+ "View" => "Перегляд",
+ "Download" => "Зкачати",
+ "Download files" => "Зкачати файли",
+ "Clipboard" => "Буфер обміну",
+ "Checking for new version..." => "Перевіряємо наявність оновлень...",
+ "Unable to connect!" => "Неможливо підключитися!",
+ "Download version {version} now!" => "Скачати версію {version} зараз!",
+ "KCFinder is up to date!" => "Ви використовуєте останню версію KCFinder'а!",
+ "Licenses:" => "Ліцензії:",
+ "Attention" => "Увага",
+ "Question" => "Питання",
+ "Yes" => "Так",
+ "No" => "Ні",
+ "You cannot rename the extension of files!" => "Ви не можете змінювати розширення файлів!",
+ "Uploading file {number} of {count}... {progress}" => "Завантаження файлу {number} з {count}... {progress}",
+ "Failed to upload {filename}!" => "Помилка завантаження {filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lang/vi.php b/kcfinder/lang/vi.php
new file mode 100644
index 00000000..fd4c0c7e
--- /dev/null
+++ b/kcfinder/lang/vi.php
@@ -0,0 +1,131 @@
+ "vi_VN.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%d.%m.%Y %H:%M",
+
+ "You don't have permissions to upload files." => "Bạn không có quyền tải lên",
+ "You don't have permissions to browse server." => "Bạn không có quyền truy cập",
+ "Cannot move uploaded file to target folder." => "Không thể tải lên thư mục đích",
+ "Unknown error." => "Lỗi không xác định",
+ "The uploaded file exceeds {size} bytes." => "Tập tin tải lên lớn hơn {size}",
+ "The uploaded file was only partially uploaded." => "Các tập tin chỉ được tải lên một phần",
+ "No file was uploaded." => "Không có tập tin được tải lên",
+ "Missing a temporary folder." => "Không thấy thư mục tạm",
+ "Failed to write file." => "Không thể ghi",
+ "Denied file extension." => "Phần mở rộng không được phép",
+ "Unknown image format/encoding." => "Không biết định dạng ảnh/mã hóa này",
+ "The image is too big and/or cannot be resized." => "Hình ảnh quá lơn/hoặc không thể thay đổi kích thước",
+ "Cannot create {dir} folder." => "Không thể tạo thư mục {dir}",
+ "Cannot rename the folder." => "Không thể đổi tên thư mục",
+ "Cannot write to upload folder." => "Không thể ghi vào thư mục",
+ "Cannot read .htaccess" => "Không thể đọc tập tin .htaccess",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "không thể ghi tập tin .htaccess",
+ "Cannot read upload folder." => "Không thể đọc thư mục để tải lên",
+ "Cannot access or create thumbnails folder." => "Không có quyền truy cập hoặc không thể tạo thư mục",
+ "Cannot access or write to upload folder." => "Không có quyền truy cập hoặc không thể ghi",
+ "Please enter new folder name." => "Vui lòng nhập tên thư mục",
+ "Unallowable characters in folder name." => "Tên thư mục có chứa những ký tự không được phép",
+ "Folder name shouldn't begins with '.'" => "Thư mục không thể bắt đầu bằng '.'",
+ "Please enter new file name." => "Vui lòng nhập tên tập tin",
+ "Unallowable characters in file name." => "Tên tập tin chứa những ký tự không được phép",
+ "File name shouldn't begins with '.'" => "Tập tin không thể bắt đầu bằng '.'",
+ "Are you sure you want to delete this file?" => "Bạn có chắc bạn muốn xóa tập tin này?",
+ "Are you sure you want to delete this folder and all its content?" => "Bạn có chắc bạn muốn xóa thư mục và tất cả nội dung bên trong?",
+ "Non-existing directory type." => "Không tồn tại thư mục",
+ "Undefined MIME types." => "Không biết kiểu MIME này",
+ "Fileinfo PECL extension is missing." => "Fileinfo PECL extension is missing",
+ "Opening fileinfo database failed." => "Opening fileinfo database failed",
+ "You can't upload such files." => "Bạn không thể tải các tập tin như vậy.",
+ "The file '{file}' does not exist." => "Tập tin '{file}' đã có",
+ "Cannot read '{file}'." => "Không thể đọc '{file}'.",
+ "Cannot copy '{file}'." => "Không thể sao chép '{file}'.",
+ "Cannot move '{file}'." => "Không thể di chuyển '{file}'.",
+ "Cannot delete '{file}'." => "Không thể xóa tập tin '{file}'.",
+ "Cannot delete the folder." => "Không thể xóa thư mục",
+ "Click to remove from the Clipboard" => "Không thể xóa từ Bộ nhớ",
+ "This file is already added to the Clipboard." => "Tập tin đã có trong bộ nhớ",
+ "The files in the Clipboard are not readable." => "Không thể đọc các tập tin trong Bộ nhớ",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} tập tin trong Bộ nhớ không thể đọc. Bạn chắc chắn muốn sao chép phần còn lại?",
+ "The files in the Clipboard are not movable." => "Không thể di chuyển các tập tin trong Bộ nhớ",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} tập tin trong Bộ nhớ không thể di chuyển. Bạn chắc chắn muốn di chuyển phần còn lại?",
+ "The files in the Clipboard are not removable." => "Không thể xóa các tập tin trong Bộ nhớ",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} tập tin trong Bộ nhớ không thể xóa. Bạn chắc chắn muốn xóa phần còn lại?",
+ "The selected files are not removable." => "Lựa chọn tập tin để xóa",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "{count} tập tin không thể xóa. Bạn chắc chắn muốn xóa phần còn lại?",
+ "Are you sure you want to delete all selected files?" => "Bạn có chắc bạn muốn xóa tất cả tập tin đựoc chọn?",
+ "Failed to delete {count} files/folders." => "Không thể xóa {count} tập tin/thư mục",
+ "A file or folder with that name already exists." => "Đã tồn tại tập tin hoặc thư mục với tên này",
+ "Copy files here" => "Sao chép ở đây",
+ "Move files here" => "Di chuyển ở đây",
+ "Delete files" => "Xóa tập tin",
+ "Clear the Clipboard" => "Xóa bộ nhớ",
+ "Are you sure you want to delete all files in the Clipboard?" => "Bạn có chắc bạn muốn xóa tất cả tập tin trong Bộ nhớ?",
+ "Copy {count} files" => "Sao chep {count} tập tin",
+ "Move {count} files" => "Di chuyển {count} tập tin",
+ "Add to Clipboard" => "Thêm vào Bộ nhớ",
+ "Inexistant or inaccessible folder." => "Thư mục không tồn tại hoặc không thể truy cập",
+ "New folder name:" => "Tên mới của thư mục",
+ "New file name:" => "Tên mới của tập tin",
+ "Upload" => "Tải lên",
+ "Refresh" => "Làm mới",
+ "Settings" => "Cấu hình",
+ "Maximize" => "Tối đa",
+ "About" => "Giới thiệu",
+ "files" => "tập tin",
+ "selected files" => "chọn tập tin",
+ "View:" => "Xem",
+ "Show:" => "Hiện",
+ "Order by:" => "Thứ tự bởi",
+ "Thumbnails" => "Ảnh thu nhỏ",
+ "List" => "Danh sách",
+ "Name" => "Tên",
+ "Type" => "Kiểu",
+ "Size" => "Kích thước",
+ "Date" => "Ngày tháng",
+ "Descending" => "Giảm dần",
+ "Uploading file..." => "Đang tải lên",
+ "Loading image..." => "Đang đọc ảnh",
+ "Loading folders..." => "Đang đọc thư mục...",
+ "Loading files..." => "Đang đọc tập tin...",
+ "New Subfolder..." => "Thư mục con mới...",
+ "Rename..." => "Đổi tên...",
+ "Delete" => "Xóa",
+ "OK" => "Đồng Ý",
+ "Cancel" => "Hủy",
+ "Select" => "Chọn",
+ "Select Thumbnail" => "Chọn ảnh thu nhỏ",
+ "Select Thumbnails" => "Chọn nhiều ảnh thu nhỏ",
+ "View" => "Xem",
+ "Download" => "Tải xuống",
+ "Download files" => "Tải xuống tập tin",
+ "Clipboard" => "Bộ nhớ",
+ "Checking for new version..." => "Kiểm tra phiên bản mới",
+ "Unable to connect!" => "Không thể kết nối",
+ "Download version {version} now!" => "Có phiên bản mới {version}, tải về ngay!",
+ "KCFinder is up to date!" => "Không có cập nhật",
+ "Licenses:" => "Bản quyền",
+ "Attention" => "Cảnh báo",
+ "Question" => "Câu hỏi",
+ "Yes" => "Có",
+ "No" => "Không",
+ "You cannot rename the extension of files!" => "Bạn không thể đổi tên phần mở rộng của các tập tin!",
+ "Uploading file {number} of {count}... {progress}" => "Đang tải tập tin thứ {number} của {count}... {progress}",
+ "Failed to upload {filename}!" => "Tải lên thất bại {filename}!",
+ "Close" => "Đóng",
+ "Previous" => "Trước",
+ "Next" => "Sau",
+ "Confirmation" => "Xác nhận",
+ "Warning" => "Cảnh báo",);
+
+?>
diff --git a/kcfinder/lang/zh-cn.php b/kcfinder/lang/zh-cn.php
new file mode 100644
index 00000000..ac68e2ea
--- /dev/null
+++ b/kcfinder/lang/zh-cn.php
@@ -0,0 +1,130 @@
+ "zh_CN.UTF-8", // UNIX localization code
+ '_charset' => "utf-8", // Browser charset
+
+ // Date time formats. See http://www.php.net/manual/en/function.strftime.php
+ '_dateTimeFull' => "%A, %e %B, %Y %H:%M",
+ '_dateTimeMid' => "%a %e %b %Y %H:%M",
+ '_dateTimeSmall' => "%Y-%m-%d %H:%M",
+
+ "You don't have permissions to upload files." => "您没有权限上传文件。",
+ "You don't have permissions to browse server." => "您没有权限查看服务器文件。",
+ "Cannot move uploaded file to target folder." => "无法移动上传文件到指定文件夹。",
+ "Unknown error." => "发生不可预知异常。",
+ "The uploaded file exceeds {size} bytes." => "文件大小超过{size}字节。",
+ "The uploaded file was only partially uploaded." => "文件未完全上传。",
+ "No file was uploaded." => "文件未上传。",
+ "Missing a temporary folder." => "临时文件夹不存在。",
+ "Failed to write file." => "写入文件失败。",
+ "Denied file extension." => "禁止的文件扩展名。",
+ "Unknown image format/encoding." => "无法确认图片格式。",
+ "The image is too big and/or cannot be resized." => "图片大太,且(或)无法更改大小。",
+ "Cannot create {dir} folder." => "无法创建{dir}文件夹。",
+ "Cannot rename the folder." => "无法重命名该文件夹。",
+ "Cannot write to upload folder." => "无法写入上传文件夹。",
+ "Cannot read .htaccess" => "文件.htaccess无法读取。",
+ "Incorrect .htaccess file. Cannot rewrite it!" => "文件.htaccess错误,无法重写。",
+ "Cannot read upload folder." => "无法读取上传目录。",
+ "Cannot access or create thumbnails folder." => "无法访问或创建缩略图文件夹。",
+ "Cannot access or write to upload folder." => "无法访问或写入上传文件夹。",
+ "Please enter new folder name." => "请输入文件夹名。",
+ "Unallowable characters in folder name." => "文件夹名含有禁止字符。",
+ "Folder name shouldn't begins with '.'" => "文件夹名不能以点(.)为首字符。",
+ "Please enter new file name." => "请输入新文件名。",
+ "Unallowable characters in file name." => "文件名含有禁止字符。",
+ "File name shouldn't begins with '.'" => "文件名不能以点(.)为首字符。",
+ "Are you sure you want to delete this file?" => "是否确认删除该文件?",
+ "Are you sure you want to delete this folder and all its content?" => "是否确认删除该文件夹以及其子文件和子目录?",
+ "Non-existing directory type." => "不存在的目录类型。",
+ "Undefined MIME types." => "未定义的MIME类型。",
+ "Fileinfo PECL extension is missing." => "文件PECL属性不存在。",
+ "Opening fileinfo database failed." => "打开文件属性数据库出错。",
+ "You can't upload such files." => "你无法上传该文件。",
+ "The file '{file}' does not exist." => "文件{file}不存在。",
+ "Cannot read '{file}'." => "无法读取文件{file}。",
+ "Cannot copy '{file}'." => "无法复制文件{file}。",
+ "Cannot move '{file}'." => "无法移动文件{file}。",
+ "Cannot delete '{file}'." => "无法删除文件{file}。",
+ "Cannot delete the folder." => "无法删除该文件夹。",
+ "Click to remove from the Clipboard" => "点击从剪贴板删除",
+ "This file is already added to the Clipboard." => "文件已复制到剪贴板。",
+ "The files in the Clipboard are not readable." => "剪贴板上该文件无法读取。",
+ "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "剪贴板{count}个文件无法读取。 是否复制静态文件?",
+ "The files in the Clipboard are not movable." => "剪贴板上该文件无法移动。",
+ "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "剪贴板{count}个文件无法移动。 是否移动静态文件?",
+ "The files in the Clipboard are not removable." => "剪贴板上该文件无法删除。",
+ "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "剪贴板{count}个文件无法删除。 是否删除静态文件?",
+ "The selected files are not removable." => "选中文件未删除。",
+ "{count} selected files are not removable. Do you want to delete the rest?" => "选中的{count}个文件未删除。是否删除静态文件?",
+ "Are you sure you want to delete all selected files?" => "是否确认删除选中文件?",
+ "Failed to delete {count} files/folders." => "{count}个文件或文件夹无法删除。",
+ "A file or folder with that name already exists." => "文件或文件夹已存在。",
+ "Copy files here" => "复制到这里",
+ "Move files here" => "移动到这里",
+ "Delete files" => "删除这些文件",
+ "Clear the Clipboard" => "清除剪贴板",
+ "Are you sure you want to delete all files in the Clipboard?" => "是否确认删除所有在剪贴板的文件?",
+ "Copy {count} files" => "复制 {count} 个文件",
+ "Move {count} files" => "移动 {count} 个文件 ",
+ "Add to Clipboard" => "添加到剪贴板",
+ "Inexistant or inaccessible folder." => "不存在或不可访问的文件夹。",
+ "New folder name:" => "新文件夹名:",
+ "New file name:" => "新文件夹:",
+ "Upload" => "上传",
+ "Refresh" => "刷新",
+ "Settings" => "设置",
+ "Maximize" => "最大化",
+ "About" => "关于",
+ "files" => "文件",
+ "selected files" => "选中的文件",
+ "View:" => "视图:",
+ "Show:" => "显示:",
+ "Order by:" => "排序:",
+ "Thumbnails" => "图标",
+ "List" => "列表",
+ "Name" => "文件名",
+ "Type" => "种类",
+ "Size" => "大小",
+ "Date" => "日期",
+ "Descending" => "降序",
+ "Uploading file..." => "正在上传文件...",
+ "Loading image..." => "正在加载图片...",
+ "Loading folders..." => "正在加载文件夹...",
+ "Loading files..." => "正在加载文件...",
+ "New Subfolder..." => "新建文件夹...",
+ "Rename..." => "重命名...",
+ "Delete" => "删除",
+ "OK" => "OK",
+ "Cancel" => "取消",
+ "Select" => "选择",
+ "Select Thumbnail" => "选择缩略图",
+ "Select Thumbnails" => "选择缩略图",
+ "View" => "查看",
+ "Download" => "下载",
+ "Download files" => "下载文件",
+ "Clipboard" => "剪贴板",
+ "Checking for new version..." => "正在检查新版本...",
+ "Unable to connect!" => "无法链接!",
+ "Download version {version} now!" => "马上下载{version}版本!",
+ "KCFinder is up to date!" => "KCFinder已经是最新的!",
+ "Licenses:" => "许可证",
+ "Attention" => "注意",
+ "Question" => "问题",
+ "Yes" => "是",
+ "No" => "否",
+ "You cannot rename the extension of files!" => "禁止修改文件后缀",
+ "Uploading file {number} of {count}... {progress}" => "正在上传文件{number} / {count}... {progress}",
+ "Failed to upload {filename}!" => "上传失败{filename}!",
+);
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/.htaccess b/kcfinder/lib/.htaccess
new file mode 100644
index 00000000..d61b264c
--- /dev/null
+++ b/kcfinder/lib/.htaccess
@@ -0,0 +1,4 @@
+
+Order allow,deny
+Deny from all
+
diff --git a/kcfinder/lib/class_fastImage.php b/kcfinder/lib/class_fastImage.php
new file mode 100644
index 00000000..bd4d5c24
--- /dev/null
+++ b/kcfinder/lib/class_fastImage.php
@@ -0,0 +1,255 @@
+load($uri);
+ }
+
+ public function load($uri)
+ {
+ if ($this->handle) $this->close();
+
+ $this->uri = $uri;
+ // Joy - this is a fix for URLs missing "http:"
+ if ($uri[0] == '/' && $uri[1] == '/') {
+ $uri = 'http:' . $uri;
+ }
+
+ $this->handle = fopen(
+ $uri,
+ 'r',
+ false,
+ stream_context_create(array(
+ 'http'=> array('timeout' => 0.5),
+ ))
+ );
+ }
+
+ public function isValid()
+ {
+ return empty($this->handle) ? false : true;
+ }
+
+ public function close()
+ {
+ if (is_resource($this->handle)) fclose($this->handle);
+ }
+
+
+ public function getSize()
+ {
+ $this->strpos = 0;
+ if ($this->getType())
+ {
+ return array_values($this->parseSize());
+ }
+
+ return false;
+ }
+
+
+ public function getType()
+ {
+ $this->strpos = 0;
+
+ if (!$this->type)
+ {
+ switch ($this->getChars(2))
+ {
+ case "BM":
+ return $this->type = 'bmp';
+ case "GI":
+ return $this->type = 'gif';
+ case chr(0xFF).chr(0xd8):
+ return $this->type = 'jpeg';
+ case chr(0x89).'P':
+ return $this->type = 'png';
+ default:
+ return false;
+ }
+ }
+
+ return $this->type;
+ }
+
+
+ private function parseSize()
+ {
+ $this->strpos = 0;
+
+ switch ($this->type)
+ {
+ case 'png':
+ return $this->parseSizeForPNG();
+ case 'gif':
+ return $this->parseSizeForGIF();
+ case 'bmp':
+ return $this->parseSizeForBMP();
+ case 'jpeg':
+ return $this->parseSizeForJPEG();
+ }
+
+ return null;
+ }
+
+
+ private function parseSizeForPNG()
+ {
+ $chars = $this->getChars(25);
+
+ return unpack("N*", substr($chars, 16, 8));
+ }
+
+
+ private function parseSizeForGIF()
+ {
+ $chars = $this->getChars(11);
+
+ return unpack("S*", substr($chars, 6, 4));
+ }
+
+
+ private function parseSizeForBMP()
+ {
+ $chars = $this->getChars(29);
+ $chars = substr($chars, 14, 14);
+ $type = unpack('C', $chars);
+
+ return (reset($type) == 40) ? unpack('L*', substr($chars, 4)) : unpack('L*', substr($chars, 4, 8));
+ }
+
+
+ private function parseSizeForJPEG()
+ {
+ $state = null;
+ $i = 0;
+
+ while (true)
+ {
+ switch ($state)
+ {
+ default:
+ $this->getChars(2);
+ $state = 'started';
+ break;
+ case 'started':
+ $b = $this->getByte();
+ if ($b === false) return false;
+
+ $state = $b == 0xFF ? 'sof' : 'started';
+ break;
+
+ case 'sof':
+ $b = $this->getByte();
+ if (in_array($b, range(0xe0, 0xef)))
+ {
+ $state = 'skipframe';
+ }
+ elseif (in_array($b, array_merge(range(0xC0,0xC3), range(0xC5,0xC7), range(0xC9,0xCB), range(0xCD,0xCF))))
+ {
+ $state = 'readsize';
+ }
+ elseif ($b == 0xFF)
+ {
+ $state = 'sof';
+ }
+ else
+ {
+ $state = 'skipframe';
+ }
+ break;
+
+ case 'skipframe':
+ $skip = $this->readInt($this->getChars(2)) - 2;
+ $state = 'doskip';
+ break;
+
+ case 'doskip':
+ $this->getChars($skip);
+ $state = 'started';
+ break;
+
+ case 'readsize':
+ $c = $this->getChars(7);
+
+ return array($this->readInt(substr($c, 5, 2)), $this->readInt(substr($c, 3, 2)));
+ }
+ }
+ }
+
+
+ private function getChars($n)
+ {
+ $response = null;
+
+ // do we need more data?
+ if ($this->strpos + $n -1 >= strlen($this->str))
+ {
+ $end = ($this->strpos + $n);
+
+ while (strlen($this->str) < $end && $response !== false)
+ {
+ // read more from the file handle
+ $need = $end - ftell($this->handle);
+
+ if ($response = fread($this->handle, $need))
+ {
+ $this->str .= $response;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+
+ $result = substr($this->str, $this->strpos, $n);
+ $this->strpos += $n;
+
+ return $result;
+ }
+
+
+ private function getByte()
+ {
+ $c = $this->getChars(1);
+ $b = unpack("C", $c);
+
+ return reset($b);
+ }
+
+
+ private function readInt($str)
+ {
+ $size = unpack("C*", $str);
+
+ return ($size[1] << 8) + $size[2];
+ }
+
+
+ public function __destruct()
+ {
+ $this->close();
+ }
+}
\ No newline at end of file
diff --git a/kcfinder/lib/class_image.php b/kcfinder/lib/class_image.php
new file mode 100644
index 00000000..49056529
--- /dev/null
+++ b/kcfinder/lib/class_image.php
@@ -0,0 +1,243 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+abstract class image {
+ const DEFAULT_JPEG_QUALITY = 75;
+
+/** Image resource or object
+ * @var mixed */
+ protected $image;
+
+/** Image width in pixels
+ * @var integer */
+ protected $width;
+
+/** Image height in pixels
+ * @var integer */
+ protected $height;
+
+/** Init error
+ * @var bool */
+ protected $initError = false;
+
+/** Driver specific options
+ * @var array */
+ protected $options = array();
+
+
+/** Magic method which allows read-only access to all protected or private
+ * class properties
+ * @param string $property
+ * @return mixed */
+
+ final public function __get($property) {
+ return property_exists($this, $property) ? $this->$property : null;
+ }
+
+
+/** Constructor. Parameter $image should be:
+ * 1. An instance of image driver class (copy instance).
+ * 2. An image represented by the type of the $image property
+ * (resource or object).
+ * 3. An array with two elements. First - width, second - height.
+ * Creates a blank image.
+ * 4. A filename string. Get image form file.
+ * Second paramaeter is used by pass some specific image driver options
+ * @param mixed $image
+ * @param array $options */
+
+ public function __construct($image, array $options=array()) {
+ $this->image = $this->width = $this->height = null;
+ $imageDetails = $this->buildImage($image);
+
+ if ($imageDetails !== false)
+ list($this->image, $this->width, $this->height) = $imageDetails;
+ else
+ $this->initError = true;
+ $this->options = $options;
+ }
+
+
+/** Factory pattern to load selected driver. $image and $options are passed
+ * to the constructor of the image driver
+ * @param string $driver
+ * @param mixed $image
+ * @return object */
+
+ final static function factory($driver, $image, array $options=array()) {
+ $class = __NAMESPACE__ . "\\image_$driver";
+ return new $class($image, $options);
+ }
+
+
+/** Checks if the drivers in the array parameter could be used. Returns first
+ * found one
+ * @param array $drivers
+ * @return string */
+
+ final static function getDriver(array $drivers=array('gd')) {
+ foreach ($drivers as $driver) {
+ if (!preg_match('/^[a-z0-9\_]+$/i', $driver))
+ continue;
+ $class = __NAMESPACE__ . "\\image_$driver";
+ if (class_exists($class) && method_exists($class, "available")) {
+ eval("\$avail = $class::available();");
+ if ($avail) return $driver;
+ }
+ }
+ return false;
+ }
+
+
+/** Returns an array. Element 0 - image resource. Element 1 - width. Element 2 - height.
+ * Returns FALSE on failure.
+ * @param mixed $image
+ * @return array */
+
+ final protected function buildImage($image) {
+ $class = get_class($this);
+
+ if ($image instanceof $class) {
+ $width = $image->width;
+ $height = $image->height;
+ $img = $image->image;
+
+ } elseif (is_array($image)) {
+ list($key, $width) = each($image);
+ list($key, $height) = each($image);
+ $img = $this->getBlankImage($width, $height);
+
+ } else
+ $img = $this->getImage($image, $width, $height);
+
+ return ($img !== false)
+ ? array($img, $width, $height)
+ : false;
+ }
+
+
+/** Returns calculated proportional width from the given height
+ * @param integer $resizedHeight
+ * @return integer */
+
+ final public function getPropWidth($resizedHeight) {
+ $width = round(($this->width * $resizedHeight) / $this->height);
+ if (!$width) $width = 1;
+ return $width;
+ }
+
+
+/** Returns calculated proportional height from the given width
+ * @param integer $resizedWidth
+ * @return integer */
+
+ final public function getPropHeight($resizedWidth) {
+ $height = round(($this->height * $resizedWidth) / $this->width);
+ if (!$height) $height = 1;
+ return $height;
+ }
+
+
+/** Checks if PHP needs some extra extensions to use the image driver. This
+ * static method should be implemented into driver classes like abstract
+ * methods
+ * @return bool */
+ static function available() { return false; }
+
+/** Checks if file is an image. This static method should be implemented into
+ * driver classes like abstract methods
+ * @param string $file
+ * @return bool */
+ static function checkImage($file) { return false; }
+
+/** Resize image. Should return TRUE on success or FALSE on failure
+ * @param integer $width
+ * @param integer $height
+ * @return bool */
+ abstract public function resize($width, $height);
+
+/** Resize image to fit in given resolution. Should returns TRUE on success
+ * or FALSE on failure. If $background is set, the image size will be
+ * $width x $height and the empty spaces (if any) will be filled with defined
+ * color. Background color examples: "#5f5", "#ff67ca", array(255, 255, 255)
+ * @param integer $width
+ * @param integer $height
+ * @param mixed $background
+ * @return bool */
+ abstract public function resizeFit($width, $height, $background=false);
+
+/** Resize and crop the image to fit in given resolution. Returns TRUE on
+ * success or FALSE on failure
+ * @param mixed $src
+ * @param integer $offset
+ * @return bool */
+ abstract public function resizeCrop($width, $height, $offset=false);
+
+
+/** Rotate image
+ * @param integer $angle
+ * @param string $background
+ * @return bool */
+ abstract public function rotate($angle, $background="#000000");
+
+ abstract public function flipHorizontal();
+
+ abstract public function flipVertical();
+
+/** Apply a PNG or GIF watermark to the image. $top and $left parameters sets
+ * the offset of the watermark in pixels. Boolean and NULL values are possible
+ * too. In default case (FALSE, FALSE) the watermark should be applyed to
+ * the bottom right corner. NULL values means center aligning. If the
+ * watermark is bigger than the image or it's partialy or fully outside the
+ * image, it shoudn't be applied
+ * @param string $file
+ * @param mixed $top
+ * @param mixed $left
+ * @return bool */
+ abstract public function watermark($file, $left=false, $top=false);
+
+/** Should output the image. Second parameter is used to pass some options like
+ * 'file' - if is set, the output will be written to a file
+ * 'quality' - compression quality
+ * It's possible to use extra specific options required by image type ($type)
+ * @param string $type
+ * @param array $options
+ * @return bool */
+ abstract public function output($type='jpeg', array $options=array());
+
+/** This method should create a blank image with selected size. Should returns
+ * resource or object related to the created image, which will be passed to
+ * $image property
+ * @param integer $width
+ * @param integer $height
+ * @return mixed */
+ abstract protected function getBlankImage($width, $height);
+
+/** This method should create an image from source image. Only first parameter
+ * ($image) is input. Its type should be filename string or a type of the
+ * $image property. See the constructor reference for details. The
+ * parametters $width and $height are output only. Should returns resource or
+ * object related to the created image, which will be passed to $image
+ * property
+ * @param mixed $image
+ * @param integer $width
+ * @param integer $height
+ * @return mixed */
+ abstract protected function getImage($image, &$width, &$height);
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/class_image_gd.php b/kcfinder/lib/class_image_gd.php
new file mode 100644
index 00000000..b46ec6ce
--- /dev/null
+++ b/kcfinder/lib/class_image_gd.php
@@ -0,0 +1,354 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class image_gd extends image {
+
+
+ // ABSTRACT PUBLIC METHODS
+
+ public function resize($width, $height) {
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+ return (
+ (false !== ($img = new image_gd(array($width, $height)))) &&
+ $img->imageCopyResampled($this) &&
+ (false !== ($this->image = $img->image)) &&
+ (false !== ($this->width = $img->width)) &&
+ (false !== ($this->height = $img->height))
+ );
+ }
+
+ public function resizeFit($width, $height, $background=false) {
+ if ((!$width && !$height) || (($width == $this->width) && ($height == $this->height)))
+ return true;
+ if (!$width || (($height / $width) < ($this->height / $this->width))) {
+ $h = $height;
+ $w = round(($this->width * $h) / $this->height);
+ } elseif (!$height || (($width / $height) < ($this->width / $this->height))) {
+ $w = $width;
+ $h = round(($this->height * $w) / $this->width);
+ } else {
+ $w = $width;
+ $h = $height;
+ }
+ if (!$w) $w = 1;
+ if (!$h) $h = 1;
+
+ if ($background === false)
+ return $this->resize($w, $h);
+
+ else {
+ $img = new image_gd(array($width, $height));
+ $x = round(($width - $w) / 2);
+ $y = round(($height - $h) / 2);
+
+ if ((false === $this->resize($w, $h)) ||
+ (false === $img->imageFilledRectangle(0, 0, $width, $height, $background)) ||
+ (false === $img->imageCopyResampled($this->image, $x, $y, 0, 0, $w, $h))
+ )
+ return false;
+
+ $this->image = $img->image;
+ $this->width = $width;
+ $this->height = $height;
+
+ return true;
+ }
+ }
+
+ public function resizeCrop($width, $height, $offset=false) {
+
+ if (($this->width / $this->height) > ($width / $height)) {
+ $h = $height;
+ $w = ($this->width * $h) / $this->height;
+ $y = 0;
+ if ($offset !== false) {
+ if ($offset > 0)
+ $offset = -$offset;
+ if (($w + $offset) <= $width)
+ $offset = $width - $w;
+ $x = $offset;
+ } else
+ $x = ($width - $w) / 2;
+
+ } else {
+ $w = $width;
+ $h = ($this->height * $w) / $this->width;
+ $x = 0;
+ if ($offset !== false) {
+ if ($offset > 0)
+ $offset = -$offset;
+ if (($h + $offset) <= $height)
+ $offset = $height - $h;
+ $y = $offset;
+ } else
+ $y = ($height - $h) / 2;
+ }
+
+ $x = round($x);
+ $y = round($y);
+ $w = round($w);
+ $h = round($h);
+ if (!$w) $w = 1;
+ if (!$h) $h = 1;
+
+ $return = (
+ (false !== ($img = new image_gd(array($width, $height))))) &&
+ (false !== ($img->imageCopyResampled($this->image, $x, $y, 0, 0, $w, $h))
+ );
+
+ if ($return) {
+ $this->image = $img->image;
+ $this->width = $w;
+ $this->height = $h;
+ }
+
+ return $return;
+ }
+
+ public function rotate($angle, $background="#000000") {
+ $angle = -$angle;
+ $img = @imagerotate($this->image, $angle, $this->gdColor($background));
+ if ($img === false)
+ return false;
+ $this->width = imagesx($img);
+ $this->height = imagesy($img);
+ $this->image = $img;
+ return true;
+ }
+
+ public function flipHorizontal() {
+ $img = imagecreatetruecolor($this->width, $this->height);
+ if (imagecopyresampled($img, $this->image, 0, 0, ($this->width - 1), 0, $this->width, $this->height, -$this->width, $this->height))
+ $this->image = $img;
+ else
+ return false;
+ return true;
+ }
+
+ public function flipVertical() {
+ $img = imagecreatetruecolor($this->width, $this->height);
+ if (imagecopyresampled($img, $this->image, 0, 0, 0, ($this->height - 1), $this->width, $this->height, $this->width, -$this->height))
+ $this->image = $img;
+ else
+ return false;
+ return true;
+ }
+
+ public function watermark($file, $left=false, $top=false) {
+ $info = getimagesize($file);
+ list($w, $h, $t) = $info;
+ if (!in_array($t, array(IMAGETYPE_PNG, IMAGETYPE_GIF)))
+ return false;
+ $imagecreate = ($t == IMAGETYPE_PNG) ? "imagecreatefrompng" : "imagecreatefromgif";
+
+ if (!@imagealphablending($this->image, true) ||
+ (false === ($wm = @$imagecreate($file)))
+ )
+ return false;
+
+ $w = imagesx($wm);
+ $h = imagesy($wm);
+ $x =
+ ($left === true) ? 0 : (
+ ($left === null) ? round(($this->width - $w) / 2) : (
+ (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left));
+ $y =
+ ($top === true) ? 0 : (
+ ($top === null) ? round(($this->height - $h) / 2) : (
+ (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top));
+
+ if ((($x + $w) > $this->width) ||
+ (($y + $h) > $this->height) ||
+ ($x < 0) || ($y < 0)
+ )
+ return false;
+
+ if (($wm === false) || !@imagecopy($this->image, $wm, $x, $y, 0, 0, $w, $h))
+ return false;
+
+ @imagealphablending($this->image, false);
+ @imagesavealpha($this->image, true);
+ return true;
+ }
+
+ public function output($type='jpeg', array $options=array()) {
+ $method = "output_$type";
+ if (!method_exists($this, $method))
+ return false;
+ return $this->$method($options);
+ }
+
+
+ // ABSTRACT PROTECTED METHODS
+
+ protected function getBlankImage($width, $height) {
+ $image = imagecreatetruecolor($width, $height);
+ imagealphablending($image, false);
+ imagesavealpha($image, true);
+ return $image;
+ }
+
+ protected function getImage($image, &$width, &$height) {
+
+ if (is_resource($image) && (get_resource_type($image) == "gd")) {
+ $width = @imagesx($image);
+ $height = @imagesy($image);
+ imagealphablending($image, false);
+ imagesavealpha($image, true);
+ return $image;
+
+ } elseif (is_string($image) &&
+ (false !== (list($width, $height, $t) = @getimagesize($image)))
+ ) {
+ $image =
+ ($t == IMAGETYPE_GIF) ? @imagecreatefromgif($image) : (
+ ($t == IMAGETYPE_WBMP) ? @imagecreatefromwbmp($image) : (
+ ($t == IMAGETYPE_JPEG) ? @imagecreatefromjpeg($image) : (
+ ($t == IMAGETYPE_PNG) ? @imagecreatefrompng($image) : (
+ ($t == IMAGETYPE_XBM) ? @imagecreatefromxbm($image) : false
+ ))));
+
+ if ($t == IMAGETYPE_PNG) {
+ imagealphablending($image, false);
+ imagesavealpha($image, true);
+ }
+ return $image;
+
+ } else
+ return false;
+ }
+
+
+ // PSEUDO-ABSTRACT STATIC METHODS
+
+ static function available() {
+ return function_exists("imagecreatefromjpeg");
+ }
+
+ static function checkImage($file) {
+ if (!is_string($file) ||
+ ((false === (list($width, $height, $t) = @getimagesize($file))))
+ )
+ return false;
+
+ $img =
+ ($t == IMAGETYPE_GIF) ? @imagecreatefromgif($file) : (
+ ($t == IMAGETYPE_WBMP) ? @imagecreatefromwbmp($file) : (
+ ($t == IMAGETYPE_JPEG) ? @imagecreatefromjpeg($file) : (
+ ($t == IMAGETYPE_PNG) ? @imagecreatefrompng($file) : (
+ ($t == IMAGETYPE_XBM) ? @imagecreatefromxbm($file) : false
+ ))));
+
+ return ($img !== false);
+ }
+
+
+ // OWN METHODS
+
+ protected function output_png(array $options=array()) {
+ $file = isset($options['file']) ? $options['file'] : null;
+ $quality = isset($options['quality']) ? $options['quality'] : null;
+ $filters = isset($options['filters']) ? $options['filters'] : null;
+ if (($file === null) && !headers_sent())
+ header("Content-Type: image/png");
+ return imagepng($this->image, $file, $quality, $filters);
+ }
+
+ protected function output_jpeg(array $options=array()) {
+ $file = isset($options['file']) ? $options['file'] : null;
+ $quality = isset($options['quality'])
+ ? $options['quality']
+ : self::DEFAULT_JPEG_QUALITY;
+ if (($file === null) && !headers_sent())
+ header("Content-Type: image/jpeg");
+ return imagejpeg($this->image, $file, $quality);
+ }
+
+ protected function output_gif(array $options=array()) {
+ $file = isset($options['file']) ? $options['file'] : null;
+ if (isset($options['file']) && !headers_sent())
+ header("Content-Type: image/gif");
+ return imagegif($this->image, $file);
+ }
+
+ protected function gdColor() {
+ $args = func_get_args();
+
+ $exprRGB = '/^rgb\(\s*(\d{1,3})\s*\,\s*(\d{1,3})\s*\,\s*(\d{1,3})\s*\)$/i';
+ $exprHex1 = '/^\#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i';
+ $exprHex2 = '/^\#?([0-9a-f])([0-9a-f])([0-9a-f])$/i';
+ $exprByte = '/^([01]?\d?\d|2[0-4]\d|25[0-5])$/';
+
+ if (!isset($args[0]))
+ return false;
+
+ if (count($args[0]) == 3) {
+ list($r, $g, $b) = $args[0];
+
+ } elseif (preg_match($exprRGB, $args[0], $match)) {
+ list($tmp, $r, $g, $b) = $match;
+
+ } elseif (preg_match($exprHex1, $args[0], $match)) {
+ list($tmp, $r, $g, $b) = $match;
+ $r = hexdec($r);
+ $g = hexdec($g);
+ $b = hexdec($b);
+
+ } elseif (preg_match($exprHex2, $args[0], $match)) {
+ list($tmp, $r, $g, $b) = $match;
+ $r = hexdec("$r$r");
+ $g = hexdec("$g$g");
+ $b = hexdec("$b$b");
+
+ } elseif ((count($args) == 3) &&
+ preg_match($exprByte, $args[0]) &&
+ preg_match($exprByte, $args[1]) &&
+ preg_match($exprByte, $args[2])
+ ) {
+ list($r, $g, $b) = $args;
+
+ } else
+ return false;
+
+ return imagecolorallocate($this->image, $r, $g, $b);
+ }
+
+ protected function imageFilledRectangle($x1, $y1, $x2, $y2, $color) {
+ $color = $this->gdColor($color);
+ if ($color === false) return false;
+ return imageFilledRectangle($this->image, $x1, $y1, $x2, $y2, $color);
+ }
+
+ protected function imageCopyResampled(
+ $src, $dstX=0, $dstY=0, $srcX=0, $srcY=0, $dstW=null, $dstH=null, $srcW=null, $srcH=null
+ ) {
+ $imageDetails = $this->buildImage($src);
+
+ if ($imageDetails === false)
+ return false;
+
+ list($src, $srcWidth, $srcHeight) = $imageDetails;
+
+ if (is_null($dstW)) $dstW = $this->width - $dstW;
+ if (is_null($dstH)) $dstH = $this->height - $dstY;
+ if (is_null($srcW)) $srcW = $srcWidth - $srcX;
+ if (is_null($srcH)) $srcH = $srcHeight - $srcY;
+ return imageCopyResampled($this->image, $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH);
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/class_image_gmagick.php b/kcfinder/lib/class_image_gmagick.php
new file mode 100644
index 00000000..f49b0f1b
--- /dev/null
+++ b/kcfinder/lib/class_image_gmagick.php
@@ -0,0 +1,304 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class image_gmagick extends image {
+
+ static $MIMES = array(
+ //'tif' => "image/tiff"
+ );
+
+
+ // ABSTRACT PUBLIC METHODS
+
+ public function resize($width, $height) {//
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+ try {
+ $this->image->scaleImage($width, $height);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $this->width = $width;
+ $this->height = $height;
+ return true;
+ }
+
+ public function resizeFit($width, $height, $background=false) {//
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+
+ try {
+ $this->image->scaleImage($width, $height, true);
+ $w = $this->image->getImageWidth();
+ $h = $this->image->getImageHeight();
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ if ($background === false) {
+ $this->width = $w;
+ $this->height = $h;
+ return true;
+
+ } else {
+ try {
+ $this->image->setImageBackgroundColor($background);
+ $x = round(($width - $w) / 2);
+ $y = round(($height - $h) / 2);
+ $img = new \Gmagick();
+ $img->newImage($width, $height, $background);
+ $img->compositeImage($this->image, 1, $x, $y);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $this->image = $img;
+ $this->width = $width;
+ $this->height = $height;
+ return true;
+ }
+ }
+
+ public function resizeCrop($width, $height, $offset=false) {
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+
+ if (($this->width / $this->height) > ($width / $height)) {
+ $h = $height;
+ $w = ($this->width * $h) / $this->height;
+ $y = 0;
+ if ($offset !== false) {
+ if ($offset > 0)
+ $offset = -$offset;
+ if (($w + $offset) <= $width)
+ $offset = $width - $w;
+ $x = $offset;
+ } else
+ $x = ($width - $w) / 2;
+
+ } else {
+ $w = $width;
+ $h = ($this->height * $w) / $this->width;
+ $x = 0;
+ if ($offset !== false) {
+ if ($offset > 0)
+ $offset = -$offset;
+ if (($h + $offset) <= $height)
+ $offset = $height - $h;
+ $y = $offset;
+ } else
+ $y = ($height - $h) / 2;
+ }
+
+ $x = round($x);
+ $y = round($y);
+ $w = round($w);
+ $h = round($h);
+ if (!$w) $w = 1;
+ if (!$h) $h = 1;
+
+ try {
+ $this->image->scaleImage($w, $h);
+ $this->image->cropImage($width, $height, -$x, -$y);
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ $this->width = $width;
+ $this->height = $height;
+ return true;
+ }
+
+ public function rotate($angle, $background="#000000") {
+ try {
+ $this->image->rotateImage($background, $angle);
+ $w = $this->image->getImageWidth();
+ $h = $this->image->getImageHeight();
+ } catch (\Exception $e) {
+ return false;
+ }
+ $this->width = $w;
+ $this->height = $h;
+ return true;
+ }
+
+ public function flipHorizontal() {
+ try {
+ $this->image->flopImage();
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+ public function flipVertical() {
+ try {
+ $this->image->flipImage();
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+ public function watermark($file, $left=false, $top=false) {
+ try {
+ $wm = new \Gmagick($file);
+ $w = $wm->getImageWidth();
+ $h = $wm->getImageHeight();
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ $x =
+ ($left === true) ? 0 : (
+ ($left === null) ? round(($this->width - $w) / 2) : (
+ (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left));
+ $y =
+ ($top === true) ? 0 : (
+ ($top === null) ? round(($this->height - $h) / 2) : (
+ (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top));
+
+ if ((($x + $w) > $this->width) ||
+ (($y + $h) > $this->height) ||
+ ($x < 0) || ($y < 0)
+ )
+ return false;
+
+ try {
+ $this->image->compositeImage($wm, 1, $x, $y);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ // ABSTRACT PROTECTED METHODS
+
+ protected function getBlankImage($width, $height) {
+ try {
+ $img = new \Gmagick();
+ $img->newImage($width, $height, "none");
+ } catch (\Exception $e) {
+ return false;
+ }
+ return $img;
+ }
+
+ protected function getImage($image, &$width, &$height) {
+
+ if (is_object($image) && ($image instanceof image_gmagick)) {
+ $width = $image->width;
+ $height = $image->height;
+ return $image->image;
+
+ } elseif (is_object($image) && ($image instanceof \Gmagick)) {
+ try {
+ $w = $image->getImageWidth();
+ $h = $image->getImageHeight();
+ } catch (\Exception $e) {
+ return false;
+ }
+ $width = $w;
+ $height = $h;
+ return $image;
+
+ } elseif (is_string($image)) {
+ try {
+ $image = new \Gmagick($image);
+ $w = $image->getImageWidth();
+ $h = $image->getImageHeight();
+ } catch (\Exception $e) {
+ return false;
+ }
+ $width = $w;
+ $height = $h;
+ return $image;
+
+ } else
+ return false;
+ }
+
+
+ // PSEUDO-ABSTRACT STATIC METHODS
+
+ static function available() {
+ return class_exists("Gmagick");
+ }
+
+ static function checkImage($file) {
+ try {
+ $img = new \Gmagick($file);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ // INHERIT METHODS
+
+ public function output($type="jpeg", array $options=array()) {
+ $type = strtolower($type);
+ try {
+ $this->image->setImageFormat($type);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $method = "optimize_$type";
+ if (method_exists($this, $method) && !$this->$method($options))
+ return false;
+
+ if (!isset($options['file'])) {
+ if (!headers_sent()) {
+ $mime = isset(self::$MIMES[$type]) ? self::$MIMES[$type] : "image/$type";
+ header("Content-Type: $mime");
+ }
+ echo $this->image;
+
+ } else {
+ $file = $options['file'] . ".$type";
+ try {
+ $this->image->writeImage($file);
+ } catch (\Exception $e) {
+ @unlink($file);
+ return false;
+ }
+
+ if (!@rename($file, $options['file'])) {
+ @unlink($file);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
+ // OWN METHODS
+
+ protected function optimize_jpeg(array $options=array()) {
+ $quality = isset($options['quality']) ? $options['quality'] : self::DEFAULT_JPEG_QUALITY;
+ try {
+ $this->image->setCompressionQuality($quality);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/class_image_imagick.php b/kcfinder/lib/class_image_imagick.php
new file mode 100644
index 00000000..e3dfa332
--- /dev/null
+++ b/kcfinder/lib/class_image_imagick.php
@@ -0,0 +1,307 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class image_imagick extends image {
+
+ static $MIMES = array(
+ //'tif' => "image/tiff"
+ );
+
+
+ // ABSTRACT PUBLIC METHODS
+
+ public function resize($width, $height) {//
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+ try {
+ $this->image->scaleImage($width, $height);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $this->width = $width;
+ $this->height = $height;
+ return true;
+ }
+
+ public function resizeFit($width, $height, $background=false) {//
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+
+ try {
+ $this->image->scaleImage($width, $height, true);
+ $size = $this->image->getImageGeometry();
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ if ($background === false) {
+ $this->width = $size['width'];
+ $this->height = $size['height'];
+ return true;
+
+ } else {
+ try {
+ $this->image->setImageBackgroundColor($background);
+ $x = -round(($width - $size['width']) / 2);
+ $y = -round(($height - $size['height']) / 2);
+ $this->image->extentImage($width, $height, $x, $y);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $this->width = $width;
+ $this->height = $height;
+ return true;
+ }
+ }
+
+ public function resizeCrop($width, $height, $offset=false) {
+ if (!$width) $width = 1;
+ if (!$height) $height = 1;
+
+ if (($this->width / $this->height) > ($width / $height)) {
+ $h = $height;
+ $w = ($this->width * $h) / $this->height;
+ $y = 0;
+ if ($offset !== false) {
+ if ($offset > 0)
+ $offset = -$offset;
+ if (($w + $offset) <= $width)
+ $offset = $width - $w;
+ $x = $offset;
+ } else
+ $x = ($width - $w) / 2;
+
+ } else {
+ $w = $width;
+ $h = ($this->height * $w) / $this->width;
+ $x = 0;
+ if ($offset !== false) {
+ if ($offset > 0)
+ $offset = -$offset;
+ if (($h + $offset) <= $height)
+ $offset = $height - $h;
+ $y = $offset;
+ } else
+ $y = ($height - $h) / 2;
+ }
+
+ $x = round($x);
+ $y = round($y);
+ $w = round($w);
+ $h = round($h);
+ if (!$w) $w = 1;
+ if (!$h) $h = 1;
+
+ try {
+ $this->image->scaleImage($w, $h);
+ $this->image->cropImage($width, $height, -$x, -$y);
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ $this->width = $width;
+ $this->height = $height;
+ return true;
+ }
+
+ public function rotate($angle, $background="#000000") {
+ try {
+ $this->image->rotateImage(new \ImagickPixel($background), $angle);
+ $size = $this->image->getImageGeometry();
+ } catch (\Exception $e) {
+ return false;
+ }
+ $this->width = $size['width'];
+ $this->height = $size['height'];
+ return true;
+ }
+
+ public function flipHorizontal() {
+ try {
+ $this->image->flopImage();
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+ public function flipVertical() {
+ try {
+ $this->image->flipImage();
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+ public function watermark($file, $left=false, $top=false) {
+ try {
+ $wm = new \Imagick($file);
+ $size = $wm->getImageGeometry();
+ } catch (\Exception $e) {
+ return false;
+ }
+
+ $w = $size['width'];
+ $h = $size['height'];
+ $x =
+ ($left === true) ? 0 : (
+ ($left === null) ? round(($this->width - $w) / 2) : (
+ (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left));
+ $y =
+ ($top === true) ? 0 : (
+ ($top === null) ? round(($this->height - $h) / 2) : (
+ (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top));
+
+ if ((($x + $w) > $this->width) ||
+ (($y + $h) > $this->height) ||
+ ($x < 0) || ($y < 0)
+ )
+ return false;
+
+ try {
+ $this->image->compositeImage($wm, \Imagick::COMPOSITE_DEFAULT, $x, $y);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ // ABSTRACT PROTECTED METHODS
+
+ protected function getBlankImage($width, $height) {
+ try {
+ $img = new \Imagick();
+ $img->newImage($width, $height, "none");
+ $img->setImageCompressionQuality(100);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return $img;
+ }
+
+ protected function getImage($image, &$width, &$height) {
+
+ if (is_object($image) && ($image instanceof image_imagick)) {
+ try {
+ $image->image->setImageCompressionQuality(100);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $width = $image->width;
+ $height = $image->height;
+ return $image->image;
+
+ } elseif (is_object($image) && ($image instanceof \Imagick)) {
+ try {
+ $image->setImageCompressionQuality(100);
+ $size = $image->getImageGeometry();
+ } catch (\Exception $e) {
+ return false;
+ }
+ $width = $size['width'];
+ $height = $size['height'];
+ return $image;
+
+ } elseif (is_string($image)) {
+ try {
+ $image = new \Imagick($image);
+ $image->setImageCompressionQuality(100);
+ $size = $image->getImageGeometry();
+ } catch (\Exception $e) {
+ return false;
+ }
+ $width = $size['width'];
+ $height = $size['height'];
+ return $image;
+
+ } else
+ return false;
+ }
+
+
+ // PSEUDO-ABSTRACT STATIC METHODS
+
+ static function available() {
+ return class_exists("\\Imagick");
+ }
+
+ static function checkImage($file) {
+ try {
+ $img = new \Imagick($file);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ // INHERIT METHODS
+
+ public function output($type="jpeg", array $options=array()) {
+ $type = strtolower($type);
+ try {
+ $this->image->setImageFormat($type);
+ } catch (\Exception $e) {
+ return false;
+ }
+ $method = "optimize_$type";
+ if (method_exists($this, $method) && !$this->$method($options))
+ return false;
+
+ if (!isset($options['file'])) {
+ if (!headers_sent()) {
+ $mime = isset(self::$MIMES[$type]) ? self::$MIMES[$type] : "image/$type";
+ header("Content-Type: $mime");
+ }
+ echo $this->image;
+
+ } else {
+ $file = $options['file'] . ".$type";
+ try {
+ $this->image->writeImage($file);
+ } catch (\Exception $e) {
+ @unlink($file);
+ return false;
+ }
+
+ if (!@rename($file, $options['file'])) {
+ @unlink($file);
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+
+ // OWN METHODS
+
+ protected function optimize_jpeg(array $options=array()) {
+ $quality = isset($options['quality']) ? $options['quality'] : self::DEFAULT_JPEG_QUALITY;
+ try {
+ $this->image->setImageCompression(\Imagick::COMPRESSION_JPEG);
+ $this->image->setImageCompressionQuality($quality);
+ } catch (\Exception $e) {
+ return false;
+ }
+ return true;
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/class_zipFolder.php b/kcfinder/lib/class_zipFolder.php
new file mode 100644
index 00000000..7dc6e64d
--- /dev/null
+++ b/kcfinder/lib/class_zipFolder.php
@@ -0,0 +1,62 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class zipFolder {
+ protected $zip;
+ protected $root;
+ protected $ignored;
+
+ function __construct($file, $folder, $ignored=null) {
+ $this->zip = new \ZipArchive();
+
+ $this->ignored = is_array($ignored)
+ ? $ignored
+ : ($ignored ? array($ignored) : array());
+
+ if ($this->zip->open($file, \ZipArchive::CREATE) !== TRUE)
+ throw new \Exception("cannot open <$file>\n");
+
+ $folder = rtrim($folder, '/');
+
+ if (strstr($folder, '/')) {
+ $this->root = substr($folder, 0, strrpos($folder, '/') + 1);
+ $folder = substr($folder, strrpos($folder, '/') + 1);
+ }
+
+ $this->zip($folder);
+ $this->zip->close();
+ }
+
+ function zip($folder, $parent=null) {
+ $full_path = "{$this->root}$parent$folder";
+ $zip_path = "$parent$folder";
+ $this->zip->addEmptyDir($zip_path);
+ $dir = new \DirectoryIterator($full_path);
+ foreach ($dir as $file)
+ if (!$file->isDot()) {
+ $filename = $file->getFilename();
+ if (!in_array($filename, $this->ignored)) {
+ if ($file->isDir())
+ $this->zip($filename, "$zip_path/");
+ else
+ $this->zip->addFile("$full_path/$filename", "$zip_path/$filename");
+ }
+ }
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/helper_dir.php b/kcfinder/lib/helper_dir.php
new file mode 100644
index 00000000..dcc057ff
--- /dev/null
+++ b/kcfinder/lib/helper_dir.php
@@ -0,0 +1,158 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class dir {
+
+/** Checks if the given directory is really writable. The standard PHP
+ * function is_writable() does not work properly on Windows servers
+ * @param string $dir
+ * @return bool */
+
+ static function isWritable($dir) {
+ $dir = path::normalize($dir);
+ if (!is_dir($dir))
+ return false;
+ $i = 0;
+ do {
+ $file = "$dir/is_writable_" . md5($i++);
+ } while (file_exists($file));
+ if (!@touch($file))
+ return false;
+ unlink($file);
+ return true;
+ }
+
+/** Recursively delete the given directory. Returns TRUE on success.
+ * If $firstFailExit parameter is true (default), the method returns the
+ * path to the first failed file or directory which cannot be deleted.
+ * If $firstFailExit is false, the method returns an array with failed
+ * files and directories which cannot be deleted. The third parameter
+ * $failed is used for internal use only.
+ * @param string $dir
+ * @param bool $firstFailExit
+ * @param array $failed
+ * @return mixed */
+
+ static function prune($dir, $firstFailExit=true, array $failed=null) {
+ if ($failed === null) $failed = array();
+ $files = self::content($dir);
+ if ($files === false) {
+ if ($firstFailExit)
+ return $dir;
+ $failed[] = $dir;
+ return $failed;
+ }
+
+ foreach ($files as $file) {
+ if (is_dir($file)) {
+ $failed_in = self::prune($file, $firstFailExit, $failed);
+ if ($failed_in !== true) {
+ if ($firstFailExit)
+ return $failed_in;
+ if (is_array($failed_in))
+ $failed = array_merge($failed, $failed_in);
+ else
+ $failed[] = $failed_in;
+ }
+ } elseif (!@unlink($file)) {
+ if ($firstFailExit)
+ return $file;
+ $failed[] = $file;
+ }
+ }
+
+ if (!@rmdir($dir)) {
+ if ($firstFailExit)
+ return $dir;
+ $failed[] = $dir;
+ }
+
+ return count($failed) ? $failed : true;
+ }
+
+/** Get the content of the given directory. Returns an array with filenames
+ * or FALSE on failure
+ * @param string $dir
+ * @param array $options
+ * @return mixed */
+
+ static function content($dir, array $options=null) {
+
+ $defaultOptions = array(
+ 'types' => "all", // Allowed: "all" or possible return values
+ // of filetype(), or an array with them
+ 'addPath' => true, // Whether to add directory path to filenames
+ 'pattern' => '/./', // Regular expression pattern for filename
+ 'followLinks' => true
+ );
+
+ if (!is_dir($dir) || !is_readable($dir))
+ return false;
+
+ if (strtoupper(substr(PHP_OS, 0, 3)) == "WIN")
+ $dir = str_replace("\\", "/", $dir);
+ $dir = rtrim($dir, "/");
+
+ $dh = @opendir($dir);
+ if ($dh === false)
+ return false;
+
+ if ($options === null)
+ $options = $defaultOptions;
+
+ foreach ($defaultOptions as $key => $val)
+ if (!isset($options[$key]))
+ $options[$key] = $val;
+
+ $files = array();
+ while (($file = @readdir($dh)) !== false) {
+
+ if (($file == '.') || ($file == '..') ||
+ !preg_match($options['pattern'], $file)
+ )
+ continue;
+
+ $fullpath = "$dir/$file";
+ $type = filetype($fullpath);
+
+ // If file is a symlink, get the true type of its destination
+ if ($options['followLinks'] && ($type == "link"))
+ $type = filetype(realpath($fullpath));
+
+ if (($options['types'] === "all") || ($type === $options['types']) ||
+ (is_array($options['types']) && in_array($type, $options['types']))
+ )
+ $files[] = $options['addPath'] ? $fullpath : $file;
+ }
+ closedir($dh);
+ usort($files, array(__NAMESPACE__ . "\\dir", "fileSort"));
+ return $files;
+ }
+
+ static function fileSort($a, $b) {
+ if (function_exists("mb_strtolower")) {
+ $a = mb_strtolower($a);
+ $b = mb_strtolower($b);
+ } else {
+ $a = strtolower($a);
+ $b = strtolower($b);
+ }
+ if ($a == $b) return 0;
+ return ($a < $b) ? -1 : 1;
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/helper_file.php b/kcfinder/lib/helper_file.php
new file mode 100644
index 00000000..4119ec9f
--- /dev/null
+++ b/kcfinder/lib/helper_file.php
@@ -0,0 +1,216 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class file {
+
+ static $MIME = array(
+ 'ai' => 'application/postscript',
+ 'aif' => 'audio/x-aiff',
+ 'aifc' => 'audio/x-aiff',
+ 'aiff' => 'audio/x-aiff',
+ 'avi' => 'video/x-msvideo',
+ 'bin' => 'application/macbinary',
+ 'bmp' => 'image/bmp',
+ 'cpt' => 'application/mac-compactpro',
+ 'css' => 'text/css',
+ 'csv' => 'text/x-comma-separated-values',
+ 'dcr' => 'application/x-director',
+ 'dir' => 'application/x-director',
+ 'doc' => 'application/msword',
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
+ 'dvi' => 'application/x-dvi',
+ 'dxr' => 'application/x-director',
+ 'eml' => 'message/rfc822',
+ 'eps' => 'application/postscript',
+ 'flv' => 'video/x-flv',
+ 'gif' => 'image/gif',
+ 'gtar' => 'application/x-gtar',
+ 'gz' => 'application/x-gzip',
+ 'hqx' => 'application/mac-binhex40',
+ 'htm' => 'text/html',
+ 'html' => 'text/html',
+ 'jpe' => 'image/jpeg',
+ 'jpeg' => 'image/jpeg',
+ 'jpg' => 'image/jpeg',
+ 'js' => 'application/x-javascript',
+ 'log' => 'text/plain',
+ 'mid' => 'audio/midi',
+ 'midi' => 'audio/midi',
+ 'mif' => 'application/vnd.mif',
+ 'mov' => 'video/quicktime',
+ 'movie' => 'video/x-sgi-movie',
+ 'mp2' => 'audio/mpeg',
+ 'mp3' => 'audio/mpeg',
+ 'mp4' => 'video/mpeg',
+ 'mpe' => 'video/mpeg',
+ 'mpeg' => 'video/mpeg',
+ 'mpg' => 'video/mpeg',
+ 'mpga' => 'audio/mpeg',
+ 'oda' => 'application/oda',
+ 'pdf' => 'application/pdf',
+ 'php' => 'application/x-httpd-php',
+ 'php3' => 'application/x-httpd-php',
+ 'php4' => 'application/x-httpd-php',
+ 'phps' => 'application/x-httpd-php-source',
+ 'phtml' => 'application/x-httpd-php',
+ 'png' => 'image/png',
+ 'ppt' => 'application/powerpoint',
+ 'ps' => 'application/postscript',
+ 'psd' => 'application/x-photoshop',
+ 'qt' => 'video/quicktime',
+ 'ra' => 'audio/x-realaudio',
+ 'ram' => 'audio/x-pn-realaudio',
+ 'rm' => 'audio/x-pn-realaudio',
+ 'rpm' => 'audio/x-pn-realaudio-plugin',
+ 'rtf' => 'text/rtf',
+ 'rtx' => 'text/richtext',
+ 'rv' => 'video/vnd.rn-realvideo',
+ 'shtml' => 'text/html',
+ 'sit' => 'application/x-stuffit',
+ 'smi' => 'application/smil',
+ 'smil' => 'application/smil',
+ 'swf' => 'application/x-shockwave-flash',
+ 'tar' => 'application/x-tar',
+ 'tgz' => 'application/x-tar',
+ 'text' => 'text/plain',
+ 'tif' => 'image/tiff',
+ 'tiff' => 'image/tiff',
+ 'txt' => 'text/plain',
+ 'wav' => 'audio/x-wav',
+ 'wbxml' => 'application/wbxml',
+ 'wmlc' => 'application/wmlc',
+ 'word' => 'application/msword',
+ 'xht' => 'application/xhtml+xml',
+ 'xhtml' => 'application/xhtml+xml',
+ 'xl' => 'application/excel',
+ 'xls' => 'application/excel',
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
+ 'xml' => 'text/xml',
+ 'xsl' => 'text/xml',
+ 'zip' => 'application/x-zip'
+ );
+
+/** Checks if the given file is really writable. The standard PHP function
+ * is_writable() does not work properly on Windows servers.
+ * @param string $filename
+ * @return bool */
+
+ static function isWritable($filename) {
+ $filename = path::normalize($filename);
+ if (!is_file($filename) || (false === ($fp = @fopen($filename, 'a+'))))
+ return false;
+ fclose($fp);
+ return true;
+ }
+
+/** Get the extension from filename
+ * @param string $filename
+ * @param bool $toLower
+ * @return string */
+
+ static function getExtension($filename, $toLower=true) {
+ return preg_match('/^.*\.([^\.]*)$/s', $filename, $patt)
+ ? ($toLower ? strtolower($patt[1]) : $patt[1]) : "";
+ }
+
+/** Get MIME type of the given filename. If Fileinfo PHP extension is
+ * available the MIME type will be fetched by the file's content. The
+ * second parameter is optional and defines the magic file path. If you
+ * skip it, the default one will be loaded.
+ * If Fileinfo PHP extension is not available the MIME type will be fetched
+ * by filename extension regarding $MIME property. If the file extension
+ * does not exist there, returned type will be application/octet-stream
+ * @param string $filename
+ * @param string $magic
+ * @return string */
+
+ static function getMimeType($filename, $magic=null) {
+ if (class_exists("finfo")) {
+ $finfo = new \finfo(FILEINFO_MIME, $magic);
+ if ($finfo) {
+ $mime = $finfo->file($filename);
+ $mime = substr($mime, 0, strrpos($mime, ";"));
+ return $mime;
+ }
+ }
+ $ext = self::getExtension($filename, true);
+ return isset(self::$MIME[$ext]) ? self::$MIME[$ext] : "application/octet-stream";
+ }
+
+/** Get inexistant filename based on the given filename. If you skip $dir
+ * parameter the directory will be fetched from $filename and returned
+ * value will be full filename path. The third parameter is optional and
+ * defines the template, the filename will be renamed to. Default template
+ * is {name}({sufix}){ext}. Examples:
+ *
+ * file::getInexistantFilename("/my/directory/myfile.txt");
+ * If myfile.txt does not exist - returns the same path to the file
+ * otherwise returns "/my/directory/myfile(1).txt"
+ *
+ * file::getInexistantFilename("myfile.txt", "/my/directory");
+ * returns "myfile.txt" or "myfile(1).txt" or "myfile(2).txt" etc...
+ *
+ * file::getInexistantFilename("myfile.txt", "/dir", "{name}[{sufix}]{ext}");
+ * returns "myfile.txt" or "myfile[1].txt" or "myfile[2].txt" etc...
+ *
+ * @param string $filename
+ * @param string $dir
+ * @param string $tpl
+ * @return string */
+
+ static function getInexistantFilename($filename, $dir=null, $tpl=null) {
+ if ($tpl === null) $tpl = "{name}({sufix}){ext}";
+ $fullPath = ($dir === null);
+ if ($fullPath)
+ $dir = path::normalize(dirname($filename));
+ else {
+ $fdir = dirname($filename);
+ $dir = strlen($fdir)
+ ? path::normalize("$dir/$fdir")
+ : path::normalize($dir);
+ }
+ $filename = basename($filename);
+ $ext = self::getExtension($filename, false);
+ $name = strlen($ext) ? substr($filename, 0, -strlen($ext) - 1) : $filename;
+ $tpl = str_replace('{name}', $name, $tpl);
+ $tpl = str_replace('{ext}', (strlen($ext) ? ".$ext" : ""), $tpl);
+ $i = 1; $file = "$dir/$filename";
+ while (file_exists($file))
+ $file = "$dir/" . str_replace('{sufix}', $i++, $tpl);
+
+ return $fullPath
+ ? $file
+ : (strlen($fdir)
+ ? "$fdir/" . basename($file)
+ : basename($file));
+ }
+
+/** Normalize given filename. Accented characters becomes non-accented and
+ * removes any other special characters. Usable for non-unicode filesystems
+ * @param $filename
+ * @return string */
+
+ static function normalizeFilename($filename) {
+ $string = htmlentities($filename, ENT_QUOTES, 'UTF-8');
+ if (strpos($string, '&') !== false)
+ $filename = html_entity_decode(preg_replace('~&([a-z]{1,2})(?:acute|cedil|circ|grave|lig|orn|ring|slash|tilde|uml);~i', '$1', $string), ENT_QUOTES, 'UTF-8');
+ $filename = trim(preg_replace('~[^0-9a-z\.\- ]~i', "_", $filename));
+ return $filename;
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/helper_httpCache.php b/kcfinder/lib/helper_httpCache.php
new file mode 100644
index 00000000..8d51e8ca
--- /dev/null
+++ b/kcfinder/lib/helper_httpCache.php
@@ -0,0 +1,100 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class httpCache {
+ const DEFAULT_TYPE = "text/html";
+ const DEFAULT_EXPIRE = 604800; // in seconds
+
+/** Cache a file. The $type parameter might define the MIME type of the file
+ * or path to magic file to autodetect the MIME type. If you skip $type
+ * parameter the method will try with the default magic file. Autodetection
+ * of MIME type requires Fileinfo PHP extension used in file::getMimeType()
+ * @param string $file
+ * @param string $type
+ * @param integer $expire
+ * @param array $headers */
+
+ static function file($file, $type=null, $expire=null, array $headers=null) {
+ $mtime = @filemtime($file);
+ if ($mtime !== false) self::checkMTime($mtime);
+
+ if ($type === null) {
+ $magic = ((substr($type, 0, 1) == "/") || preg_match('/^[a-z]\:/i', $type))
+ ? $type : null;
+ $type = file::getMimeType($file, $magic);
+ if (!$type) $type = null;
+ }
+
+ self::content(@file_get_contents($file), $mtime, $type, $expire, $headers, false);
+ }
+
+/** Cache the given $content with $mtime modification time.
+ * @param binary $content
+ * @param integer $mtime
+ * @param string $type
+ * @param integer $expire
+ * @param array $headers
+ * @param bool $checkMTime */
+
+ static function content($content, $mtime, $type=null, $expire=null, array $headers=null, $checkMTime=true) {
+ if ($checkMTime) self::checkMTime($mtime);
+ if ($type === null) $type = self::DEFAULT_TYPE;
+ if ($expire === null) $expire = self::DEFAULT_EXPIRE;
+ $size = strlen($content);
+ $expires = gmdate("D, d M Y H:i:s", time() + $expire) . " GMT";
+ header("Content-Type: $type");
+ header("Expires: $expires");
+ header("Cache-Control: max-age=$expire");
+ header("Pragma: !invalid");
+ header("Content-Length: $size");
+ if ($headers !== null) foreach ($headers as $header) header($header);
+ echo $content;
+ }
+
+/** Check if given modification time is newer than client-side one. If not,
+ * the method will tell the client to get the content from its own cache.
+ * Afterwards the script process will be terminated. This feature requires
+ * the PHP to be configured as Apache module.
+ * @param integer $mtime
+ * @param mixed $sendHeaders */
+
+ static function checkMTime($mtime, $sendHeaders=null) {
+ header("Last-Modified: " . gmdate("D, d M Y H:i:s", $mtime) . " GMT");
+
+ $headers = function_exists("getallheaders")
+ ? getallheaders()
+ : (function_exists("apache_request_headers")
+ ? apache_request_headers()
+ : false);
+
+ if (is_array($headers) && isset($headers['If-Modified-Since'])) {
+ $client_mtime = explode(';', $headers['If-Modified-Since']);
+ $client_mtime = @strtotime($client_mtime[0]);
+ if ($client_mtime >= $mtime) {
+ header('HTTP/1.1 304 Not Modified');
+ if (is_array($sendHeaders) && count($sendHeaders))
+ foreach ($sendHeaders as $header)
+ header($header);
+ elseif ($sendHeaders !== null)
+ header($sendHeaders);
+ die;
+ }
+ }
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/helper_path.php b/kcfinder/lib/helper_path.php
new file mode 100644
index 00000000..9a34913e
--- /dev/null
+++ b/kcfinder/lib/helper_path.php
@@ -0,0 +1,149 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class path {
+
+/** Get the absolute URL path of the given one. Returns FALSE if the URL
+ * is not valid or the current directory cannot be resolved (getcwd())
+ * @param string $path
+ * @return string */
+
+ static function rel2abs_url($path) {
+ if (substr($path, 0, 1) == "/") return $path;
+ $dir = @getcwd();
+
+ if (!isset($_SERVER['DOCUMENT_ROOT']) || ($dir === false))
+ return false;
+
+ $dir = self::normalize($dir);
+ $doc_root = self::normalize($_SERVER['DOCUMENT_ROOT']);
+
+ if (substr($dir, 0, strlen($doc_root)) != $doc_root)
+ return false;
+
+ $return = self::normalize(substr($dir, strlen($doc_root)) . "/$path");
+ if (substr($return, 0, 1) !== "/")
+ $return = "/$return";
+
+ return $return;
+ }
+
+/** Resolve full filesystem path of given URL. Returns FALSE if the URL
+ * cannot be resolved
+ * @param string $url
+ * @return string */
+
+ static function url2fullPath($url) {
+ $url = self::normalize($url);
+
+ $uri = isset($_SERVER['SCRIPT_NAME'])
+ ? $_SERVER['SCRIPT_NAME'] : (isset($_SERVER['PHP_SELF'])
+ ? $_SERVER['PHP_SELF']
+ : false);
+
+ $uri = self::normalize($uri);
+
+ if (substr($url, 0, 1) !== "/") {
+ if ($uri === false) return false;
+ $url = dirname($uri) . "/$url";
+ }
+
+ if (isset($_SERVER['DOCUMENT_ROOT'])) {
+ return self::normalize($_SERVER['DOCUMENT_ROOT'] . "/$url");
+
+ } else {
+ if ($uri === false) return false;
+
+ if (isset($_SERVER['SCRIPT_FILENAME'])) {
+ $scr_filename = self::normalize($_SERVER['SCRIPT_FILENAME']);
+ return self::normalize(substr($scr_filename, 0, -strlen($uri)) . "/$url");
+ }
+
+ $count = count(explode('/', $uri)) - 1;
+ for ($i = 0, $chdir = ""; $i < $count; $i++)
+ $chdir .= "../";
+ $chdir = self::normalize($chdir);
+
+ $dir = getcwd();
+ if (($dir === false) || !@chdir($chdir))
+ return false;
+ $rdir = getcwd();
+ chdir($dir);
+ return ($rdir !== false) ? self::normalize($rdir . "/$url") : false;
+ }
+ }
+
+/** Normalize the given path. On Windows servers backslash will be replaced
+ * with slash. Removes unnecessary double slashes and double dots. Removes
+ * last slash if it exists. Examples:
+ * path::normalize("C:\\any\\path\\") returns "C:/any/path"
+ * path::normalize("/your/path/..//home/") returns "/your/home"
+ * @param string $path
+ * @return string */
+
+ static function normalize($path) {
+
+ // Backslash to slash convert
+ if (strtoupper(substr(PHP_OS, 0, 3)) == "WIN") {
+ $path = preg_replace('/([^\\\])\\\+([^\\\])/s', "$1/$2", $path);
+ if (substr($path, -1) == "\\") $path = substr($path, 0, -1);
+ if (substr($path, 0, 1) == "\\") $path = "/" . substr($path, 1);
+ }
+
+ $path = preg_replace('/\/+/s', "/", $path);
+
+ $path = "/$path";
+ if (substr($path, -1) != "/")
+ $path .= "/";
+
+ $expr = '/\/([^\/]{1}|[^\.\/]{2}|[^\/]{3,})\/\.\.\//s';
+ while (preg_match($expr, $path))
+ $path = preg_replace($expr, "/", $path);
+
+ $path = substr($path, 0, -1);
+ $path = substr($path, 1);
+ return $path;
+ }
+
+/** Encode URL Path
+ * @param string $path
+ * @return string */
+
+ static function urlPathEncode($path) {
+ $path = self::normalize($path);
+ $encoded = "";
+ foreach (explode("/", $path) as $dir)
+ $encoded .= rawurlencode($dir) . "/";
+ $encoded = substr($encoded, 0, -1);
+ return $encoded;
+ }
+
+/** Decode URL Path
+ * @param string $path
+ * @return string */
+
+ static function urlPathDecode($path) {
+ $path = self::normalize($path);
+ $decoded = "";
+ foreach (explode("/", $path) as $dir)
+ $decoded .= rawurldecode($dir) . "/";
+ $decoded = substr($decoded, 0, -1);
+ return $decoded;
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/lib/helper_text.php b/kcfinder/lib/helper_text.php
new file mode 100644
index 00000000..15fcae23
--- /dev/null
+++ b/kcfinder/lib/helper_text.php
@@ -0,0 +1,55 @@
+
+ * @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
+ */
+
+namespace kcfinder;
+
+class text {
+
+/** Replace repeated white spaces to single space
+ * @param string $string
+ * @return string */
+
+ static function clearWhitespaces($string) {
+ return trim(preg_replace('/\s+/s', " ", $string));
+ }
+
+/** Normalize the string for HTML attribute value
+ * @param string $string
+ * @return string */
+
+ static function htmlValue($string) {
+ return
+ str_replace('"', """,
+ str_replace("'", ''',
+ str_replace('<', '<',
+ str_replace('&', "&",
+ $string))));
+ }
+
+/** Normalize the string for JavaScript string value
+ * @param string $string
+ * @return string */
+
+ static function jsValue($string) {
+ return
+ preg_replace('/\r?\n/', "\\n",
+ str_replace('"', "\\\"",
+ str_replace("'", "\\'",
+ str_replace("\\", "\\\\",
+ $string))));
+ }
+
+}
+
+?>
\ No newline at end of file
diff --git a/kcfinder/themes/dark/01.ui.css b/kcfinder/themes/dark/01.ui.css
new file mode 100644
index 00000000..2d56d38f
--- /dev/null
+++ b/kcfinder/themes/dark/01.ui.css
@@ -0,0 +1,1991 @@
+/*
+
+This CSS code is generated from http://ui.sunhater.com
+(c)2014 Pavel Tzonkov, sunhater.com. All rights reserved.
+
+*/
+/*** jQueryUI */
+/** Base */
+
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+ filter:alpha(opacity=0);
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+.ui-widget .ui-widget,
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-size: 1em;
+}
+.ui-widget-content {
+ border: 1px solid #888;
+ background: #000;
+ color: #aaa;
+}
+.ui-widget-content a {
+ color: #aaa;
+}
+.ui-widget-header {
+ border: 1px solid #4685b3;
+ color: #fff;
+ font-weight: bold;
+ background: #184977;
+ background: -webkit-linear-gradient(top, #184977, #4685b3);
+ background: -moz-linear-gradient(top, #184977, #4685b3);
+ background: -ms-linear-gradient(top, #184977, #4685b3);
+ background: -o-linear-gradient(top, #184977, #4685b3);
+ background: linear-gradient(to bottom, #184977, #4685b3);
+}
+.ui-widget-header a {
+ color: #fff;
+}
+
+/* Interaction states
+----------------------------------*/
+
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default,
+.ui-widget.ui-state-disabled {
+ transition: .2s;
+ border: 1px solid #555;
+ background: #333;
+ background: -webkit-linear-gradient(top, #555, #111);
+ background: -moz-linear-gradient(top, #555, #111);
+ background: -ms-linear-gradient(top, #555, #111);
+ background: -o-linear-gradient(top, #555, #111);
+ background: linear-gradient(to bottom, #555, #111);
+ font-weight: bold;
+ color: #aaa;
+}
+
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ transition: .2s;
+ background: -webkit-linear-gradient(top, #111, #555);
+ background: -moz-linear-gradient(top, #111, #555);
+ background: -ms-linear-gradient(top, #111, #555);
+ background: -o-linear-gradient(top, #111, #555);
+ background: linear-gradient(to bottom, #111, #555);
+}
+
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active,
+.ui-menu .ui-state-focus {
+ transition: .2s;
+ border: 1px solid #184977;
+ background: #4685b3;
+ background: -webkit-linear-gradient(top, #184977, #4685b3);
+ background: -moz-linear-gradient(top, #184977, #4685b3);
+ background: -ms-linear-gradient(top, #184977, #4685b3);
+ background: -o-linear-gradient(top, #184977, #4685b3);
+ background: linear-gradient(to bottom, #184977, #4685b3);
+ font-weight: bold;
+ color: #fff;
+}
+
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited,
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ transition: .2s;
+ color: #fff;
+ text-decoration: none;
+}
+
+.ui-menu .ui-state-active {
+ transition: .2s;
+ border-color: #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #6b6b6b, #ababab);
+ background: -moz-linear-gradient(top, #6b6b6b, #ababab);
+ background: -ms-linear-gradient(top, #6b6b6b, #ababab);
+ background: -o-linear-gradient(top, #6b6b6b, #ababab);
+ background: linear-gradient(to bottom, #6b6b6b, #ababab);
+}
+
+/* Interaction Cues
+----------------------------------*/
+
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #d5bc2c;
+ box-shadow: inset 0 0 5px #d5bc2c;
+ background: #fff6bf;
+ color: #aaa;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid #cf7f7f;
+ box-shadow: inset 0 0 5px #cf7f7f;
+ background: #fac4c4;
+ color: #aaa;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a,
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a,
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: #aaa;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .5;
+ filter:alpha(opacity=50);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .50;
+ filter:alpha(opacity=50);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:alpha(opacity=50); /* For IE8 - See #6059 */
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ui-resizable {
+ position: relative;
+}
+.ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+ display: none;
+}
+.ui-resizable-n {
+ cursor: n-resize;
+ height: 7px;
+ width: 100%;
+ top: -5px;
+ left: 0;
+}
+.ui-resizable-s {
+ cursor: s-resize;
+ height: 7px;
+ width: 100%;
+ bottom: -5px;
+ left: 0;
+}
+.ui-resizable-e {
+ cursor: e-resize;
+ width: 7px;
+ right: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-w {
+ cursor: w-resize;
+ width: 7px;
+ left: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-se {
+ cursor: se-resize;
+ width: 12px;
+ height: 12px;
+ right: 1px;
+ bottom: 1px;
+}
+.ui-resizable-sw {
+ cursor: sw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ bottom: -5px;
+}
+.ui-resizable-nw {
+ cursor: nw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ top: -5px;
+}
+.ui-resizable-ne {
+ cursor: ne-resize;
+ width: 9px;
+ height: 9px;
+ right: -5px;
+ top: -5px;
+}
+.ui-selectable-helper {
+ position: absolute;
+ z-index: 100;
+ border: 1px dotted black;
+}
+
+
+/** Accordion */
+
+.ui-accordion .ui-accordion-header {
+ display: block;
+ cursor: pointer;
+ position: relative;
+ margin-top: 2px;
+ padding: 6px;
+ min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons,
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+ padding-left: 24px;
+}
+.ui-accordion .ui-accordion-noicons {
+ padding-left: 5px;
+}
+
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+ position: absolute;
+ left: 5px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+ padding: 1em;
+ border-top: 0;
+ overflow: auto;
+}
+
+
+/** Autocomplete */
+
+.ui-autocomplete {
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: pointer;
+}
+
+
+/** Button */
+
+.ui-button {
+ display: inline-block;
+ position: relative;
+ padding: 0;
+ line-height: normal;
+ cursor: pointer;
+ vertical-align: middle;
+ text-align: center;
+ overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+ text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+ width: 36px;
+}
+.ui-button-icons-only {
+ width: 50px;
+}
+/* button text element */
+.ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+ padding: 6px 10px;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+ padding: 6px;
+ text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: 6px 10px 6px 28px;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: 6px 28px 6px 10px;
+}
+.ui-button-text-icons .ui-button-text {
+ padding-left: 28px;
+ padding-right: 28px;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+ padding: 6px 10px;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+ left: 50%;
+ margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+ left: 7px;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+ right: 7px;
+}
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+
+/** Button set */
+
+.ui-buttonset {
+ margin:0;
+ overflow:auto;
+}
+.ui-buttonset .ui-button {
+ margin: 0;
+ float:left;
+}
+
+
+/** Date picker */
+
+.ui-datepicker {
+ width: 19em;
+ display: none;
+ padding: 10px;
+}
+.ui-datepicker .ui-datepicker-header {
+ position: relative;
+ padding: 2px 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+ position: absolute;
+ top: 4px;
+ width: 20px;
+ height: 20px;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+ top: 3px;
+}
+.ui-datepicker .ui-datepicker-prev {
+ left: 4px;
+}
+.ui-datepicker .ui-datepicker-next {
+ right: 4px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+ left: 3px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+ right: 3px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+ display: block;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+ margin: 0 10px;
+ padding: 4px 0;
+ text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+ font-size: 1em;
+ margin:-2px 2px;
+ padding:0;
+ outline:0;
+}
+.ui-datepicker table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 0;
+ font-size: 1em;
+}
+.ui-datepicker th {
+ padding: 3px;
+ text-align: center;
+ font-weight: bold;
+ border: 0;
+}
+.ui-datepicker td {
+ border: 0;
+ padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+ display: block;
+ padding: 2px 3px;
+ text-align: right;
+ text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+ background-image: none;
+ margin: 10px -11px -11px -11px;
+ padding: 10px;
+ border: 1px solid #184977;
+ background: #e4f5ff;
+ overflow: auto;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+ float: right;
+ cursor: pointer;
+ width: auto;
+ overflow: visible;
+ margin: 0;
+ padding: 6px 10px;
+ font-weight: bold;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+ float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+ width: auto;
+ padding:10px;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+ float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group .ui-datepicker-header {
+ margin:0;
+}
+.ui-datepicker-multi .ui-datepicker-group.ui-datepicker-group-last {
+ margin-right:0;
+}
+
+.ui-datepicker-multi .ui-datepicker-group table {
+ width: 95%;
+ margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+ width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+ width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+ width: 25%;
+}
+
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+ border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+ clear: left;
+}
+.ui-datepicker-row-break {
+ clear: both;
+ font-size: 0;
+ width: 100px;
+}
+th.ui-datepicker-week-col {
+ color: #215b82;
+}
+td.ui-datepicker-week-col {
+ text-align:right;
+ padding-right:7px;
+ color: #215b82;
+}
+td.ui-datepicker-other-month a.ui-state-default {
+ font-weight: bold;
+}
+th.ui-datepicker-week-end {
+ color: #f44;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+ direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+ right: 2px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+ left: 2px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+ right: 1px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+ left: 1px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+ clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+ float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+ float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+ border-right-width: 0;
+ border-left-width: 1px;
+}
+
+
+/** Dialog */
+
+.ui-dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 4px;
+ outline: 0;
+ box-shadow: 0 0 10px #000;
+}
+.ui-dialog .ui-dialog-titlebar {
+ padding: 5px 10px;
+ position: relative;
+}
+.ui-dialog .ui-dialog-title {
+ float: left;
+ margin: 0;
+ padding: 1px 0;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+ position: absolute;
+ right: .3em;
+ top: 50%;
+ width: 21px;
+ margin: -10px 0 0 0;
+ padding: 1px;
+ height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+ padding: 1em;
+ margin: 0 -4px;
+ background: none;
+ overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+ padding: 10px;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+ margin: 0 0 0 5px;
+ cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+ width: 12px;
+ height: 12px;
+ right: -5px;
+ bottom: -5px;
+ background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+}
+
+
+/** Menu */
+
+.ui-menu {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: block;
+ outline: 0;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+ position: absolute;
+}
+.ui-menu .ui-menu-item {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-divider {
+ margin: 1px 10px 1px 10px;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+ border-width: 1px 0 0 0;
+ border-color: #777;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+ padding: 5px 10px;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
+ border-radius:0;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+ transition: none;
+}
+.ui-menu .ui-state-disabled {
+ font-weight: normal;
+ line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+ cursor: default;
+}
+.ui-menu.ui-corner-all.sh-menu {
+ border-radius: 4px;
+}
+.ui-menu.ui-corner-all, .ui-menu.sh-menu.ui-autocomplete.ui-corner-all {
+ border-radius: 0;
+}
+
+/* icon support */
+.ui-menu-icons {
+ position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+ position: relative;
+ padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+ position: absolute;
+ top: .2em;
+ left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+ position: static;
+ float: right;
+}
+
+
+/** Progress bar */
+
+.ui-progressbar {
+ height: 2.1em;
+ text-align: left;
+ overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+ margin: -1px;
+ height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+ height: 100%;
+ filter: alpha(opacity=25);
+ opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+ background-image: none;
+}
+
+
+/** Slider */
+
+.ui-slider {
+ position: relative;
+ text-align: left;
+ margin: 0 13px;
+ border-radius:15px;
+}
+.ui-slider .ui-slider-handle {
+ position: absolute;
+ z-index: 2;
+ width: 18px;
+ height: 18px;
+ border-radius: 9px;
+ cursor: default;
+ box-shadow: 0 0 3px #aaa, inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+.ui-slider .ui-slider-handle.ui-state-active {
+ box-shadow: 0 0 3px #4685b3, inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+.ui-slider .ui-slider-range {
+ position: absolute;
+ z-index: 1;
+ display: block;
+ border: 0;
+ background-position: 0 0;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+ filter: inherit;
+}
+
+.ui-slider-horizontal {
+ height: 10px;
+}
+.ui-slider-horizontal .ui-slider-handle {
+ top: -5px;
+ margin-left: -9px;
+}
+.ui-slider-horizontal .ui-slider-range {
+ top: 0;
+ height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+ left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+ right: 0;
+}
+
+.ui-slider-vertical {
+ width: 10px;
+ height: 150px;
+}
+.ui-slider-vertical .ui-slider-handle {
+ left: -5px;
+ margin-left: 0;
+ margin-bottom: -9px;
+}
+.ui-slider-vertical .ui-slider-range {
+ left: -1px;
+ width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+ bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+ top: 0;
+}
+
+
+/** Spinner */
+
+.ui-spinner.ui-widget {
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ padding: 0;
+ vertical-align: middle;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+}
+.ui-spinner-input {
+ border: none;
+ color: inherit;
+ padding: 0;
+ margin: 6px 24px 6px 10px;
+ vertical-align: middle;
+ outline: 0;
+ background: transparent;
+}
+.ui-spinner-input {
+ color: #aaa}
+.ui-spinner-input:focus {
+ color: #000;
+}
+.ui-spinner-button {
+ width: 16px;
+ height: 50%;
+ font-size: .5em;
+ padding: 0;
+ margin: 0;
+ text-align: center;
+ position: absolute;
+ cursor: default;
+ display: block;
+ overflow: hidden;
+ right: 0;
+}
+/* more specificity required here to overide default borders */
+.ui-spinner a.ui-spinner-button {
+ border-top: none;
+ border-bottom: none;
+ border-right: none;
+}
+/* vertical centre icon */
+.ui-spinner .ui-icon {
+ position: absolute;
+ margin-top: -8px;
+ top: 50%;
+ left: 0;
+}
+.ui-spinner-up {
+ top: 0;
+}
+.ui-spinner-down {
+ bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+ /* need to fix icons sprite */
+ background-position: -65px -16px;
+}
+
+
+/** Tabs */
+
+.ui-tabs {
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+}
+.ui-tabs .ui-tabs-nav {
+ margin: 0;
+ padding: 3px 3px 0 3px;
+}
+.ui-tabs .ui-tabs-nav li {
+ list-style: none;
+ float: left;
+ position: relative;
+ top: 0;
+ margin: 1px 3px 0 0;
+ border-bottom-width: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.ui-tabs .ui-tabs-nav li a {
+ float: left;
+ padding: 6px 10px;
+ text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+ padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled a,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
+ cursor: text;
+}
+.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
+ cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+ display: block;
+ border-width: 0;
+ padding: 1em;
+ background: none;
+}
+
+/** Tooltip */
+
+body .ui-tooltip {
+ padding: 6px 10px;
+ position: absolute;
+ z-index: 9999;
+ max-width: 300px;
+ color: #808080;
+ border-color: #a5a5a5;
+ box-shadow: inset 0 0 4px #a5a5a5, 0 0 4px #a5a5a5;
+ background: -webkit-linear-gradient(top, #ddd, #fff);
+ background: -moz-linear-gradient(top, #ddd, #fff);
+ background: -ms-linear-gradient(top, #ddd, #fff);
+ background: -o-linear-gradient(top, #ddd, #fff);
+ background: linear-gradient(to bottom, #ddd, #fff);
+}
+
+/** Icons */
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+}
+
+.ui-icon,
+.ui-button.ui-state-active .ui-icon,
+.ui-dialog .ui-dialog-titlebar-close .ui-icon {
+ background-image: url(img/ui-icons_white.png);
+}
+
+.ui-button .ui-icon {
+ background-image: url(img/ui-icons_grey.png);
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/** Misc */
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl,
+.ui-menu .ui-menu-item.ui-menu-item-first a {
+ border-top-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr,
+.ui-menu .ui-menu-item.ui-menu-item-first a {
+ border-top-right-radius:4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl,
+.ui-menu .ui-menu-item.ui-menu-item-last a,
+.ui-dialog-buttonpane,
+.ui-datepicker-multi .ui-datepicker-group-first .ui-datepicker-header,
+.ui-datepicker .ui-datepicker-buttonpane {
+ border-bottom-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br,
+.ui-menu .ui-menu-item.ui-menu-item-last a,
+.ui-dialog-buttonpane,
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker .ui-datepicker-buttonpane {
+ border-bottom-right-radius: 4px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+ background: rgba(255,255,255,.5);
+}
+.ui-widget-shadow {
+ margin: -7px 0 0 -7px;
+ padding: 7px;
+ background: rgba(0,0,0,.3);
+ border-radius: 8px;
+}
+
+/* SunHater Fixes */
+
+.ui-accordion-content-active, .ui-tabs, .ui-slider-range, .ui-datepicker, .ui-dialog {
+ border-color: #4d637c;
+}
+
+.ui-slider .ui-slider-range {
+ border: 1px solid #4685b3;
+ top: -1px
+}
+
+.ui-progressbar {
+ overflow:visible;
+}
+.ui-progressbar-value {
+ border: 1px solid #4685b3;
+ margin-top: -1px
+}
+
+.ui-button {
+ box-shadow: inset 0 0 3px #555, inset 0 0 6px #555, 0 0 3px #000, 0 0 2px #000;
+}
+.ui-button.ui-state-active {
+ box-shadow: inset 0 0 3px #88b9da, 0 0 3px #000, 0 0 2px #000;
+}
+.ui-widget-header,
+.ui-menu-item .ui-state-focus {
+ box-shadow: inset 0 0 3px #88b9da;
+}
+
+.ui-state-default,
+.ui-state-focus,
+.ui-state-active,
+.ui-widget-header,
+fieldset.sh-uniform label,
+fieldset.sh-uniform legend {
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+
+.ui-tabs .ui-state-active,
+.ui-datepicker .ui-state-highlight {
+ text-shadow: none;
+}
+.ui-datepicker .ui-state-highlight {
+ color: #215b82;
+ border-color: #4685b3;
+ box-shadow: inset 0 0 4px #4685b3;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #dfeef8, #fff);
+ background: -moz-linear-gradient(top, #dfeef8, #fff);
+ background: -ms-linear-gradient(top, #dfeef8, #fff);
+ background: -o-linear-gradient(top, #dfeef8, #fff);
+ background: linear-gradient(to bottom, #dfeef8, #fff);
+}
+
+.ui-progressbar, .ui-slider, .ui-menu {
+ box-shadow: inset 0 0 4px #666, 0 0 3px #000, 0 0 6px #000;
+ background: #000;
+ background: -webkit-linear-gradient(top, #111, #444);
+ background: -moz-linear-gradient(top, #111, #444);
+ background: -ms-linear-gradient(top, #111, #444);
+ background: -o-linear-gradient(top, #111, #444);
+ background: linear-gradient(to bottom, #111, #444);
+}
+
+.ui-slider, .ui-spinner, .ui-progressbar, .ui-menu {
+ border-color: #555;
+}
+
+.ui-datepicker-calendar .ui-state-default {
+ border-radius: 3px;
+}
+
+.ui-tabs .ui-tabs-nav {
+ margin: -1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ padding-left:3px;
+}
+
+.ui-tabs-active.ui-state-active {
+ background: #fff;
+ background: -webkit-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: -moz-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: -ms-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: -o-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: linear-gradient(to bottom, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ box-shadow: inset 0 0 5px #fff, inset 0 0 5px #fff, inset 0 0 5px #fff;
+}
+.ui-tabs-active.ui-state-active a {
+ color: #215b82;
+}
+.ui-state-default, .ui-state-default a {
+ outline: 0;
+}
+.ui-datepicker-header,
+.ui-dialog-titlebar {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ margin: -5px -5px 0 -5px;
+}
+.ui-datepicker-header {
+ margin: -11px -11px 5px -11px;
+}
+
+.ui-datepicker-header a:hover {
+ cursor: pointer;
+}
+
+.ui-dialog-titlebar-close.ui-state-default {
+ border-color: transparent;
+ background: none;
+ box-shadow: none;
+}
+
+.ui-dialog-titlebar-close.ui-state-default.ui-state-hover {
+ transition: .2s;
+ border: 1px solid #555;
+ background: #333;
+ background: -webkit-linear-gradient(top, #555, #111);
+ background: -moz-linear-gradient(top, #555, #111);
+ background: -ms-linear-gradient(top, #555, #111);
+ background: -o-linear-gradient(top, #555, #111);
+ background: linear-gradient(to bottom, #555, #111);
+ box-shadow: inset 0 0 3px #555, inset 0 0 6px #555, 0 0 3px #000, 0 0 2px #000;
+}
+
+.ui-dialog-buttonpane {
+ background: #202D3E;
+ box-shadow: inset 0 0 3px #000, inset 0 0 2px #000;
+ border-top-color: #4d637c;
+ margin: 0 -4px -4px -4px;
+ padding: 0;
+}
+
+/*** Uniform */
+/* Remove default webkit and possible mozilla .search styles.
+ * Keeping this as :active to remove browser styles */
+div.checker input,
+input[type="search"],
+input[type="search"]:active {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+}
+
+div.selector,
+div.selector span,
+div.checker span,
+div.radio span,
+div.uploader,
+div.uploader
+span.action,
+div.button,
+div.button span {
+ -webkit-font-smoothing: antialiased;
+}
+
+div.selector,
+div.checker,
+div.button,
+div.radio,
+div.uploader {
+ display: -moz-inline-box;
+ display: inline-block;
+ zoom: 1;
+ vertical-align: middle;
+}
+
+div.checker span,
+div.checker input,
+div.radio span,
+div.radio input,
+div.button span {
+ display: -moz-inline-box;
+ display: inline-block;
+ zoom: 1;
+ text-align: center;
+}
+
+div.selector select,
+div.checker input,
+div.button button,
+div.button input,
+div.button a,
+div.radio input,
+div.uploader input,
+input.uniform-input,
+select.uniform-multiselect,
+textarea.uniform {
+ outline: 0;
+}
+
+div.selector,
+div.selector *,
+div.radio,
+div.radio *,
+div.checker,
+div.checker *,
+div.uploader,
+div.uploader *,
+div.button,
+div.button * {
+ margin: 0;
+ padding: 0;
+}
+
+/* Select */
+div.selector {
+ padding: 0 1.9em 0 0;
+ position: relative;
+ overflow: hidden;
+ border: 1px solid;
+ border-radius: 4px;
+}
+div.selector span {
+ text-overflow: ellipsis;
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ padding:6px 0 6px 10px;
+ cursor: pointer;
+ width: 100%;
+ border-right: 1px solid;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+div.selector .ui-icon {
+ background: url(img/ui-icons_grey.png) -65px -16px;
+}
+div.selector select {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ border: 0;
+ background: none;
+ position: absolute;
+ height: 50px;
+ bottom: 0;
+ width: 100%;
+ cursor: pointer;
+}
+
+/* Checkbox */
+div.checker {
+ position: relative;
+ border: 1px solid;
+ padding: 1px;
+ border-radius: 4px;
+}
+div.checker,
+div.checker span,
+div.checker input {
+ width: 15px;
+ height: 15px;
+}
+div.checker span.checked {
+ background: url(img/ui-icons_grey.png) -64px -145px;
+}
+div.checker input {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ border: 0;
+ background: none;
+ cursor: pointer;
+}
+
+/* Radio */
+div.radio {
+ position: relative;
+ border: 1px solid;
+ padding: 1px;
+ border-radius: 9px;
+}
+div.radio,
+div.radio span,
+div.radio input {
+ width: 15px;
+ height: 15px;
+}
+div.radio span.checked {
+ background: url(img/ui-icons_grey.png) -80px -145px;
+}
+div.radio input {
+ opacity: 0;
+ border: 0;
+ background: none;
+ cursor: pointer;
+}
+
+/* Upload */
+div.uploader {
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+ border-radius: 4px;
+}
+div.uploader span.action {
+ text-align: center;
+ float: left;
+ display: inline;
+ overflow: hidden;
+ cursor: pointer;
+ padding: 6px 10px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+div.uploader span.filename {
+ text-overflow: ellipsis;
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ float: left;
+ padding: 6px 10px;
+ border-right: 1px solid;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+div.uploader input {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ border: 0;
+ background: none;
+ position: absolute;
+ top: 0;
+ right: 0;
+ float: right;
+ cursor: pointer;
+ font-size: 100px;
+}
+div.uploader input::-webkit-file-upload-button {
+ cursor: pointer;
+}
+div.uploader.active span.filename,
+div.uploader.focus span.filename {
+ border-right: 1px solid;
+}
+
+/* Button */
+div.button {
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+ border: 1px solid;
+ border-radius: 4px;
+}
+div.button a,
+div.button button,
+div.button input {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ display: block;
+ left: 0;
+ top: 0;
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ font-size: 1000px;
+ cursor: pointer;
+}
+div.button span {
+ padding: 0;
+ margin: 6px 10px;
+}
+
+/* Text fields */
+input.uniform-input,
+select.uniform-multiselect,
+textarea.uniform {
+ margin: 0;
+ border: 1px solid;
+ border-radius: 4px;
+}
+input.uniform-input,
+textarea.uniform {
+ padding: 6px 10px;
+}
+textarea.uniform {
+ overflow: auto;
+}
+select.uniform-multiselect {
+ padding: 5px;
+}
+
+
+/** Colorize elements */
+
+div.uploader {
+ border: 1px solid #aaa;
+}
+div.uploader.active,
+div.uploader.focus {
+ border-color: #184977;
+}
+
+/* Default - text fields */
+input.uniform-input,
+select.uniform-multiselect,
+textarea.uniform,
+div.uploader span.filename,
+div.selector span {
+ border-color: #666;
+ box-shadow: inset 0 0 4px #555;
+ background: #000;
+ background: -webkit-linear-gradient(top, #111, #333);
+ background: -moz-linear-gradient(top, #111, #333);
+ background: -ms-linear-gradient(top, #111, #333);
+ background: -o-linear-gradient(top, #111, #333);
+ background: linear-gradient(to bottom, #111, #333);
+ color: #aaa;
+}
+
+select.uniform-multiselect option {
+ color: #aaa;
+}
+
+select.uniform-multiselect.focus option {
+ color: #000;
+}
+
+/* Focus - text fields */
+input.uniform-input.focus,
+select.uniform-multiselect.focus,
+textarea.uniform.focus,
+div.uploader.active span.filename,
+div.uploader.focus span.filename,
+div.selector.active span,
+div.selector.focus span {
+ border-color: #4d637c;
+ box-shadow: inset 0 0 4px #4d637c;
+ color: #fff;
+ background: #202D3E;
+ background: -webkit-linear-gradient(top, #131427, #273446);
+ background: -moz-linear-gradient(top, #131427, #273446);
+ background: -ms-linear-gradient(top, #131427, #273446);
+ background: -o-linear-gradient(top, #131427, #273446);
+ background: linear-gradient(to bottom, #131427, #273446);
+}
+
+/* Read-only - text fields */
+input.uniform-input[readonly],
+textarea.uniform[readonly],
+input.uniform-input[readonly]:focus,
+textarea.uniform[readonly]:focus {
+ color: #808080;
+ border-color: #a5a5a5;
+ box-shadow: inset 0 0 4px #a5a5a5;
+ background: -webkit-linear-gradient(top, #ddd, #fff);
+ background: -moz-linear-gradient(top, #ddd, #fff);
+ background: -ms-linear-gradient(top, #ddd, #fff);
+ background: -o-linear-gradient(top, #ddd, #fff);
+ background: linear-gradient(to bottom, #ddd, #fff);
+}
+
+/* Default - buttons */
+div.selector,
+div.button,
+div.uploader span.action,
+div.radio,
+div.checker {
+ border-color: #555;
+ background: #333;
+ background: -webkit-linear-gradient(top, #555, #111);
+ background: -moz-linear-gradient(top, #555, #111);
+ background: -ms-linear-gradient(top, #555, #111);
+ background: -o-linear-gradient(top, #555, #111);
+ background: linear-gradient(to bottom, #555, #111);
+ box-shadow: inset 0 0 7px #555, inset 0 0 3px #555, 0 0 3px #000, 0 0 6px #000;
+}
+
+/* Hover - buttons */
+div.selector.hover,
+div.button.hover,
+div.uploader.hover span.action,
+div.radio.hover,
+div.checker.hover {
+ background: #333;
+ background: -webkit-linear-gradient(top, #111, #555);
+ background: -moz-linear-gradient(top, #111, #555);
+ background: -ms-linear-gradient(top, #111, #555);
+ background: -o-linear-gradient(top, #111, #555);
+ background: linear-gradient(to bottom, #111, #555);
+}
+
+/* Focus - buttons */
+div.selector.focus,
+div.button.focus,
+div.uploader.focus span.action,
+div.radio.focus,
+div.checker.focus {
+ color: #fff;
+ border-color: #4685b3;
+ background: #4685b3;
+ background: -webkit-linear-gradient(top, #4685b3, #184977);
+ background: -moz-linear-gradient(top, #4685b3, #184977);
+ background: -ms-linear-gradient(top, #4685b3, #184977);
+ background: -o-linear-gradient(top, #4685b3, #184977);
+ background: linear-gradient(to bottom, #4685b3, #184977);
+ box-shadow: inset 0 0 7px #4e9ed4, inset 0 0 3px #4e9ed4, 0 0 3px #000, 0 0 6px #000;
+}
+
+/* Active - buttons */
+div.button.active,
+div.button.active.hover,
+div.button.focus.hover,
+div.uploader.active span.action,
+div.uploader.active.hover span.action,
+div.uploader.focus.hover span.action,
+div.radio.active,
+div.radio.active.hover,
+div.radio.focus.hover,
+div.checker.active,
+div.checker.active.hover,
+div.checker.focus.hover,
+div.selector.active,
+div.selector.active.hover {
+ color: #fff;
+ border-color: #4685b3;
+ background: #184977;
+ background: -webkit-linear-gradient(top, #184977, #4685b3);
+ background: -moz-linear-gradient(top, #184977, #4685b3);
+ background: -ms-linear-gradient(top, #184977, #4685b3);
+ background: -o-linear-gradient(top, #184977, #4685b3);
+ background: linear-gradient(to bottom, #184977, #4685b3);
+ box-shadow: inset 0 0 7px #4e9ed4, inset 0 0 3px #4e9ed4, 0 0 3px #000, 0 0 6px #000;
+}
+
+div.selector.focus .ui-icon,
+div.checker.focus span.checked,
+div.radio.focus span.checked,
+div.selector.active .ui-icon,
+div.checker.active span.checked,
+div.radio.active span.checked {
+ background-image: url(img/ui-icons_white.png);
+}
+
+/* Disabled */
+input.uniform-input[disabled],
+select.uniform-multiselect[disabled],
+textarea.uniform[disabled],
+div.button.disabled,
+div.uploader.disabled,
+div.radio.disabled,
+div.checker.disabled,
+div.selector.disabled,
+div.selector.disabled.active{
+ opacity: .5;
+ filter: alpha(opacity=50);
+ cursor: default;
+}
+
+div.selector.disabled select,
+div.uploader.disabled input,
+div.button.disabled input,
+div.button.disabled button,
+div.button.disabled a,
+div.radio.disabled input,
+div.checker.disabled input {
+ cursor: default;
+}
+
+/* Buttons text */
+div.button span,
+div.uploader span.action {
+ font-weight: bold;
+ color: #aaa;
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+
+/* Placeholder colors */
+input.uniform-input::-webkit-input-placeholder,
+textarea.uniform::-webkit-input-placeholder {
+ color: #ababab;
+}
+input.uniform-input:-moz-placeholder,
+textarea.uniform::-moz-placeholder {
+ color: #aaa;
+}
+input.uniform-input::-moz-placeholder,
+textarea.uniform::-moz-placeholder {
+ color: #aaa;
+}
+input.uniform-input:-ms-input-placeholder,
+textarea.uniform:-ms-input-placeholder{
+ color: #ababab;
+}
+input.uniform-input:focus::-webkit-input-placeholder,
+textarea.uniform:focus::-webkit-input-placeholder{
+ color: #184977;
+}
+input.uniform-input:focus:-moz-placeholder,
+textarea.uniform:focus:-moz-placeholder {
+ color: #184977;
+}
+input.uniform-input:focus::-moz-placeholder,
+textarea.uniform:focus::-moz-placeholder {
+ color: #184977;
+}
+input.uniform-input:focus:-ms-input-placeholder,
+textarea.uniform:focus:-ms-input-placeholder {
+ color: #184977;
+}
+
+/** sh-uniform elements (a shUniform patch must be applied) */
+
+fieldset.sh-uniform {
+ color: #aaa;
+ border: 1px solid #425064;
+ border-radius: 4px;
+ background: #202d3e;
+ box-shadow: inset 0 0 3px #000, inset 0 0 6px #000, 0 0 3px #425064, 0 0 2px #425064;
+ margin: 0 10px 10px 0;
+ padding: 10px;
+}
+fieldset.sh-uniform legend {
+ font-weight: bold;
+ color: #aaa;
+}
+label.sh-uniform {
+ color: #aaa;
+}
+
+/*** shCheckset */
+
+.shcs {
+ margin: 0;
+}
+.shcs > div {
+ border: 1px solid;
+ border-top: 0;
+ padding: 5px;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+.shcs > input, .shcs > input:focus, .shcs > input:hover {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ margin:0;
+}
+.shcs label {
+ padding: 2px 5px 2px 2px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ color: #aaa;
+}
+.shcs > div, .shcs label:hover {
+ border-color: #aaa;
+ box-shadow: inset 0 0 4px #aaa;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+}
+.shcs label:hover {
+ color: #aaa;
+ cursor: pointer;
+}
+.shcs > div.focus, .shcs label.checked {
+ border-color: #184977;
+ box-shadow: inset 0 0 4px #4685b3;
+ color: #000;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #dfeef8, #fff);
+ background: -moz-linear-gradient(top, #dfeef8, #fff);
+ background: -ms-linear-gradient(top, #dfeef8, #fff);
+ background: -o-linear-gradient(top, #dfeef8, #fff);
+ background: linear-gradient(to bottom, #dfeef8, #fff);
+}
+.shcs label.checked div.checker {
+ border-color: #4685b3;
+ background: #4685b3;
+ background: -webkit-linear-gradient(top, #4685b3, #184977);
+ background: -moz-linear-gradient(top, #4685b3, #184977);
+ background: -ms-linear-gradient(top, #4685b3, #184977);
+ background: -o-linear-gradient(top, #4685b3, #184977);
+ background: linear-gradient(to bottom, #4685b3, #184977);
+}
+.shcs label.checked div.checker.hover {
+ border-color: #4685b3;
+ background: #184977;
+ background: -webkit-linear-gradient(top, #184977, #4685b3);
+ background: -moz-linear-gradient(top, #184977, #4685b3);
+ background: -ms-linear-gradient(top, #184977, #4685b3);
+ background: -o-linear-gradient(top, #184977, #4685b3);
+ background: linear-gradient(to bottom, #184977, #4685b3);
+}
+
+.shcs div.checker.focus {
+ border-color: #aaa;
+ background: #aaa;
+ background: -webkit-linear-gradient(top, #ababab, #aaa);
+ background: -moz-linear-gradient(top, #ababab, #aaa);
+ background: -ms-linear-gradient(top, #ababab, #aaa);
+ background: -o-linear-gradient(top, #ababab, #aaa);
+ background: linear-gradient(to bottom, #ababab, #aaa);
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+
+.shcs div.checker.focus.hover {
+ border-color: #aaa;
+ background: #aaa;
+ background: -webkit-linear-gradient(top, #aaa, #ababab);
+ background: -moz-linear-gradient(top, #aaa, #ababab);
+ background: -ms-linear-gradient(top, #aaa, #ababab);
+ background: -o-linear-gradient(top, #aaa, #ababab);
+ background: linear-gradient(to bottom, #aaa, #ababab);
+}
+
+.shcs label > span {
+ position:relative;
+ margin-left:5px;
+ top:1px;
+}
\ No newline at end of file
diff --git a/kcfinder/themes/dark/02.misc.css b/kcfinder/themes/dark/02.misc.css
new file mode 100644
index 00000000..cb45671e
--- /dev/null
+++ b/kcfinder/themes/dark/02.misc.css
@@ -0,0 +1,418 @@
+* {
+ font-size: 13px;
+}
+body {
+ background: #000;
+ color: #aaa;
+}
+fieldset td {
+ white-space: nowrap;
+}
+#folders {
+ margin: 5px 5px 0 5px;
+}
+#files {
+ margin-right: 5px;
+}
+
+
+/* SHARED DECLARATIONS */
+
+#toolbar a:hover,
+#toolbar a.hover,
+span.current,
+span.regular:hover,
+span.context,
+#clipboard div:hover,
+div.file:hover,
+#files div.selected,
+#files div.selected:hover,
+tr.selected > td,
+tr.selected:hover > td,
+#menu .list div a:hover,
+#toolbar a.selected {
+ color: #fff;
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+#files div {
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+
+#files,
+#folders,
+#toolbar a.selected {
+ color: #aaa;
+ border: 1px solid #425064;
+ border-radius: 4px;
+ background: #202d3e;
+ box-shadow: inset 0 0 3px #000, inset 0 0 6px #000, 0 0 3px #425064, 0 0 2px #425064;
+}
+
+/* TOOLBAR */
+#toolbar {
+ padding: 5px 0;
+}
+#toolbar a {
+ color: #949494;
+ margin-right: 5px;
+ border: 1px solid transparent;
+ outline: none;
+ display: block;
+ float: left;
+ border-radius: 4px;
+ transition: .3s;
+ padding:0;
+}
+#toolbar a > span {
+ padding: 6px 10px 6px 26px;
+ diaplay: block;
+ float:left;
+ background: no-repeat 6px center;
+}
+#toolbar a:hover,
+#toolbar a.hover {
+ color: #fff;
+ border-color: #184977;
+ background: #4685b3;
+ background: -webkit-linear-gradient(top, #4685b3, #184977);
+ background: -moz-linear-gradient(top, #4685b3, #184977);
+ background: -ms-linear-gradient(top, #4685b3, #184977);
+ background: -o-linear-gradient(top, #4685b3, #184977);
+ background: linear-gradient(to bottom, #4685b3, #184977);
+ box-shadow: inset 0 0 3px #88b9da;
+ transition: .3s;
+}
+#toolbar a[href="kcact:upload"] span {
+ background-image: url(img/icons/upload.png);
+}
+#toolbar a[href="kcact:refresh"] span {
+ background-image: url(img/icons/refresh.png);
+}
+#toolbar a[href="kcact:settings"] span {
+ background-image: url(img/icons/settings.png);
+}
+#toolbar a[href="kcact:about"] span {
+ background-image: url(img/icons/about.png);
+}
+#toolbar a[href="kcact:maximize"] span {
+ background-image: url(img/icons/maximize.png);
+}
+
+
+/* SETTINGS BAR */
+
+#settings label {
+ cursor: pointer;
+}
+#settings fieldset {
+ margin-right:5px;
+ margin-bottom: 6px;
+ margin-top:-5px;
+ padding:6px;
+}
+
+
+/* FOLDERS */
+
+div.folder {
+ padding-top: 2px;
+ margin-top: 5px;
+ white-space: nowrap;
+}
+div.folder a {
+ text-decoration: none;
+ cursor: default;
+ outline: none;
+ color: #aaa;
+}
+span.folder {
+ padding: 2px 3px 2px 23px;
+ outline: none;
+ background: no-repeat 3px center;
+ cursor: pointer;
+ border-radius: 3px;
+ border: 1px solid transparent;
+}
+span.brace {
+ width: 16px;
+ height: 16px;
+ outline: none;
+}
+span.current {
+ transition: .3s;
+ background-image: url(img/tree/folder.png);
+ background-color: #306999;
+ border-color: #306999;
+ box-shadow: inset 0 0 7px #8FD6EA, inset 0 0 3px #8FD6EA, 0 0 2px #000, 0 0 1px #000;
+}
+span.regular {
+ transition: .3s;
+ background-image: url(img/tree/folder.png);
+ background-color: transparent;
+}
+span.regular:hover, span.context, #clipboard div:hover {
+ transition: .3s;
+ background-color: #333;
+ border-color: #777;
+ box-shadow: inset 0 0 7px #777, inset 0 0 3px #777, 0 0 2px #000, 0 0 1px #000;
+}
+span.opened {
+ background-image: url(img/tree/minus.png);
+}
+span.closed {
+ background-image: url(img/tree/plus.png);
+}
+span.denied {
+ background-image: url(img/tree/denied.png);
+}
+
+
+/* FILES */
+
+div.file {
+ padding: 4px;
+ margin: 3px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+div.file:hover {
+ box-shadow: inset 0 0 7px #555, inset 0 0 3px #555, 0 0 3px #000, 0 0 6px #000;
+ background: #000;
+ background: -webkit-linear-gradient(top, #111, #555);
+ background: -moz-linear-gradient(top, #111, #555);
+ background: -ms-linear-gradient(top, #111, #555);
+ background: -o-linear-gradient(top, #111, #555);
+ background: linear-gradient(to bottom, #111, #555);
+ border-color: #555;
+}
+div.file .name {
+ margin-top: 4px;
+ font-weight: bold;
+ height: 16px;
+ overflow: hidden;
+ padding-bottom:2px;
+}
+div.file .time {
+ font-size: 10px;
+}
+div.file .size {
+ font-size: 10px;
+}
+#files div.selected,
+#files div.selected:hover {
+ border-color: #4685b3;
+ background: #4685b3;
+ background: -webkit-linear-gradient(top, #4685b3, #184977);
+ background: -moz-linear-gradient(top, #4685b3, #184977);
+ background: -ms-linear-gradient(top, #4685b3, #184977);
+ background: -o-linear-gradient(top, #4685b3, #184977);
+ background: linear-gradient(to bottom, #4685b3, #184977);
+ box-shadow: inset 0 0 7px #4e9ed4, inset 0 0 3px #4e9ed4, 0 0 3px #000, 0 0 6px #000;
+}
+tr.file > td {
+ padding: 3px 4px;
+}
+tr.file:hover > td {
+ background-color: #000;
+ transition: none;
+}
+tr.selected > td,
+tr.selected:hover > td {
+ transition: .3s;
+ background-color: #2d5277;
+}
+tr.file td.name {
+ background-position: 2px center;
+ padding-left: 22px;
+}
+a.denied {
+ color: #666;
+ opacity: 0.5;
+ filter: alpha(opacity:50);
+ cursor: default;
+}
+a.denied:hover {
+ background-color: #e4e3e2;
+ border-color: transparent;
+ box-shadow: none;
+}
+
+/* FILE MENU */
+
+#menu .ui-menu a span {
+ background: left center no-repeat;
+ padding-left: 20px;
+ white-space: nowrap;
+}
+#menu a[href="kcact:refresh"] span {
+ background-image: url(img/icons/refresh.png);
+}
+#menu a[href="kcact:mkdir"] span {
+ background-image: url(img/icons/folder-new.png);
+}
+#menu a[href="kcact:mvdir"] span, #menu a[href="kcact:mv"] span {
+ background-image: url(img/icons/rename.png);
+}
+#menu a[href="kcact:rmdir"] span, #menu a[href="kcact:rm"] span, #menu a[href="kcact:rmcbd"] span {
+ background-image: url(img/icons/delete.png);
+}
+#menu a[href="kcact:clpbrdadd"] span {
+ background-image: url(img/icons/clipboard-add.png);
+}
+#menu a[href="kcact:pick"] span, #menu a[href="kcact:pick_thumb"] span {
+ background-image: url(img/icons/select.png);
+}
+#menu a[href="kcact:download"] span {
+ background-image: url(img/icons/download.png);
+}
+#menu a[href="kcact:view"] span {
+ background-image: url(img/icons/view.png);
+}
+#menu a[href="kcact:cpcbd"] span {
+ background-image: url(img/icons/copy.png);
+}
+#menu a[href="kcact:mvcbd"] span {
+ background-image: url(img/icons/move.png);
+}
+#menu a[href="kcact:clrcbd"] span {
+ background-image: url(img/icons/clipboard-clear.png);
+}
+
+/* CLIPBOARD */
+
+#clipboard {
+ margin-left:-3px;
+ padding: 2px;
+}
+#clipboard div {
+ background: url(img/icons/clipboard.png) no-repeat center center;
+ border: 1px solid transparent;
+ padding: 2px;
+ cursor: pointer;
+ border-radius: 4px;
+}
+#clipboard.selected div, #clipboard.selected div:hover {
+ background-color: #306999;
+ border-color: #306999;
+ box-shadow: inset 0 0 7px #8FD6EA, inset 0 0 3px #8FD6EA;
+}
+#menu .list a, #menu .list a.ui-state-focus {
+ margin: -1px 0 0 -1px;
+ padding: 6px 10px;
+ border: 1px solid transparent;
+ background: none;
+ border-radius: 0;
+ text-shadow: none;
+ box-shadow: none;
+}
+#menu .list a.first, #menu .list a.first.ui-state-focus {
+ border-radius: 4px 4px 0 0;
+}
+#menu .list a:hover {
+ border-color: #4685b3;
+ background: #4685b3;
+ background: -webkit-linear-gradient(top, #184977, #4685b3);
+ background: -moz-linear-gradient(top, #184977, #4685b3);
+ background: -ms-linear-gradient(top, #184977, #4685b3);
+ background: -o-linear-gradient(top, #184977, #4685b3);
+ background: linear-gradient(to bottom, #184977, #4685b3);
+ box-shadow: inset 0 0 7px #4e9ed4, inset 0 0 3px #4e9ed4;
+}
+#menu .list {
+ overflow:hidden;
+ max-height: 1px;
+ margin-bottom: -1px;
+ padding-bottom:1px;
+}
+#menu li.div-files {
+ margin: 0 0 1px 0;
+}
+
+/* ABOUT DIALOG */
+
+.about {
+ text-align: center;
+}
+.about div.head {
+ font-weight: bold;
+ font-size: 12px;
+ padding: 3px 0 8px 0;
+}
+.about div.head a {
+ background: url(img/kcf_logo.png) no-repeat left center;
+ padding: 0 0 0 27px;
+ font-size: 17px;
+ outline: none;
+}
+
+.about a {
+ text-decoration: none;
+ color: #3665b4;
+}
+
+.about a:hover {
+ text-decoration: underline;
+}
+#checkver {
+ margin: 5px 0 10px 0;
+}
+#loading, #checkver > span.loading {
+ background: url(img/loading.gif);
+ border: 1px solid #425064;
+ box-shadow: inset 0 0 3px #000, inset 0 0 6px #000, 0 0 3px #425064, 0 0 2px #425064;
+ padding: 6px 10px;
+ border-radius: 4px;
+ color: #aaa;
+}
+#checkver a {
+ font-weight: normal;
+ padding: 3px 3px 3px 20px;
+ background: url(img/icons/download.png) no-repeat left center;
+}
+
+/* IMAGE VIEWER */
+
+.ui-dialog-content.kcfImageViewer {
+ background: #000;
+ cursor: pointer;
+}
+.kcfImageViewer .img {
+ background: url(img/bg_transparent.png);
+}
+
+/* MISC */
+
+#loading {
+ margin-right: 5px;
+}
+#loadingDirs {
+ padding: 5px 0 1px 24px;
+}
+#files.drag {
+ background: #ddebf8;
+}
+#resizer {
+ background: #fff;
+}
+
+/* FIX FIELDSET BORDER RADIUS BUG ON IE */
+body.msie fieldset,
+body.trident.rv fieldset {
+ border-radius: 0;
+}
\ No newline at end of file
diff --git a/kcfinder/themes/dark/README b/kcfinder/themes/dark/README
new file mode 100644
index 00000000..3d745acb
--- /dev/null
+++ b/kcfinder/themes/dark/README
@@ -0,0 +1,9 @@
+This folder contains files for designing default visual theme for KCFinder.
+Some icons are taken from default KDE4 visual theme (http://www.kde.org)
+
+Theme Details:
+
+Version: 1.0
+Author: Pavel Tzonkov
+Licenses: GPLv3 - http://opensource.org/licenses/GPL-3.0
+ LGPLv3 - http://opensource.org/licenses/LGPL-3.0
diff --git a/kcfinder/themes/dark/css.php b/kcfinder/themes/dark/css.php
new file mode 100644
index 00000000..569abc7d
--- /dev/null
+++ b/kcfinder/themes/dark/css.php
@@ -0,0 +1,12 @@
+minify("cache/theme_$theme.css");
+
+?>
\ No newline at end of file
diff --git a/kcfinder/themes/dark/img/bg_transparent.png b/kcfinder/themes/dark/img/bg_transparent.png
new file mode 100644
index 00000000..32006320
Binary files /dev/null and b/kcfinder/themes/dark/img/bg_transparent.png differ
diff --git a/kcfinder/themes/dark/img/files/big/..png b/kcfinder/themes/dark/img/files/big/..png
new file mode 100644
index 00000000..aaff4841
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/..png differ
diff --git a/kcfinder/themes/dark/img/files/big/.image.png b/kcfinder/themes/dark/img/files/big/.image.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/.image.png differ
diff --git a/kcfinder/themes/dark/img/files/big/avi.png b/kcfinder/themes/dark/img/files/big/avi.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/avi.png differ
diff --git a/kcfinder/themes/dark/img/files/big/bat.png b/kcfinder/themes/dark/img/files/big/bat.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/bat.png differ
diff --git a/kcfinder/themes/dark/img/files/big/bmp.png b/kcfinder/themes/dark/img/files/big/bmp.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/bmp.png differ
diff --git a/kcfinder/themes/dark/img/files/big/bz2.png b/kcfinder/themes/dark/img/files/big/bz2.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/bz2.png differ
diff --git a/kcfinder/themes/dark/img/files/big/ccd.png b/kcfinder/themes/dark/img/files/big/ccd.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/ccd.png differ
diff --git a/kcfinder/themes/dark/img/files/big/cgi.png b/kcfinder/themes/dark/img/files/big/cgi.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/cgi.png differ
diff --git a/kcfinder/themes/dark/img/files/big/com.png b/kcfinder/themes/dark/img/files/big/com.png
new file mode 100644
index 00000000..427a328b
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/com.png differ
diff --git a/kcfinder/themes/dark/img/files/big/csh.png b/kcfinder/themes/dark/img/files/big/csh.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/csh.png differ
diff --git a/kcfinder/themes/dark/img/files/big/cue.png b/kcfinder/themes/dark/img/files/big/cue.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/cue.png differ
diff --git a/kcfinder/themes/dark/img/files/big/deb.png b/kcfinder/themes/dark/img/files/big/deb.png
new file mode 100644
index 00000000..14ce82ff
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/deb.png differ
diff --git a/kcfinder/themes/dark/img/files/big/dll.png b/kcfinder/themes/dark/img/files/big/dll.png
new file mode 100644
index 00000000..9e03a48d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/dll.png differ
diff --git a/kcfinder/themes/dark/img/files/big/doc.png b/kcfinder/themes/dark/img/files/big/doc.png
new file mode 100644
index 00000000..b544dcc8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/doc.png differ
diff --git a/kcfinder/themes/dark/img/files/big/docx.png b/kcfinder/themes/dark/img/files/big/docx.png
new file mode 100644
index 00000000..b544dcc8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/docx.png differ
diff --git a/kcfinder/themes/dark/img/files/big/exe.png b/kcfinder/themes/dark/img/files/big/exe.png
new file mode 100644
index 00000000..427a328b
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/exe.png differ
diff --git a/kcfinder/themes/dark/img/files/big/fla.png b/kcfinder/themes/dark/img/files/big/fla.png
new file mode 100644
index 00000000..5e7c751b
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/fla.png differ
diff --git a/kcfinder/themes/dark/img/files/big/flv.png b/kcfinder/themes/dark/img/files/big/flv.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/flv.png differ
diff --git a/kcfinder/themes/dark/img/files/big/fon.png b/kcfinder/themes/dark/img/files/big/fon.png
new file mode 100644
index 00000000..3815dac6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/fon.png differ
diff --git a/kcfinder/themes/dark/img/files/big/gif.png b/kcfinder/themes/dark/img/files/big/gif.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/gif.png differ
diff --git a/kcfinder/themes/dark/img/files/big/gz.png b/kcfinder/themes/dark/img/files/big/gz.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/gz.png differ
diff --git a/kcfinder/themes/dark/img/files/big/htm.png b/kcfinder/themes/dark/img/files/big/htm.png
new file mode 100644
index 00000000..4995b6b2
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/htm.png differ
diff --git a/kcfinder/themes/dark/img/files/big/html.png b/kcfinder/themes/dark/img/files/big/html.png
new file mode 100644
index 00000000..4995b6b2
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/html.png differ
diff --git a/kcfinder/themes/dark/img/files/big/ini.png b/kcfinder/themes/dark/img/files/big/ini.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/ini.png differ
diff --git a/kcfinder/themes/dark/img/files/big/iso.png b/kcfinder/themes/dark/img/files/big/iso.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/iso.png differ
diff --git a/kcfinder/themes/dark/img/files/big/jar.png b/kcfinder/themes/dark/img/files/big/jar.png
new file mode 100644
index 00000000..cef54cd1
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/jar.png differ
diff --git a/kcfinder/themes/dark/img/files/big/java.png b/kcfinder/themes/dark/img/files/big/java.png
new file mode 100644
index 00000000..351b5db9
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/java.png differ
diff --git a/kcfinder/themes/dark/img/files/big/jpeg.png b/kcfinder/themes/dark/img/files/big/jpeg.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/jpeg.png differ
diff --git a/kcfinder/themes/dark/img/files/big/jpg.png b/kcfinder/themes/dark/img/files/big/jpg.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/jpg.png differ
diff --git a/kcfinder/themes/dark/img/files/big/js.png b/kcfinder/themes/dark/img/files/big/js.png
new file mode 100644
index 00000000..fcb1f8f4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/js.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mds.png b/kcfinder/themes/dark/img/files/big/mds.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mds.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mdx.png b/kcfinder/themes/dark/img/files/big/mdx.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mdx.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mid.png b/kcfinder/themes/dark/img/files/big/mid.png
new file mode 100644
index 00000000..6187bc50
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mid.png differ
diff --git a/kcfinder/themes/dark/img/files/big/midi.png b/kcfinder/themes/dark/img/files/big/midi.png
new file mode 100644
index 00000000..6187bc50
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/midi.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mkv.png b/kcfinder/themes/dark/img/files/big/mkv.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mkv.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mov.png b/kcfinder/themes/dark/img/files/big/mov.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mov.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mp3.png b/kcfinder/themes/dark/img/files/big/mp3.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mp3.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mp4.png b/kcfinder/themes/dark/img/files/big/mp4.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mp4.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mpeg.png b/kcfinder/themes/dark/img/files/big/mpeg.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mpeg.png differ
diff --git a/kcfinder/themes/dark/img/files/big/mpg.png b/kcfinder/themes/dark/img/files/big/mpg.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/mpg.png differ
diff --git a/kcfinder/themes/dark/img/files/big/nfo.png b/kcfinder/themes/dark/img/files/big/nfo.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/nfo.png differ
diff --git a/kcfinder/themes/dark/img/files/big/nrg.png b/kcfinder/themes/dark/img/files/big/nrg.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/nrg.png differ
diff --git a/kcfinder/themes/dark/img/files/big/ogg.png b/kcfinder/themes/dark/img/files/big/ogg.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/ogg.png differ
diff --git a/kcfinder/themes/dark/img/files/big/pdf.png b/kcfinder/themes/dark/img/files/big/pdf.png
new file mode 100644
index 00000000..49cf5e33
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/pdf.png differ
diff --git a/kcfinder/themes/dark/img/files/big/php.png b/kcfinder/themes/dark/img/files/big/php.png
new file mode 100644
index 00000000..588bef89
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/php.png differ
diff --git a/kcfinder/themes/dark/img/files/big/phps.png b/kcfinder/themes/dark/img/files/big/phps.png
new file mode 100644
index 00000000..588bef89
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/phps.png differ
diff --git a/kcfinder/themes/dark/img/files/big/pl.png b/kcfinder/themes/dark/img/files/big/pl.png
new file mode 100644
index 00000000..d3468a56
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/pl.png differ
diff --git a/kcfinder/themes/dark/img/files/big/pm.png b/kcfinder/themes/dark/img/files/big/pm.png
new file mode 100644
index 00000000..d3468a56
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/pm.png differ
diff --git a/kcfinder/themes/dark/img/files/big/png.png b/kcfinder/themes/dark/img/files/big/png.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/png.png differ
diff --git a/kcfinder/themes/dark/img/files/big/ppt.png b/kcfinder/themes/dark/img/files/big/ppt.png
new file mode 100644
index 00000000..ae13c8a4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/ppt.png differ
diff --git a/kcfinder/themes/dark/img/files/big/pptx.png b/kcfinder/themes/dark/img/files/big/pptx.png
new file mode 100644
index 00000000..ae13c8a4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/pptx.png differ
diff --git a/kcfinder/themes/dark/img/files/big/psd.png b/kcfinder/themes/dark/img/files/big/psd.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/psd.png differ
diff --git a/kcfinder/themes/dark/img/files/big/qt.png b/kcfinder/themes/dark/img/files/big/qt.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/qt.png differ
diff --git a/kcfinder/themes/dark/img/files/big/rar.png b/kcfinder/themes/dark/img/files/big/rar.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/rar.png differ
diff --git a/kcfinder/themes/dark/img/files/big/rpm.png b/kcfinder/themes/dark/img/files/big/rpm.png
new file mode 100644
index 00000000..0708eef4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/rpm.png differ
diff --git a/kcfinder/themes/dark/img/files/big/rtf.png b/kcfinder/themes/dark/img/files/big/rtf.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/rtf.png differ
diff --git a/kcfinder/themes/dark/img/files/big/sh.png b/kcfinder/themes/dark/img/files/big/sh.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/sh.png differ
diff --git a/kcfinder/themes/dark/img/files/big/sql.png b/kcfinder/themes/dark/img/files/big/sql.png
new file mode 100644
index 00000000..754b3dcb
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/sql.png differ
diff --git a/kcfinder/themes/dark/img/files/big/srt.png b/kcfinder/themes/dark/img/files/big/srt.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/srt.png differ
diff --git a/kcfinder/themes/dark/img/files/big/sub.png b/kcfinder/themes/dark/img/files/big/sub.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/sub.png differ
diff --git a/kcfinder/themes/dark/img/files/big/swf.png b/kcfinder/themes/dark/img/files/big/swf.png
new file mode 100644
index 00000000..45a8208d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/swf.png differ
diff --git a/kcfinder/themes/dark/img/files/big/tgz.png b/kcfinder/themes/dark/img/files/big/tgz.png
new file mode 100644
index 00000000..d7e7b5b1
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/tgz.png differ
diff --git a/kcfinder/themes/dark/img/files/big/tif.png b/kcfinder/themes/dark/img/files/big/tif.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/tif.png differ
diff --git a/kcfinder/themes/dark/img/files/big/tiff.png b/kcfinder/themes/dark/img/files/big/tiff.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/tiff.png differ
diff --git a/kcfinder/themes/dark/img/files/big/torrent.png b/kcfinder/themes/dark/img/files/big/torrent.png
new file mode 100644
index 00000000..0bffac4b
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/torrent.png differ
diff --git a/kcfinder/themes/dark/img/files/big/ttf.png b/kcfinder/themes/dark/img/files/big/ttf.png
new file mode 100644
index 00000000..4f43e196
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/ttf.png differ
diff --git a/kcfinder/themes/dark/img/files/big/txt.png b/kcfinder/themes/dark/img/files/big/txt.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/txt.png differ
diff --git a/kcfinder/themes/dark/img/files/big/wav.png b/kcfinder/themes/dark/img/files/big/wav.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/wav.png differ
diff --git a/kcfinder/themes/dark/img/files/big/wma.png b/kcfinder/themes/dark/img/files/big/wma.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/wma.png differ
diff --git a/kcfinder/themes/dark/img/files/big/xls.png b/kcfinder/themes/dark/img/files/big/xls.png
new file mode 100644
index 00000000..ddf069fe
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/xls.png differ
diff --git a/kcfinder/themes/dark/img/files/big/xlsx.png b/kcfinder/themes/dark/img/files/big/xlsx.png
new file mode 100644
index 00000000..ddf069fe
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/xlsx.png differ
diff --git a/kcfinder/themes/dark/img/files/big/zip.png b/kcfinder/themes/dark/img/files/big/zip.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/dark/img/files/big/zip.png differ
diff --git a/kcfinder/themes/dark/img/files/small/..png b/kcfinder/themes/dark/img/files/small/..png
new file mode 100644
index 00000000..67f4c5f4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/..png differ
diff --git a/kcfinder/themes/dark/img/files/small/.image.png b/kcfinder/themes/dark/img/files/small/.image.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/.image.png differ
diff --git a/kcfinder/themes/dark/img/files/small/avi.png b/kcfinder/themes/dark/img/files/small/avi.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/avi.png differ
diff --git a/kcfinder/themes/dark/img/files/small/bat.png b/kcfinder/themes/dark/img/files/small/bat.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/bat.png differ
diff --git a/kcfinder/themes/dark/img/files/small/bmp.png b/kcfinder/themes/dark/img/files/small/bmp.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/bmp.png differ
diff --git a/kcfinder/themes/dark/img/files/small/bz2.png b/kcfinder/themes/dark/img/files/small/bz2.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/bz2.png differ
diff --git a/kcfinder/themes/dark/img/files/small/ccd.png b/kcfinder/themes/dark/img/files/small/ccd.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/ccd.png differ
diff --git a/kcfinder/themes/dark/img/files/small/cgi.png b/kcfinder/themes/dark/img/files/small/cgi.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/cgi.png differ
diff --git a/kcfinder/themes/dark/img/files/small/com.png b/kcfinder/themes/dark/img/files/small/com.png
new file mode 100644
index 00000000..2246f308
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/com.png differ
diff --git a/kcfinder/themes/dark/img/files/small/csh.png b/kcfinder/themes/dark/img/files/small/csh.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/csh.png differ
diff --git a/kcfinder/themes/dark/img/files/small/cue.png b/kcfinder/themes/dark/img/files/small/cue.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/cue.png differ
diff --git a/kcfinder/themes/dark/img/files/small/deb.png b/kcfinder/themes/dark/img/files/small/deb.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/deb.png differ
diff --git a/kcfinder/themes/dark/img/files/small/dll.png b/kcfinder/themes/dark/img/files/small/dll.png
new file mode 100644
index 00000000..b1a2f1c4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/dll.png differ
diff --git a/kcfinder/themes/dark/img/files/small/doc.png b/kcfinder/themes/dark/img/files/small/doc.png
new file mode 100644
index 00000000..069059db
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/doc.png differ
diff --git a/kcfinder/themes/dark/img/files/small/docx.png b/kcfinder/themes/dark/img/files/small/docx.png
new file mode 100644
index 00000000..069059db
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/docx.png differ
diff --git a/kcfinder/themes/dark/img/files/small/exe.png b/kcfinder/themes/dark/img/files/small/exe.png
new file mode 100644
index 00000000..2246f308
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/exe.png differ
diff --git a/kcfinder/themes/dark/img/files/small/fla.png b/kcfinder/themes/dark/img/files/small/fla.png
new file mode 100644
index 00000000..c50ec521
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/fla.png differ
diff --git a/kcfinder/themes/dark/img/files/small/flv.png b/kcfinder/themes/dark/img/files/small/flv.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/flv.png differ
diff --git a/kcfinder/themes/dark/img/files/small/fon.png b/kcfinder/themes/dark/img/files/small/fon.png
new file mode 100644
index 00000000..2303efed
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/fon.png differ
diff --git a/kcfinder/themes/dark/img/files/small/gif.png b/kcfinder/themes/dark/img/files/small/gif.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/gif.png differ
diff --git a/kcfinder/themes/dark/img/files/small/gz.png b/kcfinder/themes/dark/img/files/small/gz.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/gz.png differ
diff --git a/kcfinder/themes/dark/img/files/small/htm.png b/kcfinder/themes/dark/img/files/small/htm.png
new file mode 100644
index 00000000..cc2f1bf9
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/htm.png differ
diff --git a/kcfinder/themes/dark/img/files/small/html.png b/kcfinder/themes/dark/img/files/small/html.png
new file mode 100644
index 00000000..cc2f1bf9
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/html.png differ
diff --git a/kcfinder/themes/dark/img/files/small/ini.png b/kcfinder/themes/dark/img/files/small/ini.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/ini.png differ
diff --git a/kcfinder/themes/dark/img/files/small/iso.png b/kcfinder/themes/dark/img/files/small/iso.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/iso.png differ
diff --git a/kcfinder/themes/dark/img/files/small/jar.png b/kcfinder/themes/dark/img/files/small/jar.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/jar.png differ
diff --git a/kcfinder/themes/dark/img/files/small/java.png b/kcfinder/themes/dark/img/files/small/java.png
new file mode 100644
index 00000000..58fa8d0d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/java.png differ
diff --git a/kcfinder/themes/dark/img/files/small/jpeg.png b/kcfinder/themes/dark/img/files/small/jpeg.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/jpeg.png differ
diff --git a/kcfinder/themes/dark/img/files/small/jpg.png b/kcfinder/themes/dark/img/files/small/jpg.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/jpg.png differ
diff --git a/kcfinder/themes/dark/img/files/small/js.png b/kcfinder/themes/dark/img/files/small/js.png
new file mode 100644
index 00000000..db79975b
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/js.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mds.png b/kcfinder/themes/dark/img/files/small/mds.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mds.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mdx.png b/kcfinder/themes/dark/img/files/small/mdx.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mdx.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mid.png b/kcfinder/themes/dark/img/files/small/mid.png
new file mode 100644
index 00000000..e1ed4bd2
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mid.png differ
diff --git a/kcfinder/themes/dark/img/files/small/midi.png b/kcfinder/themes/dark/img/files/small/midi.png
new file mode 100644
index 00000000..e1ed4bd2
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/midi.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mkv.png b/kcfinder/themes/dark/img/files/small/mkv.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mkv.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mov.png b/kcfinder/themes/dark/img/files/small/mov.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mov.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mp3.png b/kcfinder/themes/dark/img/files/small/mp3.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mp3.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mp4.png b/kcfinder/themes/dark/img/files/small/mp4.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mp4.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mpeg.png b/kcfinder/themes/dark/img/files/small/mpeg.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mpeg.png differ
diff --git a/kcfinder/themes/dark/img/files/small/mpg.png b/kcfinder/themes/dark/img/files/small/mpg.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/mpg.png differ
diff --git a/kcfinder/themes/dark/img/files/small/nfo.png b/kcfinder/themes/dark/img/files/small/nfo.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/nfo.png differ
diff --git a/kcfinder/themes/dark/img/files/small/nrg.png b/kcfinder/themes/dark/img/files/small/nrg.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/nrg.png differ
diff --git a/kcfinder/themes/dark/img/files/small/ogg.png b/kcfinder/themes/dark/img/files/small/ogg.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/ogg.png differ
diff --git a/kcfinder/themes/dark/img/files/small/pdf.png b/kcfinder/themes/dark/img/files/small/pdf.png
new file mode 100644
index 00000000..9498f0ff
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/pdf.png differ
diff --git a/kcfinder/themes/dark/img/files/small/php.png b/kcfinder/themes/dark/img/files/small/php.png
new file mode 100644
index 00000000..d73934be
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/php.png differ
diff --git a/kcfinder/themes/dark/img/files/small/phps.png b/kcfinder/themes/dark/img/files/small/phps.png
new file mode 100644
index 00000000..d73934be
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/phps.png differ
diff --git a/kcfinder/themes/dark/img/files/small/pl.png b/kcfinder/themes/dark/img/files/small/pl.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/pl.png differ
diff --git a/kcfinder/themes/dark/img/files/small/pm.png b/kcfinder/themes/dark/img/files/small/pm.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/pm.png differ
diff --git a/kcfinder/themes/dark/img/files/small/png.png b/kcfinder/themes/dark/img/files/small/png.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/png.png differ
diff --git a/kcfinder/themes/dark/img/files/small/ppt.png b/kcfinder/themes/dark/img/files/small/ppt.png
new file mode 100644
index 00000000..bdccbb63
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/ppt.png differ
diff --git a/kcfinder/themes/dark/img/files/small/pptx.png b/kcfinder/themes/dark/img/files/small/pptx.png
new file mode 100644
index 00000000..bdccbb63
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/pptx.png differ
diff --git a/kcfinder/themes/dark/img/files/small/psd.png b/kcfinder/themes/dark/img/files/small/psd.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/psd.png differ
diff --git a/kcfinder/themes/dark/img/files/small/qt.png b/kcfinder/themes/dark/img/files/small/qt.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/qt.png differ
diff --git a/kcfinder/themes/dark/img/files/small/rar.png b/kcfinder/themes/dark/img/files/small/rar.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/rar.png differ
diff --git a/kcfinder/themes/dark/img/files/small/rpm.png b/kcfinder/themes/dark/img/files/small/rpm.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/rpm.png differ
diff --git a/kcfinder/themes/dark/img/files/small/rtf.png b/kcfinder/themes/dark/img/files/small/rtf.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/rtf.png differ
diff --git a/kcfinder/themes/dark/img/files/small/sh.png b/kcfinder/themes/dark/img/files/small/sh.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/sh.png differ
diff --git a/kcfinder/themes/dark/img/files/small/sql.png b/kcfinder/themes/dark/img/files/small/sql.png
new file mode 100644
index 00000000..5665b631
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/sql.png differ
diff --git a/kcfinder/themes/dark/img/files/small/srt.png b/kcfinder/themes/dark/img/files/small/srt.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/srt.png differ
diff --git a/kcfinder/themes/dark/img/files/small/sub.png b/kcfinder/themes/dark/img/files/small/sub.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/sub.png differ
diff --git a/kcfinder/themes/dark/img/files/small/swf.png b/kcfinder/themes/dark/img/files/small/swf.png
new file mode 100644
index 00000000..80e05a3d
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/swf.png differ
diff --git a/kcfinder/themes/dark/img/files/small/tgz.png b/kcfinder/themes/dark/img/files/small/tgz.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/tgz.png differ
diff --git a/kcfinder/themes/dark/img/files/small/tif.png b/kcfinder/themes/dark/img/files/small/tif.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/tif.png differ
diff --git a/kcfinder/themes/dark/img/files/small/tiff.png b/kcfinder/themes/dark/img/files/small/tiff.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/tiff.png differ
diff --git a/kcfinder/themes/dark/img/files/small/torrent.png b/kcfinder/themes/dark/img/files/small/torrent.png
new file mode 100644
index 00000000..55c04aa9
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/torrent.png differ
diff --git a/kcfinder/themes/dark/img/files/small/ttf.png b/kcfinder/themes/dark/img/files/small/ttf.png
new file mode 100644
index 00000000..ed3e0f64
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/ttf.png differ
diff --git a/kcfinder/themes/dark/img/files/small/txt.png b/kcfinder/themes/dark/img/files/small/txt.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/txt.png differ
diff --git a/kcfinder/themes/dark/img/files/small/wav.png b/kcfinder/themes/dark/img/files/small/wav.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/wav.png differ
diff --git a/kcfinder/themes/dark/img/files/small/wma.png b/kcfinder/themes/dark/img/files/small/wma.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/wma.png differ
diff --git a/kcfinder/themes/dark/img/files/small/xls.png b/kcfinder/themes/dark/img/files/small/xls.png
new file mode 100644
index 00000000..573d1414
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/xls.png differ
diff --git a/kcfinder/themes/dark/img/files/small/xlsx.png b/kcfinder/themes/dark/img/files/small/xlsx.png
new file mode 100644
index 00000000..573d1414
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/xlsx.png differ
diff --git a/kcfinder/themes/dark/img/files/small/zip.png b/kcfinder/themes/dark/img/files/small/zip.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/dark/img/files/small/zip.png differ
diff --git a/kcfinder/themes/dark/img/icons/about.png b/kcfinder/themes/dark/img/icons/about.png
new file mode 100644
index 00000000..12cd1aef
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/about.png differ
diff --git a/kcfinder/themes/dark/img/icons/clipboard-add.png b/kcfinder/themes/dark/img/icons/clipboard-add.png
new file mode 100644
index 00000000..d5eac9bc
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/clipboard-add.png differ
diff --git a/kcfinder/themes/dark/img/icons/clipboard-clear.png b/kcfinder/themes/dark/img/icons/clipboard-clear.png
new file mode 100644
index 00000000..dcce0b64
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/clipboard-clear.png differ
diff --git a/kcfinder/themes/dark/img/icons/clipboard.png b/kcfinder/themes/dark/img/icons/clipboard.png
new file mode 100644
index 00000000..779ad58e
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/clipboard.png differ
diff --git a/kcfinder/themes/dark/img/icons/copy.png b/kcfinder/themes/dark/img/icons/copy.png
new file mode 100644
index 00000000..a9f31a27
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/copy.png differ
diff --git a/kcfinder/themes/dark/img/icons/delete.png b/kcfinder/themes/dark/img/icons/delete.png
new file mode 100644
index 00000000..1514d51a
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/delete.png differ
diff --git a/kcfinder/themes/dark/img/icons/download.png b/kcfinder/themes/dark/img/icons/download.png
new file mode 100644
index 00000000..260ac88e
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/download.png differ
diff --git a/kcfinder/themes/dark/img/icons/folder-new.png b/kcfinder/themes/dark/img/icons/folder-new.png
new file mode 100644
index 00000000..529fe8fe
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/folder-new.png differ
diff --git a/kcfinder/themes/dark/img/icons/maximize.png b/kcfinder/themes/dark/img/icons/maximize.png
new file mode 100644
index 00000000..d41fc7e1
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/maximize.png differ
diff --git a/kcfinder/themes/dark/img/icons/move.png b/kcfinder/themes/dark/img/icons/move.png
new file mode 100644
index 00000000..7e62a924
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/move.png differ
diff --git a/kcfinder/themes/dark/img/icons/refresh.png b/kcfinder/themes/dark/img/icons/refresh.png
new file mode 100644
index 00000000..aa65210e
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/refresh.png differ
diff --git a/kcfinder/themes/dark/img/icons/rename.png b/kcfinder/themes/dark/img/icons/rename.png
new file mode 100644
index 00000000..4e3688ed
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/rename.png differ
diff --git a/kcfinder/themes/dark/img/icons/select.png b/kcfinder/themes/dark/img/icons/select.png
new file mode 100644
index 00000000..a9925a06
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/select.png differ
diff --git a/kcfinder/themes/dark/img/icons/settings.png b/kcfinder/themes/dark/img/icons/settings.png
new file mode 100644
index 00000000..5c8213fe
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/settings.png differ
diff --git a/kcfinder/themes/dark/img/icons/upload.png b/kcfinder/themes/dark/img/icons/upload.png
new file mode 100644
index 00000000..f4b6d518
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/upload.png differ
diff --git a/kcfinder/themes/dark/img/icons/view.png b/kcfinder/themes/dark/img/icons/view.png
new file mode 100644
index 00000000..af4fe074
Binary files /dev/null and b/kcfinder/themes/dark/img/icons/view.png differ
diff --git a/kcfinder/themes/dark/img/kcf_logo.png b/kcfinder/themes/dark/img/kcf_logo.png
new file mode 100644
index 00000000..e829043c
Binary files /dev/null and b/kcfinder/themes/dark/img/kcf_logo.png differ
diff --git a/kcfinder/themes/dark/img/loading.gif b/kcfinder/themes/dark/img/loading.gif
new file mode 100644
index 00000000..687e8488
Binary files /dev/null and b/kcfinder/themes/dark/img/loading.gif differ
diff --git a/kcfinder/themes/dark/img/tree/denied.png b/kcfinder/themes/dark/img/tree/denied.png
new file mode 100644
index 00000000..07b93c17
Binary files /dev/null and b/kcfinder/themes/dark/img/tree/denied.png differ
diff --git a/kcfinder/themes/dark/img/tree/folder.png b/kcfinder/themes/dark/img/tree/folder.png
new file mode 100644
index 00000000..784e8fa4
Binary files /dev/null and b/kcfinder/themes/dark/img/tree/folder.png differ
diff --git a/kcfinder/themes/dark/img/tree/minus.png b/kcfinder/themes/dark/img/tree/minus.png
new file mode 100644
index 00000000..af617bbd
Binary files /dev/null and b/kcfinder/themes/dark/img/tree/minus.png differ
diff --git a/kcfinder/themes/dark/img/tree/plus.png b/kcfinder/themes/dark/img/tree/plus.png
new file mode 100644
index 00000000..897088b1
Binary files /dev/null and b/kcfinder/themes/dark/img/tree/plus.png differ
diff --git a/kcfinder/themes/dark/img/ui-icons_black.png b/kcfinder/themes/dark/img/ui-icons_black.png
new file mode 100644
index 00000000..f07448d1
Binary files /dev/null and b/kcfinder/themes/dark/img/ui-icons_black.png differ
diff --git a/kcfinder/themes/dark/img/ui-icons_grey.png b/kcfinder/themes/dark/img/ui-icons_grey.png
new file mode 100644
index 00000000..91c18a30
Binary files /dev/null and b/kcfinder/themes/dark/img/ui-icons_grey.png differ
diff --git a/kcfinder/themes/dark/img/ui-icons_white.png b/kcfinder/themes/dark/img/ui-icons_white.png
new file mode 100644
index 00000000..69ceaa47
Binary files /dev/null and b/kcfinder/themes/dark/img/ui-icons_white.png differ
diff --git a/kcfinder/themes/dark/init.js b/kcfinder/themes/dark/init.js
new file mode 100644
index 00000000..35e2fbfc
--- /dev/null
+++ b/kcfinder/themes/dark/init.js
@@ -0,0 +1 @@
+new Image().src = 'themes/dark/img/loading.gif'; // preload animated gif
diff --git a/kcfinder/themes/dark/js.php b/kcfinder/themes/dark/js.php
new file mode 100644
index 00000000..32245b64
--- /dev/null
+++ b/kcfinder/themes/dark/js.php
@@ -0,0 +1,12 @@
+minify("cache/theme_$theme.js");
+
+?>
\ No newline at end of file
diff --git a/kcfinder/themes/default/01.ui.css b/kcfinder/themes/default/01.ui.css
new file mode 100644
index 00000000..49a7f303
--- /dev/null
+++ b/kcfinder/themes/default/01.ui.css
@@ -0,0 +1,2016 @@
+/*
+
+This CSS code is generated from http://ui.sunhater.com
+(c)2014 Pavel Tzonkov, sunhater.com. All rights reserved.
+
+*/
+/*** jQueryUI */
+/** Base */
+
+.ui-helper-hidden {
+ display: none;
+}
+.ui-helper-hidden-accessible {
+ border: 0;
+ clip: rect(0 0 0 0);
+ height: 1px;
+ margin: -1px;
+ overflow: hidden;
+ padding: 0;
+ position: absolute;
+ width: 1px;
+}
+.ui-helper-reset {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ outline: 0;
+ line-height: 1.3;
+ text-decoration: none;
+ font-size: 100%;
+ list-style: none;
+}
+.ui-helper-clearfix:before,
+.ui-helper-clearfix:after {
+ content: "";
+ display: table;
+ border-collapse: collapse;
+}
+.ui-helper-clearfix:after {
+ clear: both;
+}
+.ui-helper-clearfix {
+ min-height: 0; /* support: IE7 */
+}
+.ui-helper-zfix {
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ position: absolute;
+ opacity: 0;
+ filter:alpha(opacity=0);
+}
+
+.ui-front {
+ z-index: 100;
+}
+
+.ui-widget .ui-widget,
+.ui-widget input,
+.ui-widget select,
+.ui-widget textarea,
+.ui-widget button {
+ font-size: 1em;
+}
+.ui-widget-content {
+ border: 1px solid #888;
+ background: #fff;
+ color: #6B6B6B;
+}
+.ui-widget-content a {
+ color: #6B6B6B;
+}
+.ui-widget-header {
+ border: 1px solid #1b79b8;
+ color: #fff;
+ font-weight: bold;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -moz-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -ms-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -o-linear-gradient(top, #1b79b8, #59b5f2);
+ background: linear-gradient(to bottom, #1b79b8, #59b5f2);
+}
+.ui-widget-header a {
+ color: #fff;
+}
+
+/* Interaction states
+----------------------------------*/
+
+.ui-state-default,
+.ui-widget-content .ui-state-default,
+.ui-widget-header .ui-state-default,
+.ui-widget.ui-state-disabled {
+ transition: .2s;
+ border: 1px solid #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #ababab, #6b6b6b);
+ background: -moz-linear-gradient(top, #ababab, #6b6b6b);
+ background: -ms-linear-gradient(top, #ababab, #6b6b6b);
+ background: -o-linear-gradient(top, #ababab, #6b6b6b);
+ background: linear-gradient(to bottom, #ababab, #6b6b6b);
+ font-weight: bold;
+ color: #fff;
+}
+
+.ui-state-hover,
+.ui-widget-content .ui-state-hover,
+.ui-widget-header .ui-state-hover,
+.ui-state-focus,
+.ui-widget-content .ui-state-focus,
+.ui-widget-header .ui-state-focus {
+ transition: .2s;
+ border: 1px solid #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #6b6b6b, #ababab);
+ background: -moz-linear-gradient(top, #6b6b6b, #ababab);
+ background: -ms-linear-gradient(top, #6b6b6b, #ababab);
+ background: -o-linear-gradient(top, #6b6b6b, #ababab);
+ background: linear-gradient(to bottom, #6b6b6b, #ababab);
+ font-weight: bold;
+ color: #fff;
+}
+
+.ui-state-active,
+.ui-widget-content .ui-state-active,
+.ui-widget-header .ui-state-active,
+.ui-menu .ui-state-focus {
+ transition: .2s;
+ border: 1px solid #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -moz-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -ms-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -o-linear-gradient(top, #1b79b8, #59b5f2);
+ background: linear-gradient(to bottom, #1b79b8, #59b5f2);
+ font-weight: bold;
+ color: #fff;
+}
+
+.ui-state-default a,
+.ui-state-default a:link,
+.ui-state-default a:visited,
+.ui-state-hover a,
+.ui-state-hover a:hover,
+.ui-state-hover a:link,
+.ui-state-hover a:visited,
+.ui-state-active a,
+.ui-state-active a:link,
+.ui-state-active a:visited {
+ transition: .2s;
+ color: #fff;
+ text-decoration: none;
+}
+
+.ui-menu .ui-state-active {
+ transition: .2s;
+ border-color: #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #6b6b6b, #ababab);
+ background: -moz-linear-gradient(top, #6b6b6b, #ababab);
+ background: -ms-linear-gradient(top, #6b6b6b, #ababab);
+ background: -o-linear-gradient(top, #6b6b6b, #ababab);
+ background: linear-gradient(to bottom, #6b6b6b, #ababab);
+}
+
+/* Interaction Cues
+----------------------------------*/
+
+.ui-state-highlight,
+.ui-widget-content .ui-state-highlight,
+.ui-widget-header .ui-state-highlight {
+ border: 1px solid #d5bc2c;
+ box-shadow: inset 0 0 5px #d5bc2c;
+ background: #fff6bf;
+ color: #6b6b6b;
+}
+.ui-state-error,
+.ui-widget-content .ui-state-error,
+.ui-widget-header .ui-state-error {
+ border: 1px solid #cf7f7f;
+ box-shadow: inset 0 0 5px #cf7f7f;
+ background: #fac4c4;
+ color: #6b6b6b;
+}
+.ui-state-error a,
+.ui-widget-content .ui-state-error a,
+.ui-widget-header .ui-state-error a,
+.ui-state-highlight a,
+.ui-widget-content .ui-state-highlight a,
+.ui-widget-header .ui-state-highlight a,
+.ui-state-error-text,
+.ui-widget-content .ui-state-error-text,
+.ui-widget-header .ui-state-error-text {
+ color: #6b6b6b;
+}
+.ui-priority-primary,
+.ui-widget-content .ui-priority-primary,
+.ui-widget-header .ui-priority-primary {
+ font-weight: bold;
+}
+.ui-priority-secondary,
+.ui-widget-content .ui-priority-secondary,
+.ui-widget-header .ui-priority-secondary {
+ opacity: .5;
+ filter:alpha(opacity=50);
+ font-weight: normal;
+}
+.ui-state-disabled,
+.ui-widget-content .ui-state-disabled,
+.ui-widget-header .ui-state-disabled {
+ opacity: .50;
+ filter:alpha(opacity=50);
+ background-image: none;
+}
+.ui-state-disabled .ui-icon {
+ filter:alpha(opacity=50); /* For IE8 - See #6059 */
+}
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled {
+ cursor: default !important;
+}
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+.ui-resizable {
+ position: relative;
+}
+.ui-resizable-handle {
+ position: absolute;
+ font-size: 0.1px;
+ display: block;
+}
+.ui-resizable-disabled .ui-resizable-handle,
+.ui-resizable-autohide .ui-resizable-handle {
+ display: none;
+}
+.ui-resizable-n {
+ cursor: n-resize;
+ height: 7px;
+ width: 100%;
+ top: -5px;
+ left: 0;
+}
+.ui-resizable-s {
+ cursor: s-resize;
+ height: 7px;
+ width: 100%;
+ bottom: -5px;
+ left: 0;
+}
+.ui-resizable-e {
+ cursor: e-resize;
+ width: 7px;
+ right: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-w {
+ cursor: w-resize;
+ width: 7px;
+ left: -5px;
+ top: 0;
+ height: 100%;
+}
+.ui-resizable-se {
+ cursor: se-resize;
+ width: 12px;
+ height: 12px;
+ right: 1px;
+ bottom: 1px;
+}
+.ui-resizable-sw {
+ cursor: sw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ bottom: -5px;
+}
+.ui-resizable-nw {
+ cursor: nw-resize;
+ width: 9px;
+ height: 9px;
+ left: -5px;
+ top: -5px;
+}
+.ui-resizable-ne {
+ cursor: ne-resize;
+ width: 9px;
+ height: 9px;
+ right: -5px;
+ top: -5px;
+}
+.ui-selectable-helper {
+ position: absolute;
+ z-index: 100;
+ border: 1px dotted black;
+}
+
+
+/** Accordion */
+
+.ui-accordion .ui-accordion-header {
+ display: block;
+ cursor: pointer;
+ position: relative;
+ margin-top: 2px;
+ padding: 6px;
+ min-height: 0; /* support: IE7 */
+}
+.ui-accordion .ui-accordion-icons,
+.ui-accordion .ui-accordion-icons .ui-accordion-icons {
+ padding-left: 24px;
+}
+.ui-accordion .ui-accordion-noicons {
+ padding-left: 5px;
+}
+
+.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
+ position: absolute;
+ left: 5px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-accordion .ui-accordion-content {
+ padding: 1em;
+ border-top: 0;
+ overflow: auto;
+}
+
+
+/** Autocomplete */
+
+.ui-autocomplete {
+ position: absolute;
+ top: 0;
+ left: 0;
+ cursor: pointer;
+}
+
+
+/** Button */
+
+.ui-button {
+ display: inline-block;
+ position: relative;
+ padding: 0;
+ line-height: normal;
+ cursor: pointer;
+ vertical-align: middle;
+ text-align: center;
+ overflow: visible; /* removes extra width in IE */
+}
+.ui-button,
+.ui-button:link,
+.ui-button:visited,
+.ui-button:hover,
+.ui-button:active {
+ text-decoration: none;
+}
+/* to make room for the icon, a width needs to be set here */
+.ui-button-icon-only {
+ width: 36px;
+}
+.ui-button-icons-only {
+ width: 50px;
+}
+/* button text element */
+.ui-button .ui-button-text {
+ display: block;
+ line-height: normal;
+}
+.ui-button-text-only .ui-button-text {
+ padding: 6px 10px;
+}
+.ui-button-icon-only .ui-button-text,
+.ui-button-icons-only .ui-button-text {
+ padding: 6px;
+ text-indent: -9999999px;
+}
+.ui-button-text-icon-primary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: 6px 10px 6px 28px;
+}
+.ui-button-text-icon-secondary .ui-button-text,
+.ui-button-text-icons .ui-button-text {
+ padding: 6px 28px 6px 10px;
+}
+.ui-button-text-icons .ui-button-text {
+ padding-left: 28px;
+ padding-right: 28px;
+}
+/* no icon support for input elements, provide padding by default */
+input.ui-button {
+ padding: 6px 10px;
+}
+
+/* button icon element(s) */
+.ui-button-icon-only .ui-icon,
+.ui-button-text-icon-primary .ui-icon,
+.ui-button-text-icon-secondary .ui-icon,
+.ui-button-text-icons .ui-icon,
+.ui-button-icons-only .ui-icon {
+ position: absolute;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-button-icon-only .ui-icon {
+ left: 50%;
+ margin-left: -8px;
+}
+.ui-button-text-icon-primary .ui-button-icon-primary,
+.ui-button-text-icons .ui-button-icon-primary,
+.ui-button-icons-only .ui-button-icon-primary {
+ left: 7px;
+}
+.ui-button-text-icon-secondary .ui-button-icon-secondary,
+.ui-button-text-icons .ui-button-icon-secondary,
+.ui-button-icons-only .ui-button-icon-secondary {
+ right: 7px;
+}
+/* workarounds */
+/* reset extra padding in Firefox, see h5bp.com/l */
+input.ui-button::-moz-focus-inner,
+button.ui-button::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+
+/** Button set */
+
+.ui-buttonset {
+ margin:0;
+ overflow:auto;
+}
+.ui-buttonset .ui-button {
+ margin: 0;
+ float:left;
+}
+
+
+/** Date picker */
+
+.ui-datepicker {
+ width: 19em;
+ width: 19em;
+ display: none;
+ padding: 10px;
+}
+.ui-datepicker .ui-datepicker-header {
+ position: relative;
+ padding: 2px 0;
+}
+.ui-datepicker .ui-datepicker-prev,
+.ui-datepicker .ui-datepicker-next {
+ position: absolute;
+ top: 4px;
+ width: 20px;
+ height: 20px;
+}
+.ui-datepicker .ui-datepicker-prev-hover,
+.ui-datepicker .ui-datepicker-next-hover {
+ top: 3px;
+}
+.ui-datepicker .ui-datepicker-prev {
+ left: 4px;
+}
+.ui-datepicker .ui-datepicker-next {
+ right: 4px;
+}
+.ui-datepicker .ui-datepicker-prev-hover {
+ left: 3px;
+}
+.ui-datepicker .ui-datepicker-next-hover {
+ right: 3px;
+}
+.ui-datepicker .ui-datepicker-prev span,
+.ui-datepicker .ui-datepicker-next span {
+ display: block;
+ position: absolute;
+ left: 50%;
+ margin-left: -8px;
+ top: 50%;
+ margin-top: -8px;
+}
+.ui-datepicker .ui-datepicker-title {
+ margin: 0 10px;
+ padding: 4px 0;
+ text-align: center;
+}
+.ui-datepicker .ui-datepicker-title select {
+ font-size: 1em;
+ margin:-2px 2px;
+ padding:0;
+ outline:0;
+}
+.ui-datepicker table {
+ width: 100%;
+ border-collapse: collapse;
+ margin: 0;
+ font-size: 1em;
+}
+.ui-datepicker th {
+ padding: 3px;
+ text-align: center;
+ font-weight: bold;
+ border: 0;
+}
+.ui-datepicker td {
+ border: 0;
+ padding: 1px;
+}
+.ui-datepicker td span,
+.ui-datepicker td a {
+ display: block;
+ padding: 2px 3px;
+ text-align: right;
+ text-decoration: none;
+}
+.ui-datepicker .ui-datepicker-buttonpane {
+ background-image: none;
+ margin: 10px -11px -11px -11px;
+ padding: 10px;
+ border: 1px solid #1b79b8;
+ background: #e4f5ff;
+ overflow: auto;
+}
+.ui-datepicker .ui-datepicker-buttonpane button {
+ float: right;
+ cursor: pointer;
+ width: auto;
+ overflow: visible;
+ margin: 0;
+ padding: 6px 10px;
+ font-weight: bold;
+ opacity: 1;
+ filter: alpha(opacity=100);
+}
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
+ float: left;
+}
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi {
+ width: auto;
+ padding:10px;
+}
+.ui-datepicker-multi .ui-datepicker-group {
+ float: left;
+}
+.ui-datepicker-multi .ui-datepicker-group .ui-datepicker-header {
+ margin:0;
+}
+.ui-datepicker-multi .ui-datepicker-group.ui-datepicker-group-last {
+ margin-right:0;
+}
+
+.ui-datepicker-multi .ui-datepicker-group table {
+ width: 95%;
+ margin: 0 auto .4em;
+}
+.ui-datepicker-multi-2 .ui-datepicker-group {
+ width: 50%;
+}
+.ui-datepicker-multi-3 .ui-datepicker-group {
+ width: 33.3%;
+}
+.ui-datepicker-multi-4 .ui-datepicker-group {
+ width: 25%;
+}
+
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
+ border-left-width: 0;
+}
+.ui-datepicker-multi .ui-datepicker-buttonpane {
+ clear: left;
+}
+.ui-datepicker-row-break {
+ clear: both;
+ font-size: 0;
+ width: 100px;
+}
+th.ui-datepicker-week-col {
+ color: #215b82;
+}
+td.ui-datepicker-week-col {
+ text-align:right;
+ padding-right:7px;
+ color: #215b82;
+}
+td.ui-datepicker-other-month a.ui-state-default {
+ font-weight: bold;
+}
+th.ui-datepicker-week-end {
+ color: #f44;
+}
+
+/* RTL support */
+.ui-datepicker-rtl {
+ direction: rtl;
+}
+.ui-datepicker-rtl .ui-datepicker-prev {
+ right: 2px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next {
+ left: 2px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-prev:hover {
+ right: 1px;
+ left: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-next:hover {
+ left: 1px;
+ right: auto;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane {
+ clear: right;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button {
+ float: left;
+}
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
+.ui-datepicker-rtl .ui-datepicker-group {
+ float: right;
+}
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
+ border-right-width: 0;
+ border-left-width: 1px;
+}
+
+
+/** Dialog */
+
+.ui-dialog {
+ position: absolute;
+ top: 0;
+ left: 0;
+ padding: 4px;
+ outline: 0;
+ box-shadow: 0 0 10px #000;
+}
+.ui-dialog .ui-dialog-titlebar {
+ padding: 5px 10px;
+ position: relative;
+}
+.ui-dialog .ui-dialog-title {
+ float: left;
+ margin: 0;
+ padding: 1px 0;
+ white-space: nowrap;
+ width: 90%;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+.ui-dialog .ui-dialog-titlebar-close {
+ position: absolute;
+ right: .3em;
+ top: 50%;
+ width: 21px;
+ margin: -10px 0 0 0;
+ padding: 1px;
+ height: 20px;
+}
+.ui-dialog .ui-dialog-content {
+ position: relative;
+ border: 0;
+ padding: 1em;
+ margin: 0 -4px;
+ background: none;
+ overflow: auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ text-align: left;
+ border-width: 1px 0 0 0;
+ background-image: none;
+ padding: 10px;
+}
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
+ float: right;
+}
+.ui-dialog .ui-dialog-buttonpane button {
+ margin: 0 0 0 5px;
+ cursor: pointer;
+}
+.ui-dialog .ui-resizable-se {
+ width: 12px;
+ height: 12px;
+ right: -5px;
+ bottom: -5px;
+ background-position: 16px 16px;
+}
+.ui-draggable .ui-dialog-titlebar {
+ cursor: move;
+}
+
+
+/** Menu */
+
+.ui-menu {
+ list-style: none;
+ padding: 0;
+ margin: 0;
+ display: block;
+ outline: 0;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+ position: absolute;
+}
+.ui-menu .ui-menu-item {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ /* support: IE10, see #8844 */
+ list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
+}
+.ui-menu .ui-menu-divider {
+ margin: 1px 10px 1px 10px;
+ height: 0;
+ font-size: 0;
+ line-height: 0;
+ border-width: 1px 0 0 0;
+ border-color: #bbb;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration: none;
+ display: block;
+ padding: 5px 10px;
+ line-height: 1.5;
+ min-height: 0; /* support: IE7 */
+ font-weight: normal;
+ border-radius:0;
+}
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+ transition: none;
+}
+.ui-menu .ui-state-disabled {
+ font-weight: normal;
+ line-height: 1.5;
+}
+.ui-menu .ui-state-disabled a {
+ cursor: default;
+}
+.ui-menu.ui-corner-all.sh-menu {
+ border-radius: 4px;
+}
+.ui-menu.ui-corner-all, .ui-menu.sh-menu.ui-autocomplete.ui-corner-all {
+ border-radius: 0;
+}
+
+/* icon support */
+.ui-menu-icons {
+ position: relative;
+}
+.ui-menu-icons .ui-menu-item a {
+ position: relative;
+ padding-left: 2em;
+}
+
+/* left-aligned */
+.ui-menu .ui-icon {
+ position: absolute;
+ top: .2em;
+ left: .2em;
+}
+
+/* right-aligned */
+.ui-menu .ui-menu-icon {
+ position: static;
+ float: right;
+}
+
+
+/** Progress bar */
+
+.ui-progressbar {
+ height: 2.1em;
+ text-align: left;
+ overflow: hidden;
+}
+.ui-progressbar .ui-progressbar-value {
+ margin: -1px;
+ height: 100%;
+}
+.ui-progressbar .ui-progressbar-overlay {
+ height: 100%;
+ filter: alpha(opacity=25);
+ opacity: 0.25;
+}
+.ui-progressbar-indeterminate .ui-progressbar-value {
+ background-image: none;
+}
+
+
+/** Slider */
+
+.ui-slider {
+ position: relative;
+ text-align: left;
+ margin: 0 13px;
+ border-radius:15px;
+}
+.ui-slider .ui-slider-handle {
+ position: absolute;
+ z-index: 2;
+ width: 18px;
+ height: 18px;
+ border-radius: 9px;
+ cursor: default;
+ box-shadow: 0 0 3px #6b6b6b, inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+.ui-slider .ui-slider-handle.ui-state-active {
+ box-shadow: 0 0 3px #1b79b8, inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+.ui-slider .ui-slider-range {
+ position: absolute;
+ z-index: 1;
+ display: block;
+ border: 0;
+ background-position: 0 0;
+}
+
+/* For IE8 - See #6727 */
+.ui-slider.ui-state-disabled .ui-slider-handle,
+.ui-slider.ui-state-disabled .ui-slider-range {
+ filter: inherit;
+}
+
+.ui-slider-horizontal {
+ height: 10px;
+}
+.ui-slider-horizontal .ui-slider-handle {
+ top: -5px;
+ margin-left: -9px;
+}
+.ui-slider-horizontal .ui-slider-range {
+ top: 0;
+ height: 100%;
+}
+.ui-slider-horizontal .ui-slider-range-min {
+ left: 0;
+}
+.ui-slider-horizontal .ui-slider-range-max {
+ right: 0;
+}
+
+.ui-slider-vertical {
+ width: 10px;
+ height: 150px;
+}
+.ui-slider-vertical .ui-slider-handle {
+ left: -5px;
+ margin-left: 0;
+ margin-bottom: -9px;
+}
+.ui-slider-vertical .ui-slider-range {
+ left: -1px;
+ width: 100%;
+}
+.ui-slider-vertical .ui-slider-range-min {
+ bottom: 0;
+}
+.ui-slider-vertical .ui-slider-range-max {
+ top: 0;
+}
+
+
+/** Spinner */
+
+.ui-spinner.ui-widget {
+ position: relative;
+ display: inline-block;
+ overflow: hidden;
+ padding: 0;
+ vertical-align: middle;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+}
+.ui-spinner-input {
+ border: none;
+ color: inherit;
+ padding: 0;
+ margin: 6px 24px 6px 10px;
+ vertical-align: middle;
+ outline: 0;
+ background: transparent;
+}
+.ui-spinner-input {
+ color: #6b6b6b}
+.ui-spinner-input:focus {
+ color: #000;
+}
+.ui-spinner-button {
+ width: 16px;
+ height: 50%;
+ font-size: .5em;
+ padding: 0;
+ margin: 0;
+ text-align: center;
+ position: absolute;
+ cursor: default;
+ display: block;
+ overflow: hidden;
+ right: 0;
+}
+/* more specificity required here to overide default borders */
+.ui-spinner a.ui-spinner-button {
+ border-top: none;
+ border-bottom: none;
+ border-right: none;
+}
+/* vertical centre icon */
+.ui-spinner .ui-icon {
+ position: absolute;
+ margin-top: -8px;
+ top: 50%;
+ left: 0;
+}
+.ui-spinner-up {
+ top: 0;
+}
+.ui-spinner-down {
+ bottom: 0;
+}
+
+/* TR overrides */
+.ui-spinner .ui-icon-triangle-1-s {
+ /* need to fix icons sprite */
+ background-position: -65px -16px;
+}
+
+
+/** Tabs */
+
+.ui-tabs {
+ position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+}
+.ui-tabs .ui-tabs-nav {
+ margin: 0;
+ padding: 3px 3px 0 3px;
+}
+.ui-tabs .ui-tabs-nav li {
+ list-style: none;
+ float: left;
+ position: relative;
+ top: 0;
+ margin: 1px 3px 0 0;
+ border-bottom-width: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+.ui-tabs .ui-tabs-nav li a {
+ float: left;
+ padding: 6px 10px;
+ text-decoration: none;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active {
+ margin-bottom: -1px;
+ padding-bottom: 1px;
+}
+.ui-tabs .ui-tabs-nav li.ui-tabs-active a,
+.ui-tabs .ui-tabs-nav li.ui-state-disabled a,
+.ui-tabs .ui-tabs-nav li.ui-tabs-loading a {
+ cursor: text;
+}
+.ui-tabs .ui-tabs-nav li a, /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a {
+ cursor: pointer;
+}
+.ui-tabs .ui-tabs-panel {
+ display: block;
+ border-width: 0;
+ padding: 1em;
+ background: none;
+}
+
+/** Tooltip */
+
+body .ui-tooltip {
+ padding: 6px 10px;
+ position: absolute;
+ z-index: 9999;
+ max-width: 300px;
+ color: #808080;
+ border-color: #a5a5a5;
+ box-shadow: inset 0 0 4px #a5a5a5, 0 0 4px #a5a5a5;
+ background: -webkit-linear-gradient(top, #ddd, #fff);
+ background: -moz-linear-gradient(top, #ddd, #fff);
+ background: -ms-linear-gradient(top, #ddd, #fff);
+ background: -o-linear-gradient(top, #ddd, #fff);
+ background: linear-gradient(to bottom, #ddd, #fff);
+}
+
+/** Icons */
+
+/* states and images */
+.ui-icon {
+ display: block;
+ text-indent: -99999px;
+ overflow: hidden;
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+}
+
+.ui-icon,
+.ui-widget-content .ui-icon,
+.ui-state-highlight .ui-icon,
+.ui-state-error .ui-icon,
+.ui-state-error-text .ui-icon,
+.ui-icon.ui-icon-black {
+ background-image: url(img/ui-icons_black.png);
+}
+
+.ui-widget-header .ui-icon,
+.ui-state-default .ui-icon,
+.ui-state-hover .ui-icon,
+.ui-state-focus .ui-icon,
+.ui-state-active .ui-icon,
+.ui-icon.ui-icon-white {
+ background-image: url(img/ui-icons_white.png);
+}
+
+/* positioning */
+.ui-icon-blank { background-position: 16px 16px; }
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-on { background-position: -96px -144px; }
+.ui-icon-radio-off { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/** Misc */
+
+/* Corner radius */
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-left,
+.ui-corner-tl,
+.ui-menu .ui-menu-item.ui-menu-item-first a {
+ border-top-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-top,
+.ui-corner-right,
+.ui-corner-tr,
+.ui-menu .ui-menu-item.ui-menu-item-first a {
+ border-top-right-radius:4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-left,
+.ui-corner-bl,
+.ui-menu .ui-menu-item.ui-menu-item-last a,
+.ui-dialog-buttonpane,
+.ui-datepicker-multi .ui-datepicker-group-first .ui-datepicker-header,
+.ui-datepicker .ui-datepicker-buttonpane {
+ border-bottom-left-radius: 4px;
+}
+.ui-corner-all,
+.ui-corner-bottom,
+.ui-corner-right,
+.ui-corner-br,
+.ui-menu .ui-menu-item.ui-menu-item-last a,
+.ui-dialog-buttonpane,
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
+.ui-datepicker .ui-datepicker-buttonpane {
+ border-bottom-right-radius: 4px;
+}
+
+/* Overlays */
+.ui-widget-overlay {
+ background: rgba(255,255,255,.5);
+}
+.ui-widget-shadow {
+ margin: -7px 0 0 -7px;
+ padding: 7px;
+ background: rgba(0,0,0,.3);
+ border-radius: 8px;
+}
+
+/* SunHater Fixes */
+
+.ui-accordion-content-active, .ui-tabs, .ui-slider-range, .ui-datepicker, .ui-dialog {
+ border-color: #1b79b8;
+}
+
+.ui-slider .ui-slider-range {
+ border: 1px solid #1b79b8;
+ top: -1px
+}
+
+.ui-progressbar {
+ overflow:visible;
+}
+.ui-progressbar-value {
+ border: 1px solid #1b79b8;
+ margin-top: -1px
+}
+
+.ui-accordion-header,
+.ui-tabs-nav,
+.ui-button,
+.ui-tabs li,
+.ui-slider-handle,
+.ui-slider-range,
+.ui-datepicker-header,
+.ui-datepicker-header a:hover,
+.ui-datepicker-calendar .ui-state-default,
+.ui-progressbar-value,
+.ui-menu .ui-menu-item a.ui-state-focus,
+.ui-menu .ui-menu-item a.ui-state-active,
+.ui-dialog-titlebar,
+.ui-dialog-titlebar-close.ui-state-default.ui-state-hover,
+.ui-datepicker .ui-datepicker-buttonpane button {
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+
+.ui-spinner,
+.ui-menu {
+ box-shadow: inset 0 0 4px #6b6b6b;
+}
+
+.ui-accordion-content,
+.ui-tabs,
+.ui-dialog-content,
+.ui-dialog-buttonpane,
+.ui-datepicker,
+.ui-datepicker .ui-datepicker-buttonpane {
+ box-shadow: inset 0 0 4px #1b79b8;
+}
+
+.ui-state-default,
+.ui-state-focus,
+.ui-state-active,
+.ui-widget-header {
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+
+.ui-tabs .ui-state-active,
+.ui-datepicker .ui-state-highlight {
+ text-shadow: none;
+}
+.ui-datepicker .ui-state-highlight {
+ color: #215b82;
+ border-color: #1b79b8;
+ box-shadow: inset 0 0 4px #1b79b8;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #dfeef8, #fff);
+ background: -moz-linear-gradient(top, #dfeef8, #fff);
+ background: -ms-linear-gradient(top, #dfeef8, #fff);
+ background: -o-linear-gradient(top, #dfeef8, #fff);
+ background: linear-gradient(to bottom, #dfeef8, #fff);
+}
+
+.ui-progressbar, .ui-slider, .ui-menu {
+ box-shadow: inset 0 0 4px #6b6b6b;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+}
+
+.ui-slider, .ui-spinner, .ui-progressbar, .ui-menu {
+ border-color: #6b6b6b;
+}
+
+.ui-datepicker-calendar .ui-state-default {
+ border-radius: 3px;
+}
+
+.ui-tabs .ui-tabs-nav {
+ margin: -1px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ padding-left:3px;
+}
+
+.ui-tabs-active.ui-state-active {
+ background: #fff;
+ background: -webkit-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: -moz-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: -ms-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: -o-linear-gradient(top, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ background: linear-gradient(to bottom, #ccc, #ddd, #eee, #fff, #fff, #fff);
+ box-shadow: inset 0 0 5px #fff, inset 0 0 5px #fff, inset 0 0 5px #fff;
+}
+.ui-tabs-active.ui-state-active a {
+ color: #215b82;
+}
+.ui-state-default, .ui-state-default a {
+ outline: 0;
+}
+.ui-datepicker-header,
+.ui-dialog-titlebar {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+ margin: -5px -5px 0 -5px;
+}
+.ui-datepicker-header {
+ margin: -11px -11px 5px -11px;
+}
+
+.ui-datepicker-header a:hover {
+ cursor: pointer;
+}
+
+.ui-dialog-titlebar-close.ui-state-default {
+ border-color: transparent;
+ background: none;
+ box-shadow: none;
+}
+
+.ui-dialog-titlebar-close.ui-state-default.ui-state-hover {
+ border-color: #6b6b6b;
+ background: #6b6b6b}
+
+.ui-dialog-buttonpane {
+ background: #e4f5ff;
+ border-top-color: #1b79b8;
+ margin: 0 -4px -4px -4px;
+ padding: 0;
+}
+
+/*** Uniform */
+/* Remove default webkit and possible mozilla .search styles.
+ * Keeping this as :active to remove browser styles */
+div.checker input,
+input[type="search"],
+input[type="search"]:active {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+}
+
+div.selector,
+div.selector span,
+div.checker span,
+div.radio span,
+div.uploader,
+div.uploader
+span.action,
+div.button,
+div.button span {
+ -webkit-font-smoothing: antialiased;
+}
+
+div.selector,
+div.checker,
+div.button,
+div.radio,
+div.uploader {
+ display: -moz-inline-box;
+ display: inline-block;
+ zoom: 1;
+ vertical-align: middle;
+}
+
+div.checker span,
+div.checker input,
+div.radio span,
+div.radio input,
+div.button span {
+ display: -moz-inline-box;
+ display: inline-block;
+ zoom: 1;
+ text-align: center;
+}
+
+div.selector select,
+div.checker input,
+div.button button,
+div.button input,
+div.button a,
+div.radio input,
+div.uploader input,
+input.uniform-input,
+select.uniform-multiselect,
+textarea.uniform {
+ outline: 0;
+}
+
+div.selector,
+div.selector *,
+div.radio,
+div.radio *,
+div.checker,
+div.checker *,
+div.uploader,
+div.uploader *,
+div.button,
+div.button * {
+ margin: 0;
+ padding: 0;
+}
+
+/* Select */
+div.selector {
+ padding: 0 1.9em 0 0;
+ position: relative;
+ overflow: hidden;
+ border: 1px solid;
+ border-radius: 4px;
+}
+div.selector span {
+ text-overflow: ellipsis;
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ padding:6px 0 6px 10px;
+ cursor: pointer;
+ width: 100%;
+ border-right: 1px solid;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+div.selector .ui-icon {
+ background: url(img/ui-icons_white.png) -65px -16px;
+}
+div.selector select {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ border: 0;
+ background: none;
+ position: absolute;
+ height: 50px;
+ bottom: 0;
+ width: 100%;
+ cursor: pointer;
+}
+
+/* Checkbox */
+div.checker {
+ position: relative;
+ border: 1px solid;
+ padding: 1px;
+ border-radius: 4px;
+}
+div.checker,
+div.checker span,
+div.checker input {
+ width: 15px;
+ height: 15px;
+}
+div.checker span.checked {
+ background: url(img/ui-icons_white.png) -64px -145px;
+}
+div.checker input {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ border: 0;
+ background: none;
+ cursor: pointer;
+}
+
+/* Radio */
+div.radio {
+ position: relative;
+ border: 1px solid;
+ padding: 1px;
+ border-radius: 9px;
+}
+div.radio,
+div.radio span,
+div.radio input {
+ width: 15px;
+ height: 15px;
+}
+div.radio span.checked {
+ background: url(img/ui-icons_white.png) -80px -145px;
+}
+div.radio input {
+ opacity: 0;
+ border: 0;
+ background: none;
+ cursor: pointer;
+}
+
+/* Upload */
+div.uploader {
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+ border-radius: 4px;
+}
+div.uploader span.action {
+ text-align: center;
+ float: left;
+ display: inline;
+ overflow: hidden;
+ cursor: pointer;
+ padding: 6px 10px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+div.uploader span.filename {
+ text-overflow: ellipsis;
+ display: block;
+ overflow: hidden;
+ white-space: nowrap;
+ float: left;
+ padding: 6px 10px;
+ border-right: 1px solid;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+div.uploader input {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ border: 0;
+ background: none;
+ position: absolute;
+ top: 0;
+ right: 0;
+ float: right;
+ cursor: pointer;
+ font-size: 100px;
+}
+div.uploader input::-webkit-file-upload-button {
+ cursor: pointer;
+}
+div.uploader.active span.filename,
+div.uploader.focus span.filename {
+ border-right: 1px solid;
+}
+
+/* Button */
+div.button {
+ cursor: pointer;
+ position: relative;
+ overflow: hidden;
+ border: 1px solid;
+ border-radius: 4px;
+}
+div.button a,
+div.button button,
+div.button input {
+ opacity: 0;
+ filter: alpha(opacity=0);
+ display: block;
+ left: 0;
+ top: 0;
+ position: absolute;
+ margin: 0;
+ padding: 0;
+ font-size: 1000px;
+ cursor: pointer;
+}
+div.button span {
+ padding: 0;
+ margin: 6px 10px;
+}
+
+/* Text fields */
+input.uniform-input,
+select.uniform-multiselect,
+textarea.uniform {
+ margin: 0;
+ border: 1px solid;
+ border-radius: 4px;
+}
+input.uniform-input,
+textarea.uniform {
+ padding: 6px 10px;
+}
+textarea.uniform {
+ overflow: auto;
+}
+select.uniform-multiselect {
+ padding: 5px;
+}
+
+
+/** Colorize elements */
+
+div.uploader {
+ border: 1px solid #6b6b6b;
+}
+div.uploader.active,
+div.uploader.focus {
+ border-color: #1b79b8;
+}
+
+/* Default - text fields */
+input.uniform-input,
+select.uniform-multiselect,
+textarea.uniform,
+div.uploader span.filename,
+div.selector span {
+ border-color: #6b6b6b;
+ box-shadow: inset 0 0 4px #6b6b6b;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+ color: #6b6b6b;
+}
+
+select.uniform-multiselect option {
+ color: #6b6b6b;
+}
+
+select.uniform-multiselect.focus option {
+ color: #000;
+}
+
+/* Focus - text fields */
+input.uniform-input.focus,
+select.uniform-multiselect.focus,
+textarea.uniform.focus,
+div.uploader.active span.filename,
+div.uploader.focus span.filename,
+div.selector.active span,
+div.selector.focus span {
+ border-color: #1b79b8;
+ box-shadow: inset 0 0 4px #1b79b8;
+ color: #000;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #dfeef8, #fff);
+ background: -moz-linear-gradient(top, #dfeef8, #fff);
+ background: -ms-linear-gradient(top, #dfeef8, #fff);
+ background: -o-linear-gradient(top, #dfeef8, #fff);
+ background: linear-gradient(to bottom, #dfeef8, #fff);
+}
+
+/* Read-only - text fields */
+input.uniform-input[readonly],
+textarea.uniform[readonly],
+input.uniform-input[readonly]:focus,
+textarea.uniform[readonly]:focus {
+ color: #808080;
+ border-color: #a5a5a5;
+ box-shadow: inset 0 0 4px #a5a5a5;
+ background: -webkit-linear-gradient(top, #ddd, #fff);
+ background: -moz-linear-gradient(top, #ddd, #fff);
+ background: -ms-linear-gradient(top, #ddd, #fff);
+ background: -o-linear-gradient(top, #ddd, #fff);
+ background: linear-gradient(to bottom, #ddd, #fff);
+}
+
+/* Default - buttons */
+div.selector,
+div.button,
+div.uploader span.action,
+div.radio,
+div.checker {
+ border-color: #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #ababab, #6b6b6b);
+ background: -moz-linear-gradient(top, #ababab, #6b6b6b);
+ background: -ms-linear-gradient(top, #ababab, #6b6b6b);
+ background: -o-linear-gradient(top, #ababab, #6b6b6b);
+ background: linear-gradient(to bottom, #ababab, #6b6b6b);
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+
+/* Hover - buttons */
+div.selector.hover,
+div.button.hover,
+div.uploader.hover span.action,
+div.radio.hover,
+div.checker.hover {
+ border-color: #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #6b6b6b, #ababab);
+ background: -moz-linear-gradient(top, #6b6b6b, #ababab);
+ background: -ms-linear-gradient(top, #6b6b6b, #ababab);
+ background: -o-linear-gradient(top, #6b6b6b, #ababab);
+ background: linear-gradient(to bottom, #6b6b6b, #ababab);
+}
+
+/* Focus - buttons */
+div.selector.focus,
+div.button.focus,
+div.uploader.focus span.action,
+div.radio.focus,
+div.checker.focus {
+ border-color: #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -moz-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -ms-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -o-linear-gradient(top, #59b5f2, #1b79b8);
+ background: linear-gradient(to bottom, #59b5f2, #1b79b8);
+}
+
+/* Active - buttons */
+div.button.active,
+div.button.active.hover,
+div.button.focus.hover,
+div.uploader.active span.action,
+div.uploader.active.hover span.action,
+div.uploader.focus.hover span.action,
+div.radio.active,
+div.radio.active.hover,
+div.radio.focus.hover,
+div.checker.active,
+div.checker.active.hover,
+div.checker.focus.hover,
+div.selector.active,
+div.selector.active.hover {
+ border-color: #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -moz-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -ms-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -o-linear-gradient(top, #1b79b8, #59b5f2);
+ background: linear-gradient(to bottom, #1b79b8, #59b5f2);
+}
+
+/* Disabled */
+input.uniform-input[disabled],
+select.uniform-multiselect[disabled],
+textarea.uniform[disabled],
+div.button.disabled,
+div.uploader.disabled,
+div.radio.disabled,
+div.checker.disabled,
+div.selector.disabled,
+div.selector.disabled.active{
+ opacity: .5;
+ filter: alpha(opacity=50);
+ cursor: default;
+}
+
+div.selector.disabled select,
+div.uploader.disabled input,
+div.button.disabled input,
+div.button.disabled button,
+div.button.disabled a,
+div.radio.disabled input,
+div.checker.disabled input {
+ cursor: default;
+}
+
+/* Buttons text */
+div.button span,
+div.uploader span.action {
+ font-weight: bold;
+ color: #fff;
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+
+/* Placeholder colors */
+input.uniform-input::-webkit-input-placeholder,
+textarea.uniform::-webkit-input-placeholder {
+ color: #ababab;
+}
+input.uniform-input:-moz-placeholder,
+textarea.uniform::-moz-placeholder {
+ color: #6b6b6b;
+}
+input.uniform-input::-moz-placeholder,
+textarea.uniform::-moz-placeholder {
+ color: #6b6b6b;
+}
+input.uniform-input:-ms-input-placeholder,
+textarea.uniform:-ms-input-placeholder{
+ color: #ababab;
+}
+input.uniform-input:focus::-webkit-input-placeholder,
+textarea.uniform:focus::-webkit-input-placeholder{
+ color: #59b5f2;
+}
+input.uniform-input:focus:-moz-placeholder,
+textarea.uniform:focus:-moz-placeholder {
+ color: #1b79b8;
+}
+input.uniform-input:focus::-moz-placeholder,
+textarea.uniform:focus::-moz-placeholder {
+ color: #1b79b8;
+}
+input.uniform-input:focus:-ms-input-placeholder,
+textarea.uniform:focus:-ms-input-placeholder {
+ color: #59b5f2;
+}
+
+/** sh-uniform elements (a shUniform patch must be applied) */
+
+fieldset.sh-uniform {
+ border: 1px solid #6B6B6B;
+ box-shadow: inset 0 0 4px #6B6B6B;
+ border-radius: 4px;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+ margin: 0 10px 10px 0;
+ padding: 10px;
+}
+fieldset.sh-uniform legend {
+ font-weight: bold;
+ color: #6B6B6B;
+ text-shadow:
+ 1px 0 rgba(255,255,255,.5),
+ -1px 0 rgba(255,255,255,.5),
+ 0 -1px rgba(255,255,255,.5),
+ 0 1px rgba(255,255,255,.5),
+ 1px 1px rgba(255,255,255,.5),
+ -1px -1px rgba(255,255,255,.5),
+ 1px -1px rgba(255,255,255,.5),
+ -1px 1px rgba(255,255,255,.5),
+ 0 0 5px #fff;
+}
+label.sh-uniform {
+ color: #6b6b6b;
+}
+
+/*** shCheckset */
+
+.shcs {
+ margin: 0;
+}
+.shcs > div {
+ border: 1px solid;
+ border-top: 0;
+ padding: 5px;
+ border-bottom-left-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+.shcs > input, .shcs > input:focus, .shcs > input:hover {
+ border-bottom-left-radius: 0;
+ border-bottom-right-radius: 0;
+ margin:0;
+}
+.shcs label {
+ padding: 2px 5px 2px 2px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ color: #6b6b6b;
+}
+.shcs > div, .shcs label:hover {
+ border-color: #6b6b6b;
+ box-shadow: inset 0 0 4px #6b6b6b;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+}
+.shcs label:hover {
+ color: #6b6b6b;
+ cursor: pointer;
+}
+.shcs > div.focus, .shcs label.checked {
+ border-color: #1b79b8;
+ box-shadow: inset 0 0 4px #1b79b8;
+ color: #000;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #dfeef8, #fff);
+ background: -moz-linear-gradient(top, #dfeef8, #fff);
+ background: -ms-linear-gradient(top, #dfeef8, #fff);
+ background: -o-linear-gradient(top, #dfeef8, #fff);
+ background: linear-gradient(to bottom, #dfeef8, #fff);
+}
+.shcs label.checked div.checker {
+ border-color: #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -moz-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -ms-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -o-linear-gradient(top, #59b5f2, #1b79b8);
+ background: linear-gradient(to bottom, #59b5f2, #1b79b8);
+}
+.shcs label.checked div.checker.hover {
+ border-color: #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -moz-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -ms-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -o-linear-gradient(top, #1b79b8, #59b5f2);
+ background: linear-gradient(to bottom, #1b79b8, #59b5f2);
+}
+
+.shcs div.checker.focus {
+ border-color: #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #ababab, #6b6b6b);
+ background: -moz-linear-gradient(top, #ababab, #6b6b6b);
+ background: -ms-linear-gradient(top, #ababab, #6b6b6b);
+ background: -o-linear-gradient(top, #ababab, #6b6b6b);
+ background: linear-gradient(to bottom, #ababab, #6b6b6b);
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+
+.shcs div.checker.focus.hover {
+ border-color: #6b6b6b;
+ background: #6b6b6b;
+ background: -webkit-linear-gradient(top, #6b6b6b, #ababab);
+ background: -moz-linear-gradient(top, #6b6b6b, #ababab);
+ background: -ms-linear-gradient(top, #6b6b6b, #ababab);
+ background: -o-linear-gradient(top, #6b6b6b, #ababab);
+ background: linear-gradient(to bottom, #6b6b6b, #ababab);
+}
+
+.shcs label > span {
+ position:relative;
+ margin-left:5px;
+ top:1px;
+}
\ No newline at end of file
diff --git a/kcfinder/themes/default/02.misc.css b/kcfinder/themes/default/02.misc.css
new file mode 100644
index 00000000..05356047
--- /dev/null
+++ b/kcfinder/themes/default/02.misc.css
@@ -0,0 +1,425 @@
+* {
+ font-size: 13px;
+}
+body {
+ background: #e0e0e0;
+ color: #6B6B6B;
+}
+fieldset td {
+ white-space: nowrap;
+}
+#folders {
+ margin: 5px 5px 0 5px;
+}
+#files {
+ margin-right: 5px;
+}
+
+
+/* SHARED DECLARATIONS */
+
+#toolbar a:hover,
+#toolbar a.hover,
+span.current,
+span.regular:hover,
+span.context,
+#clipboard div:hover,
+div.file:hover,
+#files div.selected,
+#files div.selected:hover,
+tr.selected > td,
+tr.selected:hover > td,
+#menu .list div a:hover {
+ color: #fff;
+ text-shadow:
+ 1px 0 rgba(0,0,0,.2),
+ -1px 0 rgba(0,0,0,.2),
+ 0 -1px rgba(0,0,0,.2),
+ 0 1px rgba(0,0,0,.2),
+ 1px 1px rgba(0,0,0,.2),
+ -1px -1px rgba(0,0,0,.2),
+ 1px -1px rgba(0,0,0,.2),
+ -1px 1px rgba(0,0,0,.2);
+}
+
+#files,
+#folders,
+#toolbar a.selected {
+ border: 1px solid #6B6B6B;
+ box-shadow: inset 0 0 4px #6B6B6B;
+ border-radius: 4px;
+ background: #fff;
+ background: -webkit-linear-gradient(top, #f0f0f0, #fff);
+ background: -moz-linear-gradient(top, #f0f0f0, #fff);
+ background: -ms-linear-gradient(top, #f0f0f0, #fff);
+ background: -o-linear-gradient(top, #f0f0f0, #fff);
+ background: linear-gradient(to bottom, #f0f0f0, #fff);
+}
+
+/* TOOLBAR */
+
+#toolbar {
+ padding: 5px 0;
+}
+#toolbar a {
+ color: #6b6b6b;
+ margin-right: 5px;
+ border: 1px solid transparent;
+ outline: none;
+ display: block;
+ float: left;
+ border-radius: 4px;
+ transition: .3s;
+ padding:0;
+ background: #E0E0E0;
+}
+#toolbar a > span {
+ padding: 6px 10px 6px 26px;
+ diaplay: block;
+ float:left;
+ background: no-repeat 6px center;
+}
+#toolbar a:hover,
+#toolbar a.hover {
+ border-color: #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -moz-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -ms-linear-gradient(top, #59b5f2, #1b79b8);
+ background: -o-linear-gradient(top, #59b5f2, #1b79b8);
+ background: linear-gradient(to bottom, #59b5f2, #1b79b8);
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+#toolbar a:hover,
+#toolbar a.hover {
+ transition: .3s;
+}
+#toolbar a[href="kcact:upload"] span {
+ background-image: url(img/icons/upload.png);
+}
+#toolbar a[href="kcact:refresh"] span {
+ background-image: url(img/icons/refresh.png);
+}
+#toolbar a[href="kcact:settings"] span {
+ background-image: url(img/icons/settings.png);
+}
+#toolbar a[href="kcact:about"] span {
+ background-image: url(img/icons/about.png);
+}
+#toolbar a[href="kcact:maximize"] span {
+ background-image: url(img/icons/maximize.png);
+}
+
+
+/* SETTINGS BAR */
+
+#settings label {
+ cursor: pointer;
+}
+#settings fieldset {
+ margin-right:5px;
+ margin-bottom: 6px;
+ margin-top:-5px;
+ padding:6px;
+}
+#settings fieldset:hover {
+ border-color: #1b79b8;
+ box-shadow: inset 0 0 4px #1b79b8;
+ background: #dfeef8;
+ background: -webkit-linear-gradient(top, #dfeef8, #fff);
+ background: -moz-linear-gradient(top, #dfeef8, #fff);
+ background: -ms-linear-gradient(top, #dfeef8, #fff);
+ background: -o-linear-gradient(top, #dfeef8, #fff);
+ background: linear-gradient(to bottom, #dfeef8, #fff);
+}
+#settings fieldset:hover legend,
+#settings fieldset:hover label {
+ color: #215b82;
+}
+
+
+/* FOLDERS */
+
+div.folder {
+ padding-top: 2px;
+ margin-top: 4px;
+ white-space: nowrap;
+}
+div.folder a {
+ text-decoration: none;
+ cursor: default;
+ outline: none;
+ color: #6b6b6b;
+}
+span.folder {
+ padding: 2px 3px 2px 23px;
+ outline: none;
+ background: no-repeat 3px center;
+ cursor: pointer;
+ border-radius: 3px;
+ border: 1px solid transparent;
+}
+span.brace {
+ width: 16px;
+ height: 16px;
+ outline: none;
+}
+span.current {
+ transition: .3s;
+ background-image: url(img/tree/folder.png);
+ background-color: #3b98d6;
+ border-color: #3b98d6;
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+span.regular {
+ transition: .3s;
+ background-image: url(img/tree/folder.png);
+ background-color: transparent;
+}
+span.regular:hover, span.context, #clipboard div:hover {
+ transition: .3s;
+ background-color: #c6c6c6;
+ border-color: #c6c6c6;
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+span.opened {
+ background-image: url(img/tree/minus.png);
+}
+span.closed {
+ background-image: url(img/tree/plus.png);
+}
+span.denied {
+ background-image: url(img/tree/denied.png);
+}
+
+
+/* FILES */
+
+div.file {
+ padding: 4px;
+ margin: 3px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+div.file:hover {
+ border-color: #aaa;
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+ background: #c6c6c6;
+ background: -webkit-linear-gradient(top, #e7e7e7, #c6c6c6);
+ background: -moz-linear-gradient(top, #e7e7e7, #c6c6c6);
+ background: -ms-linear-gradient(top, #e7e7e7, #c6c6c6);
+ background: -o-linear-gradient(top, #e7e7e7, #c6c6c6);
+ background: linear-gradient(to bottom, #e7e7e7, #c6c6c6);
+}
+div.file .name {
+ margin-top: 4px;
+ font-weight: bold;
+ height: 16px;
+ overflow: hidden;
+ padding-bottom: 2px;
+}
+div.file .time {
+ font-size: 10px;
+}
+div.file .size {
+ font-size: 10px;
+}
+#files div.selected,
+#files div.selected:hover {
+ border-color: #3b98d6;
+ background: #3b98d6;
+ background: -webkit-linear-gradient(top, #7dc2f2, #3b98d6);
+ background: -moz-linear-gradient(top, #7dc2f2, #3b98d6);
+ background: -ms-linear-gradient(top, #7dc2f2, #3b98d6);
+ background: -o-linear-gradient(top, #7dc2f2, #3b98d6);
+ background: linear-gradient(to bottom, #7dc2f2, #3b98d6);
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+tr.file > td {
+ padding: 3px 4px;
+}
+tr.file:hover > td {
+ background-color: #ddebf8;
+ transition: none;
+}
+tr.selected > td,
+tr.selected:hover > td {
+ transition: .3s;
+ background-color: #5b9bda;
+}
+tr.file td.name {
+ background-position: 2px center;
+ padding-left: 22px;
+}
+a.denied {
+ color: #666;
+ opacity: 0.5;
+ filter: alpha(opacity:50);
+ cursor: default;
+}
+a.denied:hover {
+ background-color: #e4e3e2;
+ border-color: transparent;
+ box-shadow: none;
+}
+
+/* FILE MENU */
+
+#menu .ui-menu a span {
+ background: left center no-repeat;
+ padding-left: 20px;
+ white-space: nowrap;
+}
+#menu a[href="kcact:refresh"] span {
+ background-image: url(img/icons/refresh.png);
+}
+#menu a[href="kcact:mkdir"] span {
+ background-image: url(img/icons/folder-new.png);
+}
+#menu a[href="kcact:mvdir"] span, #menu a[href="kcact:mv"] span {
+ background-image: url(img/icons/rename.png);
+}
+#menu a[href="kcact:rmdir"] span, #menu a[href="kcact:rm"] span, #menu a[href="kcact:rmcbd"] span {
+ background-image: url(img/icons/delete.png);
+}
+#menu a[href="kcact:clpbrdadd"] span {
+ background-image: url(img/icons/clipboard-add.png);
+}
+#menu a[href="kcact:pick"] span, #menu a[href="kcact:pick_thumb"] span {
+ background-image: url(img/icons/select.png);
+}
+#menu a[href="kcact:download"] span {
+ background-image: url(img/icons/download.png);
+}
+#menu a[href="kcact:view"] span {
+ background-image: url(img/icons/view.png);
+}
+#menu a[href="kcact:cpcbd"] span {
+ background-image: url(img/icons/copy.png);
+}
+#menu a[href="kcact:mvcbd"] span {
+ background-image: url(img/icons/move.png);
+}
+#menu a[href="kcact:clrcbd"] span {
+ background-image: url(img/icons/clipboard-clear.png);
+}
+
+/* CLIPBOARD */
+
+#clipboard {
+ margin-left:-3px;
+ padding: 2px;
+}
+#clipboard div {
+ background: url(img/icons/clipboard.png) no-repeat center center;
+ border: 1px solid transparent;
+ padding: 2px;
+ cursor: pointer;
+ border-radius: 4px;
+}
+#clipboard.selected div, #clipboard.selected div:hover {
+ background-color: #3b98d6;
+ border-color: #3b98d6;
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+#menu .list a, #menu .list a.ui-state-focus {
+ margin: -1px 0 0 -1px;
+ padding: 6px 10px;
+ border: 1px solid transparent;
+ background: none;
+ border-radius: 0;
+ text-shadow: none;
+ box-shadow: none;
+ color: #6b6b6b;
+}
+#menu .list a.first, #menu .list a.first.ui-state-focus {
+ border-radius: 4px 4px 0 0;
+}
+#menu .list a:hover {
+ border-color: #1b79b8;
+ background: #1b79b8;
+ background: -webkit-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -moz-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -ms-linear-gradient(top, #1b79b8, #59b5f2);
+ background: -o-linear-gradient(top, #1b79b8, #59b5f2);
+ background: linear-gradient(to bottom, #1b79b8, #59b5f2);
+ box-shadow: inset 0 0 7px #fff, inset 0 0 3px #fff;
+}
+#menu .list {
+ overflow:hidden;
+ max-height: 1px;
+ margin-bottom: -1px;
+ padding-bottom:1px;
+}
+#menu li.div-files {
+ margin: 0 0 1px 0;
+}
+
+/* ABOUT DIALOG */
+
+.about {
+ text-align: center;
+}
+.about div.head {
+ font-weight: bold;
+ font-size: 12px;
+ padding: 3px 0 8px 0;
+}
+.about div.head a {
+ background: url(img/kcf_logo.png) no-repeat left center;
+ padding: 0 0 0 27px;
+ font-size: 17px;
+ outline: none;
+}
+
+.about a {
+ text-decoration: none;
+ color: #0055ff;
+}
+
+.about a:hover {
+ text-decoration: underline;
+}
+#checkver {
+ margin: 5px 0 10px 0;
+}
+#loading, #checkver > span.loading {
+ background: url(img/loading.gif);
+ border: 1px solid #3687e2;
+ box-shadow: 0 0 3px #3687e2, inset 0 0 4px #fff, inset 0 0 5px #fff;
+ padding: 6px 10px;
+ border-radius: 4px;
+}
+#checkver a {
+ font-weight: normal;
+ padding: 3px 3px 3px 20px;
+ background: url(img/icons/download.png) no-repeat left center;
+}
+
+/* IMAGE VIEWER */
+
+.ui-dialog-content.kcfImageViewer {
+ background: #000;
+ cursor: pointer;
+}
+.kcfImageViewer .img {
+ background: url(img/bg_transparent.png);
+}
+
+/* MISC */
+
+#loading {
+ margin-right: 5px;
+}
+#loadingDirs {
+ padding: 5px 0 1px 24px;
+}
+#files.drag {
+ background: #ddebf8;
+}
+
+/* FIX FIELDSET BORDER RADIUS BUG ON IE */
+body.msie fieldset,
+body.trident.rv fieldset {
+ border-radius: 0;
+}
\ No newline at end of file
diff --git a/kcfinder/themes/default/README b/kcfinder/themes/default/README
new file mode 100644
index 00000000..3d745acb
--- /dev/null
+++ b/kcfinder/themes/default/README
@@ -0,0 +1,9 @@
+This folder contains files for designing default visual theme for KCFinder.
+Some icons are taken from default KDE4 visual theme (http://www.kde.org)
+
+Theme Details:
+
+Version: 1.0
+Author: Pavel Tzonkov
+Licenses: GPLv3 - http://opensource.org/licenses/GPL-3.0
+ LGPLv3 - http://opensource.org/licenses/LGPL-3.0
diff --git a/kcfinder/themes/default/css.php b/kcfinder/themes/default/css.php
new file mode 100644
index 00000000..569abc7d
--- /dev/null
+++ b/kcfinder/themes/default/css.php
@@ -0,0 +1,12 @@
+minify("cache/theme_$theme.css");
+
+?>
\ No newline at end of file
diff --git a/kcfinder/themes/default/img/bg_transparent.png b/kcfinder/themes/default/img/bg_transparent.png
new file mode 100644
index 00000000..32006320
Binary files /dev/null and b/kcfinder/themes/default/img/bg_transparent.png differ
diff --git a/kcfinder/themes/default/img/files/big/..png b/kcfinder/themes/default/img/files/big/..png
new file mode 100644
index 00000000..aaff4841
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/..png differ
diff --git a/kcfinder/themes/default/img/files/big/.image.png b/kcfinder/themes/default/img/files/big/.image.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/.image.png differ
diff --git a/kcfinder/themes/default/img/files/big/avi.png b/kcfinder/themes/default/img/files/big/avi.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/avi.png differ
diff --git a/kcfinder/themes/default/img/files/big/bat.png b/kcfinder/themes/default/img/files/big/bat.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/bat.png differ
diff --git a/kcfinder/themes/default/img/files/big/bmp.png b/kcfinder/themes/default/img/files/big/bmp.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/bmp.png differ
diff --git a/kcfinder/themes/default/img/files/big/bz2.png b/kcfinder/themes/default/img/files/big/bz2.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/bz2.png differ
diff --git a/kcfinder/themes/default/img/files/big/ccd.png b/kcfinder/themes/default/img/files/big/ccd.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/ccd.png differ
diff --git a/kcfinder/themes/default/img/files/big/cgi.png b/kcfinder/themes/default/img/files/big/cgi.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/cgi.png differ
diff --git a/kcfinder/themes/default/img/files/big/com.png b/kcfinder/themes/default/img/files/big/com.png
new file mode 100644
index 00000000..427a328b
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/com.png differ
diff --git a/kcfinder/themes/default/img/files/big/csh.png b/kcfinder/themes/default/img/files/big/csh.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/csh.png differ
diff --git a/kcfinder/themes/default/img/files/big/cue.png b/kcfinder/themes/default/img/files/big/cue.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/cue.png differ
diff --git a/kcfinder/themes/default/img/files/big/deb.png b/kcfinder/themes/default/img/files/big/deb.png
new file mode 100644
index 00000000..14ce82ff
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/deb.png differ
diff --git a/kcfinder/themes/default/img/files/big/dll.png b/kcfinder/themes/default/img/files/big/dll.png
new file mode 100644
index 00000000..9e03a48d
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/dll.png differ
diff --git a/kcfinder/themes/default/img/files/big/doc.png b/kcfinder/themes/default/img/files/big/doc.png
new file mode 100644
index 00000000..b544dcc8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/doc.png differ
diff --git a/kcfinder/themes/default/img/files/big/docx.png b/kcfinder/themes/default/img/files/big/docx.png
new file mode 100644
index 00000000..b544dcc8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/docx.png differ
diff --git a/kcfinder/themes/default/img/files/big/exe.png b/kcfinder/themes/default/img/files/big/exe.png
new file mode 100644
index 00000000..427a328b
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/exe.png differ
diff --git a/kcfinder/themes/default/img/files/big/fla.png b/kcfinder/themes/default/img/files/big/fla.png
new file mode 100644
index 00000000..5e7c751b
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/fla.png differ
diff --git a/kcfinder/themes/default/img/files/big/flv.png b/kcfinder/themes/default/img/files/big/flv.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/flv.png differ
diff --git a/kcfinder/themes/default/img/files/big/fon.png b/kcfinder/themes/default/img/files/big/fon.png
new file mode 100644
index 00000000..3815dac6
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/fon.png differ
diff --git a/kcfinder/themes/default/img/files/big/gif.png b/kcfinder/themes/default/img/files/big/gif.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/gif.png differ
diff --git a/kcfinder/themes/default/img/files/big/gz.png b/kcfinder/themes/default/img/files/big/gz.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/gz.png differ
diff --git a/kcfinder/themes/default/img/files/big/htm.png b/kcfinder/themes/default/img/files/big/htm.png
new file mode 100644
index 00000000..4995b6b2
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/htm.png differ
diff --git a/kcfinder/themes/default/img/files/big/html.png b/kcfinder/themes/default/img/files/big/html.png
new file mode 100644
index 00000000..4995b6b2
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/html.png differ
diff --git a/kcfinder/themes/default/img/files/big/ini.png b/kcfinder/themes/default/img/files/big/ini.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/ini.png differ
diff --git a/kcfinder/themes/default/img/files/big/iso.png b/kcfinder/themes/default/img/files/big/iso.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/iso.png differ
diff --git a/kcfinder/themes/default/img/files/big/jar.png b/kcfinder/themes/default/img/files/big/jar.png
new file mode 100644
index 00000000..cef54cd1
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/jar.png differ
diff --git a/kcfinder/themes/default/img/files/big/java.png b/kcfinder/themes/default/img/files/big/java.png
new file mode 100644
index 00000000..351b5db9
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/java.png differ
diff --git a/kcfinder/themes/default/img/files/big/jpeg.png b/kcfinder/themes/default/img/files/big/jpeg.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/jpeg.png differ
diff --git a/kcfinder/themes/default/img/files/big/jpg.png b/kcfinder/themes/default/img/files/big/jpg.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/jpg.png differ
diff --git a/kcfinder/themes/default/img/files/big/js.png b/kcfinder/themes/default/img/files/big/js.png
new file mode 100644
index 00000000..fcb1f8f4
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/js.png differ
diff --git a/kcfinder/themes/default/img/files/big/mds.png b/kcfinder/themes/default/img/files/big/mds.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mds.png differ
diff --git a/kcfinder/themes/default/img/files/big/mdx.png b/kcfinder/themes/default/img/files/big/mdx.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mdx.png differ
diff --git a/kcfinder/themes/default/img/files/big/mid.png b/kcfinder/themes/default/img/files/big/mid.png
new file mode 100644
index 00000000..6187bc50
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mid.png differ
diff --git a/kcfinder/themes/default/img/files/big/midi.png b/kcfinder/themes/default/img/files/big/midi.png
new file mode 100644
index 00000000..6187bc50
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/midi.png differ
diff --git a/kcfinder/themes/default/img/files/big/mkv.png b/kcfinder/themes/default/img/files/big/mkv.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mkv.png differ
diff --git a/kcfinder/themes/default/img/files/big/mov.png b/kcfinder/themes/default/img/files/big/mov.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mov.png differ
diff --git a/kcfinder/themes/default/img/files/big/mp3.png b/kcfinder/themes/default/img/files/big/mp3.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mp3.png differ
diff --git a/kcfinder/themes/default/img/files/big/mp4.png b/kcfinder/themes/default/img/files/big/mp4.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mp4.png differ
diff --git a/kcfinder/themes/default/img/files/big/mpeg.png b/kcfinder/themes/default/img/files/big/mpeg.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mpeg.png differ
diff --git a/kcfinder/themes/default/img/files/big/mpg.png b/kcfinder/themes/default/img/files/big/mpg.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/mpg.png differ
diff --git a/kcfinder/themes/default/img/files/big/nfo.png b/kcfinder/themes/default/img/files/big/nfo.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/nfo.png differ
diff --git a/kcfinder/themes/default/img/files/big/nrg.png b/kcfinder/themes/default/img/files/big/nrg.png
new file mode 100644
index 00000000..aa9f4a20
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/nrg.png differ
diff --git a/kcfinder/themes/default/img/files/big/ogg.png b/kcfinder/themes/default/img/files/big/ogg.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/ogg.png differ
diff --git a/kcfinder/themes/default/img/files/big/pdf.png b/kcfinder/themes/default/img/files/big/pdf.png
new file mode 100644
index 00000000..49cf5e33
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/pdf.png differ
diff --git a/kcfinder/themes/default/img/files/big/php.png b/kcfinder/themes/default/img/files/big/php.png
new file mode 100644
index 00000000..588bef89
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/php.png differ
diff --git a/kcfinder/themes/default/img/files/big/phps.png b/kcfinder/themes/default/img/files/big/phps.png
new file mode 100644
index 00000000..588bef89
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/phps.png differ
diff --git a/kcfinder/themes/default/img/files/big/pl.png b/kcfinder/themes/default/img/files/big/pl.png
new file mode 100644
index 00000000..d3468a56
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/pl.png differ
diff --git a/kcfinder/themes/default/img/files/big/pm.png b/kcfinder/themes/default/img/files/big/pm.png
new file mode 100644
index 00000000..d3468a56
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/pm.png differ
diff --git a/kcfinder/themes/default/img/files/big/png.png b/kcfinder/themes/default/img/files/big/png.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/png.png differ
diff --git a/kcfinder/themes/default/img/files/big/ppt.png b/kcfinder/themes/default/img/files/big/ppt.png
new file mode 100644
index 00000000..ae13c8a4
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/ppt.png differ
diff --git a/kcfinder/themes/default/img/files/big/pptx.png b/kcfinder/themes/default/img/files/big/pptx.png
new file mode 100644
index 00000000..ae13c8a4
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/pptx.png differ
diff --git a/kcfinder/themes/default/img/files/big/psd.png b/kcfinder/themes/default/img/files/big/psd.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/psd.png differ
diff --git a/kcfinder/themes/default/img/files/big/qt.png b/kcfinder/themes/default/img/files/big/qt.png
new file mode 100644
index 00000000..28f9700f
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/qt.png differ
diff --git a/kcfinder/themes/default/img/files/big/rar.png b/kcfinder/themes/default/img/files/big/rar.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/rar.png differ
diff --git a/kcfinder/themes/default/img/files/big/rpm.png b/kcfinder/themes/default/img/files/big/rpm.png
new file mode 100644
index 00000000..0708eef4
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/rpm.png differ
diff --git a/kcfinder/themes/default/img/files/big/rtf.png b/kcfinder/themes/default/img/files/big/rtf.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/rtf.png differ
diff --git a/kcfinder/themes/default/img/files/big/sh.png b/kcfinder/themes/default/img/files/big/sh.png
new file mode 100644
index 00000000..eaa3dc93
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/sh.png differ
diff --git a/kcfinder/themes/default/img/files/big/sql.png b/kcfinder/themes/default/img/files/big/sql.png
new file mode 100644
index 00000000..754b3dcb
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/sql.png differ
diff --git a/kcfinder/themes/default/img/files/big/srt.png b/kcfinder/themes/default/img/files/big/srt.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/srt.png differ
diff --git a/kcfinder/themes/default/img/files/big/sub.png b/kcfinder/themes/default/img/files/big/sub.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/sub.png differ
diff --git a/kcfinder/themes/default/img/files/big/swf.png b/kcfinder/themes/default/img/files/big/swf.png
new file mode 100644
index 00000000..45a8208d
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/swf.png differ
diff --git a/kcfinder/themes/default/img/files/big/tgz.png b/kcfinder/themes/default/img/files/big/tgz.png
new file mode 100644
index 00000000..d7e7b5b1
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/tgz.png differ
diff --git a/kcfinder/themes/default/img/files/big/tif.png b/kcfinder/themes/default/img/files/big/tif.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/tif.png differ
diff --git a/kcfinder/themes/default/img/files/big/tiff.png b/kcfinder/themes/default/img/files/big/tiff.png
new file mode 100644
index 00000000..bbe1180e
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/tiff.png differ
diff --git a/kcfinder/themes/default/img/files/big/torrent.png b/kcfinder/themes/default/img/files/big/torrent.png
new file mode 100644
index 00000000..0bffac4b
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/torrent.png differ
diff --git a/kcfinder/themes/default/img/files/big/ttf.png b/kcfinder/themes/default/img/files/big/ttf.png
new file mode 100644
index 00000000..4f43e196
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/ttf.png differ
diff --git a/kcfinder/themes/default/img/files/big/txt.png b/kcfinder/themes/default/img/files/big/txt.png
new file mode 100644
index 00000000..02489bd8
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/txt.png differ
diff --git a/kcfinder/themes/default/img/files/big/wav.png b/kcfinder/themes/default/img/files/big/wav.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/wav.png differ
diff --git a/kcfinder/themes/default/img/files/big/wma.png b/kcfinder/themes/default/img/files/big/wma.png
new file mode 100644
index 00000000..5f4c2065
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/wma.png differ
diff --git a/kcfinder/themes/default/img/files/big/xls.png b/kcfinder/themes/default/img/files/big/xls.png
new file mode 100644
index 00000000..ddf069fe
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/xls.png differ
diff --git a/kcfinder/themes/default/img/files/big/xlsx.png b/kcfinder/themes/default/img/files/big/xlsx.png
new file mode 100644
index 00000000..ddf069fe
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/xlsx.png differ
diff --git a/kcfinder/themes/default/img/files/big/zip.png b/kcfinder/themes/default/img/files/big/zip.png
new file mode 100644
index 00000000..84eaa19a
Binary files /dev/null and b/kcfinder/themes/default/img/files/big/zip.png differ
diff --git a/kcfinder/themes/default/img/files/small/..png b/kcfinder/themes/default/img/files/small/..png
new file mode 100644
index 00000000..67f4c5f4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/..png differ
diff --git a/kcfinder/themes/default/img/files/small/.image.png b/kcfinder/themes/default/img/files/small/.image.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/.image.png differ
diff --git a/kcfinder/themes/default/img/files/small/avi.png b/kcfinder/themes/default/img/files/small/avi.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/avi.png differ
diff --git a/kcfinder/themes/default/img/files/small/bat.png b/kcfinder/themes/default/img/files/small/bat.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/bat.png differ
diff --git a/kcfinder/themes/default/img/files/small/bmp.png b/kcfinder/themes/default/img/files/small/bmp.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/bmp.png differ
diff --git a/kcfinder/themes/default/img/files/small/bz2.png b/kcfinder/themes/default/img/files/small/bz2.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/bz2.png differ
diff --git a/kcfinder/themes/default/img/files/small/ccd.png b/kcfinder/themes/default/img/files/small/ccd.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/ccd.png differ
diff --git a/kcfinder/themes/default/img/files/small/cgi.png b/kcfinder/themes/default/img/files/small/cgi.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/cgi.png differ
diff --git a/kcfinder/themes/default/img/files/small/com.png b/kcfinder/themes/default/img/files/small/com.png
new file mode 100644
index 00000000..2246f308
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/com.png differ
diff --git a/kcfinder/themes/default/img/files/small/csh.png b/kcfinder/themes/default/img/files/small/csh.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/csh.png differ
diff --git a/kcfinder/themes/default/img/files/small/cue.png b/kcfinder/themes/default/img/files/small/cue.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/cue.png differ
diff --git a/kcfinder/themes/default/img/files/small/deb.png b/kcfinder/themes/default/img/files/small/deb.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/deb.png differ
diff --git a/kcfinder/themes/default/img/files/small/dll.png b/kcfinder/themes/default/img/files/small/dll.png
new file mode 100644
index 00000000..b1a2f1c4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/dll.png differ
diff --git a/kcfinder/themes/default/img/files/small/doc.png b/kcfinder/themes/default/img/files/small/doc.png
new file mode 100644
index 00000000..069059db
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/doc.png differ
diff --git a/kcfinder/themes/default/img/files/small/docx.png b/kcfinder/themes/default/img/files/small/docx.png
new file mode 100644
index 00000000..069059db
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/docx.png differ
diff --git a/kcfinder/themes/default/img/files/small/exe.png b/kcfinder/themes/default/img/files/small/exe.png
new file mode 100644
index 00000000..2246f308
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/exe.png differ
diff --git a/kcfinder/themes/default/img/files/small/fla.png b/kcfinder/themes/default/img/files/small/fla.png
new file mode 100644
index 00000000..c50ec521
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/fla.png differ
diff --git a/kcfinder/themes/default/img/files/small/flv.png b/kcfinder/themes/default/img/files/small/flv.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/flv.png differ
diff --git a/kcfinder/themes/default/img/files/small/fon.png b/kcfinder/themes/default/img/files/small/fon.png
new file mode 100644
index 00000000..2303efed
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/fon.png differ
diff --git a/kcfinder/themes/default/img/files/small/gif.png b/kcfinder/themes/default/img/files/small/gif.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/gif.png differ
diff --git a/kcfinder/themes/default/img/files/small/gz.png b/kcfinder/themes/default/img/files/small/gz.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/gz.png differ
diff --git a/kcfinder/themes/default/img/files/small/htm.png b/kcfinder/themes/default/img/files/small/htm.png
new file mode 100644
index 00000000..cc2f1bf9
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/htm.png differ
diff --git a/kcfinder/themes/default/img/files/small/html.png b/kcfinder/themes/default/img/files/small/html.png
new file mode 100644
index 00000000..cc2f1bf9
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/html.png differ
diff --git a/kcfinder/themes/default/img/files/small/ini.png b/kcfinder/themes/default/img/files/small/ini.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/ini.png differ
diff --git a/kcfinder/themes/default/img/files/small/iso.png b/kcfinder/themes/default/img/files/small/iso.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/iso.png differ
diff --git a/kcfinder/themes/default/img/files/small/jar.png b/kcfinder/themes/default/img/files/small/jar.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/jar.png differ
diff --git a/kcfinder/themes/default/img/files/small/java.png b/kcfinder/themes/default/img/files/small/java.png
new file mode 100644
index 00000000..58fa8d0d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/java.png differ
diff --git a/kcfinder/themes/default/img/files/small/jpeg.png b/kcfinder/themes/default/img/files/small/jpeg.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/jpeg.png differ
diff --git a/kcfinder/themes/default/img/files/small/jpg.png b/kcfinder/themes/default/img/files/small/jpg.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/jpg.png differ
diff --git a/kcfinder/themes/default/img/files/small/js.png b/kcfinder/themes/default/img/files/small/js.png
new file mode 100644
index 00000000..db79975b
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/js.png differ
diff --git a/kcfinder/themes/default/img/files/small/mds.png b/kcfinder/themes/default/img/files/small/mds.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mds.png differ
diff --git a/kcfinder/themes/default/img/files/small/mdx.png b/kcfinder/themes/default/img/files/small/mdx.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mdx.png differ
diff --git a/kcfinder/themes/default/img/files/small/mid.png b/kcfinder/themes/default/img/files/small/mid.png
new file mode 100644
index 00000000..e1ed4bd2
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mid.png differ
diff --git a/kcfinder/themes/default/img/files/small/midi.png b/kcfinder/themes/default/img/files/small/midi.png
new file mode 100644
index 00000000..e1ed4bd2
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/midi.png differ
diff --git a/kcfinder/themes/default/img/files/small/mkv.png b/kcfinder/themes/default/img/files/small/mkv.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mkv.png differ
diff --git a/kcfinder/themes/default/img/files/small/mov.png b/kcfinder/themes/default/img/files/small/mov.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mov.png differ
diff --git a/kcfinder/themes/default/img/files/small/mp3.png b/kcfinder/themes/default/img/files/small/mp3.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mp3.png differ
diff --git a/kcfinder/themes/default/img/files/small/mp4.png b/kcfinder/themes/default/img/files/small/mp4.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mp4.png differ
diff --git a/kcfinder/themes/default/img/files/small/mpeg.png b/kcfinder/themes/default/img/files/small/mpeg.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mpeg.png differ
diff --git a/kcfinder/themes/default/img/files/small/mpg.png b/kcfinder/themes/default/img/files/small/mpg.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/mpg.png differ
diff --git a/kcfinder/themes/default/img/files/small/nfo.png b/kcfinder/themes/default/img/files/small/nfo.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/nfo.png differ
diff --git a/kcfinder/themes/default/img/files/small/nrg.png b/kcfinder/themes/default/img/files/small/nrg.png
new file mode 100644
index 00000000..4e8d91d6
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/nrg.png differ
diff --git a/kcfinder/themes/default/img/files/small/ogg.png b/kcfinder/themes/default/img/files/small/ogg.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/ogg.png differ
diff --git a/kcfinder/themes/default/img/files/small/pdf.png b/kcfinder/themes/default/img/files/small/pdf.png
new file mode 100644
index 00000000..9498f0ff
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/pdf.png differ
diff --git a/kcfinder/themes/default/img/files/small/php.png b/kcfinder/themes/default/img/files/small/php.png
new file mode 100644
index 00000000..d73934be
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/php.png differ
diff --git a/kcfinder/themes/default/img/files/small/phps.png b/kcfinder/themes/default/img/files/small/phps.png
new file mode 100644
index 00000000..d73934be
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/phps.png differ
diff --git a/kcfinder/themes/default/img/files/small/pl.png b/kcfinder/themes/default/img/files/small/pl.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/pl.png differ
diff --git a/kcfinder/themes/default/img/files/small/pm.png b/kcfinder/themes/default/img/files/small/pm.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/pm.png differ
diff --git a/kcfinder/themes/default/img/files/small/png.png b/kcfinder/themes/default/img/files/small/png.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/png.png differ
diff --git a/kcfinder/themes/default/img/files/small/ppt.png b/kcfinder/themes/default/img/files/small/ppt.png
new file mode 100644
index 00000000..bdccbb63
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/ppt.png differ
diff --git a/kcfinder/themes/default/img/files/small/pptx.png b/kcfinder/themes/default/img/files/small/pptx.png
new file mode 100644
index 00000000..bdccbb63
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/pptx.png differ
diff --git a/kcfinder/themes/default/img/files/small/psd.png b/kcfinder/themes/default/img/files/small/psd.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/psd.png differ
diff --git a/kcfinder/themes/default/img/files/small/qt.png b/kcfinder/themes/default/img/files/small/qt.png
new file mode 100644
index 00000000..bbff051d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/qt.png differ
diff --git a/kcfinder/themes/default/img/files/small/rar.png b/kcfinder/themes/default/img/files/small/rar.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/rar.png differ
diff --git a/kcfinder/themes/default/img/files/small/rpm.png b/kcfinder/themes/default/img/files/small/rpm.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/rpm.png differ
diff --git a/kcfinder/themes/default/img/files/small/rtf.png b/kcfinder/themes/default/img/files/small/rtf.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/rtf.png differ
diff --git a/kcfinder/themes/default/img/files/small/sh.png b/kcfinder/themes/default/img/files/small/sh.png
new file mode 100644
index 00000000..7b87884f
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/sh.png differ
diff --git a/kcfinder/themes/default/img/files/small/sql.png b/kcfinder/themes/default/img/files/small/sql.png
new file mode 100644
index 00000000..5665b631
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/sql.png differ
diff --git a/kcfinder/themes/default/img/files/small/srt.png b/kcfinder/themes/default/img/files/small/srt.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/srt.png differ
diff --git a/kcfinder/themes/default/img/files/small/sub.png b/kcfinder/themes/default/img/files/small/sub.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/sub.png differ
diff --git a/kcfinder/themes/default/img/files/small/swf.png b/kcfinder/themes/default/img/files/small/swf.png
new file mode 100644
index 00000000..80e05a3d
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/swf.png differ
diff --git a/kcfinder/themes/default/img/files/small/tgz.png b/kcfinder/themes/default/img/files/small/tgz.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/tgz.png differ
diff --git a/kcfinder/themes/default/img/files/small/tif.png b/kcfinder/themes/default/img/files/small/tif.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/tif.png differ
diff --git a/kcfinder/themes/default/img/files/small/tiff.png b/kcfinder/themes/default/img/files/small/tiff.png
new file mode 100644
index 00000000..638dee69
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/tiff.png differ
diff --git a/kcfinder/themes/default/img/files/small/torrent.png b/kcfinder/themes/default/img/files/small/torrent.png
new file mode 100644
index 00000000..55c04aa9
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/torrent.png differ
diff --git a/kcfinder/themes/default/img/files/small/ttf.png b/kcfinder/themes/default/img/files/small/ttf.png
new file mode 100644
index 00000000..ed3e0f64
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/ttf.png differ
diff --git a/kcfinder/themes/default/img/files/small/txt.png b/kcfinder/themes/default/img/files/small/txt.png
new file mode 100644
index 00000000..d904593c
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/txt.png differ
diff --git a/kcfinder/themes/default/img/files/small/wav.png b/kcfinder/themes/default/img/files/small/wav.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/wav.png differ
diff --git a/kcfinder/themes/default/img/files/small/wma.png b/kcfinder/themes/default/img/files/small/wma.png
new file mode 100644
index 00000000..017b00da
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/wma.png differ
diff --git a/kcfinder/themes/default/img/files/small/xls.png b/kcfinder/themes/default/img/files/small/xls.png
new file mode 100644
index 00000000..573d1414
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/xls.png differ
diff --git a/kcfinder/themes/default/img/files/small/xlsx.png b/kcfinder/themes/default/img/files/small/xlsx.png
new file mode 100644
index 00000000..573d1414
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/xlsx.png differ
diff --git a/kcfinder/themes/default/img/files/small/zip.png b/kcfinder/themes/default/img/files/small/zip.png
new file mode 100644
index 00000000..305f01b4
Binary files /dev/null and b/kcfinder/themes/default/img/files/small/zip.png differ
diff --git a/kcfinder/themes/default/img/icons/about.png b/kcfinder/themes/default/img/icons/about.png
new file mode 100644
index 00000000..12cd1aef
Binary files /dev/null and b/kcfinder/themes/default/img/icons/about.png differ
diff --git a/kcfinder/themes/default/img/icons/clipboard-add.png b/kcfinder/themes/default/img/icons/clipboard-add.png
new file mode 100644
index 00000000..d5eac9bc
Binary files /dev/null and b/kcfinder/themes/default/img/icons/clipboard-add.png differ
diff --git a/kcfinder/themes/default/img/icons/clipboard-clear.png b/kcfinder/themes/default/img/icons/clipboard-clear.png
new file mode 100644
index 00000000..dcce0b64
Binary files /dev/null and b/kcfinder/themes/default/img/icons/clipboard-clear.png differ
diff --git a/kcfinder/themes/default/img/icons/clipboard.png b/kcfinder/themes/default/img/icons/clipboard.png
new file mode 100644
index 00000000..779ad58e
Binary files /dev/null and b/kcfinder/themes/default/img/icons/clipboard.png differ
diff --git a/kcfinder/themes/default/img/icons/copy.png b/kcfinder/themes/default/img/icons/copy.png
new file mode 100644
index 00000000..a9f31a27
Binary files /dev/null and b/kcfinder/themes/default/img/icons/copy.png differ
diff --git a/kcfinder/themes/default/img/icons/delete.png b/kcfinder/themes/default/img/icons/delete.png
new file mode 100644
index 00000000..1514d51a
Binary files /dev/null and b/kcfinder/themes/default/img/icons/delete.png differ
diff --git a/kcfinder/themes/default/img/icons/download.png b/kcfinder/themes/default/img/icons/download.png
new file mode 100644
index 00000000..260ac88e
Binary files /dev/null and b/kcfinder/themes/default/img/icons/download.png differ
diff --git a/kcfinder/themes/default/img/icons/folder-new.png b/kcfinder/themes/default/img/icons/folder-new.png
new file mode 100644
index 00000000..529fe8fe
Binary files /dev/null and b/kcfinder/themes/default/img/icons/folder-new.png differ
diff --git a/kcfinder/themes/default/img/icons/maximize.png b/kcfinder/themes/default/img/icons/maximize.png
new file mode 100644
index 00000000..d41fc7e1
Binary files /dev/null and b/kcfinder/themes/default/img/icons/maximize.png differ
diff --git a/kcfinder/themes/default/img/icons/move.png b/kcfinder/themes/default/img/icons/move.png
new file mode 100644
index 00000000..7e62a924
Binary files /dev/null and b/kcfinder/themes/default/img/icons/move.png differ
diff --git a/kcfinder/themes/default/img/icons/refresh.png b/kcfinder/themes/default/img/icons/refresh.png
new file mode 100644
index 00000000..aa65210e
Binary files /dev/null and b/kcfinder/themes/default/img/icons/refresh.png differ
diff --git a/kcfinder/themes/default/img/icons/rename.png b/kcfinder/themes/default/img/icons/rename.png
new file mode 100644
index 00000000..4e3688ed
Binary files /dev/null and b/kcfinder/themes/default/img/icons/rename.png differ
diff --git a/kcfinder/themes/default/img/icons/select.png b/kcfinder/themes/default/img/icons/select.png
new file mode 100644
index 00000000..a9925a06
Binary files /dev/null and b/kcfinder/themes/default/img/icons/select.png differ
diff --git a/kcfinder/themes/default/img/icons/settings.png b/kcfinder/themes/default/img/icons/settings.png
new file mode 100644
index 00000000..5c8213fe
Binary files /dev/null and b/kcfinder/themes/default/img/icons/settings.png differ
diff --git a/kcfinder/themes/default/img/icons/upload.png b/kcfinder/themes/default/img/icons/upload.png
new file mode 100644
index 00000000..f4b6d518
Binary files /dev/null and b/kcfinder/themes/default/img/icons/upload.png differ
diff --git a/kcfinder/themes/default/img/icons/view.png b/kcfinder/themes/default/img/icons/view.png
new file mode 100644
index 00000000..af4fe074
Binary files /dev/null and b/kcfinder/themes/default/img/icons/view.png differ
diff --git a/kcfinder/themes/default/img/kcf_logo.png b/kcfinder/themes/default/img/kcf_logo.png
new file mode 100644
index 00000000..e829043c
Binary files /dev/null and b/kcfinder/themes/default/img/kcf_logo.png differ
diff --git a/kcfinder/themes/default/img/loading.gif b/kcfinder/themes/default/img/loading.gif
new file mode 100644
index 00000000..5f5cedca
Binary files /dev/null and b/kcfinder/themes/default/img/loading.gif differ
diff --git a/kcfinder/themes/default/img/tree/denied.png b/kcfinder/themes/default/img/tree/denied.png
new file mode 100644
index 00000000..07b93c17
Binary files /dev/null and b/kcfinder/themes/default/img/tree/denied.png differ
diff --git a/kcfinder/themes/default/img/tree/folder.png b/kcfinder/themes/default/img/tree/folder.png
new file mode 100644
index 00000000..784e8fa4
Binary files /dev/null and b/kcfinder/themes/default/img/tree/folder.png differ
diff --git a/kcfinder/themes/default/img/tree/minus.png b/kcfinder/themes/default/img/tree/minus.png
new file mode 100644
index 00000000..af617bbd
Binary files /dev/null and b/kcfinder/themes/default/img/tree/minus.png differ
diff --git a/kcfinder/themes/default/img/tree/plus.png b/kcfinder/themes/default/img/tree/plus.png
new file mode 100644
index 00000000..897088b1
Binary files /dev/null and b/kcfinder/themes/default/img/tree/plus.png differ
diff --git a/kcfinder/themes/default/img/ui-icons_black.png b/kcfinder/themes/default/img/ui-icons_black.png
new file mode 100644
index 00000000..d64e654b
Binary files /dev/null and b/kcfinder/themes/default/img/ui-icons_black.png differ
diff --git a/kcfinder/themes/default/img/ui-icons_white.png b/kcfinder/themes/default/img/ui-icons_white.png
new file mode 100644
index 00000000..cb9a9ae7
Binary files /dev/null and b/kcfinder/themes/default/img/ui-icons_white.png differ
diff --git a/kcfinder/themes/default/init.js b/kcfinder/themes/default/init.js
new file mode 100644
index 00000000..518f8541
--- /dev/null
+++ b/kcfinder/themes/default/init.js
@@ -0,0 +1 @@
+new Image().src = 'themes/default/img/loading.gif'; // preload animated gif
diff --git a/kcfinder/themes/default/js.php b/kcfinder/themes/default/js.php
new file mode 100644
index 00000000..32245b64
--- /dev/null
+++ b/kcfinder/themes/default/js.php
@@ -0,0 +1,12 @@
+minify("cache/theme_$theme.js");
+
+?>
\ No newline at end of file
diff --git a/kcfinder/tpl/.htaccess b/kcfinder/tpl/.htaccess
new file mode 100644
index 00000000..7484f13a
--- /dev/null
+++ b/kcfinder/tpl/.htaccess
@@ -0,0 +1,4 @@
+
+Order allow,deny
+Deny from all
+
\ No newline at end of file
diff --git a/kcfinder/tpl/tpl_browser.php b/kcfinder/tpl/tpl_browser.php
new file mode 100644
index 00000000..cc9bfda6
--- /dev/null
+++ b/kcfinder/tpl/tpl_browser.php
@@ -0,0 +1,87 @@
+
+
+
+KCFinder: /session['dir'] ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ label("View:") ?>
+
+
+
+
+
+
+ label("Show:") ?>
+
+
+
+
+
+
+ label("Order by:") ?>
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kcfinder/tpl/tpl_css.php b/kcfinder/tpl/tpl_css.php
new file mode 100644
index 00000000..37df7114
--- /dev/null
+++ b/kcfinder/tpl/tpl_css.php
@@ -0,0 +1,6 @@
+
+
+
diff --git a/kcfinder/tpl/tpl_javascript.php b/kcfinder/tpl/tpl_javascript.php
new file mode 100644
index 00000000..e7fe87ce
--- /dev/null
+++ b/kcfinder/tpl/tpl_javascript.php
@@ -0,0 +1,37 @@
+
+
+
+opener['name'] == "tinymce"):
+?>
+
+config['theme']}/js.php")):
+?>
+
+
+
diff --git a/kcfinder/upload.php b/kcfinder/upload.php
new file mode 100644
index 00000000..dd6cfb26
--- /dev/null
+++ b/kcfinder/upload.php
@@ -0,0 +1,20 @@
+
+ * @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
+ */
+
+require "core/bootstrap.php";
+$uploader = "kcfinder\\uploader"; // To execute core/bootstrap.php on older
+$uploader = new $uploader(); // PHP versions (even PHP 4)
+$uploader->upload();
+
+?>
\ No newline at end of file