Jump to content

User:Zocky/Tools.js

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Zocky (talk | contribs) at 11:19, 5 August 2007 (some basic tools, with some functions still missing). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// cross-browser helper functions
// $ = getElementById
// $E - event functions - hook, unhook, cancel, target, keycode
// $D - DOM functions
// $P - pp
if (!$) { 
  importStylesheet
  document.write('<link rel="stylesheet" type="text/css" href="'  
                + 'http://en.wikipedia.org/w/index.php?title=User:Zocky/Draglets.css'
                + '&action=raw&ctype=text/css&dontcountme=s"/>');

  var $ = function( id )    { return document.getElementById(id) };

  var $E={};
  $E.hook = function( element , event , handler ) { 
    if( element.addEventListener ) element.addEventListener( event,handler,false ) 
    else element.attachEvent( 'on' + event , handler );
  };
  $E.unhook = function( element, event, handler ) {
    if (element.removeEventListener) element.removeEventListener(event,handler,false) 
    else element.detachEvent( 'on' + event , handler );
  };
  $E.cancel = function( event ) {
    if( event.preventDefault ) {  
      event.preventDefault();
      event.stopPropagation();
    } else {
      event.returnValue = false;
      event.cancelBubble = true;
    }
  };
  $E.target  = function( event ) { return event.target || event.srcElement };
  $E.keycode = function( event ) { return event.preventDefault ? event.which : event.keyCode };

  var $D={};
  $D.findParent = function( element , tagname ) { 
    while( element.parentElement && element.parentElement.tagName != tagname) element=element.parentElement;
    return element.parentElement;
  }

  var $P={};
  $P.top = 100;
  $P.mouseX = 0;	
  $P.mouseY = 0;
  $P.startX = 0;	
  $P.startY = 0;
  $P.active = null;

  $P.new = function( title , x , y , width )
  {
    id = "$P_" + $P.Top++;
    var w = width ? width + 'px' : 'auto';
    var p;
    if (window.addEventListener) p = 'fixed'
    else {
      p = 'absolute'; y+= document.documentElement.scrollTop; x+= document.documentElement.scrollLeft;
    }

    code
    = '<div class="$P" id="'+id+'" style="top:'+y+'px;left:'+x+'px;z-index:'+dragletTop+';width:'+w+ ';position:' + p +'">'  
    +   '<div class="$P_titlebar" id="'+id+'_titlebar">'
    +     '<span class="$P_titlebar_right"><a href="javascript:$P.close(\''+id+'\');">[×]</a></span>'
    +     '<span class="$P_title" id="'+id+'_title">'+title+'</span>'
    +   '</div>'
    +   '<div class="$P_content" id="'+id+'_content"></div>'
    + '</div>';

    $D.addBottom($('globalWrapper'),code);
    $E.hook($(id+'_titlebar'),'mousedown',$P.pick, false);
    $E.hook($(id+'_titlebar'),'click',$P.click, false);
    return (id);
  };
  $P.close = function( id ) { $('globalWrapper').removeChild($(id)); };
  $P.click = function( e )  { $P.active && $P.cancel(e) };
  $P.pick =  function( e )  {
    $P.active = $D.parentByClass(e,'$P');
    $P++;
    $P.active.style.zIndex = dragletTop;
    $P.mouseX = $E.mouseX(e);	
    $P.mouseY = $E.mouseY(e);
    $P.startX = parseInt($P.active.style.left);
    $P.startY = parseInt($P.active.style.top); 
 
    $E.hook( document , "mousemove" , $P.drag, false);
    $E.hook( document , "mouseup" , $P.drop, false);
    $E.cancel(e);
  };
  $P.drag = function( e ) {
    $P.active.style.left = ($E.mouseX(e) - $P.mouseX + $P.startX) + "px"; 
    $P.active.style.top  = ($E.mouseY(e) - $P.mouseY + $P.startY) + "px"; 
    $E.cancel(e);
  };
  $P.drop = function( e ) {
    $E.unhook( document , "mousemove" , $P.drag , false );
    $E.unhook( document , "mouseup" , $P.drop , false );
    $P.active=null;
    $E.cancel(e);
  }
}