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