diff --git a/wp-includes/js/dbx.js b/wp-includes/js/dbx.js index 17db1b7898..8bf5b46332 100644 --- a/wp-includes/js/dbx.js +++ b/wp-includes/js/dbx.js @@ -1,6 +1,6 @@ -// DBX2.0[beta] :: Docking Boxes (dbx) +// DBX2.01 :: Docking Boxes (dbx) // ***************************************************** // DOM scripting by brothercake -- http://www.brothercake.com/ // GNU Lesser General Public License -- http://www.gnu.org/licenses/lgpl.html //****************************************************** -var dbx;function dbxManager(sid){dbx=this;if(!/^[-_a-z0-9]+$/i.test(sid)){alert('Error from dbxManager:\n"'+sid+'" is an invalid session ID'); return;}this.supported=!(document.getElementsByTagName('*').length==0||(navigator.vendor=='KDE'&&typeof window.sidebar=='undefined'));if(!this.supported){return;}this.etype=typeof document.addEventListener!='undefined'?'addEventListener':typeof document.attachEvent!='undefined'?'attachEvent':'none';this.eprefix=(this.etype=='attachEvent'?'on':'');if(typeof window.opera!='undefined'&&parseFloat(navigator.userAgent.toLowerCase().split(/opera[\/ ]/)[1].split(' ')[0],10) < 7.5){this.etype='none';}if(this.etype=='none'){this.supported=false; return;}this.running=0;this.gc=[];this.sid=sid;this.savedata={};this.cookiestate=this.getCookieState();};dbxManager.prototype.setCookieState=function(){var now=new Date();now.setTime(now.getTime()+(365*24*60*60*1000));var str='';for(j in this.savedata){str+=j+'='+this.savedata[j]+'&'}this.state=str.replace(/^(.+)&$/,'$1');if(typeof this.onstatechange=='undefined'||this.onstatechange()){document.cookie='dbx-'+this.sid+'='+this.state+'; expires='+now.toGMTString()+'; path=/';}};dbxManager.prototype.getCookieState=function(){this.cookiestate=null;if(document.cookie){if(document.cookie.indexOf('dbx-'+this.sid)!=-1){this.cookie=document.cookie.split('dbx-'+this.sid+'=')[1].split('&');for(var i in this.cookie){this.cookie[i]=this.cookie[i].split('=');this.cookie[i][1]=this.cookie[i][1].split(',');}this.cookiestate={};for(i in this.cookie){this.cookiestate[this.cookie[i][0]]=this.cookie[i][1];}}}return this.cookiestate;};dbxManager.prototype.addDataMember=function(gid,order){this.savedata[gid]=order;};dbxManager.prototype.createElement=function(tag){return typeof document.createElementNS!='undefined'?document.createElementNS('http://www.w3.org/1999/xhtml',tag):document.createElement(tag);};dbxManager.prototype.getTarget=function(e,pattern,node){if(typeof node!='undefined'){var target=node;}else{target=typeof e.target!='undefined'?e.target:e.srcElement;}var regex=new RegExp(pattern,'');while(!regex.test(target.className)){target=target.parentNode;}return target;};function dbxGroup(gid,dir,thresh,fix,ani,togs,def,open,close,move,toggle,kmove,ktoggle,syntax){if(!/^[-_a-z0-9]+$/i.test(gid)){alert('Error from dbxGroup:\n"'+gid+'" is an invalid container ID'); return;}this.container=document.getElementById(gid);if(this.container==null||!dbx.supported){return;}var self=this;this.gid=gid;this.dragok=false;this.box=null;this.vertical=dir=='vertical';this.threshold=parseInt(thresh,10);this.restrict=fix=='yes';this.resolution=parseInt(ani,10);this.toggles=togs=='yes';this.defopen=def!='closed';this.vocab={'open':open,'close':close,'move':move, 'toggle':toggle,'kmove':kmove, 'ktoggle':ktoggle,'syntax':syntax};this.container.style.position='relative';this.container.style.display='block';if(typeof window.opera!='undefined'){this.container.style.display='run-in';}this.boxes=[];this.buttons=[];this.order=[];this.eles=this.container.getElementsByTagName('*');for(var i=0;i 0)){var sibling=this.boxes[positions[i+(positive?1:-1)][0]];if(this.resolution > 0){var visipos={'x':parent.offsetLeft,'y':parent.offsetTop};var siblingpos={'x':sibling.offsetLeft,'y':sibling.offsetTop};}var obj={'insert':(positive?sibling:parent),'before':(positive?parent:sibling)};this.container.insertBefore(obj.insert,obj.before);if(this.resolution > 0){var animators={'sibling':new dbxAnimator(this,sibling,siblingpos,this.resolution,true,anchor),'parent':new dbxAnimator(this,parent,visipos,this.resolution,true,anchor)};}else{anchor.focus();}break;}}}this.getBoxOrder();}};dbxGroup.prototype.compare=function(a,b){return a[1] - b[1];};dbxGroup.prototype.createTooltip=function(isopen,anchor){if(this.keydown){this.tooltip=this.container.appendChild(dbx.createElement('span'));this.tooltip.style.visibility='hidden';this.tooltip.className='dbx-tooltip';if(isopen!=null){this.tooltip.appendChild(document.createTextNode(this.vocab.kmove+this.vocab.ktoggle.replace('%toggle%',isopen?this.vocab.close:this.vocab.open)));}else{this.tooltip.appendChild(document.createTextNode(this.vocab.kmove));}var parent=dbx.getTarget(null,'dbx\-box',anchor);this.tooltip.style.left=parent.offsetLeft+'px';this.tooltip.style.top=parent.offsetTop+'px';var tooltip=this.tooltip;window.setTimeout(function(){if(tooltip!=null){tooltip.style.visibility='visible';}},500);}};dbxGroup.prototype.removeTooltip=function(){if(this.tooltip!=null){this.tooltip.parentNode.removeChild(this.tooltip); this.tooltip=null;}};dbxGroup.prototype.mousedown=function(e,box){var node=typeof e.target!='undefined'?e.target:e.srcElement;if(node.nodeName=='#text'){node=node.parentNode;}if(!/dbx\-(toggle|box|group)/i.test(node.className)){while(!/dbx\-(handle|box|group)/i.test(node.className)){node=node.parentNode;}}if(/dbx\-handle/i.test(node.className)){this.removeTooltip();this.released=false;this.initial={'x':e.clientX,'y':e.clientY};this.current={'x':0,'y':0};this.createCloneBox(box);if(typeof e.preventDefault!='undefined' ){e.preventDefault();}if(typeof document.onselectstart!='undefined'){document.onselectstart=function(){return false;}}}};dbxGroup.prototype.mousemove=function(e){if(this.dragok&&this.box!=null){this.positive=this.vertical?(e.clientY > this.current.y?true:false):(e.clientX > this.current.x?true:false);this.current={'x':e.clientX,'y':e.clientY};var overall={'x':this.current.x - this.initial.x,'y':this.current.y - this.initial.y};if(((overall.x>=0&&overall.x<=this.threshold)||(overall.x<=0&&overall.x>=0 - this.threshold))&&((overall.y>=0&&overall.y<=this.threshold)||(overall.y<=0&&overall.y>=0 - this.threshold))){this.current.x-=overall.x; this.current.y-=overall.y;}if(this.released||overall.x > this.threshold||overall.x < (0 - this.threshold)||overall.y > this.threshold||overall.y < (0 - this.threshold)){dbx.group=this.container;dbx.box=this.box;dbx.event=e;if(typeof dbx.onboxdrag=='undefined'||dbx.onboxdrag()){this.released=true;if(!this.restrict||!this.vertical){this.boxclone.style.left=(this.current.x - this.difference.x)+'px';}if(!this.restrict||this.vertical){this.boxclone.style.top=(this.current.y - this.difference.y)+'px';}this.moveOriginalToPosition(this.current.x,this.current.y);if(typeof e.preventDefault!='undefined' ){e.preventDefault();}}}}return true;};dbxGroup.prototype.mouseup=function(e){if(this.box!=null){this.moveOriginalToPosition(e.clientX,e.clientY);this.removeCloneBox();this.getBoxOrder();if(typeof document.onselectstart!='undefined'){document.onselectstart=function(){return true;}}}this.dragok=false;};dbxGroup.prototype.keypress=function(e,anchor){if(/^(3[7-9])|(40)$/.test(e.keyCode)){this.removeTooltip();if((this.vertical&&/^(38|40)$/.test(e.keyCode))||(!this.vertical&&/^(37|39)$/.test(e.keyCode))){this.shiftBoxPosition(e,anchor,/^[3][78]$/.test(e.keyCode)?false:true);if(typeof e.preventDefault!='undefined'){e.preventDefault();}else{return false;}typeof e.stopPropagation!='undefined'?e.stopPropagation():e.cancelBubble=true;this.keydown=false;}}return true;};dbxGroup.prototype.getBoxOrder=function(){this.order=[];var len=this.eles.length;for(var j=0; j boxprops.xy&&cloneprops.xy < boxprops.xy)||(!this.positive&&cloneprops.xy < boxprops.xy&&cloneprops.xy+cloneprops.wh > boxprops.xy)){if(this.boxes[i]==this.box){return;}var sibling=this.box.nextSibling;while(sibling.className==null||!/dbx\-box/.test(sibling.className)){sibling=sibling.nextSibling;}if(this.boxes[i]==sibling){return;}if(this.resolution > 0){if(this.box[this.vertical?'offsetTop':'offsetLeft'] < boxprops.xy){var visibox=this.boxes[i].previousSibling;while(visibox.className==null||!/dbx\-box/.test(visibox.className)){visibox=visibox.previousSibling;}}else{visibox=this.boxes[i];}var visipos={'x':visibox.offsetLeft,'y':visibox.offsetTop};}var prepos={'x':this.box.offsetLeft,'y':this.box.offsetTop};this.container.insertBefore(this.box,this.boxes[i]);this.initial.x+=(this.box.offsetLeft - prepos.x);this.initial.y+=(this.box.offsetTop - prepos.y);if(this.resolution > 0&&visibox!=this.box){var animator=new dbxAnimator(this,visibox,visipos,this.resolution,false,null);}else{}break;}}};function dbxAnimator(caller,box,pos,res,kbd,anchor){this.caller=caller;this.box=box;this.timer=null;var before=pos[this.caller.vertical?'y':'x'];var after=this.box[this.caller.vertical?'offsetTop':'offsetLeft'];if(before!=after){if(dbx.running > this.caller.boxes.length - 1){return;}var clone=this.caller.createClone(this.box,29999,arguments[2]);clone.style.visibility='visible';this.box.style.visibility='hidden';this.animateClone(clone,before,after > before?after - before:0 - (before - after),this.caller.vertical?'top':'left',res,kbd,anchor);}};dbxAnimator.prototype.animateClone=function(clone,current,change,dir,res,kbd,anchor){var self=this;var count=0;dbx.running ++;this.timer=window.setInterval(function(){count ++;current+=change / res;clone.style[dir]=current+'px';if(count==res){window.clearTimeout(self.timer);self.timer=null;dbx.running --;self.caller.container.removeChild(clone);self.box.style.visibility='visible';if(kbd){if(anchor!=null&&anchor.parentNode.style.visibility!='hidden'){anchor.focus();}else if(self.caller.toggles){var button=self.caller.buttons[parseInt(self.box.className.split('dbxid')[1],10)];if(button!=null&&typeof button.isactive!='undefined'){button.focus();}}}}},20);};if(typeof window.attachEvent!='undefined'){window.attachEvent('onunload',function(){var ev=['mousedown','mousemove','mouseup','mouseout','click','keydown','keyup','focus','blur','selectstart','statechange','boxdrag','boxopen','boxclose'];var el=ev.length;var dl=document.all.length;for(var i=0;i 0)){var sibling = this.boxes[positions[i + (positive ? 1 : -1)][0]];if(this.resolution > 0){var visipos = { 'x' : parent.offsetLeft, 'y' : parent.offsetTop };var siblingpos = { 'x' : sibling.offsetLeft, 'y' : sibling.offsetTop };}var obj = { 'insert' : (positive ? sibling : parent), 'before' : (positive ? parent : sibling) };this.container.insertBefore(obj.insert, obj.before);if(this.resolution > 0){var animators ={'sibling' : new dbxAnimator(this, sibling, siblingpos, this.resolution, true, anchor),'parent' : new dbxAnimator(this, parent, visipos, this.resolution, true, anchor)};}else{anchor.focus();}break;}}}this.getBoxOrder();}};dbxGroup.prototype.compare = function(a, b){return a[1] - b[1];};dbxGroup.prototype.createTooltip = function(isopen, anchor){if(this.keydown){this.tooltip = this.container.appendChild(dbx.createElement('span'));this.tooltip.style.visibility = 'hidden';this.tooltip.className = 'dbx-tooltip';if(isopen != null){this.tooltip.appendChild(document.createTextNode(this.vocab.kmove + this.vocab.ktoggle.replace('%toggle%', isopen ? this.vocab.close : this.vocab.open)));}else{this.tooltip.appendChild(document.createTextNode(this.vocab.kmove));}var parent = dbx.getTarget(null, 'dbx\-box', anchor);this.tooltip.style.left = parent.offsetLeft + 'px';this.tooltip.style.top = parent.offsetTop + 'px';var tooltip = this.tooltip;window.setTimeout(function(){if(tooltip != null) { tooltip.style.visibility = 'visible'; }}, 500);}};dbxGroup.prototype.removeTooltip = function(){if(this.tooltip != null){this.tooltip.parentNode.removeChild(this.tooltip);this.tooltip = null;}};dbxGroup.prototype.mousedown = function(e, box){var node = typeof e.target != 'undefined' ? e.target : e.srcElement;if(node.nodeName == '#text') { node = node.parentNode; }if(!/dbx\-(toggle|box|group)/i.test(node.className)){while(!/dbx\-(handle|box|group)/i.test(node.className)){node = node.parentNode;}}if(/dbx\-handle/i.test(node.className)){this.removeTooltip();this.released = false;this.initial = { 'x' : e.clientX, 'y' : e.clientY };this.current = { 'x' : 0, 'y' : 0 };this.createCloneBox(box);if(typeof e.preventDefault != 'undefined' ) { e.preventDefault(); }if(typeof document.onselectstart != 'undefined'){document.onselectstart = function() { return false; }}}};dbxGroup.prototype.mousemove = function(e){if(this.dragok && this.box != null){this.positive = this.vertical ? (e.clientY > this.current.y ? true : false) : (e.clientX > this.current.x ? true : false);this.current = { 'x' : e.clientX, 'y' : e.clientY };var overall = { 'x' : this.current.x - this.initial.x, 'y' : this.current.y - this.initial.y };if(((overall.x >= 0 && overall.x <= this.threshold) || (overall.x <= 0 && overall.x >= 0 - this.threshold))&&((overall.y >= 0 && overall.y <= this.threshold) || (overall.y <= 0 && overall.y >= 0 - this.threshold))){this.current.x -= overall.x;this.current.y -= overall.y;}if(this.released || overall.x > this.threshold || overall.x < (0 - this.threshold) || overall.y > this.threshold || overall.y < (0 - this.threshold)){dbx.group = this.container;dbx.box = this.box;dbx.event = e;if(typeof dbx.onboxdrag == 'undefined' || dbx.onboxdrag()){this.released = true;if(!this.restrict || !this.vertical) { this.boxclone.style.left = (this.current.x - this.difference.x) + 'px'; }if(!this.restrict || this.vertical) { this.boxclone.style.top = (this.current.y - this.difference.y) + 'px'; }this.moveOriginalToPosition(this.current.x, this.current.y);if(typeof e.preventDefault != 'undefined' ) { e.preventDefault(); }}}}return true;};dbxGroup.prototype.mouseup = function(e){if(this.box != null){this.moveOriginalToPosition(e.clientX, e.clientY);this.removeCloneBox();this.getBoxOrder();if(typeof document.onselectstart != 'undefined'){document.onselectstart = function() { return true; }}}this.dragok = false;};dbxGroup.prototype.keypress = function(e, anchor){if(/^(3[7-9])|(40)$/.test(e.keyCode)){this.removeTooltip();if((this.vertical && /^(38|40)$/.test(e.keyCode)) || (!this.vertical && /^(37|39)$/.test(e.keyCode))){this.shiftBoxPosition(e, anchor, /^[3][78]$/.test(e.keyCode) ? false : true);if(typeof e.preventDefault != 'undefined') { e.preventDefault(); }else { return false; }typeof e.stopPropagation != 'undefined' ? e.stopPropagation() : e.cancelBubble = true;this.keydown = false;}}return true;};dbxGroup.prototype.getBoxOrder = function(){this.order = [];var len = this.eles.length;for(var j=0; j boxprops.xy && cloneprops.xy < boxprops.xy)||(!this.positive && cloneprops.xy < boxprops.xy && cloneprops.xy + cloneprops.wh > boxprops.xy)){if(this.boxes[i] == this.box) { return; }var sibling = this.box.nextSibling;while(sibling.className == null || !/dbx\-box/.test(sibling.className)){sibling = sibling.nextSibling;}if(this.boxes[i] == sibling) { return; }if(this.resolution > 0){if(this.box[this.vertical ? 'offsetTop' : 'offsetLeft'] < boxprops.xy){var visibox = this.boxes[i].previousSibling;while(visibox.className == null || !/dbx\-box/.test(visibox.className)){visibox = visibox.previousSibling;}}else{visibox = this.boxes[i];}var visipos = { 'x' : visibox.offsetLeft, 'y' : visibox.offsetTop };}var prepos = { 'x' : this.box.offsetLeft, 'y' : this.box.offsetTop };this.container.insertBefore(this.box, this.boxes[i]);this.initial.x += (this.box.offsetLeft - prepos.x);this.initial.y += (this.box.offsetTop - prepos.y);if(this.resolution > 0 && visibox != this.box){var animator = new dbxAnimator(this, visibox, visipos, this.resolution, false, null);}else{}break;}}};function dbxAnimator(caller, box, pos, res, kbd, anchor){this.caller = caller;this.box = box;this.timer = null;var before = pos[this.caller.vertical ? 'y' : 'x'];var after = this.box[this.caller.vertical ? 'offsetTop' : 'offsetLeft'];if(before != after){if(dbx.running > this.caller.boxes.length - 1) { return; }var clone = this.caller.createClone(this.box, 29999, arguments[2]);clone.style.visibility = 'visible';this.box.style.visibility = 'hidden';this.animateClone(clone,before,after > before ? after - before : 0 - (before - after),this.caller.vertical ? 'top' : 'left',res,kbd,anchor);}};dbxAnimator.prototype.animateClone = function(clone, current, change, dir, res, kbd, anchor){var self = this;var count = 0;dbx.running ++;this.timer = window.setInterval(function(){count ++;current += change / res;clone.style[dir] = current + 'px';if(count == res){window.clearTimeout(self.timer);self.timer = null;dbx.running --;self.caller.container.removeChild(clone);self.box.style.visibility = 'visible';if(kbd){if(anchor != null && anchor.parentNode.style.visibility != 'hidden'){anchor.focus();}else if(self.caller.toggles){var button = self.caller.buttons[parseInt(self.box.className.split('dbxid')[1],10)];if(button != null && typeof button.isactive != 'undefined'){button.focus();}}}}}, 20);};if(typeof window.attachEvent != 'undefined'){window.attachEvent('onunload', function(){var ev = ['mousedown', 'mousemove', 'mouseup', 'mouseout', 'click', 'keydown', 'keyup', 'focus', 'blur', 'selectstart', 'statechange', 'boxdrag', 'boxopen', 'boxclose'];var el = ev.length;var dl = document.all.length;for(var i=0; i